[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / X86 / h-registers-3.ll
blob8e14bf3a6ee181ae692a151d15e861267ce5bb4e
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-unknown-linux-gnu   | FileCheck %s -check-prefix=X86
3 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s -check-prefix=X64
4 ; RUN: llc < %s -mtriple=x86_64-linux-gnux32      | FileCheck %s -check-prefix=X32
6 define zeroext i8 @foo() nounwind ssp {
7 ; X86-LABEL: foo:
8 ; X86:       # %bb.0: # %entry
9 ; X86-NEXT:    subl $12, %esp
10 ; X86-NEXT:    calll bar@PLT
11 ; X86-NEXT:    movb %ah, %al
12 ; X86-NEXT:    addl $12, %esp
13 ; X86-NEXT:    retl
15 ; X64-LABEL: foo:
16 ; X64:       # %bb.0: # %entry
17 ; X64-NEXT:    pushq %rax
18 ; X64-NEXT:    xorl %eax, %eax
19 ; X64-NEXT:    callq bar@PLT
20 ; X64-NEXT:    # kill: def $ax killed $ax def $eax
21 ; X64-NEXT:    shrl $8, %eax
22 ; X64-NEXT:    # kill: def $al killed $al killed $eax
23 ; X64-NEXT:    popq %rcx
24 ; X64-NEXT:    retq
26 ; X32-LABEL: foo:
27 ; X32:       # %bb.0: # %entry
28 ; X32-NEXT:    pushq %rax
29 ; X32-NEXT:    xorl %eax, %eax
30 ; X32-NEXT:    callq bar@PLT
31 ; X32-NEXT:    # kill: def $ax killed $ax def $eax
32 ; X32-NEXT:    shrl $8, %eax
33 ; X32-NEXT:    # kill: def $al killed $al killed $eax
34 ; X32-NEXT:    popq %rcx
35 ; X32-NEXT:    retq
36 entry:
37   %0 = tail call zeroext i16 (...) @bar() nounwind
38   %1 = lshr i16 %0, 8
39   %2 = trunc i16 %1 to i8
40   ret i8 %2
46 declare zeroext i16 @bar(...)