brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.2 KiB · fd6b5c7 Raw
193 lines · plain
1; Test that adjustSubwordCmp() maintains the chains properly when creating a2; new extending load.3;4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -O3 | FileCheck %s5 6@g_56 = external hidden unnamed_addr global i64, align 87@func_22.l_91 = external hidden unnamed_addr constant [4 x [7 x ptr]], align 88@g_102 = external hidden unnamed_addr global ptr, align 89@.str = external hidden unnamed_addr constant [2 x i8], align 210@.str.1 = external hidden unnamed_addr constant [15 x i8], align 211@crc32_context = external hidden unnamed_addr global i32, align 412@crc32_tab = external hidden unnamed_addr global [256 x i32], align 413@.str.2 = external hidden unnamed_addr constant [36 x i8], align 214@.str.3 = external hidden unnamed_addr constant [15 x i8], align 215@g_181.0.4.5 = external hidden unnamed_addr global i1, align 216 17; Function Attrs: argmemonly nounwind18declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #019 20; Function Attrs: argmemonly nounwind21declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) #022 23; Function Attrs: argmemonly nounwind24declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #025 26; Function Attrs: nounwind27define signext i32 @main(i32 signext, ptr nocapture readonly) local_unnamed_addr #1 {28  %3 = alloca [4 x [7 x ptr]], align 829  %4 = icmp eq i32 %0, 230  br i1 %4, label %5, label %1131 32; <label>:5:                                      ; preds = %233  %6 = getelementptr inbounds ptr, ptr %1, i64 134  %7 = load ptr, ptr %6, align 835  %8 = tail call signext i32 @strcmp(ptr %7, ptr @.str) #436  %9 = icmp eq i32 %8, 037  %10 = zext i1 %9 to i3238  br label %1139 40; <label>:11:                                     ; preds = %5, %241  %12 = phi i32 [ 0, %2 ], [ %10, %5 ]42  br label %1343 44; <label>:13:                                     ; preds = %13, %1145  %14 = phi i64 [ 0, %11 ], [ %58, %13 ]46  %15 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %11 ], [ %59, %13 ]47  %16 = and <4 x i32> %15, <i32 1, i32 1, i32 1, i32 1>48  %17 = icmp eq <4 x i32> %16, zeroinitializer49  %18 = lshr <4 x i32> %15, <i32 1, i32 1, i32 1, i32 1>50  %19 = xor <4 x i32> %18, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>51  %20 = select <4 x i1> %17, <4 x i32> %18, <4 x i32> %1952  %21 = and <4 x i32> %20, <i32 1, i32 1, i32 1, i32 1>53  %22 = icmp eq <4 x i32> %21, zeroinitializer54  %23 = lshr <4 x i32> %20, <i32 1, i32 1, i32 1, i32 1>55  %24 = xor <4 x i32> %23, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>56  %25 = select <4 x i1> %22, <4 x i32> %23, <4 x i32> %2457  %26 = and <4 x i32> %25, <i32 1, i32 1, i32 1, i32 1>58  %27 = icmp eq <4 x i32> %26, zeroinitializer59  %28 = lshr <4 x i32> %25, <i32 1, i32 1, i32 1, i32 1>60  %29 = xor <4 x i32> %28, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>61  %30 = select <4 x i1> %27, <4 x i32> %28, <4 x i32> %2962  %31 = and <4 x i32> %30, <i32 1, i32 1, i32 1, i32 1>63  %32 = icmp eq <4 x i32> %31, zeroinitializer64  %33 = lshr <4 x i32> %30, <i32 1, i32 1, i32 1, i32 1>65  %34 = xor <4 x i32> %33, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>66  %35 = select <4 x i1> %32, <4 x i32> %33, <4 x i32> %3467  %36 = and <4 x i32> %35, <i32 1, i32 1, i32 1, i32 1>68  %37 = icmp eq <4 x i32> %36, zeroinitializer69  %38 = lshr <4 x i32> %35, <i32 1, i32 1, i32 1, i32 1>70  %39 = xor <4 x i32> %38, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>71  %40 = select <4 x i1> %37, <4 x i32> %38, <4 x i32> %3972  %41 = and <4 x i32> %40, <i32 1, i32 1, i32 1, i32 1>73  %42 = icmp eq <4 x i32> %41, zeroinitializer74  %43 = lshr <4 x i32> %40, <i32 1, i32 1, i32 1, i32 1>75  %44 = xor <4 x i32> %43, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>76  %45 = select <4 x i1> %42, <4 x i32> %43, <4 x i32> %4477  %46 = and <4 x i32> %45, <i32 1, i32 1, i32 1, i32 1>78  %47 = icmp eq <4 x i32> %46, zeroinitializer79  %48 = lshr <4 x i32> %45, <i32 1, i32 1, i32 1, i32 1>80  %49 = xor <4 x i32> %48, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>81  %50 = select <4 x i1> %47, <4 x i32> %48, <4 x i32> %4982  %51 = and <4 x i32> %50, <i32 1, i32 1, i32 1, i32 1>83  %52 = icmp eq <4 x i32> %51, zeroinitializer84  %53 = lshr <4 x i32> %50, <i32 1, i32 1, i32 1, i32 1>85  %54 = xor <4 x i32> %53, <i32 -306674912, i32 -306674912, i32 -306674912, i32 -306674912>86  %55 = select <4 x i1> %52, <4 x i32> %53, <4 x i32> %5487  %56 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %1488  %57 = bitcast ptr %56 to ptr89  store <4 x i32> %55, ptr %57, align 490  %58 = add i64 %14, 491  %59 = add <4 x i32> %15, <i32 4, i32 4, i32 4, i32 4>92  %60 = icmp eq i64 %58, 25693  br i1 %60, label %61, label %1394 95; <label>:61:                                     ; preds = %1396; CHECK-LABEL: %bb.6:97; CHECK: stgrl   %r0, g_5698; CHECK: llhrl   %r0, g_56+699; CHECK: stgrl   %r2, g_56100  store i64 0, ptr @g_56, align 8101  %62 = bitcast ptr %3 to ptr102  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %62) #5103  call void @llvm.memcpy.p0.p0.i64(ptr align 8 nonnull %62, ptr align 8 @func_22.l_91, i64 224, i1 false) #5104  %63 = getelementptr inbounds [4 x [7 x ptr]], ptr %3, i64 0, i64 0, i64 2105  store ptr %63, ptr @g_102, align 8106  %64 = load i64, ptr @g_56, align 8107  store i64 2, ptr @g_56, align 8108  %65 = and i64 %64, 65535109  %66 = icmp eq i64 %65, 0110  br i1 %66, label %68, label %67111 112; <label>:67:                                     ; preds = %61113  store i1 true, ptr @g_181.0.4.5, align 2114  br label %68115 116; <label>:68:                                     ; preds = %67, %61117  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %62) #5118  %69 = load i1, ptr @g_181.0.4.5, align 2119  %70 = select i1 %69, i32 0, i32 72120  %71 = load i32, ptr @crc32_context, align 4121  %72 = lshr i32 %71, 8122  %73 = and i32 %71, 255123  %74 = xor i32 %73, %70124  %75 = zext i32 %74 to i64125  %76 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %75126  %77 = load i32, ptr %76, align 4127  %78 = xor i32 %72, %77128  %79 = lshr i32 %78, 8129  %80 = and i32 %78, 255130  %81 = zext i32 %80 to i64131  %82 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %81132  %83 = load i32, ptr %82, align 4133  %84 = xor i32 %79, %83134  %85 = lshr i32 %84, 8135  %86 = and i32 %84, 255136  %87 = zext i32 %86 to i64137  %88 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %87138  %89 = load i32, ptr %88, align 4139  %90 = xor i32 %85, %89140  %91 = lshr i32 %90, 8141  %92 = and i32 %90, 255142  %93 = zext i32 %92 to i64143  %94 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %93144  %95 = load i32, ptr %94, align 4145  %96 = xor i32 %91, %95146  %97 = lshr i32 %96, 8147  %98 = and i32 %96, 255148  %99 = zext i32 %98 to i64149  %100 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %99150  %101 = load i32, ptr %100, align 4151  %102 = xor i32 %97, %101152  %103 = lshr i32 %102, 8153  %104 = and i32 %102, 255154  %105 = zext i32 %104 to i64155  %106 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %105156  %107 = load i32, ptr %106, align 4157  %108 = xor i32 %103, %107158  %109 = lshr i32 %108, 8159  %110 = and i32 %108, 255160  %111 = zext i32 %110 to i64161  %112 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %111162  %113 = load i32, ptr %112, align 4163  %114 = xor i32 %109, %113164  %115 = lshr i32 %114, 8165  %116 = and i32 %114, 255166  %117 = zext i32 %116 to i64167  %118 = getelementptr inbounds [256 x i32], ptr @crc32_tab, i64 0, i64 %117168  %119 = load i32, ptr %118, align 4169  %120 = xor i32 %115, %119170  store i32 %120, ptr @crc32_context, align 4171  %121 = icmp eq i32 %12, 0172  br i1 %121, label %127, label %122173 174; <label>:122:                                    ; preds = %68175  %123 = xor i32 %120, -1176  %124 = zext i32 %123 to i64177  %125 = call signext i32 (ptr, ...) @printf(ptr @.str.2, ptr @.str.1, i64 %124) #5178  %126 = load i32, ptr @crc32_context, align 4179  br label %127180 181; <label>:127:                                    ; preds = %122, %68182  %128 = phi i32 [ %120, %68 ], [ %126, %122 ]183  %129 = xor i32 %128, -1184  %130 = call signext i32 (ptr, ...) @printf(ptr @.str.3, i32 zeroext %129) #5185  ret i32 0186}187 188; Function Attrs: nounwind readonly189declare signext i32 @strcmp(ptr nocapture, ptr nocapture) local_unnamed_addr #2190 191; Function Attrs: nounwind192declare signext i32 @printf(ptr nocapture readonly, ...) local_unnamed_addr #3193