brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.2 KiB · d0a8d4f Raw
255 lines · plain
1# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z13 -misched=shuffle -verify-machineinstrs -start-before=register-coalescer -systemz-subreg-liveness %s -o - | FileCheck %s2 3# -misched=shuffle is under !NDEBUG.4# REQUIRES: asserts5 6# Check for successful compilation.7# CHECK: lhi %r0, 08 9--- |10  target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"11  target triple = "s390x-unknown-linux-gnu"12 13  @g_54 = external dso_local unnamed_addr global i8, align 214  @g_69 = external dso_local unnamed_addr global i32, align 415  @g_189 = external dso_local unnamed_addr global i16, align 216  @g_226 = external dso_local unnamed_addr global i8, align 217  @g_314 = external dso_local global [10 x i8], align 218  @g_334 = external dso_local global i32, align 419  @g_352 = external dso_local unnamed_addr global i64, align 820  @g_747 = external dso_local unnamed_addr global i1, align 221  @0 = internal unnamed_addr global i8 74, align 222  @g_1055 = external dso_local unnamed_addr global i16, align 223  @g_195 = external dso_local global ptr, align 824 25  declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #026 27  declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #028 29  define dso_local fastcc void @func_32(i8 zeroext %arg, i16 zeroext %arg1) unnamed_addr #1 {30  bb:31    %tmp = alloca i32, align 432    %tmp2 = alloca [5 x [5 x ptr]], align 833    %tmp3 = bitcast ptr %tmp2 to ptr34    %tmp4 = getelementptr inbounds [5 x [5 x ptr]], ptr %tmp2, i64 0, i64 2, i64 235    %tmp5 = bitcast ptr %tmp4 to ptr36    br label %bb637 38  bb6:                                              ; preds = %bb40, %bb39    %tmp7 = phi i8 [ 0, %bb ], [ %tmp43, %bb40 ]40    %tmp8 = phi i16 [ %arg1, %bb ], [ %tmp41, %bb40 ]41    %tmp9 = phi i8 [ %arg, %bb ], [ 0, %bb40 ]42    %tmp10 = sext i8 %tmp7 to i6443    %tmp11 = add nsw i64 %tmp10, 144    %tmp12 = getelementptr inbounds [10 x i8], ptr @g_314, i64 0, i64 %tmp1145    %tmp13 = load volatile i8, ptr %tmp12, align 146    br i1 undef, label %bb39, label %bb1447 48  bb14:                                             ; preds = %bb649    %tmp15 = load ptr, ptr @g_195, align 850    %tmp16 = load volatile i8, ptr %tmp12, align 151    store i32 7, ptr %tmp, align 452    call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %tmp3)53    store i32 580868341, ptr @g_69, align 454    %tmp17 = zext i8 %tmp9 to i6455    %tmp18 = load i64, ptr @g_352, align 856    %tmp19 = and i64 %tmp18, %tmp1757    %tmp20 = icmp ne i64 %tmp19, 158    %tmp21 = zext i1 %tmp20 to i6459    %tmp22 = load ptr, ptr %tmp15, align 860    store i64 %tmp21, ptr %tmp22, align 861    %tmp23 = load i32, ptr @g_334, align 462    %tmp24 = xor i32 %tmp23, 163    store i32 %tmp24, ptr @g_334, align 464    %tmp25 = zext i8 %tmp9 to i1665    %tmp26 = mul i16 %tmp25, 2603666    %tmp27 = load ptr, ptr %tmp5, align 867    br label %bb2868 69  bb28:                                             ; preds = %bb1470    %tmp29 = mul i16 %tmp26, %tmp871    %tmp30 = zext i16 %tmp29 to i3272    store i32 %tmp30, ptr @g_69, align 473    store i8 0, ptr @g_226, align 274    br label %bb3275 76  bb31:                                             ; preds = %bb3577    call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %tmp3)78    br label %bb4079 80  bb32:                                             ; preds = %bb34, %bb2881    store i16 1, ptr @g_1055, align 282    store i64 0, ptr @g_352, align 883    store ptr @g_334, ptr undef, align 884    %tmp33 = or i64 0, 185    store i64 %tmp33, ptr @g_352, align 886    store ptr @g_334, ptr null, align 887    br label %bb3488 89  bb34:                                             ; preds = %bb3290    br i1 false, label %bb32, label %bb3591 92  bb35:                                             ; preds = %bb3493    store ptr %tmp, ptr undef, align 894    store i8 0, ptr @0, align 295    store i16 2, ptr @g_189, align 296    store i8 1, ptr @g_54, align 297    store i1 true, ptr @g_747, align 298    store i64 0, ptr undef, align 899    %tmp36 = load ptr, ptr undef, align 8100    %tmp37 = load i64, ptr %tmp36, align 8101    %tmp38 = load ptr, ptr %tmp27, align 8102    store i64 %tmp37, ptr %tmp38, align 8103    store i16 0, ptr @g_189, align 2104    br label %bb31105 106  bb39:                                             ; preds = %bb6107    br label %bb40108 109  bb40:                                             ; preds = %bb39, %bb31110    %tmp41 = phi i16 [ undef, %bb39 ], [ 0, %bb31 ]111    %tmp42 = load volatile i8, ptr %tmp12, align 1112    %tmp43 = add i8 %tmp7, 1113    br i1 false, label %bb6, label %bb44114 115  bb44:                                             ; preds = %bb40116    unreachable117  }118 119  attributes #0 = { argmemonly nofree nosync nounwind willreturn }120  attributes #1 = { nounwind }121  attributes #2 = { nofree nosync nounwind willreturn }122 123...124---125name:            func_32126alignment:       16127tracksRegLiveness: true128liveins:129  - { reg: '$r2d', virtual-reg: '%0' }130  - { reg: '$r3d', virtual-reg: '%1' }131frameInfo:132  maxAlignment:    8133stack:134  - { id: 0, name: tmp, size: 4, alignment: 4 }135  - { id: 1, name: tmp2, size: 200, alignment: 8 }136body:             |137  bb.0.bb:138    liveins: $r2d, $r3d139 140    %1:gr64bit = COPY killed $r3d141    %0:gr64bit = COPY killed $r2d142    %2:grx32bit = COPY killed %1.subreg_l32143    %3:grx32bit = COPY killed %0.subreg_l32144    %4:addr64bit = LA %stack.1.tmp2, 96, $noreg145    %5:gr32bit = LHIMux 0146    %6:addr64bit = LARL @g_314147    %7:gr32bit = IIFMux 580868341148    %8:addr64bit = LARL @g_352149    %9:gr64bit = LGHI 0150    %10:addr64bit = LARL @g_334151    %11:gr32bit = LHIMux 1152    %12:addr64bit = LARL @g_226153    %13:gr64bit = LGHI 1154    %14:gr64bit = LA %stack.0.tmp, 0, $noreg155    %15:addr64bit = LARL @0156    %16:gr32bit = LHIMux 2157    %17:addr64bit = LARL @g_54158    %18:addr64bit = LARL @g_747159    %19:grx32bit = COPY %5160    %20:gr32bit = COPY killed %2161    %21:grx32bit = COPY killed %3162 163  bb.1.bb6:164    %22:grx32bit = COPY killed %21165    %23:gr32bit = COPY killed %20166    %24:grx32bit = COPY killed %19167    undef %25.subreg_l32:gr64bit = COPY %24168    %26:addr64bit = LGBR killed %25169    %27:addr64bit = LA %26, 1, %6170    dead %28:grx32bit = LBMux killed %26, 1, %6 :: (volatile load (s8) from %ir.tmp12)171    CHIMux %5, 0, implicit-def $cc172    BRC 14, 6, %bb.7, implicit killed $cc173    J %bb.2174 175  bb.2.bb14:176    %29:addr64bit = LGRL @g_195 :: (dereferenceable load (s64) from @g_195)177    dead %30:grx32bit = LBMux %27, 0, $noreg :: (volatile load (s8) from %ir.tmp12)178    MVHI %stack.0.tmp, 0, 7 :: (store (s32) into %ir.tmp)179    STRL %7, @g_69 :: (store (s32) into @g_69)180    undef %31.subreg_l32:gr64bit = COPY %22181    %32:gr64bit = LLGC %8, 7, $noreg :: (dereferenceable load (s8) from @g_352 + 7)182    %33:gr64bit = COPY killed %32183    %33:gr64bit = RNSBG %33, killed %31, 0, 63, 0, implicit-def dead $cc184    CGHI killed %33, 1, implicit-def $cc185    %34:gr64bit = COPY %9186    %34:gr64bit = LOCGHI %34, 1, 14, 6, implicit killed $cc187    %35:addr64bit = LG killed %29, 0, $noreg :: (load (s64) from %ir.tmp15)188    STG killed %34, killed %35, 0, $noreg :: (store (s64) into %ir.tmp22)189    %36:gr32bit = COPY %11190    %36:gr32bit = X %36, %10, 0, $noreg, implicit-def dead $cc :: (dereferenceable load (s32) from @g_334)191    STRL killed %36, @g_334 :: (store (s32) into @g_334)192    %37:gr32bit = LLCRMux killed %22193    %38:gr32bit = COPY killed %37194    %38:gr32bit = MHI %38, 26036195    %39:addr64bit = LG %4, 0, $noreg :: (dereferenceable load (s64) from %ir.tmp5)196 197  bb.3.bb28:198    %40:gr32bit = COPY killed %38199    %40:gr32bit = MSR %40, killed %23200    %41:gr32bit = LLHRMux killed %40201    STRL killed %41, @g_69 :: (store (s32) into @g_69)202    MVI %12, 0, 0 :: (store (s8) into @g_226, align 2)203    J %bb.4204 205  bb.4.bb32:206    STHRL %11, @g_1055 :: (store (s16) into @g_1055)207    STGRL %9, @g_352 :: (store (s64) into @g_352)208    STG %10, undef %42:addr64bit, 0, $noreg :: (store (s64) into `ptr undef`)209    STGRL %13, @g_352 :: (store (s64) into @g_352)210    STG %10, $noreg, 0, $noreg :: (store (s64) into `ptr null`)211 212  bb.5.bb34:213    successors: %bb.4(0x7c000000), %bb.6(0x04000000)214 215    CHIMux %5, 0, implicit-def $cc216    BRC 14, 6, %bb.4, implicit killed $cc217    J %bb.6218 219  bb.6.bb35:220    STG %14, undef %43:addr64bit, 0, $noreg :: (store (s64) into `ptr undef`)221    MVI %15, 0, 0 :: (store (s8) into @0, align 2)222    STHRL %16, @g_189 :: (store (s16) into @g_189)223    MVI %17, 0, 1 :: (store (s8) into @g_54, align 2)224    MVI %18, 0, 1 :: (store (s8) into @g_747, align 2)225    MVGHI undef %44:addr64bit, 0, 0 :: (store (s64) into `ptr undef`)226    %45:gr64bit = LG $noreg, 0, $noreg :: (load (s64) from %ir.tmp36)227    %46:addr64bit = LG killed %39, 0, $noreg :: (load (s64) from %ir.tmp27)228    STG killed %45, killed %46, 0, $noreg :: (store (s64) into %ir.tmp38)229    STHRL %5, @g_189 :: (store (s16) into @g_189)230    %47:grx32bit = LHIMux 0231    %48:grx32bit = COPY killed %47232    J %bb.8233 234  bb.7.bb39:235    %48:grx32bit = IMPLICIT_DEF236 237  bb.8.bb40:238    successors: %bb.1(0x7fffffff), %bb.9(0x00000001)239 240    %49:grx32bit = COPY killed %48241    dead %50:grx32bit = LBMux killed %27, 0, $noreg :: (volatile load (s8) from %ir.tmp12)242    %51:grx32bit = COPY killed %24243    %51:grx32bit = AHIMux %51, 1, implicit-def dead $cc244    %52:grx32bit = LHIMux 0245    CHIMux %52, 0, implicit-def $cc246    %19:grx32bit = COPY killed %51247    %20:gr32bit = COPY killed %49248    %21:grx32bit = COPY killed %52249    BRC 14, 6, %bb.1, implicit killed $cc250    J %bb.9251 252  bb.9.bb44:253 254...255