brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · d8bc72f Raw
57 lines · plain
1; RUN: llc < %s -mcpu=atom -mtriple=i686-linux  | FileCheck -check-prefix=ATOM32 %s2; RUN: llc < %s -mcpu=core2 -mtriple=i686-linux | FileCheck -check-prefix=ATOM-NOT32 %s3; RUN: llc < %s -mcpu=atom -mtriple=x86_64-linux  | FileCheck -check-prefix=ATOM64 %s4; RUN: llc < %s -mcpu=core2 -mtriple=x86_64-linux | FileCheck -check-prefix=ATOM-NOT64 %s5; RUN: llc < %s -mcpu=slm -mtriple=i686-linux  | FileCheck -check-prefix=SLM32 %s6; RUN: llc < %s -mcpu=slm -mtriple=x86_64-linux  | FileCheck -check-prefix=SLM64 %s7; RUN: llc < %s -mcpu=goldmont -mtriple=i686-linux  | FileCheck -check-prefix=SLM32 %s8; RUN: llc < %s -mcpu=goldmont -mtriple=x86_64-linux  | FileCheck -check-prefix=SLM64 %s9 10 11; fn_ptr.ll12%class.A = type { ptr }13 14define i32 @test1() #0 {15  ;ATOM-LABEL: test1:16entry:17  %call = tail call ptr @_Z3facv()18  %vtable = load ptr, ptr %call, align 819  %0 = load ptr, ptr %vtable, align 820  ;ATOM32: movl (%ecx), %ecx21  ;ATOM32: calll *%ecx22  ;ATOM-NOT32: calll *(%ecx)23  ;ATOM64: movq (%rcx), %rcx24  ;ATOM64: callq *%rcx25  ;ATOM-NOT64: callq *(%rcx)26  ;SLM32: movl (%ecx), %ecx27  ;SLM32: calll *%ecx28  ;SLM64: movq (%rcx), %rcx29  ;SLM64: callq *%rcx30  tail call void %0(ptr %call)31  ret i32 032}33 34declare ptr @_Z3facv() #135 36; virt_fn.ll37@p = external dso_local global ptr38 39define i32 @test2() #0 {40  ;ATOM-LABEL: test2:41entry:42  %0 = load ptr, ptr @p, align 843  %1 = load ptr, ptr %0, align 844  ;ATOM32: movl (%eax), %eax45  ;ATOM32: calll *%eax46  ;ATOM-NOT: calll *(%eax)47  ;ATOM64: movq (%rax), %rax48  ;ATOM64: callq *%rax49  ;ATOM-NOT64: callq *(%rax)50  ;SLM32: movl (%eax), %eax51  ;SLM32: calll *%eax52  ;SLM64: movq (%rax), %rax53  ;SLM64: callq *%rax54  tail call void %1(i32 2)55  ret i32 056}57