89 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=i686 < %s | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc -mtriple=x86_64 < %s | FileCheck %s --check-prefixes=CHECK,X644;; Certain constraints should not be used for PIC. See asm-modifier-pic.ll for PIC-specific tests.5 6@var = internal global i32 0, align 47 8define dso_local void @test_a() nounwind {9; X86-LABEL: test_a:10; X86: # %bb.0:11; X86-NEXT: #APP12; X86-NEXT: #TEST 42 var#13; X86-NEXT: #NO_APP14; X86-NEXT: retl15;16; X64-LABEL: test_a:17; X64: # %bb.0:18; X64-NEXT: #APP19; X64-NEXT: #TEST 42 var(%rip)#20; X64-NEXT: #NO_APP21; X64-NEXT: retq22 tail call void asm sideeffect "#TEST ${0:a} ${1:a}#", "i,i"(i32 42, ptr @var)23 ret void24}25 26define dso_local void @test_c() nounwind {27; CHECK-LABEL: test_c:28; CHECK: # %bb.0:29; CHECK-NEXT: #APP30; CHECK-NEXT: #TEST 42 var#31; CHECK-NEXT: #NO_APP32; CHECK-NEXT: ret{{[l|q]}}33 tail call void asm sideeffect "#TEST ${0:c} ${1:c}#", "i,i"(i32 42, ptr @var)34 ret void35}36 37define dso_local void @test_k() nounwind {38; CHECK-LABEL: test_k:39; CHECK: # %bb.0:40; CHECK-NEXT: #APP41; CHECK-NEXT: movl %fs:0, %eax42; CHECK-NEXT: #NO_APP43 %tmp = tail call i64 asm "movl %fs:${1:a}, ${0:k}", "=q,irm,~{dirflag},~{fpsr},~{flags}"(i64 0)44 unreachable45}46 47define dso_local void @test_n() nounwind {48; CHECK-LABEL: test_n:49; CHECK: # %bb.0:50; CHECK-NEXT: #APP51; CHECK-NEXT: #TEST 3752; CHECK-NEXT: #NO_APP53; CHECK-NEXT: ret{{[l|q]}}54 tail call void asm sideeffect "#TEST ${0:n}", "i"(i32 -37)55 ret void56}57 58define void @test_q() {59; CHECK-LABEL: test_q:60; CHECK: # %bb.0: # %entry61; CHECK-NEXT: #APP62; CHECK-NEXT: #TEST 063; CHECK-NEXT: #NO_APP64; CHECK-NEXT: ret{{[l|q]}}65entry:66 call void asm sideeffect "#TEST ${0:q}", "=*imr"( ptr elementtype( i64) null )67 ret void68}69 70define void @test_V(ptr %p) {71; X86-LABEL: test_V:72; X86: # %bb.0: # %entry73; X86-NEXT: movl {{[0-9]+}}(%esp), %eax74; X86-NEXT: #APP75; X86-NEXT: calll __x86_indirect_thunk_eax76; X86-NEXT: #NO_APP77; X86-NEXT: retl78;79; X64-LABEL: test_V:80; X64: # %bb.0: # %entry81; X64-NEXT: #APP82; X64-NEXT: callq __x86_indirect_thunk_rdi83; X64-NEXT: #NO_APP84; X64-NEXT: retq85entry:86 tail call void asm sideeffect "call __x86_indirect_thunk_${0:V}", "r,~{dirflag},~{fpsr},~{flags}"(ptr %p)87 ret void88}89