xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/atom-cmpb.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 -mcpu=atom | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; CHECK:        movl
3*9880d681SAndroid Build Coastguard Worker; CHECK:        movb
4*9880d681SAndroid Build Coastguard Worker; CHECK:        movb
5*9880d681SAndroid Build Coastguard Worker; CHECK:        cmpb
6*9880d681SAndroid Build Coastguard Worker; CHECK:        notb
7*9880d681SAndroid Build Coastguard Worker; CHECK:        notb
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; Test for checking of cancel conversion to cmp32 in Atom case
10*9880d681SAndroid Build Coastguard Worker; in function 'X86TargetLowering::EmitCmp'
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine i8 @run_test(i8* %rd_p) {
13*9880d681SAndroid Build Coastguard Workerentry:
14*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i8, i8* %rd_p, i64 1
15*9880d681SAndroid Build Coastguard Worker  %ld1 = load i8, i8* %rd_p, align 1
16*9880d681SAndroid Build Coastguard Worker  %incdec.ptr1 = getelementptr inbounds i8, i8* %rd_p, i64 2
17*9880d681SAndroid Build Coastguard Worker  %ld2 = load i8, i8* %incdec.ptr, align 1
18*9880d681SAndroid Build Coastguard Worker  %x4 = xor i8 %ld1, -1
19*9880d681SAndroid Build Coastguard Worker  %x5 = xor i8 %ld2, -1
20*9880d681SAndroid Build Coastguard Worker  %cmp34 = icmp ult i8 %ld2, %ld1
21*9880d681SAndroid Build Coastguard Worker  br i1 %cmp34, label %if.then3, label %if.else
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerif.then3:
24*9880d681SAndroid Build Coastguard Worker  %sub7 = sub i8 %x4, %x5
25*9880d681SAndroid Build Coastguard Worker  br label %if.end4
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerif.else:
28*9880d681SAndroid Build Coastguard Worker  %sub8 = sub i8 %x5, %x4
29*9880d681SAndroid Build Coastguard Worker  br label %if.end4
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Workerif.end4:
32*9880d681SAndroid Build Coastguard Worker  %res = phi i8 [ %sub7, %if.then3 ], [ %sub8, %if.else ]
33*9880d681SAndroid Build Coastguard Worker  ret i8 %res
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37