Home | History | Annotate | Download | only in SystemZ
      1 ; Test the padding of unextended integer stack parameters.  These are used
      2 ; to pass structures.
      3 ;
      4 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
      5 
      6 define i8 @f1(i8 %a, i8 %b, i8 %c, i8 %d, i8 %e, i8 %f, i8 %g) {
      7 ; CHECK-LABEL: f1:
      8 ; CHECK: ar %r2, %r3
      9 ; CHECK: ar %r2, %r4
     10 ; CHECK: ar %r2, %r5
     11 ; CHECK: ar %r2, %r6
     12 ; CHECK: lb {{%r[0-5]}}, 167(%r15)
     13 ; CHECK: lb {{%r[0-5]}}, 175(%r15)
     14 ; CHECK: br %r14
     15   %addb = add i8 %a, %b
     16   %addc = add i8 %addb, %c
     17   %addd = add i8 %addc, %d
     18   %adde = add i8 %addd, %e
     19   %addf = add i8 %adde, %f
     20   %addg = add i8 %addf, %g
     21   ret i8 %addg
     22 }
     23 
     24 define i16 @f2(i16 %a, i16 %b, i16 %c, i16 %d, i16 %e, i16 %f, i16 %g) {
     25 ; CHECK-LABEL: f2:
     26 ; CHECK: ar %r2, %r3
     27 ; CHECK: ar %r2, %r4
     28 ; CHECK: ar %r2, %r5
     29 ; CHECK: ar %r2, %r6
     30 ; CHECK: lh {{%r[0-5]}}, 166(%r15)
     31 ; CHECK: lh {{%r[0-5]}}, 174(%r15)
     32 ; CHECK: br %r14
     33   %addb = add i16 %a, %b
     34   %addc = add i16 %addb, %c
     35   %addd = add i16 %addc, %d
     36   %adde = add i16 %addd, %e
     37   %addf = add i16 %adde, %f
     38   %addg = add i16 %addf, %g
     39   ret i16 %addg
     40 }
     41 
     42 define i32 @f3(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g) {
     43 ; CHECK-LABEL: f3:
     44 ; CHECK: ar %r2, %r3
     45 ; CHECK: ar %r2, %r4
     46 ; CHECK: ar %r2, %r5
     47 ; CHECK: ar %r2, %r6
     48 ; CHECK: a %r2, 164(%r15)
     49 ; CHECK: a %r2, 172(%r15)
     50 ; CHECK: br %r14
     51   %addb = add i32 %a, %b
     52   %addc = add i32 %addb, %c
     53   %addd = add i32 %addc, %d
     54   %adde = add i32 %addd, %e
     55   %addf = add i32 %adde, %f
     56   %addg = add i32 %addf, %g
     57   ret i32 %addg
     58 }
     59 
     60 define i64 @f4(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f, i64 %g) {
     61 ; CHECK-LABEL: f4:
     62 ; CHECK: agr %r2, %r3
     63 ; CHECK: agr %r2, %r4
     64 ; CHECK: agr %r2, %r5
     65 ; CHECK: agr %r2, %r6
     66 ; CHECK: ag %r2, 160(%r15)
     67 ; CHECK: ag %r2, 168(%r15)
     68 ; CHECK: br %r14
     69   %addb = add i64 %a, %b
     70   %addc = add i64 %addb, %c
     71   %addd = add i64 %addc, %d
     72   %adde = add i64 %addd, %e
     73   %addf = add i64 %adde, %f
     74   %addg = add i64 %addf, %g
     75   ret i64 %addg
     76 }
     77