brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.1 KiB · 5e66c7a Raw
207 lines · plain
1; RUN: llc -mtriple aarch64-apple-darwin -O0 -global-isel -verify-machineinstrs %s -o - 2>&1 | FileCheck %s2target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"3target triple = "arm64-apple-ios13.0.0"4 5@t_val = thread_local global i32 0, align 46@.str = private unnamed_addr constant [5 x i8] c"str1\00", align 17@str1 = global ptr @.str, align 88@.str.1 = private unnamed_addr constant [5 x i8] c"str2\00", align 19@str2 = global ptr @.str.1, align 810@.str.2 = private unnamed_addr constant [5 x i8] c"str3\00", align 111@str3 = global ptr @.str.2, align 812@.str.3 = private unnamed_addr constant [5 x i8] c"str4\00", align 113@str4 = global ptr @.str.3, align 814@.str.4 = private unnamed_addr constant [5 x i8] c"str5\00", align 115@str5 = global ptr @.str.4, align 816@.str.5 = private unnamed_addr constant [5 x i8] c"str6\00", align 117@str6 = global ptr @.str.5, align 818@.str.6 = private unnamed_addr constant [5 x i8] c"str7\00", align 119@str7 = global ptr @.str.6, align 820@.str.7 = private unnamed_addr constant [5 x i8] c"str8\00", align 121@str8 = global ptr @.str.7, align 822@.str.8 = private unnamed_addr constant [5 x i8] c"str9\00", align 123@str9 = global ptr @.str.8, align 824@.str.9 = private unnamed_addr constant [6 x i8] c"str10\00", align 125@str10 = global ptr @.str.9, align 826@.str.10 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 127@.str.11 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 128@.str.12 = private unnamed_addr constant [4 x i8] c"xyz\00", align 129 30 31; This test checks that we don't re-use the register for the variable descriptor32; for the second ldr.33; CHECK:        adrp	x[[PTR1:[0-9]+]], _t_val@TLVPPAGE34; CHECK:	ldr	x0, [x[[PTR1]], _t_val@TLVPPAGEOFF]35; CHECK:	ldr	x[[FPTR:[0-9]+]], [x0]36; CHECK:        blr     x[[FPTR]]37 38define void @_Z4funcPKc(ptr %id) {39entry:40  %id.addr = alloca ptr, align 841  store ptr %id, ptr %id.addr, align 842  %0 = load ptr, ptr %id.addr, align 843  %1 = load ptr, ptr @str1, align 844  %cmp = icmp eq ptr %0, %145  br i1 %cmp, label %if.then, label %if.else46 47if.then:                                          ; preds = %entry48  %2 = load ptr, ptr @str1, align 849  %call = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %2)50  %3 = load ptr, ptr @str2, align 851  %call1 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %3)52  %4 = load ptr, ptr @str3, align 853  %call2 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %4)54  %5 = load ptr, ptr @str4, align 855  %call3 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %5)56  %6 = load ptr, ptr @str5, align 857  %call4 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %6)58  %7 = load ptr, ptr @str6, align 859  %call5 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %7)60  %8 = load ptr, ptr @str7, align 861  %call6 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %8)62  %9 = load ptr, ptr @str8, align 863  %call7 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %9)64  %10 = load ptr, ptr @str9, align 865  %call8 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %10)66  %11 = load ptr, ptr @str10, align 867  %call9 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %11)68  %12 = load i32, ptr @t_val, align 469  %call10 = call i32 (ptr, ...) @printf(ptr @.str.11, i32 %12)70  br label %if.end5671 72if.else:                                          ; preds = %entry73  %13 = load ptr, ptr %id.addr, align 874  %14 = load ptr, ptr @str2, align 875  %cmp11 = icmp eq ptr %13, %1476  br i1 %cmp11, label %if.then12, label %if.else2477 78if.then12:                                        ; preds = %if.else79  %15 = load ptr, ptr @str1, align 880  %call13 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %15)81  %16 = load ptr, ptr @str2, align 882  %call14 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %16)83  %17 = load ptr, ptr @str3, align 884  %call15 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %17)85  %18 = load ptr, ptr @str4, align 886  %call16 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %18)87  %19 = load ptr, ptr @str5, align 888  %call17 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %19)89  %20 = load ptr, ptr @str6, align 890  %call18 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %20)91  %21 = load ptr, ptr @str7, align 892  %call19 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %21)93  %22 = load ptr, ptr @str8, align 894  %call20 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %22)95  %23 = load ptr, ptr @str9, align 896  %call21 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %23)97  %24 = load ptr, ptr @str10, align 898  %call22 = call i32 (ptr, ...) @printf(ptr @.str.10, ptr %24)99  %25 = load i32, ptr @t_val, align 4100  %call23 = call i32 (ptr, ...) @printf(ptr @.str.11, i32 %25)101  br label %if.end55102 103if.else24:                                        ; preds = %if.else104  %26 = load ptr, ptr %id.addr, align 8105  %27 = load ptr, ptr @str3, align 8106  %cmp25 = icmp eq ptr %26, %27107  br i1 %cmp25, label %if.then26, label %if.else27108 109if.then26:                                        ; preds = %if.else24110  br label %if.end54111 112if.else27:                                        ; preds = %if.else24113  %28 = load ptr, ptr %id.addr, align 8114  %29 = load ptr, ptr @str4, align 8115  %cmp28 = icmp eq ptr %28, %29116  br i1 %cmp28, label %if.then29, label %if.else30117 118if.then29:                                        ; preds = %if.else27119  br label %if.end53120 121if.else30:                                        ; preds = %if.else27122  %30 = load ptr, ptr %id.addr, align 8123  %31 = load ptr, ptr @str5, align 8124  %cmp31 = icmp eq ptr %30, %31125  br i1 %cmp31, label %if.then32, label %if.else33126 127if.then32:                                        ; preds = %if.else30128  br label %if.end52129 130if.else33:                                        ; preds = %if.else30131  %32 = load ptr, ptr %id.addr, align 8132  %33 = load ptr, ptr @str6, align 8133  %cmp34 = icmp eq ptr %32, %33134  br i1 %cmp34, label %if.then35, label %if.else36135 136if.then35:                                        ; preds = %if.else33137  br label %if.end51138 139if.else36:                                        ; preds = %if.else33140  %34 = load ptr, ptr %id.addr, align 8141  %35 = load ptr, ptr @str7, align 8142  %cmp37 = icmp eq ptr %34, %35143  br i1 %cmp37, label %if.then38, label %if.else39144 145if.then38:                                        ; preds = %if.else36146  br label %if.end50147 148if.else39:                                        ; preds = %if.else36149  %36 = load ptr, ptr %id.addr, align 8150  %37 = load ptr, ptr @str8, align 8151  %cmp40 = icmp eq ptr %36, %37152  br i1 %cmp40, label %if.then41, label %if.else42153 154if.then41:                                        ; preds = %if.else39155  br label %if.end49156 157if.else42:                                        ; preds = %if.else39158  %38 = load ptr, ptr %id.addr, align 8159  %39 = load ptr, ptr @str9, align 8160  %cmp43 = icmp eq ptr %38, %39161  br i1 %cmp43, label %if.then44, label %if.else45162 163if.then44:                                        ; preds = %if.else42164  br label %if.end48165 166if.else45:                                        ; preds = %if.else42167  %40 = load ptr, ptr %id.addr, align 8168  %41 = load ptr, ptr @str10, align 8169  %cmp46 = icmp eq ptr %40, %41170  br i1 %cmp46, label %if.then47, label %if.end171 172if.then47:                                        ; preds = %if.else45173  br label %if.end174 175if.end:                                           ; preds = %if.then47, %if.else45176  br label %if.end48177 178if.end48:                                         ; preds = %if.end, %if.then44179  br label %if.end49180 181if.end49:                                         ; preds = %if.end48, %if.then41182  br label %if.end50183 184if.end50:                                         ; preds = %if.end49, %if.then38185  br label %if.end51186 187if.end51:                                         ; preds = %if.end50, %if.then35188  br label %if.end52189 190if.end52:                                         ; preds = %if.end51, %if.then32191  br label %if.end53192 193if.end53:                                         ; preds = %if.end52, %if.then29194  br label %if.end54195 196if.end54:                                         ; preds = %if.end53, %if.then26197  br label %if.end55198 199if.end55:                                         ; preds = %if.end54, %if.then12200  br label %if.end56201 202if.end56:                                         ; preds = %if.end55, %if.then203  ret void204}205declare i32 @printf(ptr, ...)206 207