brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 9ab1395 Raw
65 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=instcombine < %s | FileCheck %s3; PR26454; instcombine shouldn't delete the shufflevector.5 6define internal void @0(ptr %arg, i32 %arg1, ptr %arg2) {7; CHECK-LABEL: @0(8; CHECK-NEXT:  bb:9; CHECK-NEXT:    br label [[BB3:%.*]]10; CHECK:       bb3:11; CHECK-NEXT:    [[DOT0:%.*]] = phi i32 [ 0, [[BB:%.*]] ], [ [[I17:%.*]], [[BB4:%.*]] ]12; CHECK-NEXT:    [[I:%.*]] = icmp slt i32 [[DOT0]], [[ARG1:%.*]]13; CHECK-NEXT:    br i1 [[I]], label [[BB4]], label [[BB18:%.*]]14; CHECK:       bb4:15; CHECK-NEXT:    [[TMP0:%.*]] = sext i32 [[DOT0]] to i6416; CHECK-NEXT:    [[I5:%.*]] = getelementptr i8, ptr [[ARG2:%.*]], i64 [[TMP0]]17; CHECK-NEXT:    [[I71:%.*]] = load <1 x i64>, ptr [[I5]], align 118; CHECK-NEXT:    [[I9:%.*]] = call <2 x i64> @foo(<1 x i64> [[I71]])19; CHECK-NEXT:    [[I11:%.*]] = bitcast <2 x i64> [[I9]] to <8 x i16>20; CHECK-NEXT:    [[I12:%.*]] = shufflevector <8 x i16> [[I11]], <8 x i16> poison, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>21; CHECK-NEXT:    [[I13:%.*]] = bitcast <8 x i16> [[I12]] to <4 x i32>22; CHECK-NEXT:    [[I14:%.*]] = sitofp <4 x i32> [[I13]] to <4 x float>23; CHECK-NEXT:    [[TMP2:%.*]] = sext i32 [[DOT0]] to i6424; CHECK-NEXT:    [[I15:%.*]] = getelementptr i8, ptr [[ARG:%.*]], i64 [[TMP2]]25; CHECK-NEXT:    store <4 x float> [[I14]], ptr [[I15]], align 126; CHECK-NEXT:    [[I17]] = add i32 [[DOT0]], 127; CHECK-NEXT:    br label [[BB3]]28; CHECK:       bb18:29; CHECK-NEXT:    call void @llvm.x86.mmx.emms()30; CHECK-NEXT:    ret void31;32bb:33  br label %bb334 35bb3:                                              ; preds = %bb4, %bb36  %.0 = phi i32 [ 0, %bb ], [ %i17, %bb4 ]37  %i = icmp slt i32 %.0, %arg138  br i1 %i, label %bb4, label %bb1839 40bb4:                                              ; preds = %bb341  %i5 = getelementptr i8, ptr %arg2, i32 %.042  %i7 = load <4 x i16>, ptr %i5, align 143  %i8 = bitcast <4 x i16> %i7 to <1 x i64>44  %i9 = call <2 x i64> @foo(<1 x i64> %i8)45  %i10 = bitcast <2 x i64> %i9 to <4 x i32>46  %i11 = bitcast <4 x i32> %i10 to <8 x i16>47  %i12 = shufflevector <8 x i16> %i11, <8 x i16> %i11, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>48  %i13 = bitcast <8 x i16> %i12 to <4 x i32>49  %i14 = sitofp <4 x i32> %i13 to <4 x float>50  %i15 = getelementptr i8, ptr %arg, i32 %.051  store <4 x float> %i14, ptr %i15, align 152  %i17 = add i32 %.0, 153  br label %bb354 55bb18:                                             ; preds = %bb356  call void @llvm.x86.mmx.emms()57  ret void58}59 60declare <2 x i64> @foo(<1 x i64>)61 62declare void @llvm.x86.mmx.emms() #063 64attributes #0 = { nounwind }65