brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 708cdc9 Raw
119 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes="default<O3>" -enable-merge-functions -S < %s | FileCheck %s3 4; TODO: These two functions should get merged, but currently aren't, because5; the function merging pass is scheduled too early.6 7target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"8target triple = "x86_64-unknown-linux-gnu"9 10define i1 @test1(i32 %c) {11; CHECK-LABEL: @test1(12; CHECK-NEXT:  entry:13; CHECK-NEXT:    [[SWITCH_TABLEIDX:%.*]] = add i32 [[C:%.*]], -10014; CHECK-NEXT:    [[TMP0:%.*]] = icmp ult i32 [[SWITCH_TABLEIDX]], 2015; CHECK-NEXT:    [[SWITCH_CAST:%.*]] = trunc i32 [[SWITCH_TABLEIDX]] to i2016; CHECK-NEXT:    [[SWITCH_DOWNSHIFT:%.*]] = lshr i20 -490991, [[SWITCH_CAST]]17; CHECK-NEXT:    [[SWITCH_MASKED:%.*]] = trunc i20 [[SWITCH_DOWNSHIFT]] to i118; CHECK-NEXT:    [[I_0:%.*]] = select i1 [[TMP0]], i1 [[SWITCH_MASKED]], i1 false19; CHECK-NEXT:    ret i1 [[I_0]]20;21entry:22  %_4 = alloca i8, align 123  %_3 = alloca i8, align 124  %_2 = alloca i8, align 125  %i = alloca i8, align 126  %i1 = icmp eq i32 %c, 11527  br i1 %i1, label %bb10, label %bb1128 29bb10:                                             ; preds = %entry30  store i8 1, ptr %_4, align 131  br label %bb1232 33bb11:                                             ; preds = %entry34  %_6 = icmp eq i32 %c, 10935  %i2 = zext i1 %_6 to i836  store i8 %i2, ptr %_4, align 137  br label %bb1238 39bb12:                                             ; preds = %bb11, %bb1040  %i3 = load i8, ptr %_4, align 141  %i4 = trunc i8 %i3 to i142  br i1 %i4, label %bb7, label %bb843 44bb8:                                              ; preds = %bb1245  %_8 = icmp eq i32 %c, 10446  %i5 = zext i1 %_8 to i847  store i8 %i5, ptr %_3, align 148  br label %bb949 50bb7:                                              ; preds = %bb1251  store i8 1, ptr %_3, align 152  br label %bb953 54bb9:                                              ; preds = %bb7, %bb855  %i6 = load i8, ptr %_3, align 156  %i7 = trunc i8 %i6 to i157  br i1 %i7, label %bb4, label %bb558 59bb5:                                              ; preds = %bb960  %_10 = icmp eq i32 %c, 10061  %i8 = zext i1 %_10 to i862  store i8 %i8, ptr %_2, align 163  br label %bb664 65bb4:                                              ; preds = %bb966  store i8 1, ptr %_2, align 167  br label %bb668 69bb6:                                              ; preds = %bb4, %bb570  %i9 = load i8, ptr %_2, align 171  %i10 = trunc i8 %i9 to i172  br i1 %i10, label %bb1, label %bb273 74bb2:                                              ; preds = %bb675  %_12 = icmp eq i32 %c, 11976  %i11 = zext i1 %_12 to i877  store i8 %i11, ptr %i, align 178  br label %bb379 80bb1:                                              ; preds = %bb681  store i8 1, ptr %i, align 182  br label %bb383 84bb3:                                              ; preds = %bb1, %bb285  %i12 = load i8, ptr %i, align 186  %i13 = trunc i8 %i12 to i187  ret i1 %i1388}89 90define i1 @test2(i32 %c) {91; CHECK-LABEL: @test2(92; CHECK-NEXT:    [[TMP2:%.*]] = tail call noundef i1 @test1(i32 [[TMP0:%.*]]) #[[ATTR0:[0-9]+]]93; CHECK-NEXT:    ret i1 [[TMP2]]94;95entry:96  %i = alloca i8, align 197  switch i32 %c, label %bb1 [98  i32 115, label %bb299  i32 109, label %bb2100  i32 104, label %bb2101  i32 100, label %bb2102  i32 119, label %bb2103  ]104 105bb1:                                              ; preds = %entry106  store i8 0, ptr %i, align 1107  br label %bb3108 109bb2:                                              ; preds = %entry, %entry, %entry, %entry, %entry110  store i8 1, ptr %i, align 1111  br label %bb3112 113bb3:                                              ; preds = %bb2, %bb1114  %i1 = load i8, ptr %i, align 1115  %i2 = trunc i8 %i1 to i1116  ret i1 %i2117}118 119