; RUN: llc -O2 --relocation-model=pic -mtriple=i386-unknown-linux-gnu < %s 2>&1 | FileCheck %s

; List the source code:
; // clang  -m32 -fasm-blocks -S t.c -O2  -fpic -emit-llvm
; int GV = 17;
;
; extern unsigned int extern_func();
; static unsigned int static_func()  __attribute__((noinline));
; static unsigned int static_func() {
;   return GV++;
; }
;
; void func() {
;   static_func();
;   __asm {
;           call static_func
;           call extern_func
;           jmp extern_func
;           shr eax, 0
;           shr ebx, 0
;           shr ecx, 0
;           shr edx, 0
;           shr edi, 0
;           shr esi, 0
;           shr ebp, 0
;           shr esp, 0
;         }
; }

@GV = local_unnamed_addr global i32 17, align 4

define void @func() local_unnamed_addr #0 {
; CHECK-LABEL: func:
; CHECK:         calll .L0$pb
; CHECK-NEXT:  .L0$pb:
; CHECK-NEXT:    popl %ebx
; CHECK-NEXT:  .Ltmp0:
; CHECK-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %ebx
; CHECK-NEXT:    calll static_func
; CHECK-NEXT:    #APP
; CHECK-EMPTY:
; CHECK-NEXT:    calll static_func
; CHECK-NEXT:    calll extern_func@PLT
; CHECK-NEXT:    jmp extern_func@PLT
; CHECK-NEXT:    shrl $0, %eax
; CHECK-NEXT:    shrl $0, %ebx
; CHECK-NEXT:    shrl $0, %ecx
; CHECK-NEXT:    shrl $0, %edx
; CHECK-NEXT:    shrl $0, %edi
; CHECK-NEXT:    shrl $0, %esi
; CHECK-NEXT:    shrl $0, %ebp
; CHECK-NEXT:    shrl $0, %esp
; CHECK-EMPTY:
; CHECK-NEXT:    #NO_APP
entry:
  %call = tail call i32 @static_func()
;; We test call, CALL, and jmp.
  tail call void asm sideeffect inteldialect "call ${0:P}\0A\09CALL ${1:P}\0A\09jmp ${1:P}\0A\09shr eax, $$0\0A\09shr ebx, $$0\0A\09shr ecx, $$0\0A\09shr edx, $$0\0A\09shr edi, $$0\0A\09shr esi, $$0\0A\09shr ebp, $$0\0A\09shr esp, $$0", "*m,*m,~{eax},~{ebp},~{ebx},~{ecx},~{edi},~{edx},~{flags},~{esi},~{esp},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32 (...)) @static_func, ptr nonnull elementtype(i32 (...)) @extern_func) #0
  ret void
}

declare i32 @extern_func(...) #0

define internal i32 @static_func() #0 {
entry:
  %0 = load i32, ptr @GV, align 4
  %inc = add nsw i32 %0, 1
  store i32 %inc, ptr @GV, align 4
  ret i32 %0
}

attributes #0 = { nounwind }
