fixed to test only the feature, not the feature and a CPU
[oota-llvm.git] / test / CodeGen / X86 / inreg.ll
index a6a7ebada38b54afa1f314658a10526aad37bd66..e4610e3602579816ff271cdd61d6e57adaa228de 100644 (file)
@@ -1,19 +1,46 @@
-; RUN: llc < %s -mtriple=i686-pc-linux -mcpu=corei7 | FileCheck %s
+; RUN: llc < %s -mtriple=i686-pc-linux -mcpu=corei7 | FileCheck --check-prefix=DAG %s
+; RUN: llc < %s -mtriple=i686-pc-linux -mcpu=corei7 -O0 | FileCheck --check-prefix=FAST %s
 
-%struct.s = type { double, float }
+%struct.s1 = type { double, float }
 
-define void @g() nounwind {
+define void @g1() nounwind {
 entry:
-  %tmp = alloca %struct.s, align 4
-  call void @f(%struct.s* inreg sret %tmp, i32 inreg 41, i32 inreg 42, i32 43)
+  %tmp = alloca %struct.s1, align 4
+  call void @f(%struct.s1* inreg sret %tmp, i32 inreg 41, i32 inreg 42, i32 43)
   ret void
-  ; CHECK: g:
-  ; CHECK: subl {{.*}}, %esp
-  ; CHECK-NEXT: $43, (%esp)
-  ; CHECK-NEXT: leal    16(%esp), %eax
-  ; CHECK-NEXT: movl    $41, %edx
-  ; CHECK-NEXT: movl    $42, %ecx
-  ; CHECK-NEXT: calll   f
+  ; DAG-LABEL: g1:
+  ; DAG: subl $[[AMT:.*]], %esp
+  ; DAG-NEXT: $43, (%esp)
+  ; DAG-NEXT: leal    16(%esp), %eax
+  ; DAG-NEXT: movl    $41, %edx
+  ; DAG-NEXT: movl    $42, %ecx
+  ; DAG-NEXT: calll   f
+  ; DAG-NEXT: addl $[[AMT]], %esp
+  ; DAG-NEXT: ret
+
+  ; FAST-LABEL: g1:
+  ; FAST: subl $[[AMT:.*]], %esp
+  ; FAST-NEXT: leal    8(%esp), %eax
+  ; FAST-NEXT: movl    $41, %edx
+  ; FAST-NEXT: movl    $42, %ecx
+  ; FAST: $43, (%esp)
+  ; FAST: calll   f
+  ; FAST-NEXT: addl $[[AMT]], %esp
+  ; FAST: ret
 }
 
-declare void @f(%struct.s* inreg sret, i32 inreg, i32 inreg, i32)
+declare void @f(%struct.s1* inreg sret, i32 inreg, i32 inreg, i32)
+
+%struct.s2 = type {}
+
+define void @g2(%struct.s2* inreg sret %agg.result) nounwind {
+entry:
+  ret void
+  ; DAG: g2
+  ; DAG-NOT: ret $4
+  ; DAG: .size g2
+
+  ; FAST: g2
+  ; FAST-NOT: ret $4
+  ; FAST: .size g2
+}