xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/h-registers-3.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-unknown-linux-gnu   | FileCheck %s -check-prefix=X86
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s -check-prefix=X64
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-linux-gnux32      | FileCheck %s -check-prefix=X32
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @foo() nounwind ssp {
6*9880d681SAndroid Build Coastguard Workerentry:
7*9880d681SAndroid Build Coastguard Worker  %0 = tail call zeroext i16 (...) @bar() nounwind
8*9880d681SAndroid Build Coastguard Worker  %1 = lshr i16 %0, 8
9*9880d681SAndroid Build Coastguard Worker  %2 = trunc i16 %1 to i8
10*9880d681SAndroid Build Coastguard Worker  ret i8 %2
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker; X86-LABEL: foo
13*9880d681SAndroid Build Coastguard Worker; X86: calll
14*9880d681SAndroid Build Coastguard Worker; X86-NEXT: movb %ah, %al
15*9880d681SAndroid Build Coastguard Worker; X86-NEXT: addl $12, %esp
16*9880d681SAndroid Build Coastguard Worker; X86-NEXT: retl
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker; X64-LABEL: foo
19*9880d681SAndroid Build Coastguard Worker; X64: callq
20*9880d681SAndroid Build Coastguard Worker; X64-NEXT: # kill
21*9880d681SAndroid Build Coastguard Worker; X64-NEXT: shrl $8, %eax
22*9880d681SAndroid Build Coastguard Worker; X64-NEXT: # kill
23*9880d681SAndroid Build Coastguard Worker; X64-NEXT: popq
24*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker; X32-LABEL: foo
27*9880d681SAndroid Build Coastguard Worker; X32: callq
28*9880d681SAndroid Build Coastguard Worker; X32-NEXT: # kill
29*9880d681SAndroid Build Coastguard Worker; X32-NEXT: shrl $8, %eax
30*9880d681SAndroid Build Coastguard Worker; X32-NEXT: # kill
31*9880d681SAndroid Build Coastguard Worker; X32-NEXT: popq
32*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retq
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdeclare zeroext i16 @bar(...)
36