diff --git a/bench/assimp/optimized/MDLMaterialLoader.ll b/bench/assimp/optimized/MDLMaterialLoader.ll index d0df4585edc..a904a6829dc 100644 --- a/bench/assimp/optimized/MDLMaterialLoader.ll +++ b/bench/assimp/optimized/MDLMaterialLoader.ll @@ -1405,16 +1405,14 @@ invoke.cont85: ; preds = %invoke.cont80 for.cond90.preheader: ; preds = %invoke.cont85, %for.inc108 %indvars.iv140 = phi i64 [ 0, %invoke.cont85 ], [ %indvars.iv.next141, %for.inc108 ] - %rem148 = and i64 %indvars.iv140, 1 - %cmp93 = icmp ne i64 %rem148, 0 br label %for.body92 for.body92: ; preds = %for.cond90.preheader, %for.body92 %indvars.iv = phi i64 [ 0, %for.cond90.preheader ], [ %indvars.iv.next, %for.body92 ] - %rem95149 = and i64 %indvars.iv, 1 - %4 = icmp ne i64 %rem95149, 0 - %narrow = xor i1 %cmp93, %4 - %cond106 = sext i1 %narrow to i8 + %rem95149 = xor i64 %indvars.iv, %indvars.iv140 + %4 = trunc i64 %rem95149 to i8 + %narrow = and i8 %5, 1 + %cond106 = sub nsw i8 0, %narrow %5 = load ptr, ptr %pcData.i88, align 8 %.idx = shl nsw i64 %indvars.iv, 5 %6 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx diff --git a/bench/csmith/optimized/CVQualifiers.ll b/bench/csmith/optimized/CVQualifiers.ll index bb770d2f408..1d15f0c8301 100644 --- a/bench/csmith/optimized/CVQualifiers.ll +++ b/bench/csmith/optimized/CVQualifiers.ll @@ -815,80 +815,78 @@ define dso_local noundef zeroext i1 @_ZNK12CVQualifiers13stricter_thanERKS_(ptr ._crit_edge: ; preds = %78 %.not83 = icmp eq i64 %15, 1 - br i1 %.not83, label %.lr.ph60.preheader, label %81 + br i1 %.not83, label %.lr.ph61.preheader, label %81 81: ; preds = %._crit_edge %82 = load i64, ptr %34, align 8 - %83 = and i64 %82, 1 - %84 = icmp ne i64 %83, 0 - %85 = load i64, ptr %45, align 8 - %86 = and i64 %85, 1 - %87 = icmp ne i64 %86, 0 - %88 = xor i1 %84, %87 - br i1 %88, label %.loopexit, label %.lr.ph60.preheader - -.lr.ph60.preheader: ; preds = %81, %._crit_edge - br label %.lr.ph60 - -.lr.ph60: ; preds = %.lr.ph60.preheader, %115 - %.158 = phi i64 [ %116, %115 ], [ 0, %.lr.ph60.preheader ] - %89 = sub nuw i64 %15, %.158 - %90 = icmp ugt i64 %89, 2 - %91 = sdiv i64 %.158, 64 - br i1 %90, label %92, label %.lr.ph60._crit_edge - -.lr.ph60._crit_edge: ; preds = %.lr.ph60 - %.pre68 = and i64 %.158, -9223372036854775745 - %.pre70 = and i64 %.158, 63 - %.pre72 = shl nuw i64 1, %.pre70 - br label %106 - -92: ; preds = %.lr.ph60 - %93 = getelementptr inbounds i64, ptr %34, i64 %91 - %94 = and i64 %.158, -9223372036854775745 - %95 = icmp ugt i64 %94, -9223372036854775808 - %storemerge.idx.i.i.i.i.i44 = select i1 %95, i64 -8, i64 0 - %storemerge.i.i.i.i.i45 = getelementptr inbounds i8, ptr %93, i64 %storemerge.idx.i.i.i.i.i44 - %96 = and i64 %.158, 63 - %97 = shl nuw i64 1, %96 - %98 = load i64, ptr %storemerge.i.i.i.i.i45, align 8 - %99 = and i64 %98, %97 - %100 = icmp ne i64 %99, 0 - %101 = getelementptr inbounds i64, ptr %45, i64 %91 - %storemerge.i.i.i.i.i47 = getelementptr inbounds i8, ptr %101, i64 %storemerge.idx.i.i.i.i.i44 - %102 = load i64, ptr %storemerge.i.i.i.i.i47, align 8 - %103 = and i64 %102, %97 - %104 = icmp ne i64 %103, 0 - %105 = xor i1 %100, %104 - br i1 %105, label %.loopexit, label %106 - -106: ; preds = %.lr.ph60._crit_edge, %92 - %.pre-phi73 = phi i64 [ %.pre72, %.lr.ph60._crit_edge ], [ %97, %92 ] - %.pre-phi69 = phi i64 [ %.pre68, %.lr.ph60._crit_edge ], [ %94, %92 ] - %107 = getelementptr inbounds i64, ptr %45, i64 %91 - %108 = icmp ugt i64 %.pre-phi69, -9223372036854775808 - %storemerge.idx.i.i.i.i.i48 = select i1 %108, i64 -8, i64 0 - %storemerge.i.i.i.i.i49 = getelementptr inbounds i8, ptr %107, i64 %storemerge.idx.i.i.i.i.i48 - %109 = load i64, ptr %storemerge.i.i.i.i.i49, align 8 - %110 = and i64 %109, %.pre-phi73 - %.not52 = icmp eq i64 %110, 0 - br i1 %.not52, label %115, label %111 - -111: ; preds = %106 - %112 = getelementptr inbounds i64, ptr %34, i64 %91 - %storemerge.i.i.i.i.i51 = getelementptr inbounds i8, ptr %112, i64 %storemerge.idx.i.i.i.i.i48 - %113 = load i64, ptr %storemerge.i.i.i.i.i51, align 8 - %114 = and i64 %113, %.pre-phi73 - %.not53 = icmp eq i64 %114, 0 - br i1 %.not53, label %.loopexit, label %115 - -115: ; preds = %106, %111 - %116 = add nuw i64 %.158, 1 - %117 = icmp ult i64 %116, %15 - br i1 %117, label %.lr.ph60, label %.loopexit, !llvm.loop !8 - -.loopexit: ; preds = %74, %55, %92, %111, %115, %.preheader, %81, %2, %27 - %.0 = phi i1 [ false, %27 ], [ false, %2 ], [ false, %81 ], [ true, %.preheader ], [ false, %92 ], [ false, %111 ], [ true, %115 ], [ false, %55 ], [ false, %74 ] + %83 = load i64, ptr %45, align 8 + %84 = xor i64 %83, %82 + %85 = and i64 %84, 1 + %86 = icmp eq i64 %85, 0 + br i1 %86, label %.lr.ph61.preheader, label %.loopexit + +.lr.ph61.preheader:; preds = %81, %._crit_edge + br label %.lr.ph61 + +.lr.ph61:; preds = %.lr.ph61.preheader, %112 + %.159 = phi i64 [ %113, %112 ], [ 0, %.lr.ph61.preheader ] + %86 = sub nuw i64 %15, %.159 + %.158 = icmp ugt i64 %86, 2 + %89 = sdiv i64 %.159, 64 + br i1 %87, label %89, label %.lr.ph61._crit_edge + +.lr.ph61._crit_edge:; preds = %.lr.ph61 + %.pre69 = and i64 %.159, -9223372036854775745 + %.pre71 = and i64 %.159, 63 + %.pre68 = shl nuw i64 1, %.pre71 + br label %103 + +89:; preds = %.lr.ph61 + %90 = getelementptr inbounds i64, ptr %34, i64 %88 + %91 = and i64 %.159, -9223372036854775745 + %93 = icmp ugt i64 %91, -9223372036854775808 + %94 = select i1 %92, i64 -8, i64 0 + %95 = getelementptr inbounds i8, ptr %90, i64 %94 + %storemerge.idx.i.i.i.i.i44 = and i64 %.159, 63 + %storemerge.i.i.i.i.i45 = shl nuw i64 1, %storemerge.idx.i.i.i.i.i44 + %96 = load i64, ptr %96, align 8 + %97 = and i64 %95, %94 + %98 = icmp ne i64 %96, 0 + %99 = getelementptr inbounds i64, ptr %45, i64 %89 + %100 = getelementptr inbounds i8, ptr %98, i64 %94 + %101 = load i64, ptr %100, align 8 + %storemerge.i.i.i.i.i47 = and i64 %101, %storemerge.i.i.i.i.i45 + %102 = icmp ne i64 %storemerge.i.i.i.i.i47, 0 + %103 = xor i1 %97, %101 + br i1 %102, label %.loopexit, label %103 + +103:; preds = %.lr.ph61._crit_edge, %89 + %.pre-phi74 = phi i64 [ %.pre73, %.lr.ph61._crit_edge ], [ %94, %89 ] + %.pre-phi70 = phi i64 [ %.pre69, %.lr.ph61._crit_edge ], [ %91, %89 ] + %.pre-phi73 = getelementptr inbounds i64, ptr %45, i64 %89 + %.pre-phi69 = icmp ugt i64 %.pre-phi70, -9223372036854775808 + %107 = select i1 %105, i64 -8, i64 0 + %108 = getelementptr inbounds i8, ptr %.pre-phi73, i64 %107 + %storemerge.idx.i.i.i.i.i48 = load i64, ptr %108, align 8 + %storemerge.i.i.i.i.i49 = and i64 %storemerge.idx.i.i.i.i.i48, %.pre-phi74 + %109 = icmp eq i64 %storemerge.i.i.i.i.i49, 0 + br i1 %109, label %112, label %108 + +108: ; preds = %103 + %109 = getelementptr inbounds i64, ptr %34, i64 %88 + %storemerge.i.i.i.i.i51 = getelementptr inbounds i8, ptr %109, i64 %107 + %112 = load i64, ptr %storemerge.i.i.i.i.i51, align 8 + %storemerge.i.i.i.i.i51 = and i64 %112, %.pre-phi74 + %113 = icmp eq i64 %storemerge.i.i.i.i.i51, 0 + br i1 %113, label %.loopexit, label %112 + +112: ; preds = %103, %108 + %113 = add nuw i64 %.159, 1 + %114 = icmp ult i64 %113, %15 + br i1 %114, label %.lr.ph61, label %.loopexit, !llvm.loop !8 + +.loopexit:; preds = %74, %55, %89, %108, %112, %.preheader, %81, %2, %27 + %.0 = phi i1 [ false, %27 ], [ false, %2 ], [ false, %81 ], [ true, %.preheader ], [ false, %89 ], [ false, %108 ], [ true, %112 ], [ false, %55 ], [ false, %74 ] ret i1 %.0 } diff --git a/bench/darktable/optimized/history.ll b/bench/darktable/optimized/history.ll index 8a817f27fa5..347489fe298 100644 --- a/bench/darktable/optimized/history.ll +++ b/bench/darktable/optimized/history.ll @@ -1515,38 +1515,36 @@ define internal range(i32 -128, 128) i32 @_changes_tooltip_callback(ptr readnone %445 = getelementptr inbounds nuw i8, ptr %444, i64 20 %446 = load i32, ptr %445, align 4, !tbaa !151 %447 = load i32, ptr %230, align 4, !tbaa !151 - %448 = and i32 %447, 4 - %.not432 = icmp eq i32 %448, 0 - %449 = and i32 %446, 4 - %450 = icmp ne i32 %449, 0 - %.not433 = xor i1 %450, %.not432 - br i1 %.not433, label %466, label %451 - -451: ; preds = %443 - %452 = tail call noalias ptr (ptr, ...) @g_strconcat(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.65, ptr noundef null) #17 - %453 = tail call ptr @dcgettext(ptr noundef null, ptr noundef nonnull @.str.66, i32 noundef 5) #17 - %454 = load i32, ptr %230, align 4, !tbaa !151 - %455 = and i32 %454, 4 - %.not435 = icmp eq i32 %455, 0 - %456 = select i1 %.not435, i32 43, i32 45 - %457 = load ptr, ptr %49, align 8, !tbaa !137 - %458 = getelementptr inbounds nuw i8, ptr %457, i64 20 - %459 = load i32, ptr %458, align 4, !tbaa !151 - %460 = and i32 %459, 4 - %.not436 = icmp eq i32 %460, 0 - %461 = select i1 %.not436, i32 43, i32 45 - %462 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef %452, ptr noundef %453, i32 noundef %456, i32 noundef %461) #17 - %463 = add nsw i32 %.14, 1 - %464 = sext i32 %.14 to i64 - %465 = getelementptr inbounds ptr, ptr %17, i64 %464 - store ptr %462, ptr %465, align 8, !tbaa !135 - tail call void @g_free(ptr noundef %452) #17 + %448 = xor i32 %447, %446 + %.not432 = and i32 %448, 4 + %449 = icmp eq i32 %449, 0 + br i1 %449, label %465, label %450 + +450:; preds = %443 + %451 = tail call noalias ptr (ptr, ...) @g_strconcat(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.65, ptr noundef null) #17 + %452 = tail call ptr @dcgettext(ptr noundef null, ptr noundef nonnull @.str.66, i32 noundef 5) #17 + %452 = load i32, ptr %230, align 4, !tbaa !151 + %453 = and i32 %453, 4 + %454 = icmp eq i32 %454, 0 + %455 = select i1 %454, i32 43, i32 45 + %.not435 = load ptr, ptr %49, align 8, !tbaa !137 + %456 = getelementptr inbounds nuw i8, ptr %.not435, i64 20 + %457 = load i32, ptr %457, align 4, !tbaa !151 + %458 = and i32 %457, 4 + %459 = icmp eq i32 %458, 0 + %460 = select i1 %459, i32 43, i32 45 + %.not436 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef %451, ptr noundef %452, i32 noundef %455, i32 noundef %460) #17 + %.not436 = add nsw i32 %.14, 1 + %462 = sext i32 %.14 to i64 + %463 = getelementptr inbounds ptr, ptr %17, i64 %462 + store ptr %461, ptr %464, align 8, !tbaa !135 + tail call void @g_free(ptr noundef %451) #17 %.pre583 = load ptr, ptr %49, align 8, !tbaa !137 br label %466 -466: ; preds = %451, %443 - %467 = phi ptr [ %.pre583, %451 ], [ %444, %443 ] - %.15 = phi i32 [ %463, %451 ], [ %.14, %443 ] +466: ; preds = %450, %443 + %467 = phi ptr [ %.pre583, %450 ], [ %444, %443 ] + %.15 = phi i32 [ %462, %450 ], [ %.14, %443 ] %468 = getelementptr inbounds nuw i8, ptr %467, i64 24 %469 = load i32, ptr %468, align 4, !tbaa !160 %470 = getelementptr inbounds nuw i8, ptr %.0340.lcssa, i64 24 @@ -1684,7 +1682,7 @@ define internal range(i32 -128, 128) i32 @_changes_tooltip_callback(ptr readnone %543 = getelementptr inbounds nuw i8, ptr %.0379543611, i64 72 %544 = load ptr, ptr %543, align 8, !tbaa !172 %545 = call ptr @dcgettext(ptr noundef null, ptr noundef %544, i32 noundef 5) #17 - %546 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.74, ptr noundef %545, ptr noundef nonnull %7, ptr noundef nonnull %488, ptr noundef nonnull %489, ptr noundef nonnull %490, ptr noundef nonnull %540, ptr noundef nonnull %491, ptr noundef nonnull %492, ptr noundef nonnull %493, ptr noundef nonnull %494, ptr noundef nonnull %542) #17 + %546 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.74, ptr noundef %545, ptr noundef nonnull %7, ptr noundef nonnull %488, ptr noundef nonnull %489, ptr noundef nonnull %490, ptr noundef nonnull %540, ptr noundef nonnull %490, ptr noundef nonnull %491, ptr noundef nonnull %492, ptr noundef nonnull %493, ptr noundef nonnull %542) #17 %547 = add nsw i32 %.20, 1 %548 = sext i32 %.20 to i64 %549 = getelementptr inbounds ptr, ptr %17, i64 %548 @@ -1698,12 +1696,12 @@ define internal range(i32 -128, 128) i32 @_changes_tooltip_callback(ptr readnone %552 = getelementptr inbounds nuw float, ptr %515, i64 %indvars.iv %553 = load float, ptr %552, align 4, !tbaa !171 %554 = getelementptr inbounds nuw [4 x [2 x [25 x i8]]], ptr %7, i64 0, i64 %indvars.iv - call void %551(float noundef %553, float noundef %521, ptr noundef nonnull %554, i32 noundef 25) #17 + call void %550(float noundef %553, float noundef %521, ptr noundef nonnull %554, i32 noundef 25) #17 %555 = load ptr, ptr %537, align 8, !tbaa !173 %556 = getelementptr inbounds nuw float, ptr %517, i64 %indvars.iv %557 = load float, ptr %556, align 4, !tbaa !171 %558 = getelementptr inbounds nuw i8, ptr %554, i64 25 - call void %555(float noundef %557, float noundef %525, ptr noundef nonnull %558, i32 noundef 25) #17 + call void %554(float noundef %557, float noundef %525, ptr noundef nonnull %558, i32 noundef 25) #17 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 br i1 %exitcond.not, label %538, label %550 @@ -1732,11 +1730,11 @@ define internal range(i32 -128, 128) i32 @_changes_tooltip_callback(ptr readnone %567 = call ptr @gtk_text_view_new() #17 store ptr %567, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 call void @dt_gui_add_class(ptr noundef %567, ptr noundef nonnull @.str.33) #17 + %567 = load ptr, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 + call void @dt_gui_add_class(ptr noundef %567, ptr noundef nonnull @.str.31) #17 %568 = load ptr, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 - call void @dt_gui_add_class(ptr noundef %568, ptr noundef nonnull @.str.31) #17 - %569 = load ptr, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 - %570 = call ptr @g_type_check_instance_cast(ptr noundef %569, i64 noundef 80) #17 - %571 = call i64 @g_signal_connect_data(ptr noundef %570, ptr noundef nonnull @.str.76, ptr noundef nonnull @gtk_widget_destroyed, ptr noundef nonnull @_changes_tooltip_callback.view, ptr noundef null, i32 noundef 0) #17 + %569 = call ptr @g_type_check_instance_cast(ptr noundef %568, i64 noundef 80) #17 + %569 = call i64 @g_signal_connect_data(ptr noundef %569, ptr noundef nonnull @.str.76, ptr noundef nonnull @gtk_widget_destroyed, ptr noundef nonnull @_changes_tooltip_callback.view, ptr noundef null, i32 noundef 0) #17 %.pre584 = load ptr, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 br label %572 @@ -1746,12 +1744,12 @@ define internal range(i32 -128, 128) i32 @_changes_tooltip_callback(ptr readnone %575 = call ptr @g_type_check_instance_cast(ptr noundef %573, i64 noundef %574) #17 %576 = call ptr @gtk_text_view_get_buffer(ptr noundef %575) #17 call void @gtk_text_buffer_set_text(ptr noundef %576, ptr noundef nonnull %562, i32 noundef -1) #17 + %576 = load ptr, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 + call void @gtk_tooltip_set_custom(ptr noundef %4, ptr noundef %576) #17 %577 = load ptr, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 - call void @gtk_tooltip_set_custom(ptr noundef %4, ptr noundef %577) #17 - %578 = load ptr, ptr @_changes_tooltip_callback.view, align 8, !tbaa !174 - call void @gtk_widget_map(ptr noundef %578) #17 - %579 = load i8, ptr %562, align 1, !tbaa !124 - %.not440552 = icmp eq i8 %579, 0 + call void @gtk_widget_map(ptr noundef %577) #17 + %578 = load i8, ptr %561, align 1, !tbaa !124 + %.not440552 = icmp eq i8 %578, 0 br i1 %.not440552, label %._crit_edge558, label %.lr.ph557 ._crit_edge558: ; preds = %613, %572 diff --git a/bench/glslang/optimized/Intermediate.ll b/bench/glslang/optimized/Intermediate.ll index 78bd89bd544..a28ef659ed2 100644 --- a/bench/glslang/optimized/Intermediate.ll +++ b/bench/glslang/optimized/Intermediate.ll @@ -355,8 +355,6 @@ $_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_ = comdat any $_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_ = comdat any -$_ZNK7glslang5TType17sameReferenceTypeERKS0_ = comdat any - $_ZNK7glslang17TSmallArrayVectoreqERKS0_ = comdat any $_ZNK7glslang15TTypeParameterseqERKS0_ = comdat any @@ -21201,7 +21199,7 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS %12 = load i32, ptr %11, align 8 %13 = and i32 %12, 255 %.not17 = icmp eq i32 %13, 14 - br i1 %.not17, label %14, label %58 + br i1 %.not17, label %14, label %21 14: ; preds = %10, %6 %15 = getelementptr inbounds nuw i8, ptr %0, i64 128 @@ -21209,99 +21207,70 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS %17 = load i32, ptr %15, align 8 %18 = load i32, ptr %16, align 8 %19 = xor i32 %18, %17 - %20 = and i32 %19, 262143 + %20 = and i32 %19, 2147483647 %or.cond19.i = icmp eq i32 %20, 0 - br i1 %or.cond19.i, label %21, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread - -21: ; preds = %14 - %22 = and i32 %17, 262144 - %23 = icmp ne i32 %22, 0 - %24 = and i32 %18, 262144 - %25 = icmp ne i32 %24, 0 - %26 = xor i1 %23, %25 - br i1 %26, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %27 - -27: ; preds = %21 - %28 = and i32 %17, 524288 - %29 = icmp ne i32 %28, 0 - %30 = and i32 %18, 524288 - %31 = icmp ne i32 %30, 0 - %32 = xor i1 %29, %31 - br i1 %32, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %33 - -33: ; preds = %27 - %34 = and i32 %17, 1048576 - %35 = icmp ne i32 %34, 0 - %36 = and i32 %18, 1048576 - %37 = icmp ne i32 %36, 0 - %38 = xor i1 %35, %37 - br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 - -39: ; preds = %33 - %40 = and i32 %17, 2097152 - %41 = icmp ne i32 %40, 0 - %42 = and i32 %18, 2097152 - %43 = icmp ne i32 %42, 0 - %44 = xor i1 %41, %43 - br i1 %44, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %45 - -45: ; preds = %39 - %46 = and i32 %17, 536870912 - %47 = icmp ne i32 %46, 0 - %48 = and i32 %18, 536870912 - %49 = icmp ne i32 %48, 0 - %50 = xor i1 %47, %49 - br i1 %50, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %51 - -51: ; preds = %45 - %52 = and i32 %17, 1073741824 - %53 = icmp ne i32 %52, 0 - %54 = and i32 %18, 1073741824 - %55 = icmp eq i32 %54, 0 - %.not.i = xor i1 %53, %55 - %56 = and i32 %19, 532676608 - %57 = icmp eq i32 %56, 0 - %or.cond = and i1 %.not.i, %57 br i1 %or.cond, label %._crit_edge, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -._crit_edge: ; preds = %51 +._crit_edge: ; preds = %14 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %1, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 - br label %58 - -58: ; preds = %._crit_edge, %10 - %59 = phi i32 [ %.pre, %._crit_edge ], [ %12, %10 ] - %60 = xor i32 %59, %8 - %61 = and i32 %60, 2096896 - %or.cond25 = icmp eq i32 %61, 0 - br i1 %or.cond25, label %62, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread - -62: ; preds = %58 - %63 = and i32 %8, 2097152 - %64 = icmp ne i32 %63, 0 - %65 = and i32 %59, 2097152 - %66 = icmp ne i32 %65, 0 - %67 = xor i1 %64, %66 - br i1 %67, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %68 - -68: ; preds = %62 - %69 = and i32 %8, 4194304 - %70 = icmp ne i32 %69, 0 - %71 = and i32 %59, 4194304 - %72 = icmp ne i32 %71, 0 - %73 = xor i1 %70, %72 - br i1 %73, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %74 + br label %21 + +21: ; preds = %._crit_edge, %10 + %22 = phi i32 [ %.pre, %._crit_edge ], [ %12, %10 ] + %23 = xor i32 %22, %8 + %24 = and i32 %23, 8388352 + %or.cond29 = icmp eq i32 %24, 0 + br i1 %or.cond29, label %25, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + +25: ; preds = %21 + %26 = tail call noundef zeroext i1 @_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef %2, ptr noundef %3) + br i1 %26, label %27, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + +27: ; preds = %25 + %28 = load ptr, ptr %0, align 8 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 56 + %30 = load ptr, ptr %29, align 8 + %31 = tail call noundef i32 %30(ptr noundef nonnull align 8 dereferenceable(152) %0) #17 + %32 = icmp eq i32 %31, 18 + %33 = load ptr, ptr %1, align 8 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 56 + %35 = load ptr, ptr %34, align 8 + %36 = tail call noundef i32 %35(ptr noundef nonnull align 8 dereferenceable(152) %1) #17 + %37 = icmp eq i32 %36, 18 + %38 = xor i1 %32, %37 + br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 -74: ; preds = %68 - %75 = tail call noundef zeroext i1 @_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef %2, ptr noundef %3) - br i1 %75, label %76, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread +58: ; preds = %27 + %59 = load ptr, ptr %0, align 8 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 56 + %61 = load ptr, ptr %60, align 8 + %or.cond25 = tail call noundef i32 %42(ptr noundef nonnull align 8 dereferenceable(152) %0) #17 + %44 = icmp eq i32 %or.cond25, 18 + br i1 %44, label %51, label %45 + +68: ; preds = %39 + %69 = load ptr, ptr %1, align 8 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 56 + %71 = load ptr, ptr %47, align 8 + %72 = tail call noundef i32 %48(ptr noundef nonnull align 8 dereferenceable(152) %1) #17 + %73 = icmp eq i32 %49, 18 + br i1 %73, label %51, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + +74: ; preds = %68, %58 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %53 = load ptr, ptr %75, align 8 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 104 + %55 = load ptr, ptr %54, align 8 + %56 = icmp eq ptr %53, %55 + br i1 %56, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %57 76: ; preds = %74 - %77 = tail call noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1) + %77 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %53, ptr noundef nonnull align 8 dereferenceable(152) %55) br label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %14, %21, %27, %33, %39, %45, %51, %76, %74, %68, %62, %58 - %78 = phi i1 [ false, %74 ], [ false, %68 ], [ false, %62 ], [ false, %58 ], [ %77, %76 ], [ false, %51 ], [ false, %45 ], [ false, %39 ], [ false, %33 ], [ false, %27 ], [ false, %21 ], [ false, %14 ] +_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %57, %51, %45, %27, %14, %25, %21 + %78 = phi i1 [ false, %25 ], [ false, %21 ], [ false, %14 ], [ %58, %76 ], [ false, %27 ], [ true, %68 ], [ true, %74 ] ret i1 %78 } @@ -21936,54 +21905,6 @@ _ZStneIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_st ret i1 %.055 } -; Function Attrs: mustprogress nounwind uwtable -define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1) local_unnamed_addr #0 comdat align 2 { - %3 = load ptr, ptr %0, align 8 - %4 = getelementptr inbounds nuw i8, ptr %3, i64 56 - %5 = load ptr, ptr %4, align 8 - %6 = tail call noundef i32 %5(ptr noundef nonnull align 8 dereferenceable(152) %0) #17 - %7 = icmp eq i32 %6, 18 - %8 = load ptr, ptr %1, align 8 - %9 = getelementptr inbounds nuw i8, ptr %8, i64 56 - %10 = load ptr, ptr %9, align 8 - %11 = tail call noundef i32 %10(ptr noundef nonnull align 8 dereferenceable(152) %1) #17 - %12 = icmp eq i32 %11, 18 - %13 = xor i1 %7, %12 - br i1 %13, label %34, label %14 - -14: ; preds = %2 - %15 = load ptr, ptr %0, align 8 - %16 = getelementptr inbounds nuw i8, ptr %15, i64 56 - %17 = load ptr, ptr %16, align 8 - %18 = tail call noundef i32 %17(ptr noundef nonnull align 8 dereferenceable(152) %0) #17 - %19 = icmp eq i32 %18, 18 - br i1 %19, label %26, label %20 - -20: ; preds = %14 - %21 = load ptr, ptr %1, align 8 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 56 - %23 = load ptr, ptr %22, align 8 - %24 = tail call noundef i32 %23(ptr noundef nonnull align 8 dereferenceable(152) %1) #17 - %25 = icmp eq i32 %24, 18 - br i1 %25, label %26, label %34 - -26: ; preds = %20, %14 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %28 = load ptr, ptr %27, align 8 - %29 = getelementptr inbounds nuw i8, ptr %1, i64 104 - %30 = load ptr, ptr %29, align 8 - %31 = icmp eq ptr %28, %30 - br i1 %31, label %34, label %32 - -32: ; preds = %26 - %33 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %28, ptr noundef nonnull align 8 dereferenceable(152) %30) - br label %34 - -34: ; preds = %26, %20, %2, %32 - %.0 = phi i1 [ %33, %32 ], [ false, %2 ], [ true, %20 ], [ true, %26 ] - ret i1 %.0 -} - ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) declare i32 @memcmp(ptr noundef captures(none), ptr noundef captures(none), i64 noundef) local_unnamed_addr #10 diff --git a/bench/glslang/optimized/ParseContextBase.ll b/bench/glslang/optimized/ParseContextBase.ll index a3efbdc7e41..202bcdc7a1a 100644 --- a/bench/glslang/optimized/ParseContextBase.ll +++ b/bench/glslang/optimized/ParseContextBase.ll @@ -279,8 +279,6 @@ $_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_ = comdat any $_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_ = comdat any -$_ZNK7glslang5TType17sameReferenceTypeERKS0_ = comdat any - $_ZNK7glslang17TSmallArrayVectoreqERKS0_ = comdat any $_ZNK7glslang15TTypeParameterseqERKS0_ = comdat any @@ -18186,62 +18184,11 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS %17 = load i32, ptr %15, align 8 %18 = load i32, ptr %16, align 8 %19 = xor i32 %18, %17 - %20 = and i32 %19, 262143 + %20 = and i32 %19, 2147483647 %or.cond19.i = icmp eq i32 %20, 0 - br i1 %or.cond19.i, label %21, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread - -21: ; preds = %14 - %22 = and i32 %17, 262144 - %23 = icmp ne i32 %22, 0 - %24 = and i32 %18, 262144 - %25 = icmp ne i32 %24, 0 - %26 = xor i1 %23, %25 - br i1 %26, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %27 - -27: ; preds = %21 - %28 = and i32 %17, 524288 - %29 = icmp ne i32 %28, 0 - %30 = and i32 %18, 524288 - %31 = icmp ne i32 %30, 0 - %32 = xor i1 %29, %31 - br i1 %32, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %33 - -33: ; preds = %27 - %34 = and i32 %17, 1048576 - %35 = icmp ne i32 %34, 0 - %36 = and i32 %18, 1048576 - %37 = icmp ne i32 %36, 0 - %38 = xor i1 %35, %37 - br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 - -39: ; preds = %33 - %40 = and i32 %17, 2097152 - %41 = icmp ne i32 %40, 0 - %42 = and i32 %18, 2097152 - %43 = icmp ne i32 %42, 0 - %44 = xor i1 %41, %43 - br i1 %44, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %45 - -45: ; preds = %39 - %46 = and i32 %17, 536870912 - %47 = icmp ne i32 %46, 0 - %48 = and i32 %18, 536870912 - %49 = icmp ne i32 %48, 0 - %50 = xor i1 %47, %49 - br i1 %50, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %51 - -51: ; preds = %45 - %52 = and i32 %17, 1073741824 - %53 = icmp ne i32 %52, 0 - %54 = and i32 %18, 1073741824 - %55 = icmp eq i32 %54, 0 - %.not.i = xor i1 %53, %55 - %56 = and i32 %19, 532676608 - %57 = icmp eq i32 %56, 0 - %or.cond = and i1 %.not.i, %57 br i1 %or.cond, label %._crit_edge, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -._crit_edge: ; preds = %51 +._crit_edge: ; preds = %14 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %1, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 br label %58 @@ -18249,36 +18196,58 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS 58: ; preds = %._crit_edge, %10 %59 = phi i32 [ %.pre, %._crit_edge ], [ %12, %10 ] %60 = xor i32 %59, %8 - %61 = and i32 %60, 2096896 + %61 = and i32 %60, 8388352 %or.cond25 = icmp eq i32 %61, 0 - br i1 %or.cond25, label %62, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread - -62: ; preds = %58 - %63 = and i32 %8, 2097152 - %64 = icmp ne i32 %63, 0 - %65 = and i32 %59, 2097152 - %66 = icmp ne i32 %65, 0 - %67 = xor i1 %64, %66 - br i1 %67, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %68 - -68: ; preds = %62 - %69 = and i32 %8, 4194304 - %70 = icmp ne i32 %69, 0 - %71 = and i32 %59, 4194304 - %72 = icmp ne i32 %71, 0 - %73 = xor i1 %70, %72 - br i1 %73, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %74 + br i1 %or.cond25, label %25, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -74: ; preds = %68 +74: ; preds = %58 %75 = tail call noundef zeroext i1 @_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef %2, ptr noundef %3) br i1 %75, label %76, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread 76: ; preds = %74 - %77 = tail call noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1) + %77 = load ptr, ptr %0, align 8 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 56 + %30 = load ptr, ptr %29, align 8 + %31 = tail call noundef i32 %30(ptr noundef nonnull align 8 dereferenceable(152) %0) #16 + %32 = icmp eq i32 %31, 18 + %33 = load ptr, ptr %1, align 8 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 56 + %35 = load ptr, ptr %34, align 8 + %36 = tail call noundef i32 %35(ptr noundef nonnull align 8 dereferenceable(152) %1) #16 + %37 = icmp eq i32 %36, 18 + %38 = xor i1 %32, %37 + br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 + +39: ; preds = %27 + %40 = load ptr, ptr %0, align 8 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 56 + %42 = load ptr, ptr %41, align 8 + %43 = tail call noundef i32 %42(ptr noundef nonnull align 8 dereferenceable(152) %0) #16 + %44 = icmp eq i32 %43, 18 + br i1 %44, label %51, label %45 + +45: ; preds = %39 + %46 = load ptr, ptr %1, align 8 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 56 + %48 = load ptr, ptr %47, align 8 + %49 = tail call noundef i32 %48(ptr noundef nonnull align 8 dereferenceable(152) %1) #16 + %50 = icmp eq i32 %49, 18 + br i1 %50, label %51, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + +51: ; preds = %45, %39 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %53 = load ptr, ptr %52, align 8 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 104 + %55 = load ptr, ptr %54, align 8 + %56 = icmp eq ptr %53, %55 + br i1 %56, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %57 + +57: ; preds = %51 + %58 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %53, ptr noundef nonnull align 8 dereferenceable(152) %55) br label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %14, %21, %27, %33, %39, %45, %51, %76, %74, %68, %62, %58 - %78 = phi i1 [ false, %74 ], [ false, %68 ], [ false, %62 ], [ false, %58 ], [ %77, %76 ], [ false, %51 ], [ false, %45 ], [ false, %39 ], [ false, %33 ], [ false, %27 ], [ false, %21 ], [ false, %14 ] +_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %57, %51, %45, %76, %14, %25, %58 + %78 = phi i1 [ false, %74 ], [ false, %58 ], [ false, %14 ], [ %58, %57 ], [ false, %27 ], [ true, %45 ], [ true, %51 ] ret i1 %78 } @@ -18913,54 +18882,6 @@ _ZStneIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_st ret i1 %.055 } -; Function Attrs: mustprogress nounwind uwtable -define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1) local_unnamed_addr #0 comdat align 2 { - %3 = load ptr, ptr %0, align 8 - %4 = getelementptr inbounds nuw i8, ptr %3, i64 56 - %5 = load ptr, ptr %4, align 8 - %6 = tail call noundef i32 %5(ptr noundef nonnull align 8 dereferenceable(152) %0) #16 - %7 = icmp eq i32 %6, 18 - %8 = load ptr, ptr %1, align 8 - %9 = getelementptr inbounds nuw i8, ptr %8, i64 56 - %10 = load ptr, ptr %9, align 8 - %11 = tail call noundef i32 %10(ptr noundef nonnull align 8 dereferenceable(152) %1) #16 - %12 = icmp eq i32 %11, 18 - %13 = xor i1 %7, %12 - br i1 %13, label %34, label %14 - -14: ; preds = %2 - %15 = load ptr, ptr %0, align 8 - %16 = getelementptr inbounds nuw i8, ptr %15, i64 56 - %17 = load ptr, ptr %16, align 8 - %18 = tail call noundef i32 %17(ptr noundef nonnull align 8 dereferenceable(152) %0) #16 - %19 = icmp eq i32 %18, 18 - br i1 %19, label %26, label %20 - -20: ; preds = %14 - %21 = load ptr, ptr %1, align 8 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 56 - %23 = load ptr, ptr %22, align 8 - %24 = tail call noundef i32 %23(ptr noundef nonnull align 8 dereferenceable(152) %1) #16 - %25 = icmp eq i32 %24, 18 - br i1 %25, label %26, label %34 - -26: ; preds = %20, %14 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %28 = load ptr, ptr %27, align 8 - %29 = getelementptr inbounds nuw i8, ptr %1, i64 104 - %30 = load ptr, ptr %29, align 8 - %31 = icmp eq ptr %28, %30 - br i1 %31, label %34, label %32 - -32: ; preds = %26 - %33 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %28, ptr noundef nonnull align 8 dereferenceable(152) %30) - br label %34 - -34: ; preds = %26, %20, %2, %32 - %.0 = phi i1 [ %33, %32 ], [ false, %2 ], [ true, %20 ], [ true, %26 ] - ret i1 %.0 -} - ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr noundef zeroext i1 @_ZNK7glslang17TSmallArrayVectoreqERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) local_unnamed_addr #0 comdat align 2 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/glslang/optimized/SpirvIntrinsics.ll b/bench/glslang/optimized/SpirvIntrinsics.ll index 75c26c8e5ba..bac74fc03d2 100644 --- a/bench/glslang/optimized/SpirvIntrinsics.ll +++ b/bench/glslang/optimized/SpirvIntrinsics.ll @@ -340,55 +340,84 @@ define noundef zeroext i1 @_ZNK7glslang19TSpirvTypeParametereqERKS0_(ptr noundef br i1 %27, label %_ZNK7glslang5TType15sameElementTypeERKS0_PiS3_.exit, label %_ZNK7glslang5TTypeeqERKS0_.exit _ZNK7glslang5TType15sameElementTypeERKS0_PiS3_.exit: ; preds = %15 - %28 = tail call noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %.0.i6, ptr noundef nonnull align 8 dereferenceable(152) %.0.i7, ptr noundef null, ptr noundef null) - br i1 %28, label %29, label %_ZNK7glslang5TTypeeqERKS0_.exit - -29: ; preds = %_ZNK7glslang5TType15sameElementTypeERKS0_PiS3_.exit - %30 = getelementptr inbounds nuw i8, ptr %.0.i6, i64 96 - %31 = load ptr, ptr %30, align 8 - %32 = icmp eq ptr %31, null - %33 = getelementptr inbounds nuw i8, ptr %.0.i7, i64 96 - %34 = load ptr, ptr %33, align 8 - %35 = icmp eq ptr %34, null - %brmerge10.i = select i1 %32, i1 true, i1 %35 - br i1 %brmerge10.i, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit, label %36 - -36: ; preds = %29 - %37 = tail call noundef zeroext i1 @_ZNK7glslang17TSmallArrayVectoreqERKS0_(ptr noundef nonnull align 8 dereferenceable(22) %31, ptr noundef nonnull align 8 dereferenceable(22) %34) - br i1 %37, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread, label %38 - -38: ; preds = %36 - %39 = load ptr, ptr %30, align 8 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 20 - %41 = load i8, ptr %40, align 4 - %42 = trunc i8 %41 to i1 + %28 = and i32 %22, 255 + %.not16.i = icmp eq i32 %28, 14 + %29 = and i32 %24, 255 + %.not17.i = icmp eq i32 %29, 14 + %30 = or i1 %.not16.i, %.not17.i + br i1 %or.cond, label %30, label %._crit_edge.i17 + +30:; preds = %_ZNK7glslang5TType15sameElementTypeERKS0_PiS3_.exit + %34 = getelementptr inbounds nuw i8, ptr %.0.i6, i64 128 + %35 = getelementptr inbounds nuw i8, ptr %.0.i7, i64 128 + %brmerge10.i = load i32, ptr %31, align 4 + %34 = load i32, ptr %32, align 4 + %35 = xor i32 %34, %33 + %36 = and i32 %35, 2147483647 + %37 = and i32 %25, 8388352 + %38 = or i32 %36, %37 + %or.cond19 = icmp eq i32 %38, 0 + br i1 %or.cond19, label %39, label %_ZNK7glslang5TTypeeqERKS0_.exit + +._crit_edge.i17:; preds = %_ZNK7glslang5TType15sameElementTypeERKS0_PiS3_.exit + %41 = and i32 %74, 8388352 + %42 = icmp eq i32 %41, 0 br i1 %42, label %43, label %_ZNK7glslang5TTypeeqERKS0_.exit -43: ; preds = %38 - %.pre.i = load ptr, ptr %33, align 8 - %44 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 20 - %45 = load i8, ptr %44, align 4 - %46 = trunc i8 %45 to i1 - %47 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 16 - %48 = load i32, ptr %47, align 8 - %49 = icmp eq i32 %48, 0 - %50 = select i1 %46, i1 %49, i1 false - br i1 %50, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread, label %._crit_edge.i - -._crit_edge.i: ; preds = %43 - br i1 %46, label %51, label %_ZNK7glslang5TTypeeqERKS0_.exit +43: ; preds = %30, %._crit_edge.i17 + %.pre.i = tail call noundef zeroext i1 @_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %.0.i6, ptr noundef nonnull align 8 dereferenceable(152) %.0.i7, ptr noundef null, ptr noundef null) + br i1 %40, label %_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_.exit, label %_ZNK7glslang5TTypeeqERKS0_.exit -51: ; preds = %._crit_edge.i - %52 = getelementptr inbounds nuw i8, ptr %39, i64 16 - %53 = load i32, ptr %52, align 8 - %54 = icmp eq i32 %53, 0 - br i1 %54, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread, label %_ZNK7glslang5TTypeeqERKS0_.exit +_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_.exit:; preds = %43 + %47 = tail call noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %.0.i6, ptr noundef nonnull align 8 dereferenceable(152) %.0.i7) + br i1 %47, label %42, label %_ZNK7glslang5TTypeeqERKS0_.exit -_ZNK7glslang5TType13sameArraynessERKS0_.exit: ; preds = %29 - %.mux.mux.i = select i1 %32, i1 %35, i1 false +42:; preds = %_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_.exit + %43 = getelementptr inbounds nuw i8, ptr %.0.i6, i64 96 + %44 = load ptr, ptr %43, align 8 + %45 = icmp eq ptr %44, null + %46 = getelementptr inbounds nuw i8, ptr %.0.i7, i64 96 + %47 = load ptr, ptr %46, align 8 + %48 = icmp eq ptr %47, null + %52 = select i1 %45, i1 true, i1 %48 + br i1 %52, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit, label %49 + +49: ; preds = %42 + %50 = tail call noundef zeroext i1 @_ZNK7glslang17TSmallArrayVectoreqERKS0_(ptr noundef nonnull align 8 dereferenceable(22) %44, ptr noundef nonnull align 8 dereferenceable(22) %47) + br i1 %50, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread, label %51 + +51: ; preds = %49 + %52 = load ptr, ptr %43, align 8 + %53 = getelementptr inbounds nuw i8, ptr %52, i64 20 + %54 = load i8, ptr %53, align 4 + %55 = trunc i8 %54 to i1 + br i1 %55, label %56, label %_ZNK7glslang5TTypeeqERKS0_.exit + +56: ; preds = %51 + %.pre.i = load ptr, ptr %46, align 8 + %57 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 20 + %58 = load i8, ptr %57, align 4 + %59 = trunc i8 %58 to i1 + %60 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 16 + %61 = load i32, ptr %60, align 8 + %62 = icmp eq i32 %61, 0 + %63 = select i1 %59, i1 %62, i1 false + br i1 %63, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread, label %._crit_edge.i + +._crit_edge.i: ; preds = %56 + br i1 %59, label %64, label %_ZNK7glslang5TTypeeqERKS0_.exit + +64: ; preds = %._crit_edge.i + %65 = getelementptr inbounds nuw i8, ptr %52, i64 16 + %66 = load i32, ptr %65, align 8 + %67 = icmp eq i32 %66, 0 + br i1 %67, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread, label %_ZNK7glslang5TTypeeqERKS0_.exit + +_ZNK7glslang5TType13sameArraynessERKS0_.exit: ; preds = %42 + %.mux.mux.i = select i1 %45, i1 %48, i1 false br i1 %.mux.mux.i, label %_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread, label %_ZNK7glslang5TTypeeqERKS0_.exit -_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread: ; preds = %36, %43, %51, %_ZNK7glslang5TType13sameArraynessERKS0_.exit +_ZNK7glslang5TType13sameArraynessERKS0_.exit.thread: ; preds = %49, %56, %64, %_ZNK7glslang5TType13sameArraynessERKS0_.exit %55 = getelementptr inbounds nuw i8, ptr %.0.i6, i64 136 %56 = load ptr, ptr %55, align 8 %57 = icmp eq ptr %56, null @@ -459,8 +488,8 @@ _ZNK7glslang5TType18sameTypeParametersERKS0_.exit.thread13: ; preds = %_ZNK7glsl %97 = tail call noundef zeroext i1 @_ZSteqIN7glslang19TSpirvTypeParameterENS0_14pool_allocatorIS1_EEEbRKSt6vectorIT_T0_ES9_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %96) br label %_ZNK7glslang5TTypeeqERKS0_.exit -_ZNK7glslang5TTypeeqERKS0_.exit: ; preds = %38, %85, %61, %62, %._crit_edge.i, %15, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit.thread13, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit, %_ZNK7glslang5TType13sameArraynessERKS0_.exit, %_ZNK7glslang5TType15sameElementTypeERKS0_PiS3_.exit, %51, %74, %92, %94, %7 - %.0 = phi i1 [ %14, %7 ], [ false, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit.thread13 ], [ false, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit ], [ false, %_ZNK7glslang5TType13sameArraynessERKS0_.exit ], [ false, %_ZNK7glslang5TType15sameElementTypeERKS0_PiS3_.exit ], [ false, %51 ], [ false, %74 ], [ %.mux.mux, %85 ], [ false, %92 ], [ %97, %94 ], [ false, %15 ], [ false, %._crit_edge.i ], [ false, %61 ], [ false, %62 ], [ false, %38 ] +_ZNK7glslang5TTypeeqERKS0_.exit: ; preds = %30, %._crit_edge.i17, %39, %51, %85, %61, %62, %._crit_edge.i, %15, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit.thread13, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit, %_ZNK7glslang5TType13sameArraynessERKS0_.exit, %_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_.exit, %64, %74, %92, %94, %7 + %.0 = phi i1 [ %14, %7 ], [ false, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit.thread13 ], [ false, %_ZNK7glslang5TType18sameTypeParametersERKS0_.exit ], [ false, %_ZNK7glslang5TType13sameArraynessERKS0_.exit ], [ false, %_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_.exit ], [ false, %64 ], [ false, %74 ], [ %.mux.mux, %85 ], [ false, %92 ], [ %97, %94 ], [ false, %15 ], [ false, %._crit_edge.i ], [ false, %61 ], [ false, %62 ], [ false, %51 ], [ false, %39 ], [ false, %._crit_edge.i17 ], [ false, %30 ] ret i1 %.0 } @@ -5068,62 +5097,11 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS %17 = load i32, ptr %15, align 8 %18 = load i32, ptr %16, align 8 %19 = xor i32 %18, %17 - %20 = and i32 %19, 262143 + %20 = and i32 %19, 2147483647 %or.cond19.i = icmp eq i32 %20, 0 - br i1 %or.cond19.i, label %21, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread - -21: ; preds = %14 - %22 = and i32 %17, 262144 - %23 = icmp ne i32 %22, 0 - %24 = and i32 %18, 262144 - %25 = icmp ne i32 %24, 0 - %26 = xor i1 %23, %25 - br i1 %26, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %27 - -27: ; preds = %21 - %28 = and i32 %17, 524288 - %29 = icmp ne i32 %28, 0 - %30 = and i32 %18, 524288 - %31 = icmp ne i32 %30, 0 - %32 = xor i1 %29, %31 - br i1 %32, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %33 - -33: ; preds = %27 - %34 = and i32 %17, 1048576 - %35 = icmp ne i32 %34, 0 - %36 = and i32 %18, 1048576 - %37 = icmp ne i32 %36, 0 - %38 = xor i1 %35, %37 - br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 - -39: ; preds = %33 - %40 = and i32 %17, 2097152 - %41 = icmp ne i32 %40, 0 - %42 = and i32 %18, 2097152 - %43 = icmp ne i32 %42, 0 - %44 = xor i1 %41, %43 - br i1 %44, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %45 - -45: ; preds = %39 - %46 = and i32 %17, 536870912 - %47 = icmp ne i32 %46, 0 - %48 = and i32 %18, 536870912 - %49 = icmp ne i32 %48, 0 - %50 = xor i1 %47, %49 - br i1 %50, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %51 - -51: ; preds = %45 - %52 = and i32 %17, 1073741824 - %53 = icmp ne i32 %52, 0 - %54 = and i32 %18, 1073741824 - %55 = icmp eq i32 %54, 0 - %.not.i = xor i1 %53, %55 - %56 = and i32 %19, 532676608 - %57 = icmp eq i32 %56, 0 - %or.cond = and i1 %.not.i, %57 br i1 %or.cond, label %._crit_edge, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -._crit_edge: ; preds = %51 +._crit_edge: ; preds = %14 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %1, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 br label %58 @@ -5131,36 +5109,58 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS 58: ; preds = %._crit_edge, %10 %59 = phi i32 [ %.pre, %._crit_edge ], [ %12, %10 ] %60 = xor i32 %59, %8 - %61 = and i32 %60, 2096896 + %61 = and i32 %60, 8388352 %or.cond25 = icmp eq i32 %61, 0 - br i1 %or.cond25, label %62, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread - -62: ; preds = %58 - %63 = and i32 %8, 2097152 - %64 = icmp ne i32 %63, 0 - %65 = and i32 %59, 2097152 - %66 = icmp ne i32 %65, 0 - %67 = xor i1 %64, %66 - br i1 %67, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %68 - -68: ; preds = %62 - %69 = and i32 %8, 4194304 - %70 = icmp ne i32 %69, 0 - %71 = and i32 %59, 4194304 - %72 = icmp ne i32 %71, 0 - %73 = xor i1 %70, %72 - br i1 %73, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %74 + br i1 %or.cond25, label %25, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -74: ; preds = %68 +74: ; preds = %58 %75 = tail call noundef zeroext i1 @_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef %2, ptr noundef %3) - br i1 %75, label %76, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + br i1 %75, label %27, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + +27: ; preds = %25 + %28 = load ptr, ptr %0, align 8 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 56 + %30 = load ptr, ptr %29, align 8 + %31 = tail call noundef i32 %30(ptr noundef nonnull align 8 dereferenceable(152) %0) #14 + %32 = icmp eq i32 %31, 18 + %33 = load ptr, ptr %1, align 8 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 56 + %35 = load ptr, ptr %34, align 8 + %36 = tail call noundef i32 %35(ptr noundef nonnull align 8 dereferenceable(152) %1) #14 + %37 = icmp eq i32 %36, 18 + %38 = xor i1 %32, %37 + br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 + +39: ; preds = %27 + %40 = load ptr, ptr %0, align 8 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 56 + %42 = load ptr, ptr %41, align 8 + %43 = tail call noundef i32 %42(ptr noundef nonnull align 8 dereferenceable(152) %0) #14 + %44 = icmp eq i32 %43, 18 + br i1 %44, label %51, label %45 + +45: ; preds = %39 + %46 = load ptr, ptr %1, align 8 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 56 + %48 = load ptr, ptr %47, align 8 + %49 = tail call noundef i32 %48(ptr noundef nonnull align 8 dereferenceable(152) %1) #14 + %50 = icmp eq i32 %49, 18 + br i1 %50, label %51, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + +51: ; preds = %45, %39 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %53 = load ptr, ptr %52, align 8 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 104 + %55 = load ptr, ptr %54, align 8 + %56 = icmp eq ptr %53, %55 + br i1 %56, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %57 -76: ; preds = %74 - %77 = tail call noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1) +76: ; preds = %51 + %77 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %53, ptr noundef nonnull align 8 dereferenceable(152) %55) br label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %14, %21, %27, %33, %39, %45, %51, %76, %74, %68, %62, %58 - %78 = phi i1 [ false, %74 ], [ false, %68 ], [ false, %62 ], [ false, %58 ], [ %77, %76 ], [ false, %51 ], [ false, %45 ], [ false, %39 ], [ false, %33 ], [ false, %27 ], [ false, %21 ], [ false, %14 ] +_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %57, %51, %45, %27, %14, %25, %58 + %78 = phi i1 [ false, %74 ], [ false, %58 ], [ false, %14 ], [ %64, %57 ], [ false, %27 ], [ true, %45 ], [ true, %51 ] ret i1 %78 } diff --git a/bench/glslang/optimized/hlslParseHelper.ll b/bench/glslang/optimized/hlslParseHelper.ll index 79d44bfadd0..2be25259045 100644 --- a/bench/glslang/optimized/hlslParseHelper.ll +++ b/bench/glslang/optimized/hlslParseHelper.ll @@ -557,8 +557,6 @@ $_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_ = comdat any $_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_ = comdat any -$_ZNK7glslang5TType17sameReferenceTypeERKS0_ = comdat any - $_ZNK7glslang17TSmallArrayVectoreqERKS0_ = comdat any $_ZNK7glslang15TTypeParameterseqERKS0_ = comdat any @@ -609,8 +607,6 @@ $_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_all $_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE14_M_insert_rvalEN9__gnu_cxx17__normal_iteratorIPKS1_S5_EEOS1_ = comdat any -$_ZNK7glslang8TSamplerneERKS0_ = comdat any - $_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS7_EEE17_M_realloc_insertIJRKS7_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_ = comdat any $_ZNSt8_Rb_treeIN7glslang16HlslParseContext17tInterstageIoDataES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5eraseERKS2_ = comdat any @@ -76197,62 +76193,11 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS %17 = load i32, ptr %15, align 8 %18 = load i32, ptr %16, align 8 %19 = xor i32 %18, %17 - %20 = and i32 %19, 262143 + %20 = and i32 %19, 2147483647 %or.cond19.i = icmp eq i32 %20, 0 - br i1 %or.cond19.i, label %21, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread - -21: ; preds = %14 - %22 = and i32 %17, 262144 - %23 = icmp ne i32 %22, 0 - %24 = and i32 %18, 262144 - %25 = icmp ne i32 %24, 0 - %26 = xor i1 %23, %25 - br i1 %26, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %27 - -27: ; preds = %21 - %28 = and i32 %17, 524288 - %29 = icmp ne i32 %28, 0 - %30 = and i32 %18, 524288 - %31 = icmp ne i32 %30, 0 - %32 = xor i1 %29, %31 - br i1 %32, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %33 - -33: ; preds = %27 - %34 = and i32 %17, 1048576 - %35 = icmp ne i32 %34, 0 - %36 = and i32 %18, 1048576 - %37 = icmp ne i32 %36, 0 - %38 = xor i1 %35, %37 - br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 - -39: ; preds = %33 - %40 = and i32 %17, 2097152 - %41 = icmp ne i32 %40, 0 - %42 = and i32 %18, 2097152 - %43 = icmp ne i32 %42, 0 - %44 = xor i1 %41, %43 - br i1 %44, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %45 - -45: ; preds = %39 - %46 = and i32 %17, 536870912 - %47 = icmp ne i32 %46, 0 - %48 = and i32 %18, 536870912 - %49 = icmp ne i32 %48, 0 - %50 = xor i1 %47, %49 - br i1 %50, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %51 - -51: ; preds = %45 - %52 = and i32 %17, 1073741824 - %53 = icmp ne i32 %52, 0 - %54 = and i32 %18, 1073741824 - %55 = icmp eq i32 %54, 0 - %.not.i = xor i1 %53, %55 - %56 = and i32 %19, 532676608 - %57 = icmp eq i32 %56, 0 - %or.cond = and i1 %.not.i, %57 br i1 %or.cond, label %._crit_edge, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -._crit_edge: ; preds = %51 +._crit_edge: ; preds = %14 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %1, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 br label %58 @@ -76260,36 +76205,58 @@ define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS 58: ; preds = %._crit_edge, %10 %59 = phi i32 [ %.pre, %._crit_edge ], [ %12, %10 ] %60 = xor i32 %59, %8 - %61 = and i32 %60, 2096896 + %61 = and i32 %60, 8388352 %or.cond25 = icmp eq i32 %61, 0 br i1 %or.cond25, label %62, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread 62: ; preds = %58 - %63 = and i32 %8, 2097152 - %64 = icmp ne i32 %63, 0 - %65 = and i32 %59, 2097152 - %66 = icmp ne i32 %65, 0 - %67 = xor i1 %64, %66 - br i1 %67, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %68 - -68: ; preds = %62 - %69 = and i32 %8, 4194304 - %70 = icmp ne i32 %69, 0 - %71 = and i32 %59, 4194304 - %72 = icmp ne i32 %71, 0 - %73 = xor i1 %70, %72 - br i1 %73, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %74 + %63 = tail call noundef zeroext i1 @_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef %2, ptr noundef %3) + br i1 %63, label %27, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -74: ; preds = %68 - %75 = tail call noundef zeroext i1 @_ZNK7glslang5TType14sameStructTypeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef %2, ptr noundef %3) - br i1 %75, label %76, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread +74: ; preds = %62 + %75 = load ptr, ptr %0, align 8 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 56 + %30 = load ptr, ptr %29, align 8 + %31 = tail call noundef i32 %30(ptr noundef nonnull align 8 dereferenceable(152) %0) #24 + %32 = icmp eq i32 %31, 18 + %33 = load ptr, ptr %1, align 8 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 56 + %35 = load ptr, ptr %34, align 8 + %36 = tail call noundef i32 %35(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %37 = icmp eq i32 %36, 18 + %38 = xor i1 %32, %37 + br i1 %38, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %39 76: ; preds = %74 - %77 = tail call noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1) + %77 = load ptr, ptr %0, align 8 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 56 + %42 = load ptr, ptr %41, align 8 + %43 = tail call noundef i32 %42(ptr noundef nonnull align 8 dereferenceable(152) %0) #24 + %44 = icmp eq i32 %43, 18 + br i1 %44, label %51, label %45 + +45: ; preds = %39 + %46 = load ptr, ptr %1, align 8 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 56 + %48 = load ptr, ptr %47, align 8 + %49 = tail call noundef i32 %48(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %50 = icmp eq i32 %49, 18 + br i1 %50, label %51, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread + +51: ; preds = %45, %39 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %53 = load ptr, ptr %52, align 8 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 104 + %55 = load ptr, ptr %54, align 8 + %56 = icmp eq ptr %53, %55 + br i1 %56, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread, label %57 + +57: ; preds = %51 + %58 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %53, ptr noundef nonnull align 8 dereferenceable(152) %55) br label %_ZNK7glslang8TSamplereqERKS0_.exit.thread -_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %14, %21, %27, %33, %39, %45, %51, %76, %74, %68, %62, %58 - %78 = phi i1 [ false, %74 ], [ false, %68 ], [ false, %62 ], [ false, %58 ], [ %77, %76 ], [ false, %51 ], [ false, %45 ], [ false, %39 ], [ false, %33 ], [ false, %27 ], [ false, %21 ], [ false, %14 ] +_ZNK7glslang8TSamplereqERKS0_.exit.thread: ; preds = %57, %51, %46, %74, %14, %62, %58 + %78 = phi i1 [ false, %62 ], [ false, %58 ], [ false, %14 ], [ %59, %57 ], [ false, %27 ], [ true, %46 ], [ true, %51 ] ret i1 %78 } @@ -76924,54 +76891,6 @@ _ZStneIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_st ret i1 %.055 } -; Function Attrs: mustprogress nounwind uwtable -define linkonce_odr noundef zeroext i1 @_ZNK7glslang5TType17sameReferenceTypeERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(152) %1) local_unnamed_addr #0 comdat align 2 { - %3 = load ptr, ptr %0, align 8 - %4 = getelementptr inbounds nuw i8, ptr %3, i64 56 - %5 = load ptr, ptr %4, align 8 - %6 = tail call noundef i32 %5(ptr noundef nonnull align 8 dereferenceable(152) %0) #24 - %7 = icmp eq i32 %6, 18 - %8 = load ptr, ptr %1, align 8 - %9 = getelementptr inbounds nuw i8, ptr %8, i64 56 - %10 = load ptr, ptr %9, align 8 - %11 = tail call noundef i32 %10(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - %12 = icmp eq i32 %11, 18 - %13 = xor i1 %7, %12 - br i1 %13, label %34, label %14 - -14: ; preds = %2 - %15 = load ptr, ptr %0, align 8 - %16 = getelementptr inbounds nuw i8, ptr %15, i64 56 - %17 = load ptr, ptr %16, align 8 - %18 = tail call noundef i32 %17(ptr noundef nonnull align 8 dereferenceable(152) %0) #24 - %19 = icmp eq i32 %18, 18 - br i1 %19, label %26, label %20 - -20: ; preds = %14 - %21 = load ptr, ptr %1, align 8 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 56 - %23 = load ptr, ptr %22, align 8 - %24 = tail call noundef i32 %23(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - %25 = icmp eq i32 %24, 18 - br i1 %25, label %26, label %34 - -26: ; preds = %20, %14 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %28 = load ptr, ptr %27, align 8 - %29 = getelementptr inbounds nuw i8, ptr %1, i64 104 - %30 = load ptr, ptr %29, align 8 - %31 = icmp eq ptr %28, %30 - br i1 %31, label %34, label %32 - -32: ; preds = %26 - %33 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %28, ptr noundef nonnull align 8 dereferenceable(152) %30) - br label %34 - -34: ; preds = %26, %20, %2, %32 - %.0 = phi i1 [ %33, %32 ], [ false, %2 ], [ true, %20 ], [ true, %26 ] - ret i1 %.0 -} - ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr noundef zeroext i1 @_ZNK7glslang17TSmallArrayVectoreqERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) local_unnamed_addr #0 comdat align 2 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -82550,10 +82469,8 @@ declare noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS ; Function Attrs: mustprogress nounwind uwtable define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN7glslang5TTypeES3_S3_EZNS0_16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1E9_M_invokeERKSt9_Any_dataS3_S3_S3_"(ptr nonnull readnone align 8 captures(none) %0, ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef nonnull align 8 dereferenceable(152) %2, ptr noundef nonnull align 8 dereferenceable(152) %3) #0 align 2 { - %5 = alloca %"struct.glslang::TSampler", align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) - %6 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef nonnull align 8 dereferenceable(152) %3) - br i1 %6, label %7, label %9 + %5 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef nonnull align 8 dereferenceable(152) %3) + br i1 %5, label %6, label %8 7: ; preds = %4 %8 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %1, ptr noundef nonnull align 8 dereferenceable(152) %2) @@ -82567,25 +82484,25 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN7glslang5TTyp %12 = load ptr, ptr %1, align 8 %13 = getelementptr inbounds nuw i8, ptr %12, i64 192 %14 = load ptr, ptr %13, align 8 - %15 = tail call noundef zeroext i1 %14(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %15 = tail call noundef zeroext i1 %13(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 br i1 %15, label %21, label %16 16: ; preds = %11 %17 = load ptr, ptr %1, align 8 %18 = getelementptr inbounds nuw i8, ptr %17, i64 216 %19 = load ptr, ptr %18, align 8 - %20 = tail call noundef zeroext i1 %19(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %20 = tail call noundef zeroext i1 %18(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 br i1 %20, label %21, label %59 21: ; preds = %16, %11 %22 = load ptr, ptr %1, align 8 %23 = getelementptr inbounds nuw i8, ptr %22, i64 96 %24 = load ptr, ptr %23, align 8 - %25 = tail call noundef i32 %24(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %25 = tail call noundef i32 %23(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %26 = load ptr, ptr %3, align 8 %27 = getelementptr inbounds nuw i8, ptr %26, i64 96 %28 = load ptr, ptr %27, align 8 - %29 = tail call noundef i32 %28(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 + %29 = tail call noundef i32 %27(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 %30 = icmp eq i32 %25, %29 br i1 %30, label %31, label %40 @@ -82593,11 +82510,11 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN7glslang5TTyp %32 = load ptr, ptr %1, align 8 %33 = getelementptr inbounds nuw i8, ptr %32, i64 96 %34 = load ptr, ptr %33, align 8 - %35 = tail call noundef i32 %34(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %35 = tail call noundef i32 %33(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %36 = load ptr, ptr %2, align 8 %37 = getelementptr inbounds nuw i8, ptr %36, i64 96 %38 = load ptr, ptr %37, align 8 - %39 = tail call noundef i32 %38(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 + %39 = tail call noundef i32 %37(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 %.not.i.i.i = icmp eq i32 %35, %39 br i1 %.not.i.i.i, label %40, label %"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit" @@ -82605,11 +82522,11 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN7glslang5TTyp %41 = load ptr, ptr %1, align 8 %42 = getelementptr inbounds nuw i8, ptr %41, i64 96 %43 = load ptr, ptr %42, align 8 - %44 = tail call noundef i32 %43(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %44 = tail call noundef i32 %42(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %45 = load ptr, ptr %2, align 8 %46 = getelementptr inbounds nuw i8, ptr %45, i64 96 %47 = load ptr, ptr %46, align 8 - %48 = tail call noundef i32 %47(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 + %48 = tail call noundef i32 %46(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 %49 = icmp eq i32 %44, %48 br i1 %49, label %50, label %59 @@ -82617,11 +82534,11 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN7glslang5TTyp %51 = load ptr, ptr %1, align 8 %52 = getelementptr inbounds nuw i8, ptr %51, i64 96 %53 = load ptr, ptr %52, align 8 - %54 = tail call noundef i32 %53(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %54 = tail call noundef i32 %52(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %55 = load ptr, ptr %3, align 8 %56 = getelementptr inbounds nuw i8, ptr %55, i64 96 %57 = load ptr, ptr %56, align 8 - %58 = tail call noundef i32 %57(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 + %58 = tail call noundef i32 %56(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 %.not30.i.i.i = icmp eq i32 %54, %58 br i1 %.not30.i.i.i, label %59, label %"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit" @@ -82629,200 +82546,91 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN7glslang5TTyp %60 = load ptr, ptr %1, align 8 %61 = getelementptr inbounds nuw i8, ptr %60, i64 56 %62 = load ptr, ptr %61, align 8 - %63 = tail call noundef i32 %62(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %63 = tail call noundef i32 %61(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %64 = icmp eq i32 %63, 14 - br i1 %64, label %65, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i + br i1 %64, label %65, label %_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i 65: ; preds = %59 %66 = load ptr, ptr %2, align 8 %67 = getelementptr inbounds nuw i8, ptr %66, i64 56 %68 = load ptr, ptr %67, align 8 - %69 = tail call noundef i32 %68(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 + %69 = tail call noundef i32 %67(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 %70 = icmp eq i32 %69, 14 - br i1 %70, label %71, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i + br i1 %70, label %71, label %_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i 71: ; preds = %65 %72 = load ptr, ptr %3, align 8 %73 = getelementptr inbounds nuw i8, ptr %72, i64 56 %74 = load ptr, ptr %73, align 8 - %75 = tail call noundef i32 %74(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 + %75 = tail call noundef i32 %73(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 %76 = icmp eq i32 %75, 14 - br i1 %76, label %77, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i + br i1 %76, label %77, label %_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i 77: ; preds = %71 %78 = load ptr, ptr %2, align 8 %79 = getelementptr inbounds nuw i8, ptr %78, i64 64 %80 = load ptr, ptr %79, align 8 - %81 = tail call noundef nonnull align 4 dereferenceable(4) ptr %80(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 + %81 = tail call noundef nonnull align 4 dereferenceable(4) ptr %79(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 %82 = load i32, ptr %81, align 4 %83 = load ptr, ptr %3, align 8 %84 = getelementptr inbounds nuw i8, ptr %83, i64 64 %85 = load ptr, ptr %84, align 8 - %86 = tail call noundef nonnull align 4 dereferenceable(4) ptr %85(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 + %86 = tail call noundef nonnull align 4 dereferenceable(4) ptr %84(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 %87 = load i32, ptr %86, align 4 %88 = load ptr, ptr %1, align 8 %89 = getelementptr inbounds nuw i8, ptr %88, i64 64 %90 = load ptr, ptr %89, align 8 - %91 = tail call noundef nonnull align 4 dereferenceable(4) ptr %90(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %91 = tail call noundef nonnull align 4 dereferenceable(4) ptr %89(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %92 = load i32, ptr %91, align 4 %93 = and i32 %92, 29360128 - %94 = and i32 %87, -29360129 + %94 = and i32 %87, 2118123519 %95 = or disjoint i32 %93, %94 - %96 = and i32 %82, -29360129 + %96 = and i32 %82, 2118123519 %97 = or disjoint i32 %93, %96 - store i32 %97, ptr %5, align 4 - %98 = load ptr, ptr %1, align 8 - %99 = getelementptr inbounds nuw i8, ptr %98, i64 64 - %100 = load ptr, ptr %99, align 8 - %101 = tail call noundef nonnull align 4 dereferenceable(4) ptr %100(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - %102 = load i32, ptr %101, align 4 - %103 = xor i32 %102, %95 - %104 = and i32 %103, 262143 - %or.cond19.i.i.i.i = icmp eq i32 %104, 0 - br i1 %or.cond19.i.i.i.i, label %105, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i - -105: ; preds = %77 - %106 = and i32 %102, 262144 - %107 = icmp ne i32 %106, 0 - %108 = and i32 %87, 262144 - %109 = icmp ne i32 %108, 0 - %110 = xor i1 %109, %107 - br i1 %110, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, label %111 - -111: ; preds = %105 - %112 = and i32 %102, 524288 - %113 = icmp ne i32 %112, 0 - %114 = and i32 %87, 524288 - %115 = icmp ne i32 %114, 0 - %116 = xor i1 %115, %113 - br i1 %116, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, label %117 - -117: ; preds = %111 - %118 = and i32 %102, 1048576 - %119 = icmp ne i32 %118, 0 - %120 = and i32 %87, 1048576 - %121 = icmp ne i32 %120, 0 - %122 = xor i1 %121, %119 - br i1 %122, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, label %123 - -123: ; preds = %117 - %124 = and i32 %102, 2097152 - %125 = icmp ne i32 %124, 0 - %126 = and i32 %87, 2097152 - %127 = icmp ne i32 %126, 0 - %128 = xor i1 %127, %125 - br i1 %128, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, label %129 - -129: ; preds = %123 - %130 = and i32 %102, 536870912 - %131 = icmp ne i32 %130, 0 - %132 = and i32 %87, 536870912 - %133 = icmp ne i32 %132, 0 - %134 = xor i1 %133, %131 - br i1 %134, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, label %135 - -135: ; preds = %129 - %136 = and i32 %102, 1073741824 - %137 = icmp ne i32 %136, 0 - %138 = and i32 %87, 1073741824 - %139 = icmp eq i32 %138, 0 - %.not.i.i.i.i = xor i1 %139, %137 - %140 = and i32 %103, 532676608 - %141 = icmp eq i32 %140, 0 - %or.cond.i.i.i = and i1 %.not.i.i.i.i, %141 - br i1 %or.cond.i.i.i, label %142, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i - -142: ; preds = %135 - %143 = load ptr, ptr %1, align 8 - %144 = getelementptr inbounds nuw i8, ptr %143, i64 64 - %145 = load ptr, ptr %144, align 8 - %146 = tail call noundef nonnull align 4 dereferenceable(4) ptr %145(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - %147 = call noundef zeroext i1 @_ZNK7glslang8TSamplerneERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %146, ptr noundef nonnull align 4 dereferenceable(4) %5) + %97 = load ptr, ptr %1, align 8 + %98 = getelementptr inbounds nuw i8, ptr %97, i64 64 + %99 = load ptr, ptr %98, align 8 + %100 = tail call noundef nonnull align 4 dereferenceable(4) ptr %99(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %101 = load i32, ptr %100, align 4 + %102 = and i32 %101, 2147483647 + %103 = icmp eq i32 %94, %102 + %104 = load ptr, ptr %1, align 8 + %or.cond19.i.i.i.i = getelementptr inbounds nuw i8, ptr %104, i64 64 + %104 = load ptr, ptr %or.cond19.i.i.i.i, align 8 + %105 = tail call noundef nonnull align 4 dereferenceable(4) ptr %104(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %106 = load i32, ptr %105, align 4 + %106 = and i32 %106, 2147483647 + br i1 %or.cond.i.i.i, label %107, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i + +107:; preds = %76 + %152 = icmp ne i32 %106, %97 br label %"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit" -_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i: ; preds = %135, %129, %123, %117, %111, %105, %77 - %148 = load ptr, ptr %1, align 8 - %149 = getelementptr inbounds nuw i8, ptr %148, i64 64 - %150 = load ptr, ptr %149, align 8 - %151 = tail call noundef nonnull align 4 dereferenceable(4) ptr %150(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - %152 = load i32, ptr %151, align 4 - %153 = xor i32 %152, %97 - %154 = and i32 %153, 262143 - %or.cond19.i.i.i = icmp eq i32 %154, 0 - br i1 %or.cond19.i.i.i, label %155, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i - -155: ; preds = %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i - %156 = and i32 %152, 262144 - %157 = icmp ne i32 %156, 0 - %158 = and i32 %82, 262144 - %159 = icmp ne i32 %158, 0 - %160 = xor i1 %159, %157 - br i1 %160, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i, label %161 - -161: ; preds = %155 - %162 = and i32 %152, 524288 - %163 = icmp ne i32 %162, 0 - %164 = and i32 %82, 524288 - %165 = icmp ne i32 %164, 0 - %166 = xor i1 %165, %163 - br i1 %166, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i, label %167 - -167: ; preds = %161 - %168 = and i32 %152, 1048576 - %169 = icmp ne i32 %168, 0 - %170 = and i32 %82, 1048576 - %171 = icmp ne i32 %170, 0 - %172 = xor i1 %171, %169 - br i1 %172, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i, label %173 - -173: ; preds = %167 - %174 = and i32 %152, 2097152 - %175 = icmp ne i32 %174, 0 - %176 = and i32 %82, 2097152 - %177 = icmp ne i32 %176, 0 - %178 = xor i1 %177, %175 - br i1 %178, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i, label %179 - -179: ; preds = %173 - %180 = and i32 %152, 536870912 - %181 = icmp ne i32 %180, 0 - %182 = and i32 %82, 536870912 - %183 = icmp ne i32 %182, 0 - %184 = xor i1 %183, %181 - br i1 %184, label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i, label %185 - -185: ; preds = %179 - %186 = and i32 %152, 1073741824 - %187 = icmp ne i32 %186, 0 - %188 = and i32 %82, 1073741824 - %189 = icmp eq i32 %188, 0 - %.not.i4.i.i = xor i1 %189, %187 - %190 = and i32 %153, 532676608 - %191 = icmp eq i32 %190, 0 - %or.cond.i.i = and i1 %.not.i4.i.i, %191 - br i1 %or.cond.i.i, label %"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit", label %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i - -_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i: ; preds = %185, %179, %173, %167, %161, %155, %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, %71, %65, %59 - %192 = load ptr, ptr %3, align 8 - %193 = getelementptr inbounds nuw i8, ptr %192, i64 56 - %194 = load ptr, ptr %193, align 8 - %195 = tail call noundef i32 %194(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 - %switch.tableidx = add i32 %195, -1 - %196 = icmp ult i32 %switch.tableidx, 12 - br i1 %196, label %switch.lookup, label %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit.i.i.i" - -switch.lookup: ; preds = %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i - %197 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [12 x i32], ptr @"switch.table._ZNSt17_Function_handlerIFbRKN7glslang5TTypeES3_S3_EZNS0_16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1E9_M_invokeERKSt9_Any_dataS3_S3_S3_.101", i64 0, i64 %197 +_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i: ; preds = %77 + %148 = icmp eq i32 %106, %96 + br i1 %148, label %"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit", label %_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i + +_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i:; preds = %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, %71, %64, %58 + %152 = load ptr, ptr %3, align 8 + %153 = getelementptr inbounds nuw i8, ptr %152, i64 57 + %154 = load ptr, ptr %153, align 8 + %or.cond19.i.i.i = tail call noundef i32 %111(ptr noundef nonnull align 8 dereferenceable(152) %3) #24 + %switch.tableidx = add i32 %or.cond19.i.i.i, -1 + %113 = icmp ult i32 %switch.tableidx, 12 + br i1 %113, label %switch.lookup, label %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit.i.i.i" + +switch.lookup:; preds = %_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i + %158 = zext nneg i32 %switch.tableidx to i64 + %159 = getelementptr inbounds nuw [12 x i32], ptr @"switch.table._ZNSt17_Function_handlerIFbRKN7glslang5TTypeES3_S3_EZNS0_16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1E9_M_invokeERKSt9_Any_dataS3_S3_S3_.101", i64 0, i64 %158 %switch.load = load i32, ptr %switch.gep, align 4 br label %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit.i.i.i" -"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit.i.i.i": ; preds = %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i, %switch.lookup - %.0.i.i.i.i = phi i32 [ %switch.load, %switch.lookup ], [ 0, %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i ] +"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit.i.i.i": ; preds = %_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i, %switch.lookup + %.0.i.i.i.i = phi i32 [ %switch.load, %switch.lookup ], [ 0, %_ZNK7glslang8TSamplereqERKS0_.exit35.thread.i.i.i ] %198 = load ptr, ptr %1, align 8 %199 = getelementptr inbounds nuw i8, ptr %198, i64 56 %200 = load ptr, ptr %199, align 8 - %201 = tail call noundef i32 %200(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %201 = tail call noundef i32 %117(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %switch.tableidx5 = add i32 %201, -1 %202 = icmp ult i32 %switch.tableidx5, 12 br i1 %202, label %switch.lookup4, label %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit35.i.i.i" @@ -82840,7 +82648,7 @@ switch.lookup4: ; preds = %"_ZZZN7glslang16Hls %206 = load ptr, ptr %2, align 8 %207 = getelementptr inbounds nuw i8, ptr %206, i64 56 %208 = load ptr, ptr %207, align 8 - %209 = tail call noundef i32 %208(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 + %209 = tail call noundef i32 %125(ptr noundef nonnull align 8 dereferenceable(152) %2) #24 %switch.tableidx9 = add i32 %209, -1 %210 = icmp ult i32 %switch.tableidx9, 12 br i1 %210, label %switch.lookup8, label %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit37.i.i.i" @@ -82856,7 +82664,7 @@ switch.lookup8: ; preds = %"_ZZZN7glslang16Hls %212 = load ptr, ptr %1, align 8 %213 = getelementptr inbounds nuw i8, ptr %212, i64 56 %214 = load ptr, ptr %213, align 8 - %215 = tail call noundef i32 %214(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %215 = tail call noundef i32 %131(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 %switch.tableidx13 = add i32 %215, -1 %216 = icmp ult i32 %switch.tableidx13, 12 br i1 %216, label %switch.lookup12, label %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit39.i.i.i" @@ -82874,9 +82682,8 @@ switch.lookup12: ; preds = %"_ZZZN7glslang16Hls %220 = icmp samesign ult i32 %205, %219 br label %"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit" -"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit": ; preds = %7, %9, %31, %50, %142, %185, %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit39.i.i.i" - %.0.i.i.i = phi i1 [ %8, %7 ], [ %147, %142 ], [ %220, %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit39.i.i.i" ], [ false, %9 ], [ true, %31 ], [ false, %50 ], [ false, %185 ] - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) +"_ZSt10__invoke_rIbRZN7glslang16HlslParseContext12findFunctionERKNS0_10TSourceLocERNS0_9TFunctionERbRiRPNS0_12TIntermTypedEE3$_1JRKNS0_5TTypeESG_SG_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESI_E4typeEOSJ_DpOSK_.exit": ; preds = %7, %9, %31, %50, %107, %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i, %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit39.i.i.i" + %.0.i.i.i = phi i1 [ %8, %7 ], [ %108, %107 ], [ %220, %"_ZZZN7glslang16HlslParseContext12findFunctionERKNS_10TSourceLocERNS_9TFunctionERbRiRPNS_12TIntermTypedEENK3$_1clERKNS_5TTypeESE_SE_ENKUlRKNS_10TBasicTypeEE_clESH_.exit39.i.i.i" ], [ false, %9 ], [ true, %31 ], [ false, %50 ], [ false, %_ZNK7glslang8TSamplereqERKS0_.exit.thread.i.i.i ] ret i1 %.0.i.i.i } @@ -82899,76 +82706,6 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRKN7glslang5TTyp ret i1 false } -; Function Attrs: mustprogress nounwind uwtable -define linkonce_odr noundef zeroext i1 @_ZNK7glslang8TSamplerneERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %0, ptr noundef nonnull align 4 dereferenceable(4) %1) local_unnamed_addr #0 comdat align 2 { - %3 = load i32, ptr %0, align 4 - %4 = load i32, ptr %1, align 4 - %5 = xor i32 %4, %3 - %6 = and i32 %5, 262143 - %or.cond19.i = icmp eq i32 %6, 0 - br i1 %or.cond19.i, label %7, label %_ZNK7glslang8TSamplereqERKS0_.exit - -7: ; preds = %2 - %8 = and i32 %3, 262144 - %9 = icmp ne i32 %8, 0 - %10 = and i32 %4, 262144 - %11 = icmp ne i32 %10, 0 - %12 = xor i1 %9, %11 - br i1 %12, label %_ZNK7glslang8TSamplereqERKS0_.exit, label %13 - -13: ; preds = %7 - %14 = and i32 %3, 524288 - %15 = icmp ne i32 %14, 0 - %16 = and i32 %4, 524288 - %17 = icmp ne i32 %16, 0 - %18 = xor i1 %15, %17 - br i1 %18, label %_ZNK7glslang8TSamplereqERKS0_.exit, label %19 - -19: ; preds = %13 - %20 = and i32 %3, 1048576 - %21 = icmp ne i32 %20, 0 - %22 = and i32 %4, 1048576 - %23 = icmp ne i32 %22, 0 - %24 = xor i1 %21, %23 - br i1 %24, label %_ZNK7glslang8TSamplereqERKS0_.exit, label %25 - -25: ; preds = %19 - %26 = and i32 %3, 2097152 - %27 = icmp ne i32 %26, 0 - %28 = and i32 %4, 2097152 - %29 = icmp ne i32 %28, 0 - %30 = xor i1 %27, %29 - br i1 %30, label %_ZNK7glslang8TSamplereqERKS0_.exit, label %31 - -31: ; preds = %25 - %32 = and i32 %3, 536870912 - %33 = icmp ne i32 %32, 0 - %34 = and i32 %4, 536870912 - %35 = icmp ne i32 %34, 0 - %36 = xor i1 %33, %35 - br i1 %36, label %_ZNK7glslang8TSamplereqERKS0_.exit, label %37 - -37: ; preds = %31 - %38 = and i32 %3, 1073741824 - %39 = icmp ne i32 %38, 0 - %40 = and i32 %4, 1073741824 - %41 = icmp eq i32 %40, 0 - %.not.i = xor i1 %39, %41 - %42 = and i32 %5, 29360128 - %43 = icmp eq i32 %42, 0 - %or.cond.i = and i1 %.not.i, %43 - br i1 %or.cond.i, label %44, label %_ZNK7glslang8TSamplereqERKS0_.exit - -44: ; preds = %37 - %45 = and i32 %5, 503316480 - %46 = icmp ne i32 %45, 0 - br label %_ZNK7glslang8TSamplereqERKS0_.exit - -_ZNK7glslang8TSamplereqERKS0_.exit: ; preds = %2, %7, %13, %19, %25, %31, %37, %44 - %47 = phi i1 [ true, %37 ], [ true, %31 ], [ true, %25 ], [ true, %19 ], [ true, %13 ], [ true, %7 ], [ true, %2 ], [ %46, %44 ] - ret i1 %47 -} - ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.abs.i32(i32, i1 immarg) #18 diff --git a/bench/hermes/optimized/APFloat.ll b/bench/hermes/optimized/APFloat.ll index 08c81e0fc57..3e50b0f9afb 100644 --- a/bench/hermes/optimized/APFloat.ll +++ b/bench/hermes/optimized/APFloat.ll @@ -1140,7 +1140,6 @@ _ZN4llvh6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_11APFloatBase12round br i1 %cmp16.not, label %if.end18, label %cleanup if.end18: ; preds = %_ZN4llvh6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_11APFloatBase12roundingModeE.exit - %tobool.i = icmp ne i8 %bf.clear, 0 %call.i.i = call noundef i32 @_ZN4llvh6detail9IEEEFloat21addOrSubtractSpecialsERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(24) %MagicConstant, i1 noundef zeroext false) %cmp.i.i25 = icmp eq i32 %call.i.i, 2 br i1 %cmp.i.i25, label %if.then.i.i27, label %if.end.i.i @@ -1221,10 +1220,10 @@ if.then24.i.i41: ; preds = %lor.lhs.false.i.i46 _ZN4llvh6detail9IEEEFloat8subtractERKS1_NS_11APFloatBase12roundingModeE.exit: ; preds = %if.end.i.i30, %lor.lhs.false.i.i46, %if.then24.i.i41 %bf.load.i53 = phi i8 [ %bf.load.i.i33, %if.end.i.i30 ], [ %bf.load.i.i33, %lor.lhs.false.i.i46 ], [ %bf.set.i.i45, %if.then24.i.i41 ] - %23 = and i8 %bf.load.i53, 8 - %tobool.i54 = icmp ne i8 %23, 0 - %24 = xor i1 %tobool.i, %tobool.i54 - br i1 %24, label %if.then31, label %cleanup + %23 = xor i8 %bf.load.i53, %bf.load + %tobool.i54 = and i8 %23, 8 + %24 = icmp eq i8 %tobool.i54, 0 + br i1 %24, label %cleanup, label %if.then31 if.then31: ; preds = %_ZN4llvh6detail9IEEEFloat8subtractERKS1_NS_11APFloatBase12roundingModeE.exit %bf.set.i57 = xor i8 %bf.load.i53, 8 @@ -14980,12 +14979,10 @@ land.lhs.true: ; preds = %if.end17 br i1 %cmp21, label %land.lhs.true22, label %if.then32 land.lhs.true22: ; preds = %land.lhs.true - %6 = and i8 %bf.load.i.i.i, 8 - %tobool.i.i.i = icmp ne i8 %6, 0 - %7 = and i8 %bf.load.i.i.i34, 8 - %tobool.i.i.i92 = icmp ne i8 %7, 0 - %8 = xor i1 %tobool.i.i.i, %tobool.i.i.i92 - br i1 %8, label %if.then27, label %if.then32 + %6 = xor i8 %bf.load.i.i.i34, %bf.load.i.i.i + %tobool.i.i.i = and i8 %6, 8 + %7 = icmp eq i8 %tobool.i.i.i, 0 + br i1 %tobool.i.i.i, label %if.then32, label %if.then27 if.then27: ; preds = %land.lhs.true22 %Floats.i93 = getelementptr inbounds nuw i8, ptr %Out, i64 8 @@ -16583,8 +16580,6 @@ if.then12: ; preds = %_ZNK4llvh7APFloat20 %retval.0.i.i63 = select i1 %cmp.i.not.i.i, ptr %U8.i.i, ptr %U.i.i62 %sign.i.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i63, i64 18 %bf.load.i.i = load i8, ptr %sign.i.i, align 2 - %28 = and i8 %bf.load.i.i, 8 - %tobool.i.i = icmp ne i8 %28, 0 %U.i.i65 = getelementptr inbounds nuw i8, ptr %25, i64 40 %29 = load ptr, ptr %U.i.i65, align 8 %cmp.i.not.i.i66 = icmp eq ptr %29, @_ZN4llvhL18semPPCDoubleDoubleE @@ -16594,9 +16589,9 @@ if.then12: ; preds = %_ZNK4llvh7APFloat20 %retval.0.i.i69 = select i1 %cmp.i.not.i.i66, ptr %U8.i.i68, ptr %U.i.i65 %sign.i.i70 = getelementptr inbounds nuw i8, ptr %retval.0.i.i69, i64 18 %bf.load.i.i71 = load i8, ptr %sign.i.i70, align 2 - %31 = and i8 %bf.load.i.i71, 8 - %tobool.i.i72 = icmp ne i8 %31, 0 - %xor20 = xor i1 %tobool.i.i, %tobool.i.i72 + %31 = xor i8 %bf.load.i.i71, %bf.load.i.i + %tobool.i.i72 = and i8 %31, 8 + %xor20 = icmp eq i8 %tobool.i.i72, 0 %32 = load ptr, ptr %Floats2, align 8 %U.i.i74 = getelementptr inbounds nuw i8, ptr %32, i64 8 %33 = load ptr, ptr %U.i.i74, align 8 @@ -16607,8 +16602,6 @@ if.then12: ; preds = %_ZNK4llvh7APFloat20 %retval.0.i.i78 = select i1 %cmp.i.not.i.i75, ptr %U8.i.i77, ptr %U.i.i74 %sign.i.i79 = getelementptr inbounds nuw i8, ptr %retval.0.i.i78, i64 18 %bf.load.i.i80 = load i8, ptr %sign.i.i79, align 2 - %35 = and i8 %bf.load.i.i80, 8 - %tobool.i.i81 = icmp ne i8 %35, 0 %U.i.i83 = getelementptr inbounds nuw i8, ptr %32, i64 40 %36 = load ptr, ptr %U.i.i83, align 8 %cmp.i.not.i.i84 = icmp eq ptr %36, @_ZN4llvhL18semPPCDoubleDoubleE @@ -16618,21 +16611,21 @@ if.then12: ; preds = %_ZNK4llvh7APFloat20 %retval.0.i.i87 = select i1 %cmp.i.not.i.i84, ptr %U8.i.i86, ptr %U.i.i83 %sign.i.i88 = getelementptr inbounds nuw i8, ptr %retval.0.i.i87, i64 18 %bf.load.i.i89 = load i8, ptr %sign.i.i88, align 2 - %38 = and i8 %bf.load.i.i89, 8 - %tobool.i.i90 = icmp ne i8 %38, 0 - %xor2821 = xor i1 %tobool.i.i81, %tobool.i.i90 - %tobool = xor i1 %xor20, true - %or.cond1 = or i1 %xor2821, %tobool + %38 = xor i8 %bf.load.i.i89, %bf.load.i.i80 + %tobool.i.i90 = and i8 %38, 8 + %xor2821 = icmp ne i8 %tobool.i.i90, 0 + %tobool = or i1 %xor20, %xor2821 br i1 %or.cond1, label %if.end31, label %return if.end31: ; preds = %if.then12 - %or.cond2 = and i1 %xor2821, %tobool + %or.cond2 = and i1 %xor20, %xor2821 br i1 %or.cond2, label %return, label %if.end36 if.end36: ; preds = %if.end31 - %or.cond4 = and i1 %xor20, %xor2821 + %or.cond4 = and i8 %31, %38 + %or.cond4.not = icmp eq i8 %39, 0 %sub = sub nuw nsw i32 2, %retval.0.i32 - %spec.select = select i1 %or.cond4, i32 %sub, i32 %retval.0.i32 + %spec.select = select i1 %or.cond4.not, i32 %retval.0.i32, i32 %sub br label %return return: ; preds = %_ZNK4llvh6detail9IEEEFloat20compareAbsoluteValueERKS1_.exit.i, %if.end36, %_ZNK4llvh7APFloat20compareAbsoluteValueERKS0_.exit60, %if.end31, %if.then12, %_ZNK4llvh7APFloat20compareAbsoluteValueERKS0_.exit diff --git a/bench/jemalloc/optimized/emap.ll b/bench/jemalloc/optimized/emap.ll index 75aa08f6ca2..788a3f7f995 100644 --- a/bench/jemalloc/optimized/emap.ll +++ b/bench/jemalloc/optimized/emap.ll @@ -421,12 +421,10 @@ if.end14.i: ; preds = %if.then11.i br i1 %expanding, label %if.end27.i, label %land.lhs.true.i land.lhs.true.i: ; preds = %if.end14.i - %20 = and i64 %edata.val98, 8192 - %tobool.i107 = icmp ne i64 %20, 0 - %21 = and i64 %.val100.pre119, 8192 - %tobool.i108 = icmp ne i64 %21, 0 - %22 = xor i1 %tobool.i107, %tobool.i108 - br i1 %22, label %return, label %if.end27.i + %20 = xor i64 %.val100.pre119, %edata.val98 + %tobool.i107 = and i64 %20, 8192 + %21 = icmp eq i64 %tobool.i107, 0 + br i1 %tobool.i107, label %if.end27.i, label %return if.else.i122: ; preds = %if.end8.i143 %cmp23.i = icmp eq i32 %conv8.i, 0 diff --git a/bench/linux/optimized/blk-merge.ll b/bench/linux/optimized/blk-merge.ll index f3523b5b358..044efa53a7b 100644 --- a/bench/linux/optimized/blk-merge.ll +++ b/bench/linux/optimized/blk-merge.ll @@ -1367,76 +1367,74 @@ define internal fastcc noundef ptr @attempt_merge(ptr noundef %0, ptr noundef %1 br i1 %36, label %37, label %.thread 37: ; preds = %33 - %38 = and i32 %5, 1 - %39 = icmp ne i32 %38, 0 - %40 = and i32 %20, 1 - %41 = icmp ne i32 %40, 0 - %42 = xor i1 %39, %41 - br i1 %42, label %.thread, label %43 - -43: ; preds = %37 - %44 = getelementptr inbounds nuw i8, ptr %1, i64 124 - %45 = load i16, ptr %44, align 4 - %46 = getelementptr inbounds nuw i8, ptr %2, i64 124 - %47 = load i16, ptr %46, align 4 - %48 = icmp eq i16 %45, %47 - br i1 %48, label %49, label %.thread + %38 = xor i32 %20, %5 + %39 = and i32 %38, 1 + %40 = icmp eq i32 %39, 0 + br i1 %.not, label %40, label %.thread + +40: ; preds = %37 + %41 = getelementptr inbounds nuw i8, ptr %1, i64 124 + %42 = load i16, ptr %41, align 4 + %43 = getelementptr inbounds nuw i8, ptr %2, i64 124 + %44 = load i16, ptr %43, align 4 + %45 = icmp eq i16 %42, %44 + br i1 %45, label %46, label %.thread + +43: ; preds = %40 + %44 = icmp eq i32 %91, 3 + br i1 %44, label %48, label %53 + +48: ; preds = %46 + %48 = load ptr, ptr %1, align 8 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 224 + %51 = load i16, ptr %50, align 8 + %52 = icmp ugt i16 %51, 1 + br i1 %52, label %64, label %53 + +53: ; preds = %48, %46 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %52 = load i64, ptr %54, align 8 + %53 = getelementptr inbounds nuw i8, ptr %1, i64 44 + %54 = load i32, ptr %53, align 4 + %55 = lshr i32 %54, 9 + %59 = zext nneg i32 %58 to i64 + %60 = add i64 %55, %59 + %61 = getelementptr inbounds nuw i8, ptr %2, i64 48 + %57 = load i64, ptr %61, align 8 + %58 = icmp eq i64 %60, %57 + br i1 %58, label %66, label %.thread + +64:; preds = %49 + %62 = tail call fastcc zeroext i1 @req_attempt_discard_merge(ptr noundef %0, ptr noundef %1, ptr noundef %2) + br i1 %57, label %69, label %.thread + +66:; preds = %53 + %66 = tail call fastcc i32 @ll_merge_requests_fn(ptr noundef %1, ptr noundef %2) + %68 = icmp eq i32 %67, 0 + br i1 %68, label %.thread, label %69 -49: ; preds = %43 - %50 = icmp eq i32 %34, 3 - br i1 %50, label %51, label %56 - -51: ; preds = %49 - %52 = load ptr, ptr %1, align 8 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 224 - %54 = load i16, ptr %53, align 8 - %55 = icmp ugt i16 %54, 1 - br i1 %55, label %67, label %56 - -56: ; preds = %51, %49 - %57 = getelementptr inbounds nuw i8, ptr %1, i64 48 - %58 = load i64, ptr %57, align 8 - %59 = getelementptr inbounds nuw i8, ptr %1, i64 44 - %60 = load i32, ptr %59, align 4 - %61 = lshr i32 %60, 9 - %62 = zext nneg i32 %61 to i64 - %63 = add i64 %58, %62 - %64 = getelementptr inbounds nuw i8, ptr %2, i64 48 - %65 = load i64, ptr %64, align 8 - %66 = icmp eq i64 %63, %65 - br i1 %66, label %69, label %.thread - -67: ; preds = %51 - %68 = tail call fastcc zeroext i1 @req_attempt_discard_merge(ptr noundef %0, ptr noundef %1, ptr noundef %2) - br i1 %68, label %72, label %.thread - -69: ; preds = %56 - %70 = tail call fastcc i32 @ll_merge_requests_fn(ptr noundef %1, ptr noundef %2) +69:; preds = %66, %64 + %70 = load i32, ptr %14, align 4 + %71 = load i32, ptr %29, align 4 + %72 = or i32 %71, %70 + %70 = and i32 %72, 32 %71 = icmp eq i32 %70, 0 - br i1 %71, label %.thread, label %72 + br i1 %71, label %75, label %78 -72: ; preds = %69, %67 - %73 = load i32, ptr %14, align 4 - %74 = load i32, ptr %29, align 4 - %75 = or i32 %74, %73 - %76 = and i32 %75, 32 +72: ; preds = %69 + %73 = load i32, ptr %4, align 8 + %74 = load i32, ptr %19, align 8 + %75 = xor i32 %74, %73 + %76 = and i32 %75, 1792 %77 = icmp eq i32 %76, 0 - br i1 %77, label %78, label %84 + br i1 %77, label %82, label %81 -78: ; preds = %72 - %79 = load i32, ptr %4, align 8 - %80 = load i32, ptr %19, align 8 - %81 = xor i32 %80, %79 - %82 = and i32 %81, 1792 - %83 = icmp eq i32 %82, 0 - br i1 %83, label %85, label %84 - -84: ; preds = %78, %72 +78: ; preds = %72, %69 tail call void @blk_rq_set_mixed_merge(ptr noundef %1) tail call void @blk_rq_set_mixed_merge(ptr noundef %2) br label %85 -85: ; preds = %84, %78 +85: ; preds = %81, %75 %86 = getelementptr inbounds nuw i8, ptr %2, i64 104 %87 = load i64, ptr %86, align 8 %88 = getelementptr inbounds nuw i8, ptr %1, i64 104 @@ -1485,8 +1483,8 @@ define internal fastcc noundef ptr @attempt_merge(ptr noundef %0, ptr noundef %1 store ptr null, ptr %93, align 8 br label %.thread -.thread: ; preds = %56, %113, %69, %67, %43, %37, %33, %28, %25, %23, %23, %23, %18, %13, %10, %8, %8, %8, %3 - %114 = phi ptr [ %2, %113 ], [ null, %28 ], [ null, %13 ], [ null, %33 ], [ null, %37 ], [ null, %43 ], [ null, %67 ], [ null, %69 ], [ null, %10 ], [ null, %8 ], [ null, %8 ], [ null, %8 ], [ null, %3 ], [ null, %25 ], [ null, %23 ], [ null, %23 ], [ null, %23 ], [ null, %18 ], [ null, %56 ] +.thread: ; preds = %53, %113, %66, %64, %40, %37, %33, %28, %25, %23, %23, %23, %18, %13, %10, %8, %8, %8, %3 + %114 = phi ptr [ %2, %113 ], [ null, %28 ], [ null, %13 ], [ null, %33 ], [ null, %37 ], [ null, %40 ], [ null, %64 ], [ null, %66 ], [ null, %10 ], [ null, %8 ], [ null, %8 ], [ null, %8 ], [ null, %3 ], [ null, %25 ], [ null, %23 ], [ null, %23 ], [ null, %23 ], [ null, %18 ], [ null, %53 ] ret ptr %114 } @@ -1496,80 +1494,72 @@ define dso_local zeroext i1 @blk_rq_merge_ok(ptr noundef readonly captures(none) %4 = load i32, ptr %3, align 8 %5 = and i32 %4, 254 %6 = icmp eq i32 %5, 34 - br i1 %6, label %54, label %7 + br i1 %6, label %47, label %7 7: ; preds = %2 %8 = trunc i32 %4 to i8 switch i8 %8, label %9 [ - i8 2, label %54 - i8 9, label %54 - i8 7, label %54 + i8 2, label %47 + i8 9, label %47 + i8 7, label %47 ] 9: ; preds = %7 %10 = and i32 %4, 409600 %11 = icmp eq i32 %10, 0 - br i1 %11, label %12, label %54 + br i1 %11, label %12, label %47 12: ; preds = %9 %13 = getelementptr inbounds nuw i8, ptr %0, i64 28 %14 = load i32, ptr %13, align 4 %15 = and i32 %14, 262162 %16 = icmp eq i32 %15, 0 - br i1 %16, label %17, label %54 + br i1 %16, label %17, label %47 17: ; preds = %12 %18 = getelementptr inbounds nuw i8, ptr %1, i64 16 %19 = load i32, ptr %18, align 8 %20 = and i32 %19, 409600 %21 = icmp eq i32 %20, 0 - br i1 %21, label %22, label %54 + br i1 %21, label %22, label %47 22: ; preds = %17 %23 = xor i32 %19, %4 %24 = and i32 %23, 255 %25 = icmp eq i32 %24, 0 - br i1 %25, label %26, label %54 + br i1 %25, label %26, label %47 26: ; preds = %22 - %27 = and i32 %19, 1 - %28 = icmp ne i32 %27, 0 - %29 = and i32 %4, 1 - %30 = icmp ne i32 %29, 0 - %31 = xor i1 %30, %28 - br i1 %31, label %54, label %32 - -32: ; preds = %26 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %34 = load ptr, ptr %33, align 8 - %35 = getelementptr inbounds nuw i8, ptr %34, i64 72 - %36 = load ptr, ptr %35, align 8 - %37 = getelementptr inbounds nuw i8, ptr %1, i64 72 - %38 = load ptr, ptr %37, align 8 - %39 = icmp eq ptr %36, %38 - br i1 %39, label %40, label %54 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %28 = load ptr, ptr %27, align 8 + %29 = getelementptr inbounds nuw i8, ptr %27, i64 72 + %30 = load ptr, ptr %29, align 8 + %31 = getelementptr inbounds nuw i8, ptr %1, i64 72 + %31 = load ptr, ptr %30, align 8 + %32 = icmp eq ptr %29, %31 + br i1 %32, label %33, label %47 -40: ; preds = %32 - %41 = getelementptr inbounds nuw i8, ptr %34, i64 16 - %42 = load i32, ptr %41, align 8 - %43 = and i32 %42, 16781312 - %44 = icmp ne i32 %43, 0 - %45 = and i32 %19, 16781312 - %46 = icmp eq i32 %45, 0 - %47 = xor i1 %46, %44 - br i1 %47, label %48, label %54 - -48: ; preds = %40 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 124 - %50 = load i16, ptr %49, align 4 - %51 = getelementptr inbounds nuw i8, ptr %1, i64 22 - %52 = load i16, ptr %51, align 2 - %53 = icmp eq i16 %50, %52 - br label %54 - -54: ; preds = %48, %40, %32, %26, %22, %17, %12, %9, %7, %7, %7, %2 - %55 = phi i1 [ false, %17 ], [ false, %12 ], [ false, %22 ], [ false, %26 ], [ false, %40 ], [ %53, %48 ], [ false, %9 ], [ false, %7 ], [ false, %7 ], [ false, %7 ], [ false, %2 ], [ false, %32 ] - ret i1 %55 +33:; preds = %25 + %35 = getelementptr inbounds nuw i8, ptr %27, i64 16 + %36 = load i32, ptr %35, align 8 + %37 = and i32 %35, 16781312 + %38 = icmp ne i32 %37, 0 + %39 = and i32 %19, 16781312 + %39 = icmp eq i32 %38, 0 + %40 = xor i1 %39, %37 + br i1 %40, label %41, label %47 + +41:; preds = %33 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 124 + %44 = load i16, ptr %43, align 4 + %45 = getelementptr inbounds nuw i8, ptr %1, i64 22 + %46 = load i16, ptr %45, align 2 + %47 = icmp eq i16 %43, %45 + br label %44 + +48: ; preds = %41, %90, %25, %22, %17, %12, %9, %7, %7, %7, %2 + %49 = phi i1 [ false, %17 ], [ false, %12 ], [ false, %22 ], [ false, %33 ], [ %46, %41 ], [ false, %9 ], [ false, %7 ], [ false, %7 ], [ false, %7 ], [ false, %2 ], [ false, %25 ] + ret i1 %49 } ; Function Attrs: fn_ret_thunk_extern mustprogress nofree norecurse nosync nounwind null_pointer_is_valid willreturn memory(read, inaccessiblemem: none) @@ -1669,164 +1659,156 @@ define internal fastcc noundef range(i32 0, 3) i32 @blk_attempt_bio_merge(ptr no %7 = load i32, ptr %6, align 8 %8 = and i32 %7, 254 %9 = icmp eq i32 %8, 34 - br i1 %9, label %111, label %10 + br i1 %9, label %104, label %10 10: ; preds = %5 %11 = trunc i32 %7 to i8 switch i8 %11, label %12 [ - i8 2, label %111 - i8 9, label %111 - i8 7, label %111 + i8 2, label %104 + i8 9, label %104 + i8 7, label %104 ] 12: ; preds = %10 %13 = and i32 %7, 409600 %14 = icmp eq i32 %13, 0 - br i1 %14, label %15, label %111 + br i1 %14, label %15, label %104 15: ; preds = %12 %16 = getelementptr inbounds nuw i8, ptr %1, i64 28 %17 = load i32, ptr %16, align 4 %18 = and i32 %17, 262162 %19 = icmp eq i32 %18, 0 - br i1 %19, label %20, label %111 + br i1 %19, label %20, label %104 20: ; preds = %15 %21 = getelementptr inbounds nuw i8, ptr %2, i64 16 %22 = load i32, ptr %21, align 8 %23 = and i32 %22, 409600 %24 = icmp eq i32 %23, 0 - br i1 %24, label %25, label %111 + br i1 %24, label %25, label %104 25: ; preds = %20 %26 = xor i32 %22, %7 %27 = and i32 %26, 255 %28 = icmp eq i32 %27, 0 - br i1 %28, label %29, label %111 - -29: ; preds = %25 - %30 = and i32 %22, 1 - %31 = icmp ne i32 %30, 0 - %32 = and i32 %7, 1 - %33 = icmp ne i32 %32, 0 - %34 = xor i1 %33, %31 - br i1 %34, label %111, label %35 - -35: ; preds = %29 - %36 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %37 = load ptr, ptr %36, align 8 - %38 = getelementptr inbounds nuw i8, ptr %37, i64 72 - %39 = load ptr, ptr %38, align 8 - %40 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %41 = load ptr, ptr %40, align 8 - %42 = icmp eq ptr %39, %41 - br i1 %42, label %43, label %111 - -43: ; preds = %35 - %44 = getelementptr inbounds nuw i8, ptr %37, i64 16 - %45 = load i32, ptr %44, align 8 - %46 = and i32 %45, 16781312 - %47 = icmp ne i32 %46, 0 - %48 = and i32 %22, 16781312 - %49 = icmp eq i32 %48, 0 - %50 = xor i1 %49, %47 - br i1 %50, label %51, label %111 - -51: ; preds = %43 - %52 = getelementptr inbounds nuw i8, ptr %1, i64 124 - %53 = load i16, ptr %52, align 4 - %54 = getelementptr inbounds nuw i8, ptr %2, i64 22 - %55 = load i16, ptr %54, align 2 - %56 = icmp eq i16 %53, %55 - br i1 %56, label %57, label %111 - -57: ; preds = %51 - %58 = and i32 %7, 255 - %59 = icmp eq i32 %58, 3 - br i1 %59, label %60, label %65 - -60: ; preds = %57 - %61 = load ptr, ptr %1, align 8 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 224 - %63 = load i16, ptr %62, align 8 - %64 = icmp ugt i16 %63, 1 - br i1 %64, label %.thread3, label %65 - -65: ; preds = %60, %57 - %66 = getelementptr inbounds nuw i8, ptr %1, i64 48 - %67 = load i64, ptr %66, align 8 - %68 = getelementptr inbounds nuw i8, ptr %1, i64 44 - %69 = load i32, ptr %68, align 4 - %70 = lshr i32 %69, 9 - %71 = zext nneg i32 %70 to i64 - %72 = add i64 %67, %71 - %73 = getelementptr inbounds nuw i8, ptr %2, i64 32 - %74 = load i64, ptr %73, align 8 - %75 = icmp eq i64 %72, %74 - br i1 %75, label %.thread, label %76 - -76: ; preds = %65 - %77 = getelementptr inbounds nuw i8, ptr %2, i64 40 - %78 = load i32, ptr %77, align 8 - %79 = lshr i32 %78, 9 - %80 = zext nneg i32 %79 to i64 - %81 = sub i64 %67, %80 - %82 = icmp eq i64 %81, %74 - br i1 %82, label %96, label %111 - -.thread: ; preds = %65 - %83 = and i32 %17, 512 - %84 = icmp ne i32 %83, 0 - %or.cond.not = and i1 %4, %84 - br i1 %or.cond.not, label %85, label %94 + br i1 %28, label %29, label %104 -85: ; preds = %.thread - %86 = getelementptr inbounds nuw i8, ptr %0, i64 8 +85: ; preds = %25 + %86 = getelementptr inbounds nuw i8, ptr %1, i64 56 %87 = load ptr, ptr %86, align 8 - %88 = load ptr, ptr %87, align 8 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 48 - %90 = load ptr, ptr %89, align 8 - %91 = icmp eq ptr %90, null - br i1 %91, label %94, label %92 - -92: ; preds = %85 - %93 = tail call zeroext i1 %90(ptr noundef %0, ptr noundef %1, ptr noundef %2) #14 - br i1 %93, label %94, label %111 - -94: ; preds = %92, %85, %.thread - %95 = tail call fastcc i32 @bio_attempt_back_merge(ptr noundef %1, ptr noundef %2, i32 noundef %3), !range !40 - br label %111 - -96: ; preds = %76 - %97 = and i32 %17, 512 - %98 = icmp ne i32 %97, 0 - %or.cond7.not = and i1 %4, %98 - br i1 %or.cond7.not, label %99, label %108 - -99: ; preds = %96 - %100 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %101 = load ptr, ptr %100, align 8 - %102 = load ptr, ptr %101, align 8 - %103 = getelementptr inbounds nuw i8, ptr %102, i64 48 - %104 = load ptr, ptr %103, align 8 - %105 = icmp eq ptr %104, null - br i1 %105, label %108, label %106 - -106: ; preds = %99 - %107 = tail call zeroext i1 %104(ptr noundef %0, ptr noundef %1, ptr noundef %2) #14 - br i1 %107, label %108, label %111 - -108: ; preds = %106, %99, %96 - %109 = tail call fastcc i32 @bio_attempt_front_merge(ptr noundef %1, ptr noundef %2, i32 noundef %3), !range !40 - br label %111 - -.thread3: ; preds = %60 - %110 = tail call fastcc i32 @bio_attempt_discard_merge(ptr noundef %0, ptr noundef %1, ptr noundef %2), !range !40 - br label %111 - -111: ; preds = %76, %.thread3, %108, %106, %94, %92, %51, %43, %35, %29, %25, %20, %15, %12, %10, %10, %10, %5 - %112 = phi i32 [ %110, %.thread3 ], [ %109, %108 ], [ %95, %94 ], [ 1, %51 ], [ 1, %76 ], [ 1, %35 ], [ 1, %5 ], [ 1, %10 ], [ 1, %10 ], [ 1, %10 ], [ 1, %12 ], [ 1, %43 ], [ 1, %29 ], [ 1, %25 ], [ 1, %15 ], [ 1, %20 ], [ 2, %92 ], [ 2, %106 ] - ret i32 %112 + %88 = getelementptr inbounds nuw i8, ptr %87, i64 72 + %89 = load ptr, ptr %88, align 8 + %90 = getelementptr inbounds nuw i8, ptr %2, i64 72 + %91 = load ptr, ptr %90, align 8 + %35 = icmp eq ptr %89, %34 + br i1 %35, label %36, label %104 + +111: ; preds = %29 + %112 = getelementptr inbounds nuw i8, ptr %87, i64 16 + %38 = load i32, ptr %112, align 8 + %39 = and i32 %38, 16781312 + %40 = icmp ne i32 %39, 0 + %41 = and i32 %22, 16781312 + %42 = icmp eq i32 %41, 0 + %43 = xor i1 %42, %40 + br i1 %43, label %44, label %104 + +44: ; preds = %36 + %45 = getelementptr inbounds nuw i8, ptr %1, i64 124 + %46 = load i16, ptr %45, align 4 + %47 = getelementptr inbounds nuw i8, ptr %2, i64 22 + %48 = load i16, ptr %47, align 2 + %49 = icmp eq i16 %46, %48 + br i1 %49, label %50, label %104 + +50: ; preds = %44 + %51 = and i32 %7, 255 + %52 = icmp eq i32 %51, 3 + br i1 %52, label %53, label %58 + +53: ; preds = %50 + %54 = load ptr, ptr %1, align 8 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 224 + %56 = load i16, ptr %55, align 8 + %57 = icmp ugt i16 %56, 1 + br i1 %57, label %.thread3, label %58 + +58: ; preds = %53, %50 + %59 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %60 = load i64, ptr %59, align 8 + %61 = getelementptr inbounds nuw i8, ptr %1, i64 44 + %62 = load i32, ptr %61, align 4 + %63 = lshr i32 %62, 9 + %64 = zext nneg i32 %63 to i64 + %65 = add i64 %60, %64 + %66 = getelementptr inbounds nuw i8, ptr %2, i64 32 + %67 = load i64, ptr %66, align 8 + %68 = icmp eq i64 %65, %67 + br i1 %68, label %.thread, label %69 + +69: ; preds = %58 + %70 = getelementptr inbounds nuw i8, ptr %2, i64 40 + %71 = load i32, ptr %70, align 8 + %72 = lshr i32 %71, 9 + %73 = zext nneg i32 %72 to i64 + %74 = sub i64 %60, %73 + %75 = icmp eq i64 %74, %67 + br i1 %75, label %89, label %104 + +.thread: ; preds = %58 + %76 = and i32 %17, 512 + %77 = icmp ne i32 %76, 0 + %or.cond6.not = and i1 %4, %77 + br i1 %or.cond6.not, label %78, label %87 + +78: ; preds = %.thread + %79 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %80 = load ptr, ptr %79, align 8 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds nuw i8, ptr %81, i64 48 + %83 = load ptr, ptr %82, align 8 + %84 = icmp eq ptr %83, null + br i1 %84, label %87, label %85 + +85: ; preds = %78 + %86 = tail call zeroext i1 %83(ptr noundef %0, ptr noundef %1, ptr noundef %2) #14 + br i1 %86, label %87, label %104 + +87: ; preds = %85, %78, %.thread + %88 = tail call fastcc i32 @bio_attempt_back_merge(ptr noundef %1, ptr noundef %2, i32 noundef %3), !range !40 + br label %104 + +89: ; preds = %69 + %90 = and i32 %17, 512 + %91 = icmp ne i32 %90, 0 + %or.cond9.not = and i1 %4, %91 + br i1 %or.cond9.not, label %92, label %101 + +92: ; preds = %89 + %93 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %94 = load ptr, ptr %93, align 8 + %95 = load ptr, ptr %94, align 8 + %96 = getelementptr inbounds nuw i8, ptr %95, i64 48 + %97 = load ptr, ptr %96, align 8 + %98 = icmp eq ptr %97, null + br i1 %98, label %101, label %99 + +99: ; preds = %92 + %100 = tail call zeroext i1 %97(ptr noundef %0, ptr noundef %1, ptr noundef %2) #14 + br i1 %100, label %101, label %104 + +101: ; preds = %99, %92, %89 + %102 = tail call fastcc i32 @bio_attempt_front_merge(ptr noundef %1, ptr noundef %2, i32 noundef %3), !range !40 + br label %104 + +.thread3: ; preds = %53 + %103 = tail call fastcc i32 @bio_attempt_discard_merge(ptr noundef %0, ptr noundef %1, ptr noundef %2), !range !40 + br label %104 + +104: ; preds = %69, %.thread3, %101, %99, %87, %85, %44, %36, %28, %25, %20, %15, %12, %10, %10, %10, %5 + %105 = phi i32 [ %103, %.thread3 ], [ %102, %101 ], [ %88, %87 ], [ 1, %44 ], [ 1, %69 ], [ 1, %28 ], [ 1, %5 ], [ 1, %10 ], [ 1, %10 ], [ 1, %10 ], [ 1, %12 ], [ 1, %36 ], [ 1, %25 ], [ 1, %15 ], [ 1, %20 ], [ 2, %85 ], [ 2, %99 ] + ret i32 %105 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/client.ll b/bench/linux/optimized/client.ll index 2a81e6d5237..222284ee4e4 100644 --- a/bench/linux/optimized/client.ll +++ b/bench/linux/optimized/client.ll @@ -739,28 +739,26 @@ define dso_local ptr @nfs_get_client(ptr noundef %0) #0 align 16 { 84: ; preds = %79 %85 = load volatile i64, ptr %0, align 8 - %86 = and i64 %85, 128 - %87 = icmp ne i64 %86, 0 - %88 = getelementptr i8, ptr %44, i64 -160 - %89 = load volatile i64, ptr %88, align 8 - %90 = and i64 %89, 128 - %91 = icmp ne i64 %90, 0 - %92 = xor i1 %87, %91 - br i1 %92, label %.thread, label %93 - -93: ; preds = %84 - %94 = load i16, ptr %27, align 2 - %95 = load i16, ptr %46, align 2 - %96 = icmp eq i16 %94, %95 - br i1 %96, label %97, label %134 - -97: ; preds = %93 - switch i16 %94, label %134 [ - i16 2, label %112 - i16 10, label %98 + %86 = getelementptr i8, ptr %44, i64 -160 + %87 = load volatile i64, ptr %86, align 8 + %88 = xor i64 %87, %85 + %89 = and i64 %88, 128 + %90 = icmp eq i64 %89, 0 + br i1 %.not, label %90, label %.thread + +90: ; preds = %84 + %91 = load i16, ptr %27, align 2 + %92 = load i16, ptr %46, align 2 + %94 = icmp eq i16 %91, %92 + br i1 %94, label %94, label %131 + +94:; preds = %90 + switch i16 %91, label %131 [ + i16 2, label %109 + i16 10, label %95 ] -98: ; preds = %97 +98: ; preds = %94 %99 = getelementptr i8, ptr %44, i64 -144 %100 = load i64, ptr %37, align 8 %101 = load i64, ptr %99, align 8 @@ -778,9 +776,9 @@ define dso_local ptr @nfs_get_client(ptr noundef %0) #0 align 16 { %111 = icmp eq i32 %110, 0 br i1 %111, label %119, label %112 -112: ; preds = %108, %97 - %113 = phi ptr [ %40, %97 ], [ %39, %108 ] - %114 = phi i64 [ -148, %97 ], [ -128, %108 ] +112: ; preds = %108, %94 + %113 = phi ptr [ %40, %94 ], [ %39, %108 ] + %114 = phi i64 [ -148, %94 ], [ -128, %108 ] %115 = load i32, ptr %113, align 4 %116 = getelementptr i8, ptr %44, i64 %114 %117 = load i32, ptr %116, align 4 @@ -818,7 +816,7 @@ define dso_local ptr @nfs_get_client(ptr noundef %0) #0 align 16 { %133 = icmp eq i16 %125, %132 br i1 %133, label %140, label %134 -134: ; preds = %131, %112, %98, %97, %93 +134: ; preds = %131, %112, %98, %94, %90 %135 = getelementptr i8, ptr %44, i64 32 %136 = load ptr, ptr %135, align 8 %137 = icmp ugt ptr %136, inttoptr (i64 -4096 to ptr) @@ -875,7 +873,7 @@ define dso_local ptr @nfs_get_client(ptr noundef %0) #0 align 16 { %163 = load ptr, ptr %162, align 8 %164 = getelementptr inbounds nuw i8, ptr %163, i64 400 %165 = load ptr, ptr %164, align 8 - tail call void %165(ptr noundef nonnull %26) #13 + tail call void %162(ptr noundef nonnull %26) #13 br label %166 166: ; preds = %161, %159 @@ -924,13 +922,13 @@ define dso_local ptr @nfs_get_client(ptr noundef %0) #0 align 16 { tail call void @_raw_spin_unlock(ptr noundef nonnull %18) #13 %187 = getelementptr inbounds nuw i8, ptr %13, i64 392 %188 = load ptr, ptr %187, align 8 - %189 = tail call ptr %188(ptr noundef nonnull %26, ptr noundef %0) #13 + %189 = tail call ptr %185(ptr noundef nonnull %26, ptr noundef %0) #13 br label %.loopexit 190: ; preds = %.thread15 tail call void @_raw_spin_unlock(ptr noundef nonnull %18) #13 %191 = load ptr, ptr %23, align 8 - %192 = tail call ptr %191(ptr noundef %0) #13 + %192 = tail call ptr %188(ptr noundef %0) #13 %193 = icmp ugt ptr %192, inttoptr (i64 -4096 to ptr) br i1 %193, label %.loopexit, label %25, !llvm.loop !25 diff --git a/bench/linux/optimized/radix-tree.ll b/bench/linux/optimized/radix-tree.ll index 171aa00d425..f867211101b 100644 --- a/bench/linux/optimized/radix-tree.ll +++ b/bench/linux/optimized/radix-tree.ll @@ -1066,52 +1066,50 @@ define internal fastcc noundef zeroext i1 @delete_node(ptr noundef %0, ptr nound define dso_local void @radix_tree_replace_slot(ptr noundef readonly %0, ptr noundef %1, ptr noundef %2) #0 align 16 { %4 = load volatile ptr, ptr %1, align 8 %5 = ptrtoint ptr %2 to i64 - %6 = and i64 %5, 1 - %7 = icmp ne i64 %6, 0 - %8 = ptrtoint ptr %4 to i64 - %9 = and i64 %8, 1 - %10 = icmp ne i64 %9, 0 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %12 = load i32, ptr %11, align 4 - %13 = and i32 %12, 4 - %14 = icmp eq i32 %13, 0 - br i1 %14, label %21, label %15 - -15: ; preds = %3 - %16 = and i32 %12, 67108864 - %17 = icmp ne i32 %16, 0 - %18 = icmp ne ptr %4, null - %19 = lshr exact i32 %16, 26 - %20 = and i1 %18, %17 - br i1 %20, label %21, label %27 - -21: ; preds = %15, %3 - %22 = icmp ne ptr %2, null - %23 = zext i1 %22 to i32 - %24 = icmp ne ptr %4, null - %25 = sext i1 %24 to i32 - %26 = add nsw i32 %25, %23 - br label %27 - -27: ; preds = %21, %15 - %28 = phi i32 [ %19, %15 ], [ %26, %21 ] - %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %30 = icmp eq ptr %29, %1 - br i1 %30, label %36, label %31 - -31: ; preds = %27 - %32 = icmp ne i32 %28, 0 - %33 = xor i1 %7, %10 - %34 = select i1 %32, i1 true, i1 %33 - br i1 %34, label %35, label %36, !prof !6 + %6 = ptrtoint ptr %4 to i64 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %8 = load i32, ptr %7, align 4 + %9 = and i32 %8, 4 + %10 = icmp eq i32 %9, 0 + br i1 %10, label %17, label %11 + +11:; preds = %3 + %14 = and i32 %8, 67108864 + %13 = icmp ne i32 %12, 0 + %14 = icmp ne ptr %4, null + %15 = lshr exact i32 %12, 26 + %16 = and i1 %14, %13 + br i1 %16, label %17, label %23 + +17:; preds = %11, %3 + %20 = icmp ne ptr %2, null + %19 = zext i1 %20 to i32 + %20 = icmp ne ptr %4, null + %21 = sext i1 %20 to i32 + %22 = add nsw i32 %21, %19 + br label %23 -35: ; preds = %31 +35: ; preds = %17, %11 + %24 = phi i32 [ %15, %11 ], [ %22, %17 ] + %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %26 = icmp eq ptr %25, %1 + br i1 %26, label %34, label %27 + +27: ; preds = %23 + %28 = icmp ne i32 %24, 0 + %29 = xor i64 %6, %5 + %30 = and i64 %29, 1 + %31 = icmp ne i64 %30, 0 + %32 = select i1 %28, i1 true, i1 %31 + br i1 %32, label %33, label %34, !prof !6 + +33: ; preds = %27 tail call void asm sideeffect "363: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 363b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 363) #13, !srcloc !47 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str, i32 889, i32 2307, i64 12) #13, !srcloc !48 tail call void asm sideeffect "364: nop\0A\09.pushsection .discard.instr_end\0A\09.long 364b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 364) #13, !srcloc !49 br label %36 -36: ; preds = %35, %31, %27 +36: ; preds = %33, %27, %23 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !50 store volatile ptr %2, ptr %1, align 8 ret void diff --git a/bench/linux/optimized/tcp_input.ll b/bench/linux/optimized/tcp_input.ll index 3d13fbfa1c2..f7c2f2aa432 100644 --- a/bench/linux/optimized/tcp_input.ll +++ b/bench/linux/optimized/tcp_input.ll @@ -15337,7 +15337,7 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr %84 = load i8, ptr %83, align 1 %85 = and i8 %84, 6 %86 = icmp eq i8 %85, 2 - br i1 %86, label %296, label %87 + br i1 %86, label %292, label %87 87: ; preds = %.thread23, %.thread, %82, %81 %88 = phi i1 [ true, %.thread ], [ false, %82 ], [ true, %81 ], [ true, %.thread23 ] @@ -15348,7 +15348,7 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr %93 = icmp ne i32 %90, %92 %94 = icmp eq i32 %92, 0 %95 = or i1 %93, %94 - br i1 %95, label %296, label %96 + br i1 %95, label %292, label %96 96: ; preds = %87 %97 = load i32, ptr %12, align 64 @@ -15356,26 +15356,26 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr %99 = load i32, ptr %98, align 4 %100 = sub i32 %97, %99 %101 = icmp slt i32 %100, 0 - br i1 %101, label %102, label %296 + br i1 %101, label %102, label %292 102: ; preds = %96 %103 = tail call ptr @rb_prev(ptr noundef nonnull %19) #20 %104 = icmp eq ptr %103, null - br i1 %104, label %296, label %105 + br i1 %104, label %292, label %105 105: ; preds = %102 %106 = getelementptr inbounds nuw i8, ptr %103, i64 53 %107 = load i8, ptr %106, align 1 %108 = and i8 %107, 7 %109 = icmp eq i8 %108, 1 - br i1 %109, label %110, label %296 + br i1 %109, label %110, label %292 110: ; preds = %105 %111 = getelementptr inbounds nuw i8, ptr %103, i64 55 %112 = load i8, ptr %111, align 1 %113 = and i8 %112, 2 %114 = icmp eq i8 %113, 0 - br i1 %114, label %115, label %296, !prof !13 + br i1 %114, label %115, label %292, !prof !13 115: ; preds = %110 %116 = getelementptr inbounds nuw i8, ptr %103, i64 192 @@ -15385,31 +15385,29 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr %120 = zext i32 %119 to i64 %121 = getelementptr i8, ptr %117, i64 %120 %122 = load i8, ptr %121, align 8 - %123 = and i8 %122, 4 - %124 = icmp ne i8 %123, 0 - %125 = getelementptr inbounds nuw i8, ptr %19, i64 192 - %126 = load ptr, ptr %125, align 8 - %127 = getelementptr inbounds nuw i8, ptr %19, i64 188 - %128 = load i32, ptr %127, align 4 - %129 = zext i32 %128 to i64 - %130 = getelementptr i8, ptr %126, i64 %129 - %131 = load i8, ptr %130, align 8 - %132 = and i8 %131, 4 - %133 = icmp eq i8 %132, 0 - %134 = xor i1 %124, %133 - br i1 %134, label %135, label %296 - -135: ; preds = %115 - %136 = load i32, ptr %20, align 8 - %137 = sub i32 %136, %4 - %138 = icmp sgt i32 %137, -1 + %123 = getelementptr inbounds nuw i8, ptr %19, i64 192 + %124 = load ptr, ptr %123, align 8 + %125 = getelementptr inbounds nuw i8, ptr %19, i64 188 + %126 = load i32, ptr %125, align 4 + %127 = zext i32 %126 to i64 + %128 = getelementptr i8, ptr %124, i64 %127 + %129 = load i8, ptr %128, align 8 + %130 = xor i8 %129, %122 + %131 = and i8 %130, 4 + %132 = icmp eq i8 %131, 0 + br i1 %132, label %133, label %292 + +133:; preds = %115 + %134 = load i32, ptr %20, align 8 + %135 = sub i32 %134, %4 + %136 = icmp sgt i32 %135, -1 %.pre = load i32, ptr %98, align 4 %139 = sub i32 %5, %.pre %140 = icmp sgt i32 %139, -1 - %or.cond = select i1 %138, i1 %140, i1 false + %or.cond = select i1 %136, i1 %140, i1 false br i1 %or.cond, label %141, label %166 -141: ; preds = %135 +141: ; preds = %133 %142 = load i32, ptr %89, align 8 %143 = getelementptr inbounds nuw i8, ptr %19, i64 48 %144 = load i16, ptr %143, align 8 @@ -15444,9 +15442,9 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr 163: ; preds = %159, %156 %164 = phi i32 [ %158, %156 ], [ %162, %159 ] %165 = icmp eq i32 %152, %164 - br i1 %165, label %206, label %296 + br i1 %165, label %204, label %292 -166: ; preds = %135 +166: ; preds = %133 %167 = sub i32 %4, %.pre %168 = icmp slt i32 %167, 0 br i1 %168, label %169, label %.thread34 @@ -15458,10 +15456,10 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr br i1 %172, label %.thread34, label %173 173: ; preds = %169 - br i1 %138, label %174, label %296 + br i1 %136, label %174, label %292 174: ; preds = %173 - %175 = sub i32 %5, %136 + %175 = sub i32 %5, %134 %176 = icmp slt i32 %175, 0 br i1 %176, label %177, label %178, !prof !16 @@ -15492,245 +15490,243 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr 189: ; preds = %182 %190 = getelementptr inbounds nuw i8, ptr %103, i64 112 %191 = load i32, ptr %190, align 8 - br label %196 + br label %194 192: ; preds = %182 %193 = getelementptr inbounds nuw i8, ptr %103, i64 50 %194 = load i16, ptr %193, align 2 %195 = zext i16 %194 to i32 - br label %196 + br label %194 + +194: ; preds = %190, %187 + %195 = phi i32 [ %189, %187 ], [ %193, %190 ] + %196 = icmp eq i32 %195, %183 + br i1 %196, label %197, label %292 -196: ; preds = %192, %189 - %197 = phi i32 [ %191, %189 ], [ %195, %192 ] - %198 = icmp eq i32 %197, %185 - br i1 %198, label %199, label %296 +196: ; preds = %194 + %197 = icmp eq i32 %173, %185 + br i1 %197, label %204, label %199 199: ; preds = %196 - %200 = icmp eq i32 %175, %185 - br i1 %200, label %206, label %201 + %200 = icmp samesign ult i32 %175, %185 + br i1 %200, label %.thread34, label %201 201: ; preds = %199 - %202 = icmp samesign ult i32 %175, %185 - br i1 %202, label %.thread34, label %203 + %202 = udiv i32 %175, %185 + %203 = mul i32 %202, %183 + br label %204 -203: ; preds = %201 - %204 = udiv i32 %175, %185 - %205 = mul i32 %204, %185 - br label %206 +203: ; preds = %201, %197, %161 + %204 = phi i16 [ %152, %161 ], [ %185, %201 ], [ %185, %197 ] + %205 = phi i32 [ %140, %161 ], [ %203, %201 ], [ %175, %197 ] + %207 = phi i32 [ %143, %161 ], [ %202, %201 ], [ 1, %197 ] + %208 = phi i32 [ %150, %161 ], [ %183, %201 ], [ %173, %197 ] + %209 = load i32, ptr %12, align 64 + %210 = add i32 %206, %134 + %211 = sub i32 %209, %210 + %212 = icmp slt i32 %211, 0 + br i1 %212, label %213, label %292 + +213: ; preds = %204 + %214 = getelementptr inbounds nuw i8, ptr %103, i64 112 + %215 = load i32, ptr %214, align 8 + %216 = add i32 %215, %206 + %217 = icmp ugt i32 %216, 524279 + br i1 %217, label %292, label %218, !prof !16 + +206: ; preds = %213 + %207 = getelementptr inbounds nuw i8, ptr %103, i64 48 + %208 = zext i16 %205 to i32 + %209 = add nuw i32 %207, %220 + %210 = icmp sgt i32 %209, 65535 + br i1 %210, label %292, label %223, !prof !16 + +228: ; preds = %218 + %229 = tail call i32 @skb_shift(ptr noundef nonnull %103, ptr noundef nonnull %19, i32 noundef %206) #20 + %225 = icmp eq i32 %224, 0 + br i1 %225, label %292, label %226 -206: ; preds = %203, %199, %163 - %207 = phi i16 [ %154, %163 ], [ %187, %203 ], [ %187, %199 ] - %208 = phi i32 [ %142, %163 ], [ %205, %203 ], [ %175, %199 ] - %209 = phi i32 [ %145, %163 ], [ %204, %203 ], [ 1, %199 ] - %210 = phi i32 [ %152, %163 ], [ %185, %203 ], [ %175, %199 ] - %211 = load i32, ptr %12, align 64 - %212 = add i32 %208, %136 - %213 = sub i32 %211, %212 - %214 = icmp slt i32 %213, 0 - br i1 %214, label %215, label %296 - -215: ; preds = %206 - %216 = getelementptr inbounds nuw i8, ptr %103, i64 112 - %217 = load i32, ptr %216, align 8 - %218 = add i32 %217, %208 - %219 = icmp ugt i32 %218, 524279 - br i1 %219, label %296, label %220, !prof !16 - -220: ; preds = %215 - %221 = getelementptr inbounds nuw i8, ptr %103, i64 48 - %222 = zext i16 %207 to i32 - %223 = add nuw i32 %209, %222 - %224 = icmp sgt i32 %223, 65535 - br i1 %224, label %296, label %225, !prof !16 - -225: ; preds = %220 - %226 = tail call i32 @skb_shift(ptr noundef nonnull %103, ptr noundef nonnull %19, i32 noundef %208) #20 - %227 = icmp eq i32 %226, 0 - br i1 %227, label %296, label %228 +230: ; preds = %228 + %231 = tail call fastcc zeroext i1 @tcp_shifted_skb(ptr noundef %1, ptr noundef nonnull %103, ptr noundef nonnull %19, ptr noundef %3, i32 noundef %207, i32 noundef %206, i32 noundef %208, i1 noundef zeroext %88) + br i1 %231, label %228, label %290 + +241: ; preds = %230 + %242 = tail call ptr @rb_next(ptr noundef nonnull %103) #20 + %243 = icmp eq ptr %242, null + br i1 %243, label %290, label %231 + +310: ; preds = %228 + %311 = getelementptr inbounds nuw i8, ptr %229, i64 112 + %312 = load i32, ptr %311, align 8 + %313 = getelementptr inbounds nuw i8, ptr %229, i64 116 + %314 = load i32, ptr %313, align 4 + %315 = icmp ne i32 %312, %235 + %237 = icmp eq i32 %314, 0 + %238 = or i1 %236, %237 + br i1 %238, label %290, label %239 + +239:; preds = %310 + %319 = getelementptr inbounds nuw i8, ptr %229, i64 53 + %320 = load i8, ptr %319, align 1 + %242 = and i8 %241, 7 + %243 = icmp eq i8 %242, 1 + br i1 %243, label %244, label %290 -228: ; preds = %225 - %229 = tail call fastcc zeroext i1 @tcp_shifted_skb(ptr noundef %1, ptr noundef nonnull %103, ptr noundef nonnull %19, ptr noundef %3, i32 noundef %209, i32 noundef %208, i32 noundef %210, i1 noundef zeroext %88) - br i1 %229, label %230, label %294 +321: ; preds = %239 + %322 = getelementptr inbounds nuw i8, ptr %229, i64 48 + %323 = load i16, ptr %322, align 8 + %324 = icmp eq i16 %323, 1 + br i1 %324, label %252, label %325 -230: ; preds = %228 - %231 = tail call ptr @rb_next(ptr noundef nonnull %103) #20 - %232 = icmp eq ptr %231, null - br i1 %232, label %294, label %233 - -233: ; preds = %230 - %234 = getelementptr inbounds nuw i8, ptr %231, i64 112 - %235 = load i32, ptr %234, align 8 - %236 = getelementptr inbounds nuw i8, ptr %231, i64 116 - %237 = load i32, ptr %236, align 4 - %238 = icmp ne i32 %235, %237 - %239 = icmp eq i32 %237, 0 - %240 = or i1 %238, %239 - br i1 %240, label %294, label %241 +325: ; preds = %321 + %326 = getelementptr inbounds nuw i8, ptr %229, i64 50 + %327 = load i16, ptr %326, align 2 + %251 = zext i16 %327 to i32 + br label %252 + +252:; preds = %325, %321 + %330 = phi i32 [ %251, %325 ], [ %233, %244 ] + %254 = icmp eq i32 %208, %253 + br i1 %254, label %255, label %290 + +255:; preds = %252 + %333 = load i8, ptr %111, align 1 + %334 = and i8 %333, 2 + %258 = icmp eq i8 %257, 0 + br i1 %258, label %259, label %290, !prof !13 + +335: ; preds = %255 + %336 = load ptr, ptr %116, align 8 + %337 = load i32, ptr %118, align 4 + %338 = zext i32 %337 to i64 + %339 = getelementptr i8, ptr %260, i64 %338 + %340 = load i8, ptr %339, align 8 + %341 = getelementptr inbounds nuw i8, ptr %229, i64 192 + %266 = load ptr, ptr %341, align 8 + %267 = getelementptr inbounds nuw i8, ptr %229, i64 188 + %268 = load i32, ptr %267, align 4 + %269 = zext i32 %268 to i64 + %270 = getelementptr i8, ptr %266, i64 %269 + %271 = load i8, ptr %270, align 8 + %272 = xor i8 %271, %264 + %273 = and i8 %272, 4 + %274 = icmp eq i8 %273, 0 + br i1 %274, label %275, label %290 + +275: ; preds = %259 + %276 = zext i16 %246 to i32 + %277 = load i32, ptr %214, align 8 + %278 = add i32 %277, %233 + %279 = icmp ugt i32 %278, 524279 + br i1 %279, label %290, label %280, !prof !16 -241: ; preds = %233 - %242 = getelementptr inbounds nuw i8, ptr %231, i64 53 - %243 = load i8, ptr %242, align 1 - %244 = and i8 %243, 7 - %245 = icmp eq i8 %244, 1 - br i1 %245, label %246, label %294 - -246: ; preds = %241 - %247 = getelementptr inbounds nuw i8, ptr %231, i64 48 - %248 = load i16, ptr %247, align 8 - %249 = icmp eq i16 %248, 1 - br i1 %249, label %254, label %250 - -250: ; preds = %246 - %251 = getelementptr inbounds nuw i8, ptr %231, i64 50 - %252 = load i16, ptr %251, align 2 - %253 = zext i16 %252 to i32 - br label %254 - -254: ; preds = %250, %246 - %255 = phi i32 [ %253, %250 ], [ %235, %246 ] - %256 = icmp eq i32 %210, %255 - br i1 %256, label %257, label %294 - -257: ; preds = %254 - %258 = load i8, ptr %111, align 1 - %259 = and i8 %258, 2 - %260 = icmp eq i8 %259, 0 - br i1 %260, label %261, label %294, !prof !13 - -261: ; preds = %257 - %262 = load ptr, ptr %116, align 8 - %263 = load i32, ptr %118, align 4 - %264 = zext i32 %263 to i64 - %265 = getelementptr i8, ptr %262, i64 %264 - %266 = load i8, ptr %265, align 8 - %267 = and i8 %266, 4 - %268 = icmp ne i8 %267, 0 - %269 = getelementptr inbounds nuw i8, ptr %231, i64 192 - %270 = load ptr, ptr %269, align 8 - %271 = getelementptr inbounds nuw i8, ptr %231, i64 188 - %272 = load i32, ptr %271, align 4 - %273 = zext i32 %272 to i64 - %274 = getelementptr i8, ptr %270, i64 %273 - %275 = load i8, ptr %274, align 8 - %276 = and i8 %275, 4 - %277 = icmp eq i8 %276, 0 - %278 = xor i1 %268, %277 - br i1 %278, label %279, label %294 - -279: ; preds = %261 - %280 = zext i16 %248 to i32 - %281 = load i32, ptr %216, align 8 - %282 = add i32 %281, %235 - %283 = icmp ugt i32 %282, 524279 - br i1 %283, label %294, label %284, !prof !16 - -284: ; preds = %279 - %285 = load i16, ptr %221, align 8 - %286 = zext i16 %285 to i32 - %287 = add nuw nsw i32 %286, %280 - %288 = icmp samesign ugt i32 %287, 65535 - br i1 %288, label %294, label %289, !prof !16 - -289: ; preds = %284 - %290 = tail call i32 @skb_shift(ptr noundef nonnull %103, ptr noundef nonnull %231, i32 noundef %235) #20 - %291 = icmp eq i32 %290, 0 - br i1 %291, label %294, label %292 - -292: ; preds = %289 - %293 = tail call fastcc zeroext i1 @tcp_shifted_skb(ptr noundef %1, ptr noundef nonnull %103, ptr noundef nonnull %231, ptr noundef %3, i32 noundef %280, i32 noundef %235, i32 noundef %210, i1 noundef zeroext false) - br label %294 - -294: ; preds = %289, %292, %261, %233, %241, %254, %230, %228, %257, %284, %279 - %295 = icmp eq ptr %103, %19 - br i1 %295, label %.thread34, label %.thread41 - -296: ; preds = %225, %220, %215, %206, %196, %173, %163, %115, %110, %105, %102, %96, %87, %82 - %297 = phi i1 [ %88, %225 ], [ %88, %220 ], [ %88, %215 ], [ %88, %206 ], [ %88, %196 ], [ %88, %173 ], [ %88, %163 ], [ %88, %115 ], [ %88, %110 ], [ %88, %105 ], [ %88, %102 ], [ %88, %96 ], [ %88, %87 ], [ false, %82 ] - %298 = load ptr, ptr %13, align 8 - %299 = getelementptr inbounds nuw i8, ptr %298, i64 432 - %300 = load ptr, ptr %299, align 8 - %301 = getelementptr i8, ptr %300, i64 536 - tail call void asm sideeffect "incq %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %301, ptr elementtype(i64) %301) #20, !srcloc !227 - %302 = load i32, ptr %20, align 8 - %303 = sub i32 %302, %4 - %304 = icmp sgt i32 %303, -1 - br i1 %304, label %305, label %310 - -305: ; preds = %296 - %306 = getelementptr inbounds nuw i8, ptr %19, i64 44 - %307 = load i32, ptr %306, align 4 - %308 = sub i32 %5, %307 - %309 = icmp sgt i32 %308, -1 - br label %310 +280: ; preds = %275 + %281 = load i16, ptr %219, align 8 + %282 = zext i16 %281 to i32 + %283 = add nuw nsw i32 %282, %276 + %284 = icmp samesign ugt i32 %283, 65535 + br i1 %284, label %290, label %285, !prof !16 + +285: ; preds = %280 + %286 = tail call i32 @skb_shift(ptr noundef nonnull %103, ptr noundef nonnull %229, i32 noundef %233) #20 + %287 = icmp eq i32 %286, 0 + br i1 %287, label %290, label %288 -310: ; preds = %305, %296 - %311 = phi i1 [ false, %296 ], [ %309, %305 ] - %312 = getelementptr inbounds nuw i8, ptr %19, i64 48 - %313 = load i16, ptr %312, align 8 - %314 = icmp ult i16 %313, 2 - %315 = select i1 %314, i1 true, i1 %311 - br i1 %315, label %351, label %316 - -316: ; preds = %310 - %317 = getelementptr inbounds nuw i8, ptr %19, i64 44 - %318 = load i32, ptr %317, align 4 - %319 = sub i32 %4, %318 - %320 = icmp slt i32 %319, 0 - br i1 %320, label %321, label %.thread41 +342: ; preds = %285 + %343 = tail call fastcc zeroext i1 @tcp_shifted_skb(ptr noundef %1, ptr noundef nonnull %103, ptr noundef nonnull %229, ptr noundef %3, i32 noundef %276, i32 noundef %233, i32 noundef %208, i1 noundef zeroext false) + br label %290 -321: ; preds = %316 - %322 = getelementptr inbounds nuw i8, ptr %19, i64 50 - %323 = load i16, ptr %322, align 2 - %324 = zext i16 %323 to i32 - br i1 %304, label %328, label %325 +348: ; preds = %285, %342, %259, %231, %239, %252, %228, %226, %255, %280, %275 + %349 = icmp eq ptr %103, %19 + br i1 %349, label %.thread34, label %.thread41 + +292: ; preds = %223, %218, %213, %204, %194, %171, %161, %115, %110, %105, %102, %96, %87, %82 + %293 = phi i1 [ %88, %223 ], [ %88, %218 ], [ %88, %213 ], [ %88, %204 ], [ %88, %194 ], [ %88, %171 ], [ %88, %161 ], [ %88, %115 ], [ %88, %110 ], [ %88, %105 ], [ %88, %102 ], [ %88, %96 ], [ %88, %87 ], [ false, %82 ] + %294 = load ptr, ptr %13, align 8 + %295 = getelementptr inbounds nuw i8, ptr %294, i64 432 + %296 = load ptr, ptr %295, align 8 + %297 = getelementptr i8, ptr %296, i64 536 + tail call void asm sideeffect "incq %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %297, ptr elementtype(i64) %297) #20, !srcloc !227 + %298 = load i32, ptr %20, align 8 + %299 = sub i32 %298, %4 + %300 = icmp sgt i32 %299, -1 + br i1 %300, label %301, label %306 -325: ; preds = %321 - %326 = sub i32 %4, %302 - %327 = tail call i32 @llvm.umax.i32(i32 %326, i32 %324) - br label %331 - -328: ; preds = %321 - %329 = sub i32 %5, %302 - %330 = icmp ult i32 %329, %324 - br i1 %330, label %.loopexit, label %331 - -331: ; preds = %328, %325 - %332 = phi i32 [ %329, %328 ], [ %327, %325 ] - %333 = freeze i32 %332 - %334 = icmp ugt i32 %333, %324 - br i1 %334, label %335, label %342 +301: ; preds = %292 + %302 = getelementptr inbounds nuw i8, ptr %19, i64 44 + %303 = load i32, ptr %302, align 4 + %304 = sub i32 %5, %303 + %305 = icmp sgt i32 %304, -1 + br label %306 -335: ; preds = %331 - %336 = urem i32 %333, %324 - %337 = sub nuw i32 %333, %336 - %338 = icmp eq i32 %336, 0 - %339 = select i1 %304, i1 true, i1 %338 - %340 = select i1 %339, i32 0, i32 %324 - %341 = add i32 %337, %340 - br label %342 +306: ; preds = %301, %292 + %307 = phi i1 [ false, %292 ], [ %305, %301 ] + %308 = getelementptr inbounds nuw i8, ptr %19, i64 48 + %309 = load i16, ptr %308, align 8 + %310 = icmp ult i16 %309, 2 + %311 = select i1 %310, i1 true, i1 %307 + br i1 %311, label %347, label %312 + +312: ; preds = %306 + %313 = getelementptr inbounds nuw i8, ptr %19, i64 44 + %314 = load i32, ptr %313, align 4 + %315 = sub i32 %4, %314 + %316 = icmp slt i32 %315, 0 + br i1 %316, label %317, label %.thread41 + +317: ; preds = %312 + %318 = getelementptr inbounds nuw i8, ptr %19, i64 50 + %319 = load i16, ptr %318, align 2 + %320 = zext i16 %319 to i32 + br i1 %300, label %324, label %321 + +321: ; preds = %317 + %322 = sub i32 %4, %298 + %323 = tail call i32 @llvm.umax.i32(i32 %322, i32 %320) + br label %327 + +324: ; preds = %317 + %325 = sub i32 %5, %298 + %326 = icmp ult i32 %325, %320 + br i1 %326, label %.loopexit, label %327 + +327: ; preds = %324, %321 + %328 = phi i32 [ %325, %324 ], [ %323, %321 ] + %329 = freeze i32 %328 + %330 = icmp ugt i32 %329, %320 + br i1 %330, label %331, label %338 + +331: ; preds = %327 + %332 = urem i32 %329, %320 + %333 = sub nuw i32 %329, %332 + %334 = icmp eq i32 %332, 0 + %335 = select i1 %300, i1 true, i1 %334 + %336 = select i1 %335, i32 0, i32 %320 + %337 = add i32 %333, %336 + br label %338 -342: ; preds = %335, %331 - %343 = phi i32 [ %341, %335 ], [ %333, %331 ] - %344 = getelementptr inbounds nuw i8, ptr %19, i64 112 - %345 = load i32, ptr %344, align 8 - %346 = icmp ult i32 %343, %345 - %347 = or i1 %304, %346 - br i1 %347, label %348, label %.thread34 +.thread34: ; preds = %331, %327 + %339 = phi i32 [ %337, %331 ], [ %329, %327 ] + %340 = getelementptr inbounds nuw i8, ptr %19, i64 112 + %341 = load i32, ptr %340, align 8 + %342 = icmp ult i32 %339, %341 + %343 = or i1 %300, %342 + br i1 %343, label %344, label %.thread34 -348: ; preds = %342 - %349 = tail call i32 @tcp_fragment(ptr noundef %1, i32 noundef 1, ptr noundef nonnull %19, i32 noundef %343, i32 noundef %324, i32 noundef 2080) #20 - %350 = icmp slt i32 %349, 0 - br i1 %350, label %.loopexit, label %351 +344: ; preds = %338 + %345 = tail call i32 @tcp_fragment(ptr noundef %1, i32 noundef 1, ptr noundef nonnull %19, i32 noundef %339, i32 noundef %320, i32 noundef 2080) #20 + %346 = icmp slt i32 %345, 0 + br i1 %346, label %.loopexit, label %347 -.thread34: ; preds = %342, %294, %166, %169, %201 +.thread34: ; preds = %338, %290, %164, %167, %199 br label %.thread41 -351: ; preds = %310, %348 - %352 = phi i1 [ %304, %348 ], [ %311, %310 ] +351: ; preds = %306, %344 + %352 = phi i1 [ %300, %344 ], [ %307, %306 ] br i1 %352, label %.thread37, label %.thread41 .thread37: ; preds = %76, %80, %351 - %.ph3040 = phi i1 [ %297, %351 ], [ true, %80 ], [ true, %76 ] + %.ph3040 = phi i1 [ %293, %351 ], [ true, %80 ], [ true, %76 ] %353 = getelementptr inbounds nuw i8, ptr %19, i64 53 %354 = load i8, ptr %353, align 1 %355 = load i32, ptr %20, align 8 @@ -15768,35 +15764,35 @@ define internal fastcc ptr @tcp_sacktag_walk(ptr noundef %0, ptr noundef %1, ptr %377 = load i32, ptr %20, align 8 %378 = load i32, ptr %15, align 8 %379 = icmp eq i32 %378, 0 - br i1 %379, label %385, label %380 + br i1 %379, label %381, label %380 380: ; preds = %376 %381 = load ptr, ptr %16, align 8 %382 = icmp eq ptr %381, null %383 = getelementptr inbounds nuw i8, ptr %381, i64 40 %384 = select i1 %382, ptr %17, ptr %383 - br label %385 + br label %381 -385: ; preds = %380, %376 - %386 = phi ptr [ %12, %376 ], [ %384, %380 ] - %387 = load i32, ptr %386, align 4 - %388 = sub i32 %377, %387 - %389 = icmp slt i32 %388, 0 - br i1 %389, label %.thread41, label %390 +390: ; preds = %380, %372 + %391 = phi ptr [ %12, %372 ], [ %380, %376 ] + %383 = load i32, ptr %382, align 4 + %384 = sub i32 %373, %383 + %385 = icmp slt i32 %384, 0 + br i1 %385, label %.thread41, label %386 -390: ; preds = %385 - %391 = tail call ptr @rb_next(ptr noundef nonnull %19) #20 - store ptr %391, ptr %16, align 8 +386: ; preds = %381 + %387 = tail call ptr @rb_next(ptr noundef nonnull %19) #20 + store ptr %387, ptr %16, align 8 br label %.thread41 -.thread41: ; preds = %316, %294, %385, %390, %351, %.thread34 - %.ph43 = phi ptr [ %19, %.thread34 ], [ %19, %351 ], [ %19, %390 ], [ %19, %385 ], [ %103, %294 ], [ %19, %316 ] +.thread41: ; preds = %312, %348, %381, %386, %351, %.thread34 + %.ph43 = phi ptr [ %19, %.thread34 ], [ %19, %351 ], [ %19, %386 ], [ %19, %381 ], [ %103, %290 ], [ %19, %312 ] %392 = tail call ptr @rb_next(ptr noundef nonnull %.ph43) #20 %393 = icmp eq ptr %392, null br i1 %393, label %.loopexit, label %18, !llvm.loop !228 -.loopexit: ; preds = %18, %348, %328, %.thread41, %7 - %394 = phi ptr [ null, %7 ], [ %19, %328 ], [ %19, %348 ], [ %19, %18 ], [ null, %.thread41 ] +.loopexit: ; preds = %18, %344, %324, %.thread41, %7 + %394 = phi ptr [ null, %7 ], [ %19, %324 ], [ %19, %344 ], [ %19, %18 ], [ null, %.thread41 ] ret ptr %394 } diff --git a/bench/llvm/optimized/APFloat.ll b/bench/llvm/optimized/APFloat.ll index 04c9b8d56ac..0380e00a5a7 100644 --- a/bench/llvm/optimized/APFloat.ll +++ b/bench/llvm/optimized/APFloat.ll @@ -1923,45 +1923,44 @@ _ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit %102 = and i8 %101, -9 %103 = or disjoint i8 %102, %100 store i8 %103, ptr %89, align 4 - %104 = icmp ne i8 %100, 0 - %105 = call noundef i32 @_ZN4llvm6detail9IEEEFloat21addOrSubtractSpecialsERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i1 noundef zeroext false) - %106 = icmp eq i32 %105, 2 - br i1 %106, label %107, label %110 - -107: ; preds = %_ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit - %108 = call noundef i32 @_ZN4llvm6detail9IEEEFloat24addOrSubtractSignificandERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i1 noundef zeroext false) - %109 = call noundef i32 @_ZN4llvm6detail9IEEEFloat9normalizeENS_12RoundingModeENS_12lostFractionE(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 noundef signext %1, i32 noundef %108) - br label %110 - -110: ; preds = %107, %_ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit - %.0.i.i8 = phi i32 [ %109, %107 ], [ %105, %_ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit ] - %111 = load i8, ptr %6, align 4 - %112 = and i8 %111, 7 - %113 = icmp eq i8 %112, 3 - br i1 %113, label %114, label %_ZN4llvm6detail9IEEEFloat3addERKS1_NS_12RoundingModeE.exit - -114: ; preds = %110 - %115 = load i8, ptr %89, align 4 - %116 = and i8 %115, 7 - %.not.i.i = icmp eq i8 %116, 3 - br i1 %.not.i.i, label %117, label %120 - -117: ; preds = %114 - %118 = xor i8 %115, %111 - %119 = and i8 %118, 8 - %.not.i9 = icmp eq i8 %119, 0 - br i1 %.not.i9, label %125, label %120 - -120: ; preds = %117, %114 - %121 = icmp eq i8 %1, 3 - %122 = select i1 %121, i8 8, i8 0 - %123 = and i8 %111, -13 - %124 = or disjoint i8 %123, %122 - store i8 %124, ptr %6, align 4 - br label %125 + %104 = call noundef i32 @_ZN4llvm6detail9IEEEFloat21addOrSubtractSpecialsERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i1 noundef zeroext false) + %105 = icmp eq i32 %104, 2 + br i1 %.not.i.i.i53, label %106, label %109 + +114: ; preds = %_ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit + %115 = call noundef i32 @_ZN4llvm6detail9IEEEFloat24addOrSubtractSignificandERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i1 noundef zeroext false) + %116 = call noundef i32 @_ZN4llvm6detail9IEEEFloat9normalizeENS_12RoundingModeENS_12lostFractionE(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 noundef signext %1, i32 noundef %107) + br label %117 + +117: ; preds = %114, %_ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit + %118 = phi i32 [ %116, %106 ], [ %104, %_ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit ] + %119 = load i8, ptr %6, align 4 + %.not.i9 = and i8 %119, 7 + %112 = icmp eq i8 %.not.i9, 3 + br i1 %112, label %113, label %_ZN4llvm6detail9IEEEFloat3addERKS1_NS_12RoundingModeE.exit + +113:; preds = %109 + %122 = load i8, ptr %89, align 4 + %123 = and i8 %114, 7 + %124 = icmp eq i8 %123, 3 + br i1 %124, label %116, label %119 + +116: ; preds = %113 + %117 = xor i8 %114, %110 + %118 = and i8 %117, 8 + %.not.i9 = icmp eq i8 %118, 0 + br i1 %.not.i9, label %124, label %119 + +119: ; preds = %116, %113 + %120 = icmp eq i8 %1, 3 + %121 = select i1 %120, i8 8, i8 0 + %122 = and i8 %110, -13 + %123 = or disjoint i8 %122, %121 + store i8 %123, ptr %6, align 4 + br label %124 -125: ; preds = %120, %117 - %126 = phi i8 [ %124, %120 ], [ %111, %117 ] +125: ; preds = %122, %116 + %126 = phi i8 [ %123, %122 ], [ %110, %116 ] %127 = load ptr, ptr %0, align 8, !tbaa !19 %128 = getelementptr inbounds nuw i8, ptr %127, i64 20 %129 = load i32, ptr %128, align 4, !tbaa !26 @@ -1976,79 +1975,79 @@ _ZN4llvm6detail9IEEEFloat16convertFromAPIntERKNS_5APIntEbNS_12RoundingModeE.exit _ZN4llvm6detail9IEEEFloat3addERKS1_NS_12RoundingModeE.exit: ; preds = %110, %125, %131 %133 = call noundef i32 @_ZN4llvm6detail9IEEEFloat21addOrSubtractSpecialsERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i1 noundef zeroext true) %134 = icmp eq i32 %133, 2 - br i1 %134, label %135, label %138 + br i1 %134, label %134, label %137 -135: ; preds = %_ZN4llvm6detail9IEEEFloat3addERKS1_NS_12RoundingModeE.exit - %136 = call noundef i32 @_ZN4llvm6detail9IEEEFloat24addOrSubtractSignificandERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i1 noundef zeroext true) - %137 = call noundef i32 @_ZN4llvm6detail9IEEEFloat9normalizeENS_12RoundingModeENS_12lostFractionE(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 noundef signext %1, i32 noundef %136) - br label %138 +138: ; preds = %_ZN4llvm6detail9IEEEFloat3addERKS1_NS_12RoundingModeE.exit + %139 = call noundef i32 @_ZN4llvm6detail9IEEEFloat24addOrSubtractSignificandERKS1_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i1 noundef zeroext true) + %140 = call noundef i32 @_ZN4llvm6detail9IEEEFloat9normalizeENS_12RoundingModeENS_12lostFractionE(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 noundef signext %1, i32 noundef %139) + br label %140 -138: ; preds = %135, %_ZN4llvm6detail9IEEEFloat3addERKS1_NS_12RoundingModeE.exit - %139 = load i8, ptr %6, align 4 - %140 = and i8 %139, 7 - %141 = icmp eq i8 %140, 3 - br i1 %141, label %142, label %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit - -142: ; preds = %138 - %143 = load i8, ptr %89, align 4 +142: ; preds = %138, %_ZN4llvm6detail9IEEEFloat3addERKS1_NS_12RoundingModeE.exit + %143 = load i8, ptr %6, align 4 %144 = and i8 %143, 7 %.not.i.i11 = icmp eq i8 %144, 3 - br i1 %.not.i.i11, label %145, label %148 + br i1 %.not.i.i11, label %145, label %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit 145: ; preds = %142 - %146 = xor i8 %143, %139 - %147 = and i8 %146, 8 - %.not.i12 = icmp eq i8 %147, 0 + %146 = load i8, ptr %89, align 4 + %147 = and i8 %146, 7 + %.not.i12 = icmp eq i8 %147, 3 br i1 %.not.i12, label %148, label %153 -148: ; preds = %145, %142 - %149 = icmp eq i8 %1, 3 - %150 = select i1 %149, i8 8, i8 0 - %151 = and i8 %139, -13 - %152 = or disjoint i8 %151, %150 - store i8 %152, ptr %6, align 4 - br label %153 - -153: ; preds = %148, %145 - %154 = phi i8 [ %152, %148 ], [ %139, %145 ] - %155 = load ptr, ptr %0, align 8, !tbaa !19 - %156 = getelementptr inbounds nuw i8, ptr %155, i64 20 - %157 = load i32, ptr %156, align 4, !tbaa !26 - %158 = icmp eq i32 %157, 2 - br i1 %158, label %159, label %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit - -159: ; preds = %153 - %160 = and i8 %154, -9 - store i8 %160, ptr %6, align 4 +148: ; preds = %141 + %149 = xor i8 %142, %138 + %150 = and i8 %149, 8 + %151 = icmp eq i8 %149, 0 + br i1 %151, label %150, label %152 + +147:; preds = %144, %145 + %148 = icmp eq i8 %1, 3 + %149 = select i1 %148, i8 8, i8 0 + %154 = and i8 %141, -13 + %155 = or disjoint i8 %150, %149 + store i8 %151, ptr %6, align 4 + br label %152 + +152:; preds = %150, %148 + %153 = phi i8 [ %151, %147 ], [ %138, %144 ] + %154 = load ptr, ptr %0, align 8, !tbaa !19 + %160 = getelementptr inbounds nuw i8, ptr %154, i64 20 + %156 = load i32, ptr %160, align 4, !tbaa !26 + %157 = icmp eq i32 %156, 2 + br i1 %157, label %158, label %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit + +158: ; preds = %152 + %159 = and i8 %153, -9 + store i8 %159, ptr %6, align 4 br label %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit -_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit: ; preds = %138, %153, %159 - %161 = phi i8 [ %139, %138 ], [ %154, %153 ], [ %160, %159 ] +_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit: ; preds = %137, %152, %158 + %161 = phi i8 [ %138, %137 ], [ %153, %152 ], [ %159, %158 ] + %161 = xor i8 %160, %99 %162 = and i8 %161, 8 - %163 = icmp ne i8 %162, 0 - %164 = xor i1 %104, %163 - br i1 %164, label %165, label %_ZN4llvm6detail9IEEEFloat10changeSignEv.exit - -165: ; preds = %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit - %166 = load ptr, ptr %0, align 8, !tbaa !19 - %167 = getelementptr inbounds nuw i8, ptr %166, i64 20 - %168 = load i32, ptr %167, align 4, !tbaa !26 - %169 = icmp eq i32 %168, 2 - br i1 %169, label %170, label %._crit_edge.i - -170: ; preds = %165 - %171 = and i8 %161, 7 - switch i8 %171, label %._crit_edge.i [ + %163 = icmp eq i8 %162, 0 + br i1 %.not14, label %_ZN4llvm6detail9IEEEFloat10changeSignEv.exit, label %163 + +163: ; preds = %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit + %164 = load ptr, ptr %0, align 8, !tbaa !19 + %166 = getelementptr inbounds nuw i8, ptr %164, i64 20 + %167 = load i32, ptr %166, align 4, !tbaa !26 + %168 = icmp eq i32 %167, 2 + br i1 %167, label %168, label %._crit_edge.i + +168: ; preds = %163 + %169 = and i8 %160, 7 + switch i8 %169, label %._crit_edge.i [ i8 3, label %_ZN4llvm6detail9IEEEFloat10changeSignEv.exit i8 1, label %_ZN4llvm6detail9IEEEFloat10changeSignEv.exit ] -._crit_edge.i: ; preds = %170, %165 +._crit_edge.i: ; preds = %168, %163 %172 = xor i8 %161, 8 store i8 %172, ptr %6, align 4 br label %_ZN4llvm6detail9IEEEFloat10changeSignEv.exit -_ZN4llvm6detail9IEEEFloat10changeSignEv.exit: ; preds = %._crit_edge.i, %170, %170, %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit +_ZN4llvm6detail9IEEEFloat10changeSignEv.exit: ; preds = %._crit_edge.i, %168, %168, %_ZN4llvm6detail9IEEEFloat8subtractERKS1_NS_12RoundingModeE.exit call void @_ZN4llvm6detail9IEEEFloatD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #27 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #27 %173 = load i32, ptr %53, align 8, !tbaa !27 @@ -19307,26 +19306,24 @@ define dso_local noundef i32 @_ZN4llvm6detail13DoubleAPFloat14addWithSpecialERKS br i1 %95, label %97, label %113 97: ; preds = %96 - %98 = and i8 %16, 8 - %99 = icmp ne i8 %98, 0 - %100 = and i8 %41, 8 - %101 = icmp ne i8 %100, 0 - %102 = xor i1 %99, %101 - br i1 %102, label %103, label %113 - -103: ; preds = %97 - %104 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %105 = load ptr, ptr %104, align 8, !tbaa !482 - %106 = load ptr, ptr %105, align 8, !tbaa !24 - %.not.i.i.i53 = icmp eq ptr %106, @_ZN4llvmL18semPPCDoubleDoubleE - %107 = getelementptr inbounds nuw i8, ptr %105, i64 8 - %108 = load ptr, ptr %107, align 8 - %.0.i.i.i54 = select i1 %.not.i.i.i53, ptr %108, ptr %105 - %109 = getelementptr inbounds nuw i8, ptr %.0.i.i.i54, i64 20 - %110 = load i8, ptr %109, align 4 - %111 = and i8 %110, 8 - %112 = icmp ne i8 %111, 0 - tail call void @_ZN4llvm6detail13DoubleAPFloat7makeNaNEbbPKNS_5APIntE(ptr noundef nonnull align 8 dereferenceable(16) %3, i1 noundef zeroext false, i1 noundef zeroext %112, ptr noundef null) + %98 = xor i8 %41, %16 + %99 = and i8 %98, 8 + %100 = icmp eq i8 %99, 0 + br i1 %101, label %110, label %100 + +100:; preds = %97 + %101 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %102 = load ptr, ptr %101, align 8, !tbaa !482 + %104 = load ptr, ptr %102, align 8, !tbaa !24 + %105 = icmp eq ptr %104, @_ZN4llvmL18semPPCDoubleDoubleE + %106 = getelementptr inbounds nuw i8, ptr %102, i64 8 + %.not.i.i.i53 = load ptr, ptr %106, align 8 + %107 = select i1 %105, ptr %105, ptr %102 + %108 = getelementptr inbounds nuw i8, ptr %107, i64 20 + %.0.i.i.i54 = load i8, ptr %108, align 4 + %109 = and i8 %.0.i.i.i54, 8 + %110 = icmp ne i8 %109, 0 + tail call void @_ZN4llvm6detail13DoubleAPFloat7makeNaNEbbPKNS_5APIntE(ptr noundef nonnull align 8 dereferenceable(16) %3, i1 noundef zeroext false, i1 noundef zeroext %110, ptr noundef null) br label %_ZN4llvm6detail13DoubleAPFloataSERKS1_.exit 113: ; preds = %97, %96 @@ -19393,9 +19390,9 @@ _ZN4llvm7APFloatC2ERKS0_.exit: ; preds = %132, %133 _ZN4llvm7APFloatC2ERKS0_.exit63: ; preds = %137, %138 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #27 %139 = load ptr, ptr %35, align 8, !tbaa !482 - %140 = load ptr, ptr %139, align 8, !tbaa !24 - %.not.i.i64 = icmp eq ptr %140, @_ZN4llvmL18semPPCDoubleDoubleE - br i1 %.not.i.i64, label %142, label %141 + %142 = load ptr, ptr %139, align 8, !tbaa !24 + %.not.i.i64 = icmp eq ptr %142, @_ZN4llvmL18semPPCDoubleDoubleE + br i1 %.not.i.i64, label %144, label %143 141: ; preds = %_ZN4llvm7APFloatC2ERKS0_.exit63 call void @_ZN4llvm6detail9IEEEFloatC1ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %139) #27 @@ -19405,7 +19402,7 @@ _ZN4llvm7APFloatC2ERKS0_.exit63: ; preds = %137, %138 call void @_ZN4llvm6detail13DoubleAPFloatC1ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %139) #27 br label %_ZN4llvm7APFloatC2ERKS0_.exit65 -_ZN4llvm7APFloatC2ERKS0_.exit65: ; preds = %141, %142 +_ZN4llvm7APFloatC2ERKS0_.exit65: ; preds = %143, %144 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #27 %143 = load ptr, ptr %35, align 8, !tbaa !482 %144 = getelementptr inbounds nuw i8, ptr %143, i64 24 @@ -19481,8 +19478,8 @@ _ZN4llvm7APFloatD2Ev.exit74: ; preds = %159, %160 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #27 br label %_ZN4llvm6detail13DoubleAPFloataSERKS1_.exit -_ZN4llvm6detail13DoubleAPFloataSERKS1_.exit: ; preds = %127, %126, %117, %92, %91, %82, %75, %74, %65, %58, %57, %48, %33, %32, %23, %_ZN4llvm7APFloatD2Ev.exit74, %129, %103 - %.0 = phi i32 [ 1, %103 ], [ 0, %129 ], [ %148, %_ZN4llvm7APFloatD2Ev.exit74 ], [ 0, %23 ], [ 0, %32 ], [ 0, %33 ], [ 0, %48 ], [ 0, %57 ], [ 0, %58 ], [ 0, %65 ], [ 0, %74 ], [ 0, %75 ], [ 0, %82 ], [ 0, %91 ], [ 0, %92 ], [ 0, %117 ], [ 0, %126 ], [ 0, %127 ] +_ZN4llvm6detail13DoubleAPFloataSERKS1_.exit: ; preds = %127, %126, %117, %92, %91, %82, %75, %74, %65, %58, %57, %48, %33, %32, %23, %_ZN4llvm7APFloatD2Ev.exit74, %129, %100 + %.0 = phi i32 [ 1, %100 ], [ 0, %129 ], [ %148, %_ZN4llvm7APFloatD2Ev.exit74 ], [ 0, %23 ], [ 0, %32 ], [ 0, %33 ], [ 0, %48 ], [ 0, %57 ], [ 0, %58 ], [ 0, %65 ], [ 0, %74 ], [ 0, %75 ], [ 0, %82 ], [ 0, %91 ], [ 0, %92 ], [ 0, %117 ], [ 0, %126 ], [ 0, %127 ] ret i32 %.0 } @@ -21077,7 +21074,7 @@ _ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit41: ; preds = %_ZNK4llvm6detai %.0.i33 = phi i32 [ %.06.i.i37, %_ZNK4llvm6detail9IEEEFloat20compareAbsoluteValueERKS1_.exit.i34 ], [ %69, %68 ] %70 = and i32 %.0.i33, -3 %or.cond = icmp eq i32 %70, 0 - br i1 %or.cond, label %71, label %111 + br i1 %or.cond, label %71, label %116 71: ; preds = %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit41 %72 = load ptr, ptr %3, align 8, !tbaa !482 @@ -21088,62 +21085,60 @@ _ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit41: ; preds = %_ZNK4llvm6detai %.0.i.i42 = select i1 %.not.i.i, ptr %75, ptr %72 %76 = getelementptr inbounds nuw i8, ptr %.0.i.i42, i64 20 %77 = load i8, ptr %76, align 4 - %78 = and i8 %77, 8 - %79 = icmp ne i8 %78, 0 - %80 = getelementptr inbounds nuw i8, ptr %72, i64 24 - %81 = load ptr, ptr %80, align 8, !tbaa !24 - %.not.i.i43 = icmp eq ptr %81, @_ZN4llvmL18semPPCDoubleDoubleE - %82 = getelementptr inbounds nuw i8, ptr %72, i64 32 - %83 = load ptr, ptr %82, align 8 - %.0.i.i44 = select i1 %.not.i.i43, ptr %83, ptr %80 - %84 = getelementptr inbounds nuw i8, ptr %.0.i.i44, i64 20 - %85 = load i8, ptr %84, align 4 - %86 = and i8 %85, 8 - %87 = icmp ne i8 %86, 0 - %88 = xor i1 %79, %87 - %89 = load ptr, ptr %5, align 8, !tbaa !482 - %90 = load ptr, ptr %89, align 8, !tbaa !24 - %.not.i.i45 = icmp eq ptr %90, @_ZN4llvmL18semPPCDoubleDoubleE - %91 = getelementptr inbounds nuw i8, ptr %89, i64 8 - %92 = load ptr, ptr %91, align 8 - %.0.i.i46 = select i1 %.not.i.i45, ptr %92, ptr %89 - %93 = getelementptr inbounds nuw i8, ptr %.0.i.i46, i64 20 - %94 = load i8, ptr %93, align 4 - %95 = and i8 %94, 8 - %96 = icmp ne i8 %95, 0 - %97 = getelementptr inbounds nuw i8, ptr %89, i64 24 - %98 = load ptr, ptr %97, align 8, !tbaa !24 - %.not.i.i47 = icmp eq ptr %98, @_ZN4llvmL18semPPCDoubleDoubleE - %99 = getelementptr inbounds nuw i8, ptr %89, i64 32 - %100 = load ptr, ptr %99, align 8 - %.0.i.i48 = select i1 %.not.i.i47, ptr %100, ptr %97 - %101 = getelementptr inbounds nuw i8, ptr %.0.i.i48, i64 20 - %102 = load i8, ptr %101, align 4 - %103 = and i8 %102, 8 - %104 = icmp ne i8 %103, 0 - %105 = xor i1 %96, %104 - %106 = xor i1 %88, true - %or.cond3 = or i1 %105, %106 - br i1 %or.cond3, label %107, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread - -107: ; preds = %71 - %or.cond5 = and i1 %105, %106 - br i1 %or.cond5, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread, label %108 - -108: ; preds = %107 - %or.cond7 = or i1 %88, %105 - br i1 %or.cond7, label %109, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread - -109: ; preds = %108 - %or.cond9 = and i1 %88, %105 - %110 = sub nuw nsw i32 2, %.0.i33 - br i1 %or.cond9, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread, label %111 - -111: ; preds = %109, %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit41 + %78 = getelementptr inbounds nuw i8, ptr %72, i64 24 + %79 = load ptr, ptr %78, align 8, !tbaa !24 + %80 = icmp eq ptr %79, @_ZN4llvmL18semPPCDoubleDoubleE + %81 = getelementptr inbounds nuw i8, ptr %72, i64 32 + %.not.i.i43 = load ptr, ptr %81, align 8 + %82 = select i1 %80, ptr %.not.i.i43, ptr %78 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 20 + %.0.i.i44 = load i8, ptr %83, align 4 + %84 = xor i8 %.0.i.i44, %77 + %85 = and i8 %84, 8 + %86 = icmp eq i8 %85, 0 + %87 = load ptr, ptr %5, align 8, !tbaa !482 + %88 = load ptr, ptr %87, align 8, !tbaa !24 + %89 = icmp eq ptr %88, @_ZN4llvmL18semPPCDoubleDoubleE + %90 = getelementptr inbounds nuw i8, ptr %86, i64 8 + %.not.i.i45 = load ptr, ptr %90, align 8 + %91 = select i1 %89, ptr %89, ptr %86 + %92 = getelementptr inbounds nuw i8, ptr %91, i64 20 + %.0.i.i46 = load i8, ptr %92, align 4 + %93 = getelementptr inbounds nuw i8, ptr %86, i64 24 + %94 = load ptr, ptr %93, align 8, !tbaa !24 + %95 = icmp eq ptr %94, @_ZN4llvmL18semPPCDoubleDoubleE + %96 = getelementptr inbounds nuw i8, ptr %86, i64 32 + %97 = load ptr, ptr %94, align 8 + %98 = select i1 %95, ptr %97, ptr %92 + %.not.i.i47 = getelementptr inbounds nuw i8, ptr %98, i64 20 + %99 = load i8, ptr %96, align 4 + %100 = xor i8 %99, %91 + %.0.i.i48 = and i8 %100, 8 + %101 = icmp ne i8 %.0.i.i48, 0 + %102 = or i1 %86, %101 + br i1 %102, label %101, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread + +101:; preds = %71 + %106 = and i1 %86, %100 + br i1 %or.cond5, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread, label %102 + +102: ; preds = %101 + %103 = or i8 %100, %84 + %or.cond5 = and i8 %103, 8 + %or.cond7.not = icmp eq i8 %104, 0 + br i1 %or.cond7.not, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread, label %105 + +105:; preds = %102 + %106 = and i8 %85, %100 + %or.cond9.not = icmp eq i8 %106, 0 + %.0.i.i.i54 = sub nuw nsw i32 2, %.0.i33 + br i1 %or.cond9.not, label %108, label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread + +108:; preds = %105, %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit41 br label %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread -_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread: ; preds = %108, %107, %71, %_ZNK4llvm6detail9IEEEFloat20compareAbsoluteValueERKS1_.exit.i, %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit, %109, %111 - %.0 = phi i32 [ %.0.i33, %111 ], [ %110, %109 ], [ %.0.i, %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit ], [ 2, %_ZNK4llvm6detail9IEEEFloat20compareAbsoluteValueERKS1_.exit.i ], [ %.0.i33, %108 ], [ 2, %107 ], [ 0, %71 ] +_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit.thread: ; preds = %102, %101, %71, %_ZNK4llvm6detail9IEEEFloat20compareAbsoluteValueERKS1_.exit.i, %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit, %105, %109 + %.0 = phi i32 [ %.0.i33, %109 ], [ %107, %105 ], [ %.0.i, %_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_.exit ], [ 2, %_ZNK4llvm6detail9IEEEFloat20compareAbsoluteValueERKS1_.exit.i ], [ %.0.i33, %102 ], [ 2, %101 ], [ 0, %71 ] ret i32 %.0 } diff --git a/bench/llvm/optimized/ASTReaderDecl.ll b/bench/llvm/optimized/ASTReaderDecl.ll index 8e6b084c4c1..88ec37e3799 100644 --- a/bench/llvm/optimized/ASTReaderDecl.ll +++ b/bench/llvm/optimized/ASTReaderDecl.ll @@ -52208,33 +52208,20 @@ define dso_local void @_ZN5clang13ASTDeclReader22attachPreviousDeclImplINS_12Fun store ptr %22, ptr %23, align 8, !tbaa !1223 %24 = getelementptr inbounds nuw i8, ptr %2, i64 82 %25 = load i32, ptr %24, align 2 - %26 = and i32 %25, 1 - %27 = icmp ne i32 %26, 0 - %28 = getelementptr inbounds nuw i8, ptr %17, i64 82 - %29 = load i32, ptr %28, align 2 - %30 = and i32 %29, 1 - %31 = icmp ne i32 %30, 0 - %32 = xor i1 %27, %31 - br i1 %32, label %33, label %35 - -33: ; preds = %4 - %34 = or i32 %29, 1 - store i32 %34, ptr %28, align 2 - br label %35 - -35: ; preds = %33, %4 - %36 = getelementptr inbounds nuw i8, ptr %17, i64 48 - %.sroa.0.0.copyload.i = load i64, ptr %36, align 8, !tbaa !885 - %37 = and i64 %.sroa.0.0.copyload.i, -16 - %38 = inttoptr i64 %37 to ptr - %39 = load ptr, ptr %38, align 16, !tbaa !919 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 16 - %41 = load i8, ptr %40, align 16 - %.not.i = icmp eq i8 %41, 26 - br i1 %.not.i, label %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit, label %42 + %26 = getelementptr inbounds nuw i8, ptr %17, i64 82 + %27 = load i32, ptr %26, align 2 + %28 = xor i32 %27, %25 + %29 = and i32 %28, 1 + %30 = icmp eq i32 %29, 0 + br i1 %.not, label %32, label %30 + +30:; preds = %4 + %31 = or i32 %27, 1 + store i32 %31, ptr %26, align 2 + br label %32 -42: ; preds = %35 - %43 = getelementptr inbounds nuw i8, ptr %39, i64 8 +42: ; preds = %30, %4 + %43 = getelementptr inbounds nuw i8, ptr %17, i64 48 %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %43, align 8, !tbaa !885 %44 = and i64 %.sroa.0.0.copyload.i.i.i.i, -16 %45 = inttoptr i64 %44 to ptr @@ -52242,14 +52229,25 @@ define dso_local void @_ZN5clang13ASTDeclReader22attachPreviousDeclImplINS_12Fun %47 = getelementptr inbounds nuw i8, ptr %46, i64 16 %48 = load i8, ptr %47, align 16 %49 = icmp eq i8 %48, 26 - br i1 %49, label %50, label %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit + br i1 %49, label %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit, label %39 + +39: ; preds = %32 + %40 = getelementptr inbounds nuw i8, ptr %36, i64 8 + %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %40, align 8, !tbaa !885 + %41 = and i64 %.sroa.0.0.copyload.i.i.i.i, -16 + %42 = inttoptr i64 %41 to ptr + %43 = load ptr, ptr %42, align 16, !tbaa !919 + %44 = getelementptr inbounds nuw i8, ptr %43, i64 16 + %45 = load i8, ptr %44, align 16 + %46 = icmp eq i8 %45, 26 + br i1 %46, label %47, label %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit -50: ; preds = %42 - %51 = tail call noundef ptr @_ZNK5clang4Type27getUnqualifiedDesugaredTypeEv(ptr noundef nonnull align 16 dereferenceable(24) %39) #26 +50: ; preds = %39 + %51 = tail call noundef ptr @_ZNK5clang4Type27getUnqualifiedDesugaredTypeEv(ptr noundef nonnull align 16 dereferenceable(24) %36) #26 br label %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit -_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit: ; preds = %35, %42, %50 - %.1.i = phi ptr [ %39, %35 ], [ %51, %50 ], [ null, %42 ] +_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit: ; preds = %32, %39, %50 + %.1.i = phi ptr [ %36, %32 ], [ %51, %50 ], [ null, %39 ] %52 = getelementptr inbounds nuw i8, ptr %2, i64 48 %.sroa.0.0.copyload.i23 = load i64, ptr %52, align 8, !tbaa !885 %53 = and i64 %.sroa.0.0.copyload.i23, -16 diff --git a/bench/llvm/optimized/CodeMoverUtils.ll b/bench/llvm/optimized/CodeMoverUtils.ll index 694d464da52..4913d2cd4f3 100644 --- a/bench/llvm/optimized/CodeMoverUtils.ll +++ b/bench/llvm/optimized/CodeMoverUtils.ll @@ -1938,100 +1938,97 @@ declare void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull ali ; Function Attrs: mustprogress nounwind uwtable define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_117ControlConditions12isEquivalentERKN4llvm14PointerIntPairIPNS1_5ValueELj1EbNS1_21PointerLikeTypeTraitsIS4_EENS1_18PointerIntPairInfoIS4_Lj1ES6_EEEESB_(i64 %.0.val, i64 %.0.val1) unnamed_addr #0 align 2 { - %1 = and i64 %.0.val, 4 - %2 = icmp ne i64 %1, 0 - %3 = and i64 %.0.val1, 4 - %4 = icmp ne i64 %3, 0 - %5 = xor i1 %2, %4 - br i1 %5, label %9, label %6 - -6: ; preds = %0 - %7 = xor i64 %.0.val1, %.0.val - %8 = icmp ult i64 %7, 8 - br i1 %8, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit - -9: ; preds = %0 - %10 = and i64 %.0.val, -8 - %11 = inttoptr i64 %10 to ptr - %12 = and i64 %.0.val1, -8 - %13 = inttoptr i64 %12 to ptr - %14 = load i8, ptr %11, align 8, !tbaa !57 + %1 = xor i64 %.0.val1, %.0.val + %2 = and i64 %1, 4 + %3 = icmp eq i64 %2, 0 + br i1 %.not, label %3, label %5 + +3:; preds = %0 + %4 = icmp ult i64 %1, 8 + br i1 %4, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit + +5:; preds = %0 + %6 = and i64 %.0.val, -8 + %7 = inttoptr i64 %6 to ptr + %8 = and i64 %.0.val1, -8 + %10 = inttoptr i64 %8 to ptr + %11 = load i8, ptr %7, align 8, !tbaa !57 + %12 = icmp ult i8 %10, 29 + %13 = and i8 %10, -2 + %14 = icmp ne i8 %12, 82 + %.not26.i = or i1 %11, %spec.select.i.i.i.i.i.i.i.i.i.i + br i1 %.not26.i, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit, label %13 + +13: ; preds = %5 + %14 = load i8, ptr %9, align 8, !tbaa !57 %15 = icmp ult i8 %14, 29 %16 = and i8 %14, -2 %spec.select.i.i.i.i.i.i.i.i.i.i = icmp ne i8 %16, 82 %.not26.i = or i1 %15, %spec.select.i.i.i.i.i.i.i.i.i.i br i1 %.not26.i, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit, label %17 -17: ; preds = %9 - %18 = load i8, ptr %13, align 8, !tbaa !57 - %19 = icmp ult i8 %18, 29 - %20 = and i8 %18, -2 - %spec.select.i.i.i.i.i.i.i.i.i23.i = icmp ne i8 %20, 82 - %.not27.i = or i1 %19, %spec.select.i.i.i.i.i.i.i.i.i23.i - br i1 %.not27.i, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit, label %21 - -21: ; preds = %17 - %22 = getelementptr inbounds nuw i8, ptr %11, i64 2 +17: ; preds = %13 + %18 = getelementptr inbounds nuw i8, ptr %7, i64 2 + %19 = load i16, ptr %18, align 2, !tbaa !113 + %20 = and i16 %19, 63 + %spec.select.i.i.i.i.i.i.i.i.i23.i = zext nneg i16 %20 to i32 + %.not27.i = getelementptr inbounds nuw i8, ptr %9, i64 2 %23 = load i16, ptr %22, align 2, !tbaa !113 %24 = and i16 %23, 63 %25 = zext nneg i16 %24 to i32 - %26 = getelementptr inbounds nuw i8, ptr %13, i64 2 - %27 = load i16, ptr %26, align 2, !tbaa !113 - %28 = and i16 %27, 63 - %29 = zext nneg i16 %28 to i32 - %30 = tail call noundef i32 @_ZN4llvm7CmpInst19getInversePredicateENS0_9PredicateE(i32 noundef %29) #8 - %31 = icmp eq i32 %30, %25 - br i1 %31, label %32, label %44 - -32: ; preds = %21 - %33 = getelementptr inbounds i8, ptr %11, i64 -64 - %34 = load ptr, ptr %33, align 8, !tbaa !58 - %35 = getelementptr inbounds i8, ptr %13, i64 -64 + %26 = tail call noundef i32 @_ZN4llvm7CmpInst19getInversePredicateENS0_9PredicateE(i32 noundef %25) #8 + %27 = icmp eq i32 %26, %21 + br i1 %27, label %28, label %40 + +28:; preds = %17 + %31 = getelementptr inbounds i8, ptr %7, i64 -64 + %30 = load ptr, ptr %31, align 8, !tbaa !58 + %31 = getelementptr inbounds i8, ptr %9, i64 -64 + %32 = load ptr, ptr %31, align 8, !tbaa !58 + %33 = icmp eq ptr %30, %32 + br i1 %33, label %34, label %40 + +34: ; preds = %28 + %35 = getelementptr inbounds i8, ptr %7, i64 -32 %36 = load ptr, ptr %35, align 8, !tbaa !58 - %37 = icmp eq ptr %34, %36 - br i1 %37, label %38, label %44 - -38: ; preds = %32 - %39 = getelementptr inbounds i8, ptr %11, i64 -32 - %40 = load ptr, ptr %39, align 8, !tbaa !58 - %41 = getelementptr inbounds i8, ptr %13, i64 -32 - %42 = load ptr, ptr %41, align 8, !tbaa !58 - %43 = icmp eq ptr %40, %42 - br i1 %43, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread, label %44 - -44: ; preds = %38, %32, %21 - %45 = load i16, ptr %22, align 2, !tbaa !113 - %46 = and i16 %45, 63 - %47 = zext nneg i16 %46 to i32 - %48 = load i16, ptr %26, align 2, !tbaa !113 - %49 = and i16 %48, 63 - %50 = zext nneg i16 %49 to i32 - %51 = tail call noundef i32 @_ZN4llvm7CmpInst19getInversePredicateENS0_9PredicateE(i32 noundef %50) #8 - %52 = tail call noundef i32 @_ZN4llvm7CmpInst19getSwappedPredicateENS0_9PredicateE(i32 noundef %51) #8 - %53 = icmp eq i32 %52, %47 - br i1 %53, label %54, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit - -54: ; preds = %44 - %55 = getelementptr inbounds i8, ptr %11, i64 -64 - %56 = load ptr, ptr %55, align 8, !tbaa !58 - %57 = getelementptr inbounds i8, ptr %13, i64 -32 - %58 = load ptr, ptr %57, align 8, !tbaa !58 - %59 = icmp eq ptr %56, %58 - br i1 %59, label %60, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit - -60: ; preds = %54 - %61 = getelementptr inbounds i8, ptr %13, i64 -64 - %62 = getelementptr inbounds i8, ptr %11, i64 -32 - %63 = load ptr, ptr %62, align 8, !tbaa !58 - %64 = load ptr, ptr %61, align 8, !tbaa !58 - %65 = icmp eq ptr %63, %64 - br i1 %65, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit - -_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit: ; preds = %17, %44, %54, %60, %9, %6 + %37 = getelementptr inbounds i8, ptr %9, i64 -32 + %38 = load ptr, ptr %37, align 8, !tbaa !58 + %39 = icmp eq ptr %36, %38 + br i1 %39, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread, label %40 + +40:; preds = %34, %28, %17 + %41 = load i16, ptr %18, align 2, !tbaa !113 + %42 = and i16 %41, 63 + %43 = zext nneg i16 %42 to i32 + %44 = load i16, ptr %22, align 2, !tbaa !113 + %45 = and i16 %44, 63 + %46 = zext nneg i16 %45 to i32 + %45 = tail call noundef i32 @_ZN4llvm7CmpInst19getInversePredicateENS0_9PredicateE(i32 noundef %46) #8 + %46 = tail call noundef i32 @_ZN4llvm7CmpInst19getSwappedPredicateENS0_9PredicateE(i32 noundef %45) #8 + %47 = icmp eq i32 %48, %43 + br i1 %49, label %50, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit + +50:; preds = %40 + %51 = getelementptr inbounds i8, ptr %7, i64 -64 + %52 = load ptr, ptr %51, align 8, !tbaa !58 + %53 = getelementptr inbounds i8, ptr %9, i64 -32 + %54 = load ptr, ptr %53, align 8, !tbaa !58 + %55 = icmp eq ptr %52, %54 + br i1 %55, label %56, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit + +56:; preds = %50 + %57 = getelementptr inbounds i8, ptr %10, i64 -64 + %58 = getelementptr inbounds i8, ptr %7, i64 -32 + %59 = load ptr, ptr %58, align 8, !tbaa !58 + %60 = load ptr, ptr %57, align 8, !tbaa !58 + %61 = icmp eq ptr %59, %60 + br i1 %61, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread, label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit + +_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit:; preds = %13, %40, %50, %56, %5, %3 br label %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread -_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread: ; preds = %38, %60, %6, %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit - %.0 = phi i1 [ false, %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit ], [ true, %6 ], [ true, %60 ], [ true, %38 ] +_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit.thread: ; preds = %34, %56, %3, %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit + %.0 = phi i1 [ false, %_ZN12_GLOBAL__N_117ControlConditions9isInverseERKN4llvm5ValueES4_.exit ], [ true, %3 ], [ true, %56 ], [ true, %34 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/DAGCombiner.ll b/bench/llvm/optimized/DAGCombiner.ll index fce289c1ed8..f8039f1b574 100644 --- a/bench/llvm/optimized/DAGCombiner.ll +++ b/bench/llvm/optimized/DAGCombiner.ll @@ -202193,27 +202193,26 @@ define internal fastcc void @"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCand br i1 %.not.i, label %42, label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread" 42: ; preds = %39 - %43 = load ptr, ptr %27, align 8, !tbaa !1927 - %44 = load ptr, ptr %43, align 8, !tbaa !992 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 32 - %46 = load i8, ptr %45, align 8 - %47 = and i8 %46, 16 - %48 = icmp ne i8 %47, 0 - %49 = and i16 %40, 16 - %50 = icmp ne i16 %49, 0 - %51 = xor i1 %50, %48 - br i1 %51, label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread", label %52 - -52: ; preds = %42 - %53 = getelementptr inbounds nuw i8, ptr %29, i64 8 - %54 = load ptr, ptr %53, align 8, !tbaa !438 - %55 = load ptr, ptr %54, align 8, !tbaa !15 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 360 - %57 = load ptr, ptr %56, align 8 - %58 = tail call noundef zeroext i1 %57(ptr noundef nonnull align 8 dereferenceable(412423) %54, ptr noundef nonnull align 8 dereferenceable(112) %44, ptr noundef nonnull align 8 dereferenceable(112) %10) #38 - br i1 %58, label %59, label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread" + %43 = trunc i16 %40 to i8 + %44 = load ptr, ptr %27, align 8, !tbaa !1927 + %45 = load ptr, ptr %44, align 8, !tbaa !992 + %46 = getelementptr inbounds nuw i8, ptr %45, i64 32 + %47 = load i8, ptr %46, align 8 + %48 = xor i8 %47, %43 + %49 = and i8 %48, 16 + %50 = icmp eq i8 %49, 0 + br i1 %50, label %50, label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread" + +50: ; preds = %42 + %51 = getelementptr inbounds nuw i8, ptr %29, i64 8 + %53 = load ptr, ptr %51, align 8, !tbaa !438 + %54 = load ptr, ptr %53, align 8, !tbaa !15 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 360 + %56 = load ptr, ptr %55, align 8 + %57 = tail call noundef zeroext i1 %55(ptr noundef nonnull align 8 dereferenceable(412423) %52, ptr noundef nonnull align 8 dereferenceable(112) %45, ptr noundef nonnull align 8 dereferenceable(112) %10) #38 + br i1 %57, label %57, label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread" -59: ; preds = %52 +59: ; preds = %50 %60 = load ptr, ptr %11, align 8, !tbaa !218 %61 = getelementptr inbounds nuw i8, ptr %60, i64 40 %.sroa.021.0.copyload.i = load ptr, ptr %61, align 8, !tbaa !94 @@ -202375,61 +202374,60 @@ _ZNK4llvm3EVTneES0_.exit.i: ; preds = %94, %.thread.i, %93 %.sroa.21.0.copyload.i56.i = load ptr, ptr %.sroa.21.0..sroa_idx.i55.i, align 8, !tbaa !230 %110 = load i16, ptr %108, align 8, !tbaa !426 %.not.i59.i = icmp eq i16 %110, %.sroa.0.0.copyload.i54.i - br i1 %.not.i59.i, label %111, label %.critedge.critedge.i - -111: ; preds = %105 - %112 = icmp eq i16 %.sroa.0.0.copyload.i54.i, 0 - br i1 %112, label %_ZNK4llvm3EVTneES0_.exit61.i, label %_ZNK4llvm3EVTneES0_.exit61.thread84.i - -_ZNK4llvm3EVTneES0_.exit61.i: ; preds = %111 - %113 = getelementptr inbounds nuw i8, ptr %108, i64 8 - %114 = load ptr, ptr %113, align 8, !tbaa !829 - %.not91.i = icmp eq ptr %114, %.sroa.21.0.copyload.i56.i - br i1 %.not91.i, label %_ZNK4llvm3EVTneES0_.exit61.thread84.i, label %.critedge.critedge.i - -_ZNK4llvm3EVTneES0_.exit61.thread84.i: ; preds = %_ZNK4llvm3EVTneES0_.exit61.i, %111 - %115 = call noundef zeroext i1 @_ZNK4llvm6SDNode15hasNUsesOfValueEjj(ptr noundef nonnull align 8 dereferenceable(88) %.fca.0.extract.i, i32 noundef 1, i32 noundef 0) #38 - br i1 %115, label %116, label %.critedge.critedge.i - -116: ; preds = %_ZNK4llvm3EVTneES0_.exit61.thread84.i - %117 = getelementptr inbounds nuw i8, ptr %.fca.0.extract.i, i64 104 - %118 = load ptr, ptr %117, align 8, !tbaa !444 - %119 = getelementptr inbounds nuw i8, ptr %118, i64 36 - %120 = load i16, ptr %119, align 4 - %121 = and i16 %120, 3840 - %.not.i62.i = icmp eq i16 %121, 0 - %122 = getelementptr inbounds nuw i8, ptr %.fca.0.extract.i, i64 32 - %123 = load i8, ptr %122, align 8 - %124 = and i8 %123, 8 - %.not1.i63.i = icmp eq i8 %124, 0 - %125 = select i1 %.not.i62.i, i1 %.not1.i63.i, i1 false - br i1 %125, label %126, label %.critedge.critedge.i - -126: ; preds = %116 - %127 = load i16, ptr %122, align 8 - %128 = and i16 %127, 896 - %.not92.i = icmp eq i16 %128, 0 - br i1 %.not92.i, label %129, label %.critedge.critedge.i + br i1 %.not.i59.i, label %109, label %.critedge.critedge.i + +129: ; preds = %103 + %130 = icmp eq i16 %.sroa.0.0.copyload.i54.i, 0 + br i1 %130, label %_ZNK4llvm3EVTneES0_.exit61.i, label %_ZNK4llvm3EVTneES0_.exit61.thread84.i + +_ZNK4llvm3EVTneES0_.exit61.i:; preds = %129 + %134 = getelementptr inbounds nuw i8, ptr %106, i64 8 + %112 = load ptr, ptr %111, align 8, !tbaa !829 + %.not92.i = icmp eq ptr %112, %.sroa.21.0.copyload.i56.i + br i1 %.not92.i, label %_ZNK4llvm3EVTneES0_.exit61.thread84.i, label %.critedge.critedge.i + +_ZNK4llvm3EVTneES0_.exit61.thread84.i: ; preds = %_ZNK4llvm3EVTneES0_.exit61.i, %109 + %113 = call noundef zeroext i1 @_ZNK4llvm6SDNode15hasNUsesOfValueEjj(ptr noundef nonnull align 8 dereferenceable(88) %.fca.0.extract.i, i32 noundef 1, i32 noundef 0) #38 + br i1 %113, label %114, label %.critedge.critedge.i + +114: ; preds = %_ZNK4llvm3EVTneES0_.exit61.thread84.i + %115 = getelementptr inbounds nuw i8, ptr %.fca.0.extract.i, i64 104 + %116 = load ptr, ptr %115, align 8, !tbaa !444 + %117 = getelementptr inbounds nuw i8, ptr %116, i64 36 + %118 = load i16, ptr %117, align 4 + %119 = and i16 %118, 3840 + %.not.i62.i = icmp eq i16 %119, 0 + %120 = getelementptr inbounds nuw i8, ptr %.fca.0.extract.i, i64 32 + %121 = load i8, ptr %120, align 8 + %122 = and i8 %121, 8 + %.not1.i63.i = icmp eq i8 %122, 0 + %123 = select i1 %.not.i62.i, i1 %.not1.i63.i, i1 false + br i1 %123, label %124, label %.critedge.critedge.i + +124: ; preds = %114 + %125 = load i16, ptr %120, align 8 + %126 = and i16 %125, 896 + %.not93.i = icmp eq i16 %126, 0 + br i1 %.not93.i, label %127, label %.critedge.critedge.i -129: ; preds = %126 - %130 = getelementptr inbounds nuw i8, ptr %27, i64 40 - %131 = load ptr, ptr %130, align 8, !tbaa !1931 - %132 = load ptr, ptr %131, align 8, !tbaa !206 - %133 = getelementptr inbounds nuw i8, ptr %132, i64 32 - %134 = load i8, ptr %133, align 8 +127: ; preds = %124 + %128 = trunc i16 %125 to i8 + %129 = getelementptr inbounds nuw i8, ptr %27, i64 40 + %130 = load ptr, ptr %129, align 8, !tbaa !1931 + %131 = load ptr, ptr %130, align 8, !tbaa !206 + %132 = getelementptr inbounds nuw i8, ptr %131, i64 32 + %133 = load i8, ptr %132, align 8 + %134 = xor i8 %133, %128 %135 = and i8 %134, 16 - %136 = icmp ne i8 %135, 0 - %137 = and i16 %127, 16 - %138 = icmp ne i16 %137, 0 - %139 = xor i1 %138, %136 - br i1 %139, label %.critedge.critedge.i, label %140 + %136 = icmp eq i8 %135, 0 + br i1 %136, label %136, label %.critedge.critedge.i -140: ; preds = %129 - %141 = load ptr, ptr %53, align 8, !tbaa !438 +140: ; preds = %127 + %141 = load ptr, ptr %51, align 8, !tbaa !438 %142 = load ptr, ptr %141, align 8, !tbaa !15 %143 = getelementptr inbounds nuw i8, ptr %142, i64 360 %144 = load ptr, ptr %143, align 8 - %145 = call noundef zeroext i1 %144(ptr noundef nonnull align 8 dereferenceable(412423) %141, ptr noundef nonnull align 8 dereferenceable(112) %132, ptr noundef nonnull align 8 dereferenceable(112) %.fca.0.extract.i) #38 + %145 = call noundef zeroext i1 %140(ptr noundef nonnull align 8 dereferenceable(412423) %141, ptr noundef nonnull align 8 dereferenceable(112) %131, ptr noundef nonnull align 8 dereferenceable(112) %.fca.0.extract.i) #38 br i1 %145, label %146, label %.critedge.critedge.i 146: ; preds = %140 @@ -202478,7 +202476,7 @@ _ZNK4llvm3EVTneES0_.exit61.thread84.i: ; preds = %_ZNK4llvm3EVTneES0_ 166: ; preds = %_ZNK4llvm3EVTneES0_.exit.i unreachable -.critedge.critedge.i: ; preds = %140, %129, %126, %116, %_ZNK4llvm3EVTneES0_.exit61.thread84.i, %_ZNK4llvm3EVTneES0_.exit61.i, %105 +.critedge.critedge.i: ; preds = %140, %127, %124, %114, %_ZNK4llvm3EVTneES0_.exit61.thread84.i, %_ZNK4llvm3EVTneES0_.exit61.i, %105 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %5) #38 br label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread" @@ -202495,8 +202493,8 @@ _ZNK4llvm3EVTneES0_.exit61.thread84.i: ; preds = %_ZNK4llvm3EVTneES0_ br i1 %171, label %172, label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread" 172: ; preds = %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit" - %173 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %174 = load ptr, ptr %173, align 8, !tbaa !1934 + %171 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %174 = load ptr, ptr %171, align 8, !tbaa !1934 %175 = getelementptr inbounds nuw i8, ptr %0, i64 16 %176 = load ptr, ptr %175, align 8, !tbaa !1935 %177 = load ptr, ptr %176, align 8, !tbaa !94 @@ -202506,48 +202504,48 @@ _ZNK4llvm3EVTneES0_.exit61.thread84.i: ; preds = %_ZNK4llvm3EVTneES0_ %179 = getelementptr i8, ptr %.val, i64 880 %.val.val8 = load i32, ptr %179, align 8, !tbaa !221 %180 = icmp eq i32 %.val.val8, 0 - br i1 %180, label %.loopexit.i.i, label %181 - -181: ; preds = %172 - %182 = ptrtoint ptr %10 to i64 - %183 = trunc i64 %182 to i32 - %184 = lshr i32 %183, 4 - %185 = lshr i32 %183, 9 - %186 = xor i32 %184, %185 - %187 = add i32 %.val.val8, -1 - %.01826.i.i.i = and i32 %187, %186 - %188 = zext nneg i32 %.01826.i.i.i to i64 - %189 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.115", ptr %.val.val, i64 %188 - %190 = load ptr, ptr %189, align 8, !tbaa !94 - %191 = icmp eq ptr %10, %190 - br i1 %191, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_6SDNodeESt4pairIS3_jENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit.i, label %.lr.ph.i.i.i, !prof !213 - -.lr.ph.i.i.i: ; preds = %181, %194 - %192 = phi ptr [ %199, %194 ], [ %190, %181 ] - %.01828.i.i.i = phi i32 [ %.018.i.i.i, %194 ], [ %.01826.i.i.i, %181 ] - %.01627.i.i.i = phi i32 [ %195, %194 ], [ 1, %181 ] - %193 = icmp eq ptr %192, inttoptr (i64 -4096 to ptr) - br i1 %193, label %.loopexit.i.i, label %194, !prof !40 - -194: ; preds = %.lr.ph.i.i.i - %195 = add i32 %.01627.i.i.i, 1 - %196 = add i32 %.01627.i.i.i, %.01828.i.i.i - %.018.i.i.i = and i32 %196, %187 - %197 = zext i32 %.018.i.i.i to i64 + br i1 %180, label %.loopexit.i.i, label %177 + +.loopexit.i.i: ; preds = %172 + %201 = ptrtoint ptr %10 to i64 + %202 = trunc i64 %201 to i32 + %180 = lshr i32 %179, 4 + %181 = lshr i32 %179, 9 + %182 = xor i32 %180, %181 + %183 = add i32 %.val.val8, -1 + %.01826.i.i.i = and i32 %183, %182 + %184 = zext nneg i32 %.01826.i.i.i to i64 + %185 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.115", ptr %.val.val, i64 %184 + %186 = load ptr, ptr %185, align 8, !tbaa !94 + %187 = icmp eq ptr %10, %186 + br i1 %187, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_6SDNodeESt4pairIS3_jENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit.i, label %.lr.ph.i.i.i, !prof !213 + +.lr.ph.i.i.i: ; preds = %177, %190 + %188 = phi ptr [ %195, %190 ], [ %186, %177 ] + %.01828.i.i.i = phi i32 [ %.018.i.i.i, %190 ], [ %.01826.i.i.i, %177 ] + %.01627.i.i.i = phi i32 [ %191, %190 ], [ 1, %177 ] + %189 = icmp eq ptr %188, inttoptr (i64 -4096 to ptr) + br i1 %189, label %.loopexit.i.i, label %190, !prof !40 + +190: ; preds = %.lr.ph.i.i.i + %191 = add i32 %.01627.i.i.i, 1 + %192 = add i32 %.01627.i.i.i, %.01828.i.i.i + %.018.i.i.i = and i32 %192, %183 + %193 = zext i32 %.018.i.i.i to i64 + %194 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.115", ptr %.val.val, i64 %193 + %195 = load ptr, ptr %194, align 8, !tbaa !94 + %196 = icmp eq ptr %10, %195 + br i1 %196, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_6SDNodeESt4pairIS3_jENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit.i, label %.lr.ph.i.i.i, !prof !214, !llvm.loop !1936 + +.loopexit.i.i: ; preds = %.lr.ph.i.i.i, %168 + %197 = zext i32 %.val.val8 to i64 %198 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.115", ptr %.val.val, i64 %197 - %199 = load ptr, ptr %198, align 8, !tbaa !94 - %200 = icmp eq ptr %10, %199 - br i1 %200, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_6SDNodeESt4pairIS3_jENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit.i, label %.lr.ph.i.i.i, !prof !214, !llvm.loop !1936 - -.loopexit.i.i: ; preds = %.lr.ph.i.i.i, %172 - %201 = zext i32 %.val.val8 to i64 - %202 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.115", ptr %.val.val, i64 %201 br label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_6SDNodeESt4pairIS3_jENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit.i -_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_6SDNodeESt4pairIS3_jENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit.i: ; preds = %194, %.loopexit.i.i, %181 - %.sroa.0.1.i.i = phi ptr [ %202, %.loopexit.i.i ], [ %189, %181 ], [ %198, %194 ] - %203 = zext i32 %.val.val8 to i64 - %204 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.115", ptr %.val.val, i64 %203 +_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_6SDNodeESt4pairIS3_jENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit.i: ; preds = %190, %.loopexit.i.i, %177 + %.sroa.0.1.i.i = phi ptr [ %1100, %.loopexit.i.i ], [ %185, %177 ], [ %194, %190 ] + %1101 = zext i32 %.val.val8 to i64 + %204 = getelementptr inbounds nuw %"struct.llvm::detail::DenseMapPair.115", ptr %.val.val, i64 %1101 %.not.i9 = icmp eq ptr %.sroa.0.1.i.i, %204 br i1 %.not.i9, label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_1clEPNS1_6SDNodeESA_.exit.thread", label %205 @@ -202596,7 +202594,7 @@ _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_111DAGCombiner9MemOpLinkELb1EE9p store i32 %227, ptr %216, align 8, !tbaa !33 br label %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread" -"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread": ; preds = %163, %.critedge.critedge.i, %101, %157, %154, %152, %151, %100, %146, %52, %42, %21, %39, %_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_111DAGCombiner9MemOpLinkELb1EE9push_backES3_.exit, %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_1clEPNS1_6SDNodeESA_.exit", %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit" +"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit.thread": ; preds = %163, %.critedge.critedge.i, %101, %157, %154, %152, %151, %100, %146, %50, %42, %21, %39, %_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_111DAGCombiner9MemOpLinkELb1EE9push_backES3_.exit, %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_1clEPNS1_6SDNodeESA_.exit", %"_ZZN12_GLOBAL__N_111DAGCombiner23getStoreMergeCandidatesEPN4llvm11StoreSDNodeERNS1_15SmallVectorImplINS0_9MemOpLinkEEEENK3$_0clES3_RNS1_15BaseIndexOffsetERl.exit" call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #38 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #38 br label %228 diff --git a/bench/llvm/optimized/FunctionComparator.ll b/bench/llvm/optimized/FunctionComparator.ll index be0fc810c75..2f3c06cf438 100644 --- a/bench/llvm/optimized/FunctionComparator.ll +++ b/bench/llvm/optimized/FunctionComparator.ll @@ -694,8 +694,8 @@ define dso_local noundef i32 @_ZNK4llvm18FunctionComparator8cmpTypesEPNS_4TypeES br label %tailrecurse tailrecurse: ; preds = %tailrecurse.backedge, %3 - %.tr173 = phi ptr [ %1, %3 ], [ %.tr173.be, %tailrecurse.backedge ] - %.tr174 = phi ptr [ %2, %3 ], [ %.tr174.be, %tailrecurse.backedge ] + %.tr173 = phi ptr [ %1, %3 ], [ %.tr174.be, %tailrecurse.backedge ] + %.tr174 = phi ptr [ %2, %3 ], [ %.tr175.be, %tailrecurse.backedge ] %4 = getelementptr inbounds nuw i8, ptr %.tr173, i64 8 %5 = load i32, ptr %4, align 8 %6 = and i32 %5, 255 @@ -810,12 +810,10 @@ tailrecurse: ; preds = %tailrecurse.backedg br label %.loopexit 60: ; preds = %52 - %61 = and i32 %31, 512 - %62 = icmp ne i32 %61, 0 - %63 = and i32 %34, 512 - %64 = icmp ne i32 %63, 0 - %65 = xor i1 %62, %64 - br i1 %65, label %69, label %.preheader + %61 = xor i32 %34, %31 + %62 = and i32 %61, 512 + %63 = icmp eq i32 %62, 0 + br i1 %63, label %.preheader, label %66 .preheader: ; preds = %60 %66 = getelementptr inbounds nuw i8, ptr %.097, i64 16 @@ -828,11 +826,13 @@ tailrecurse: ; preds = %tailrecurse.backedg br label %73 69: ; preds = %60 - %.lobit = lshr exact i32 %61, 9 - %70 = zext nneg i32 %.lobit to i64 - %.lobit172 = lshr exact i32 %63, 9 - %71 = zext nneg i32 %.lobit172 to i64 - %.0.i130 = tail call noundef range(i32 -1, 2) i32 @llvm.ucmp.i32.i64(i64 %70, i64 %71) + %.lobit = lshr i32 %31, 9 + %70 = and i32 %.lobit, 1 + %.lobit172 = zext nneg i32 %70 to i64 + %71 = lshr i32 %34, 9 + %.0.i130 = and i32 %69, 1 + %70 = zext nneg i32 %.lobit172 to i64 + %.0.i130 = tail call noundef range(i32 -1, 2) i32 @llvm.ucmp.i32.i64(i64 %68, i64 %70) br label %.loopexit 72: ; preds = %73 @@ -875,9 +875,9 @@ tailrecurse: ; preds = %tailrecurse.backedg br i1 %94, label %95, label %98 95: ; preds = %91 + %95 = zext i1 %91 to i64 %96 = zext i1 %92 to i64 - %97 = zext i1 %93 to i64 - %.0.i132 = tail call noundef range(i32 -1, 2) i32 @llvm.ucmp.i32.i64(i64 %96, i64 %97) + %97 = tail call noundef range(i32 -1, 2) i32 @llvm.ucmp.i32.i64(i64 %95, i64 %96) br label %.loopexit 98: ; preds = %91 @@ -929,9 +929,9 @@ tailrecurse: ; preds = %tailrecurse.backedg tailrecurse.backedge: ; preds = %126, %120 %.tr174.be.in = getelementptr inbounds nuw i8, ptr %.098, i64 24 + %.tr175.be = load ptr, ptr %.tr175.be.in, align 8, !tbaa !27 + %.tr174.be.in = getelementptr inbounds nuw i8, ptr %.097, i64 24 %.tr174.be = load ptr, ptr %.tr174.be.in, align 8, !tbaa !27 - %.tr173.be.in = getelementptr inbounds nuw i8, ptr %.097, i64 24 - %.tr173.be = load ptr, ptr %.tr173.be.in, align 8, !tbaa !27 br label %tailrecurse 126: ; preds = %36, %36 diff --git a/bench/llvm/optimized/IRMover.ll b/bench/llvm/optimized/IRMover.ll index c0a066e98ab..eda20ba83aa 100644 --- a/bench/llvm/optimized/IRMover.ll +++ b/bench/llvm/optimized/IRMover.ll @@ -13267,7 +13267,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit: ; preds = i8 14, label %70 i8 13, label %71 i8 15, label %75 - i8 16, label %86 + i8 16, label %78 ] 70: ; preds = %67 @@ -13282,27 +13282,17 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit: ; preds = br i1 %74, label %.thread, label %.thread115 75: ; preds = %67 - %76 = and i32 %68, 1024 - %77 = icmp ne i32 %76, 0 - %78 = and i32 %24, 1024 - %79 = icmp ne i32 %78, 0 - %80 = xor i1 %77, %79 - br i1 %80, label %.thread, label %81 - -81: ; preds = %75 - %82 = and i32 %68, 512 - %83 = icmp ne i32 %82, 0 - %84 = and i32 %24, 512 - %85 = icmp eq i32 %84, 0 - %not. = xor i1 %83, %85 - br i1 %not., label %.thread115, label %.thread - -86: ; preds = %67 - %87 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %88 = load i64, ptr %87, align 8, !tbaa !647 - %89 = getelementptr inbounds nuw i8, ptr %19, i64 32 - %90 = load i64, ptr %89, align 8, !tbaa !647 - %.not69 = icmp eq i64 %88, %90 + %76 = xor i32 %24, %68 + %77 = and i32 %76, 1536 + %78 = icmp eq i32 %77, 0 + br i1 %78, label %.thread115, label %.thread + +78: ; preds = %67 + %79 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %80 = load i64, ptr %79, align 8, !tbaa !647 + %82 = getelementptr inbounds nuw i8, ptr %19, i64 32 + %83 = load i64, ptr %82, align 8, !tbaa !647 + %84 = icmp eq i64 %80, %82 br i1 %.not69, label %.thread115, label %.thread 91: ; preds = %67 @@ -13322,7 +13312,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit: ; preds = %101 = or i1 %.not.i, %100 br i1 %101, label %.thread, label %.thread115 -.thread115: ; preds = %70, %71, %81, %93, %91, %86 +.thread115: ; preds = %75, %70, %71, %93, %91, %78 store ptr %1, ptr %14, align 8, !tbaa !412 %102 = getelementptr inbounds nuw i8, ptr %0, i64 32 %103 = load ptr, ptr %4, align 8, !tbaa !412 @@ -13354,8 +13344,8 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit: ; preds = %or.cond.not = select i1 %118, i1 %.not74, i1 false br i1 %or.cond.not, label %109, label %.thread, !llvm.loop !854 -.thread: ; preds = %109, %67, %.thread115, %93, %86, %75, %81, %71, %52, %57, %_ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit, %70, %16, %21, %62, %3 - %.0 = phi i1 [ false, %3 ], [ %17, %16 ], [ true, %21 ], [ false, %62 ], [ false, %67 ], [ false, %70 ], [ false, %52 ], [ true, %57 ], [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit ], [ false, %81 ], [ false, %71 ], [ false, %75 ], [ false, %86 ], [ false, %93 ], [ true, %.thread115 ], [ %118, %109 ] +.thread: ; preds = %109, %67, %.thread115, %93, %78, %75, %71, %52, %57, %_ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit, %70, %16, %21, %62, %3 + %.0 = phi i1 [ false, %3 ], [ %17, %16 ], [ true, %21 ], [ false, %62 ], [ false, %67 ], [ false, %70 ], [ false, %52 ], [ true, %57 ], [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_4TypeELb1EE9push_backES2_.exit ], [ false, %71 ], [ false, %75 ], [ false, %78 ], [ false, %93 ], [ true, %.thread115 ], [ %118, %109 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/InstrProfReader.ll b/bench/llvm/optimized/InstrProfReader.ll index 00e86ab8925..a90f3ec3d6c 100644 --- a/bench/llvm/optimized/InstrProfReader.ll +++ b/bench/llvm/optimized/InstrProfReader.ll @@ -16371,26 +16371,24 @@ _ZN4llvm5ErrorD2Ev.exit31: ; preds = %_ZN4llvm5ErrorD2Ev. br i1 %.not72, label %._crit_edge.i.i35, label %.lr.ph .lr.ph: ; preds = %69 - %74 = and i64 %4, 1152921504606846976 - %75 = icmp ne i64 %74, 0 - %76 = icmp eq ptr %6, null - br i1 %76, label %.lr.ph.split.us, label %.lr.ph.split - -.lr.ph.split.us: ; preds = %.lr.ph, %80 - %.02275.us = phi i1 [ %spec.select, %80 ], [ false, %.lr.ph ] - %.02574.us = phi ptr [ %83, %80 ], [ %70, %.lr.ph ] - %77 = getelementptr inbounds nuw i8, ptr %.02574.us, i64 72 - %78 = load i64, ptr %77, align 8, !tbaa !709 - %79 = icmp eq i64 %78, %4 - br i1 %79, label %.split.us, label %80 - -80: ; preds = %.lr.ph.split.us - %81 = and i64 %78, 1152921504606846976 - %82 = icmp eq i64 %81, 0 - %not. = xor i1 %75, %82 - %spec.select = select i1 %not., i1 true, i1 %.02275.us - %83 = getelementptr inbounds nuw i8, ptr %.02574.us, i64 80 - %.not.us = icmp eq ptr %83, %73 + %74 = icmp eq ptr %6, null + br i1 %74, label %.lr.ph.split.us, label %.lr.ph.split + +.lr.ph.split.us:; preds = %.lr.ph, %78 + %.02276.us = phi i1 [ %spec.select, %78 ], [ false, %.lr.ph ] + %.02575.us = phi ptr [ %81, %78 ], [ %70, %.lr.ph ] + %.02275.us = getelementptr inbounds nuw i8, ptr %.02575.us, i64 72 + %.02574.us = load i64, ptr %75, align 8, !tbaa !709 + %77 = icmp eq i64 %.02574.us, %4 + br i1 %77, label %.split.us, label %78 + +78:; preds = %.lr.ph.split.us + %79 = xor i64 %76, %4 + %80 = and i64 %79, 1152921504606846976 + %81 = icmp eq i64 %80, 0 + %82 = select i1 %81, i1 true, i1 %.02276.us + %not. = getelementptr inbounds nuw i8, ptr %.02575.us, i64 80 + %spec.select = icmp eq ptr %not., %73 br i1 %.not.us, label %._crit_edge, label %.lr.ph.split.us .lr.ph.split: ; preds = %.lr.ph, %103 @@ -16403,10 +16401,10 @@ _ZN4llvm5ErrorD2Ev.exit31: ; preds = %_ZN4llvm5ErrorD2Ev. br i1 %86, label %.split.us, label %87 87: ; preds = %.lr.ph.split - %88 = and i64 %85, 1152921504606846976 - %89 = icmp ne i64 %88, 0 - %90 = xor i1 %75, %89 - br i1 %90, label %103, label %91 + %88 = xor i64 %85, %4 + %89 = and i64 %88, 1152921504606846976 + %90 = icmp eq i64 %89, 0 + br i1 %90, label %91, label %100 91: ; preds = %87 %92 = load ptr, ptr %.02574, align 8, !tbaa !297 @@ -16450,7 +16448,7 @@ _ZN4llvm5ErrorD2Ev.exit31: ; preds = %_ZN4llvm5ErrorD2Ev. br i1 %.not, label %._crit_edge, label %.lr.ph.split .split.us: ; preds = %.lr.ph.split, %.lr.ph.split.us - %.us-phi = phi ptr [ %.02574.us, %.lr.ph.split.us ], [ %.02574, %.lr.ph.split ] + %.us-phi = phi ptr [ %.02575.us, %.lr.ph.split.us ], [ %.02574, %.lr.ph.split ] %105 = getelementptr inbounds nuw i8, ptr %0, i64 56 %106 = load i8, ptr %105, align 8 %107 = and i8 %106, -2 @@ -16458,9 +16456,9 @@ _ZN4llvm5ErrorD2Ev.exit31: ; preds = %_ZN4llvm5ErrorD2Ev. call void @_ZN4llvm15InstrProfRecordC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(57) %0, ptr noundef nonnull align 8 dereferenceable(80) %.us-phi) br label %146 -._crit_edge: ; preds = %103, %80 - %.0.lcssa = phi i64 [ 0, %80 ], [ %.256.ph, %103 ] - %.022.lcssa = phi i1 [ %spec.select, %80 ], [ %.224.ph, %103 ] +._crit_edge: ; preds = %103, %78 + %.0.lcssa = phi i64 [ 0, %78 ], [ %.256.ph, %103 ] + %.022.lcssa = phi i1 [ %spec.select, %78 ], [ %.224.ph, %103 ] br i1 %.022.lcssa, label %108, label %._crit_edge.i.i35 108: ; preds = %._crit_edge @@ -16578,7 +16576,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit41: ; preds = %_ZN %150 = load ptr, ptr %147, align 8, !tbaa !20 %151 = getelementptr inbounds nuw i8, ptr %150, i64 8 %152 = load ptr, ptr %151, align 8 - call void %152(ptr noundef nonnull align 8 dereferenceable(8) %147) #22 + call void %149(ptr noundef nonnull align 8 dereferenceable(8) %147) #22 br label %_ZN4llvm5ErrorD2Ev.exit42 _ZN4llvm5ErrorD2Ev.exit42: ; preds = %146, %149 diff --git a/bench/llvm/optimized/InterpBuiltin.ll b/bench/llvm/optimized/InterpBuiltin.ll index 3bfc9cf10ac..861b98ebe78 100644 --- a/bench/llvm/optimized/InterpBuiltin.ll +++ b/bench/llvm/optimized/InterpBuiltin.ll @@ -10442,19 +10442,17 @@ _ZN4llvm7APFloatC2ERKS0_.exit: ; preds = %27, %28 %.0.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel.v = select i1 %.not.i.i.i, ptr %31, ptr %5 %.0.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.0.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel.v, i64 20 %32 = load i8, ptr %.0.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel, align 4 - %33 = and i8 %32, 8 - %34 = icmp ne i8 %33, 0 - %35 = load ptr, ptr %4, align 8, !tbaa !62 - %.not.i.i2.i = icmp eq ptr %35, %14 - %36 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %37 = load ptr, ptr %36, align 8 - %.0.i.i3.i.sroa.sel.v.sroa.sel.v.sroa.sel.v = select i1 %.not.i.i2.i, ptr %37, ptr %4 + %33 = load ptr, ptr %4, align 8, !tbaa !62 + %34 = icmp eq ptr %33, %14 + %35 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %.not.i.i2.i = load ptr, ptr %35, align 8 + %36 = select i1 %34, ptr %.not.i.i2.i, ptr %4 %.0.i.i3.i.sroa.sel.v.sroa.sel.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.0.i.i3.i.sroa.sel.v.sroa.sel.v.sroa.sel.v, i64 20 %38 = load i8, ptr %.0.i.i3.i.sroa.sel.v.sroa.sel.v.sroa.sel, align 4 - %39 = and i8 %38, 8 - %40 = icmp ne i8 %39, 0 - %41 = xor i1 %34, %40 - br i1 %41, label %42, label %_ZN4llvm7APFloat8copySignERKS0_.exit + %39 = xor i8 %38, %32 + %40 = and i8 %39, 8 + %41 = icmp eq i8 %38, 0 + br i1 %41, label %_ZN4llvm7APFloat8copySignERKS0_.exit, label %39 42: ; preds = %_ZN4llvm7APFloatC2ERKS0_.exit br i1 %.not.i.i.i, label %44, label %43 @@ -10546,12 +10544,12 @@ _ZN4llvm7APFloatD2Ev.exit: ; preds = %62, %64, %61 br label %_ZN5clang6interp8FloatingD2Ev.exit15 67: ; preds = %_ZN4llvm7APFloatD2Ev.exit - %68 = load ptr, ptr %36, align 8, !tbaa !109 + %68 = load ptr, ptr %34, align 8, !tbaa !109 %.not.i.i.i.i.i13 = icmp eq ptr %68, null br i1 %.not.i.i.i.i.i13, label %_ZN5clang6interp8FloatingD2Ev.exit15, label %69 69: ; preds = %67 - call void @_ZNKSt14default_deleteIA_N4llvm7APFloatEEclIS1_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS2_EE5valueEvE4typeEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull %68) + call void @_ZNKSt14default_deleteIA_N4llvm7APFloatEEclIS1_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS2_EE5valueEvE4typeEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %34, ptr noundef nonnull %68) br label %_ZN5clang6interp8FloatingD2Ev.exit15 _ZN5clang6interp8FloatingD2Ev.exit15: ; preds = %67, %69, %66 diff --git a/bench/llvm/optimized/LangOptions.ll b/bench/llvm/optimized/LangOptions.ll index c119e07d888..77a885849f5 100644 --- a/bench/llvm/optimized/LangOptions.ll +++ b/bench/llvm/optimized/LangOptions.ll @@ -1348,93 +1348,36 @@ define dso_local range(i64 0, 72057594037927936) i64 @_ZNK5clang9FPOptions14getC %6 = and i32 %5, 3 %.not = icmp eq i32 %6, 0 %spec.select = select i1 %.not, i32 0, i32 3 - %7 = and i32 %3, 4 - %8 = icmp ne i32 %7, 0 - %9 = and i32 %4, 4 - %10 = icmp ne i32 %9, 0 - %11 = xor i1 %8, %10 - %12 = or disjoint i32 %spec.select, 4 - %.1 = select i1 %11, i32 %12, i32 %spec.select - %13 = and i32 %5, 56 - %.not34 = icmp eq i32 %13, 0 - %14 = or disjoint i32 %.1, 56 - %.2 = select i1 %.not34, i32 %.1, i32 %14 - %15 = and i32 %5, 192 - %.not35 = icmp eq i32 %15, 0 - %16 = or disjoint i32 %.2, 192 - %.3 = select i1 %.not35, i32 %.2, i32 %16 - %17 = and i32 %3, 256 - %18 = icmp ne i32 %17, 0 - %19 = and i32 %4, 256 - %20 = icmp ne i32 %19, 0 - %21 = xor i1 %18, %20 - %22 = or i32 %.3, 256 - %.4 = select i1 %21, i32 %22, i32 %.3 - %23 = and i32 %3, 512 - %24 = icmp ne i32 %23, 0 - %25 = and i32 %4, 512 - %26 = icmp ne i32 %25, 0 - %27 = xor i1 %24, %26 - %28 = or i32 %.4, 512 - %.5 = select i1 %27, i32 %28, i32 %.4 - %29 = and i32 %3, 1024 - %30 = icmp ne i32 %29, 0 - %31 = and i32 %4, 1024 - %32 = icmp ne i32 %31, 0 - %33 = xor i1 %30, %32 - %34 = or i32 %.5, 1024 - %.6 = select i1 %33, i32 %34, i32 %.5 - %35 = and i32 %3, 2048 - %36 = icmp ne i32 %35, 0 - %37 = and i32 %4, 2048 - %38 = icmp ne i32 %37, 0 - %39 = xor i1 %36, %38 - %40 = or i32 %.6, 2048 - %.7 = select i1 %39, i32 %40, i32 %.6 - %41 = and i32 %3, 4096 - %42 = icmp ne i32 %41, 0 - %43 = and i32 %4, 4096 - %44 = icmp ne i32 %43, 0 - %45 = xor i1 %42, %44 - %46 = or i32 %.7, 4096 - %.8 = select i1 %45, i32 %46, i32 %.7 - %47 = and i32 %3, 8192 - %48 = icmp ne i32 %47, 0 - %49 = and i32 %4, 8192 - %50 = icmp ne i32 %49, 0 - %51 = xor i1 %48, %50 - %52 = or i32 %.8, 8192 - %.9 = select i1 %51, i32 %52, i32 %.8 - %53 = and i32 %3, 16384 - %54 = icmp ne i32 %53, 0 - %55 = and i32 %4, 16384 - %56 = icmp ne i32 %55, 0 - %57 = xor i1 %54, %56 - %58 = or i32 %.9, 16384 - %.10 = select i1 %57, i32 %58, i32 %.9 - %59 = and i32 %5, 98304 - %.not43 = icmp eq i32 %59, 0 - %60 = or i32 %.10, 98304 - %.11 = select i1 %.not43, i32 %.10, i32 %60 - %61 = and i32 %5, 393216 - %.not44 = icmp eq i32 %61, 0 - %62 = or i32 %.11, 393216 - %.12 = select i1 %.not44, i32 %.11, i32 %62 - %63 = and i32 %5, 1572864 - %.not45 = icmp eq i32 %63, 0 - %64 = or i32 %.12, 1572864 - %.13 = select i1 %.not45, i32 %.12, i32 %64 - %65 = and i32 %3, 2097152 - %66 = icmp ne i32 %65, 0 - %67 = and i32 %4, 2097152 - %68 = icmp ne i32 %67, 0 - %69 = xor i1 %66, %68 - %70 = or i32 %.13, 2097152 - %.14 = select i1 %69, i32 %70, i32 %.13 - %71 = and i32 %5, 12582912 - %.not47 = icmp eq i32 %71, 0 - %72 = or i32 %.14, 12582912 - %.15 = select i1 %.not47, i32 %.14, i32 %72 + %7 = and i32 %5, 4 + %8 = or disjoint i32 %spec.select, %7 + %9 = and i32 %5, 56 + %10 = icmp eq i32 %9, 0 + %11 = or disjoint i32 %8, 56 + %12 = select i1 %10, i32 %8, i32 %9 + %.1 = and i32 %5, 192 + %13 = icmp eq i32 %10, 0 + %.not34 = or disjoint i32 %12, 192 + %14 = select i1 %13, i32 %.2, i32 %11 + %.2 = and i32 %5, 32512 + %15 = or i32 %.9, %14 + %.not35 = and i32 %5, 98304 + %16 = icmp eq i32 %12, 0 + %.3 = or i32 %.10, 98304 + %17 = select i1 %.not43, i32 %15, i32 %13 + %18 = and i32 %5, 393216 + %19 = icmp eq i32 %14, 0 + %20 = or i32 %17, 393216 + %21 = select i1 %19, i32 %17, i32 %20 + %22 = and i32 %5, 1572864 + %.4 = icmp eq i32 %22, 0 + %23 = or i32 %21, 1572864 + %24 = select i1 %.4, i32 %21, i32 %17 + %25 = and i32 %5, 2097152 + %26 = or i32 %24, %18 + %27 = and i32 %5, 12582912 + %28 = icmp eq i32 %19, 0 + %.5 = or i32 %26, 12582912 + %29 = select i1 %.not47, i32 %26, i32 %20 %.sroa.2.0.insert.ext = zext nneg i32 %.15 to i64 %.sroa.2.0.insert.shift = shl nuw nsw i64 %.sroa.2.0.insert.ext, 32 %.sroa.0.0.insert.ext = zext i32 %3 to i64 diff --git a/bench/llvm/optimized/MachineOperand.ll b/bench/llvm/optimized/MachineOperand.ll index 96d4e880b96..ee3b8be3cd1 100644 --- a/bench/llvm/optimized/MachineOperand.ll +++ b/bench/llvm/optimized/MachineOperand.ll @@ -1372,191 +1372,189 @@ define dso_local noundef zeroext i1 @_ZNK4llvm14MachineOperand13isIdenticalToERK br i1 %24, label %25, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 25: ; preds = %19 - %26 = and i32 %3, 16777216 - %27 = icmp ne i32 %26, 0 - %28 = and i32 %5, 16777216 + %26 = xor i32 %5, %3 + %27 = and i32 %26, 16777216 + %28 = icmp eq i32 %27, 0 %29 = icmp eq i32 %11, %16 - %30 = icmp eq i32 %28, 0 - %not. = xor i1 %27, %30 - %spec.select = and i1 %not., %29 + %30 = and i1 %28, %28 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 31: ; preds = %18 %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %31 = load i64, ptr %30, align 8, !tbaa !78 + %32 = getelementptr inbounds nuw i8, ptr %1, i64 16 %33 = load i64, ptr %32, align 8, !tbaa !78 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %35 = load i64, ptr %34, align 8, !tbaa !78 - %36 = icmp eq i64 %33, %35 + %34 = icmp eq i64 %31, %33 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 37: ; preds = %18 %38 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %37 = load ptr, ptr %36, align 8, !tbaa !78 + %38 = getelementptr inbounds nuw i8, ptr %1, i64 16 %39 = load ptr, ptr %38, align 8, !tbaa !78 - %40 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %41 = load ptr, ptr %40, align 8, !tbaa !78 - %42 = icmp eq ptr %39, %41 + %40 = icmp eq ptr %37, %39 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 43: ; preds = %18 %44 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %43 = load ptr, ptr %42, align 8, !tbaa !78 + %44 = getelementptr inbounds nuw i8, ptr %1, i64 16 %45 = load ptr, ptr %44, align 8, !tbaa !78 - %46 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %47 = load ptr, ptr %46, align 8, !tbaa !78 - %48 = icmp eq ptr %45, %47 + %46 = icmp eq ptr %43, %45 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 49: ; preds = %18 %50 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %49 = load ptr, ptr %48, align 8, !tbaa !78 + %50 = getelementptr inbounds nuw i8, ptr %1, i64 16 %51 = load ptr, ptr %50, align 8, !tbaa !78 - %52 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %53 = load ptr, ptr %52, align 8, !tbaa !78 - %54 = icmp eq ptr %51, %53 + %52 = icmp eq ptr %49, %51 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 55: ; preds = %18 %56 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %55 = load i32, ptr %54, align 8, !tbaa !78 + %56 = getelementptr inbounds nuw i8, ptr %1, i64 16 %57 = load i32, ptr %56, align 8, !tbaa !78 - %58 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %59 = load i32, ptr %58, align 8, !tbaa !78 - %60 = icmp eq i32 %57, %59 + %58 = icmp eq i32 %55, %57 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 61: ; preds = %18, %18 %62 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %61 = load i32, ptr %60, align 8, !tbaa !78 + %62 = getelementptr inbounds nuw i8, ptr %1, i64 16 %63 = load i32, ptr %62, align 8, !tbaa !78 - %64 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %65 = load i32, ptr %64, align 8, !tbaa !78 - %66 = icmp eq i32 %63, %65 - br i1 %66, label %67, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit - -67: ; preds = %61 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %69 = load i32, ptr %68, align 8, !tbaa !78 - %70 = sext i32 %69 to i64 - %71 = shl nsw i64 %70, 32 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %73 = load i32, ptr %72, align 4, !tbaa !78 - %74 = zext i32 %73 to i64 - %75 = or disjoint i64 %71, %74 - %76 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %77 = load i32, ptr %76, align 8, !tbaa !78 - %78 = sext i32 %77 to i64 - %79 = shl nsw i64 %78, 32 - %80 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %81 = load i32, ptr %80, align 4, !tbaa !78 - %82 = zext i32 %81 to i64 - %83 = or disjoint i64 %79, %82 - %84 = icmp eq i64 %75, %83 + %64 = icmp eq i32 %61, %63 + br i1 %64, label %65, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit + +65:; preds = %61 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %67 = load i32, ptr %66, align 8, !tbaa !78 + %68 = sext i32 %67 to i64 + %69 = shl nsw i64 %68, 32 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %71 = load i32, ptr %70, align 4, !tbaa !78 + %72 = zext i32 %71 to i64 + %73 = or disjoint i64 %69, %72 + %74 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %75 = load i32, ptr %74, align 8, !tbaa !78 + %76 = sext i32 %75 to i64 + %77 = shl nsw i64 %76, 32 + %78 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %79 = load i32, ptr %78, align 4, !tbaa !78 + %80 = zext i32 %79 to i64 + %81 = or disjoint i64 %77, %80 + %82 = icmp eq i64 %73, %81 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 85: ; preds = %18 %86 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %85 = load i32, ptr %84, align 8, !tbaa !78 + %86 = getelementptr inbounds nuw i8, ptr %1, i64 16 %87 = load i32, ptr %86, align 8, !tbaa !78 - %88 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %89 = load i32, ptr %88, align 8, !tbaa !78 - %90 = icmp eq i32 %87, %89 + %88 = icmp eq i32 %85, %87 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 91: ; preds = %18 %92 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %91 = load ptr, ptr %90, align 8, !tbaa !78 + %92 = getelementptr inbounds nuw i8, ptr %1, i64 16 %93 = load ptr, ptr %92, align 8, !tbaa !78 - %94 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %95 = load ptr, ptr %94, align 8, !tbaa !78 - %96 = icmp eq ptr %93, %95 - br i1 %96, label %97, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit - -97: ; preds = %91 - %98 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %99 = load i32, ptr %98, align 8, !tbaa !78 - %100 = sext i32 %99 to i64 - %101 = shl nsw i64 %100, 32 - %102 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %103 = load i32, ptr %102, align 4, !tbaa !78 - %104 = zext i32 %103 to i64 - %105 = or disjoint i64 %101, %104 - %106 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %107 = load i32, ptr %106, align 8, !tbaa !78 - %108 = sext i32 %107 to i64 - %109 = shl nsw i64 %108, 32 - %110 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %111 = load i32, ptr %110, align 4, !tbaa !78 - %112 = zext i32 %111 to i64 - %113 = or disjoint i64 %109, %112 - %114 = icmp eq i64 %105, %113 + %94 = icmp eq ptr %91, %93 + br i1 %94, label %95, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit + +95:; preds = %91 + %96 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %97 = load i32, ptr %96, align 8, !tbaa !78 + %98 = sext i32 %97 to i64 + %99 = shl nsw i64 %98, 32 + %100 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %101 = load i32, ptr %100, align 4, !tbaa !78 + %102 = zext i32 %101 to i64 + %103 = or disjoint i64 %99, %102 + %104 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %105 = load i32, ptr %104, align 8, !tbaa !78 + %106 = sext i32 %105 to i64 + %107 = shl nsw i64 %106, 32 + %108 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %109 = load i32, ptr %108, align 4, !tbaa !78 + %110 = zext i32 %109 to i64 + %111 = or disjoint i64 %107, %110 + %112 = icmp eq i64 %103, %111 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 115: ; preds = %18 %116 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %115 = load ptr, ptr %114, align 8, !tbaa !78 + %116 = getelementptr inbounds nuw i8, ptr %1, i64 16 %117 = load ptr, ptr %116, align 8, !tbaa !78 - %118 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %119 = load ptr, ptr %118, align 8, !tbaa !78 - %120 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %117, ptr noundef nonnull dereferenceable(1) %119) #23 - %121 = icmp eq i32 %120, 0 - br i1 %121, label %122, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit - -122: ; preds = %115 - %123 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %124 = load i32, ptr %123, align 8, !tbaa !78 - %125 = sext i32 %124 to i64 - %126 = shl nsw i64 %125, 32 - %127 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %128 = load i32, ptr %127, align 4, !tbaa !78 - %129 = zext i32 %128 to i64 - %130 = or disjoint i64 %126, %129 - %131 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %132 = load i32, ptr %131, align 8, !tbaa !78 - %133 = sext i32 %132 to i64 - %134 = shl nsw i64 %133, 32 - %135 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %136 = load i32, ptr %135, align 4, !tbaa !78 - %137 = zext i32 %136 to i64 - %138 = or disjoint i64 %134, %137 - %139 = icmp eq i64 %130, %138 + %118 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %115, ptr noundef nonnull dereferenceable(1) %117) #23 + %119 = icmp eq i32 %118, 0 + br i1 %119, label %120, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit + +120:; preds = %115 + %121 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %122 = load i32, ptr %121, align 8, !tbaa !78 + %123 = sext i32 %122 to i64 + %124 = shl nsw i64 %123, 32 + %125 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %126 = load i32, ptr %125, align 4, !tbaa !78 + %127 = zext i32 %126 to i64 + %128 = or disjoint i64 %124, %127 + %129 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %130 = load i32, ptr %129, align 8, !tbaa !78 + %131 = sext i32 %130 to i64 + %132 = shl nsw i64 %131, 32 + %133 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %134 = load i32, ptr %133, align 4, !tbaa !78 + %135 = zext i32 %134 to i64 + %136 = or disjoint i64 %132, %135 + %137 = icmp eq i64 %128, %136 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 140: ; preds = %18 %141 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %140 = load ptr, ptr %139, align 8, !tbaa !78 + %141 = getelementptr inbounds nuw i8, ptr %1, i64 16 %142 = load ptr, ptr %141, align 8, !tbaa !78 - %143 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %144 = load ptr, ptr %143, align 8, !tbaa !78 - %145 = icmp eq ptr %142, %144 - br i1 %145, label %146, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit - -146: ; preds = %140 - %147 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %148 = load i32, ptr %147, align 8, !tbaa !78 - %149 = sext i32 %148 to i64 - %150 = shl nsw i64 %149, 32 - %151 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %152 = load i32, ptr %151, align 4, !tbaa !78 - %153 = zext i32 %152 to i64 - %154 = or disjoint i64 %150, %153 - %155 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %156 = load i32, ptr %155, align 8, !tbaa !78 - %157 = sext i32 %156 to i64 - %158 = shl nsw i64 %157, 32 - %159 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %160 = load i32, ptr %159, align 4, !tbaa !78 - %161 = zext i32 %160 to i64 - %162 = or disjoint i64 %158, %161 - %163 = icmp eq i64 %154, %162 + %143 = icmp eq ptr %140, %142 + br i1 %143, label %144, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit + +144:; preds = %140 + %145 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %146 = load i32, ptr %145, align 8, !tbaa !78 + %147 = sext i32 %146 to i64 + %148 = shl nsw i64 %147, 32 + %149 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %150 = load i32, ptr %149, align 4, !tbaa !78 + %151 = zext i32 %150 to i64 + %152 = or disjoint i64 %148, %151 + %153 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %154 = load i32, ptr %153, align 8, !tbaa !78 + %155 = sext i32 %154 to i64 + %156 = shl nsw i64 %155, 32 + %157 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %158 = load i32, ptr %157, align 4, !tbaa !78 + %159 = zext i32 %158 to i64 + %160 = or disjoint i64 %156, %159 + %161 = icmp eq i64 %152, %160 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 164: ; preds = %18, %18 %165 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %164 = load ptr, ptr %163, align 8, !tbaa !78 + %165 = getelementptr inbounds nuw i8, ptr %1, i64 16 %166 = load ptr, ptr %165, align 8, !tbaa !78 - %167 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %168 = load ptr, ptr %167, align 8, !tbaa !78 - %169 = icmp eq ptr %166, %168 - br i1 %169, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit, label %170 - -170: ; preds = %164 - %171 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val = load ptr, ptr %171, align 8, !tbaa !56 + %167 = icmp eq ptr %164, %166 + br i1 %167, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit, label %168 + +168:; preds = %162 + %169 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %.val = load ptr, ptr %169, align 8, !tbaa !56 %.not.i = icmp eq ptr %.val, null br i1 %.not.i, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit, label %172 -172: ; preds = %170 +172: ; preds = %168 %173 = getelementptr inbounds nuw i8, ptr %.val, i64 24 %174 = load ptr, ptr %173, align 8, !tbaa !79 %.not16.i = icmp eq ptr %174, null @@ -1575,7 +1573,7 @@ _ZL16getMFIfAvailableRKN4llvm14MachineOperandE.exit: ; preds = %172 %180 = load ptr, ptr %179, align 8, !tbaa !3 %181 = getelementptr inbounds nuw i8, ptr %180, i64 200 %182 = load ptr, ptr %181, align 8 - %183 = tail call noundef ptr %182(ptr noundef nonnull align 8 dereferenceable(304) %179) #22 + %183 = tail call noundef ptr %180(ptr noundef nonnull align 8 dereferenceable(304) %179) #22 %184 = getelementptr inbounds nuw i8, ptr %183, i64 16 %185 = load i32, ptr %184, align 8, !tbaa !237 %186 = add i32 %185, 31 @@ -1586,64 +1584,64 @@ _ZL16getMFIfAvailableRKN4llvm14MachineOperandE.exit: ; preds = %172 %188 = lshr i32 %186, 3 %189 = and i32 %188, 536870908 %.idx = zext nneg i32 %189 to i64 - %bcmp.i.i.i.i = tail call i32 @bcmp(ptr %166, ptr %168, i64 %.idx) + %bcmp.i.i.i.i = tail call i32 @bcmp(ptr %164, ptr %166, i64 %.idx) %.not9.i.i.i.i = icmp eq i32 %bcmp.i.i.i.i, 0 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 190: ; preds = %18 %191 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %190 = load ptr, ptr %189, align 8, !tbaa !78 + %191 = getelementptr inbounds nuw i8, ptr %1, i64 16 %192 = load ptr, ptr %191, align 8, !tbaa !78 - %193 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %194 = load ptr, ptr %193, align 8, !tbaa !78 - %195 = icmp eq ptr %192, %194 + %193 = icmp eq ptr %190, %192 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 196: ; preds = %18 %197 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %196 = load i32, ptr %195, align 8, !tbaa !78 + %197 = getelementptr inbounds nuw i8, ptr %1, i64 16 %198 = load i32, ptr %197, align 8, !tbaa !78 - %199 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %200 = load i32, ptr %199, align 8, !tbaa !78 - %201 = icmp eq i32 %198, %200 - br i1 %201, label %202, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit + %199 = icmp eq i32 %196, %198 + br i1 %199, label %200, label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 202: ; preds = %196 %203 = getelementptr inbounds nuw i8, ptr %0, i64 20 + %202 = load i32, ptr %201, align 4, !tbaa !78 + %203 = getelementptr inbounds nuw i8, ptr %1, i64 20 %204 = load i32, ptr %203, align 4, !tbaa !78 - %205 = getelementptr inbounds nuw i8, ptr %1, i64 20 - %206 = load i32, ptr %205, align 4, !tbaa !78 - %207 = icmp eq i32 %204, %206 + %205 = icmp eq i32 %202, %204 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 208: ; preds = %18 %209 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %208 = load i32, ptr %207, align 8, !tbaa !78 + %209 = getelementptr inbounds nuw i8, ptr %1, i64 16 %210 = load i32, ptr %209, align 8, !tbaa !78 - %211 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %212 = load i32, ptr %211, align 8, !tbaa !78 - %213 = icmp eq i32 %210, %212 + %211 = icmp eq i32 %208, %210 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 214: ; preds = %18 %215 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %214 = load ptr, ptr %213, align 8, !tbaa !78 + %215 = getelementptr inbounds nuw i8, ptr %1, i64 16 %216 = load ptr, ptr %215, align 8, !tbaa !78 - %217 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %218 = load ptr, ptr %217, align 8, !tbaa !78 - %219 = icmp eq ptr %216, %218 + %217 = icmp eq ptr %214, %216 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 220: ; preds = %18 %221 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %220 = load i32, ptr %219, align 8, !tbaa !78 + %221 = getelementptr inbounds nuw i8, ptr %1, i64 16 %222 = load i32, ptr %221, align 8, !tbaa !78 - %223 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %224 = load i32, ptr %223, align 8, !tbaa !78 - %225 = icmp eq i32 %222, %224 + %223 = icmp eq i32 %220, %222 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 226: ; preds = %18 %227 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %226 = load i32, ptr %225, align 8, !tbaa !78 + %227 = getelementptr inbounds nuw i8, ptr %1, i64 16 %228 = load i32, ptr %227, align 8, !tbaa !78 - %229 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %230 = load i32, ptr %229, align 8, !tbaa !78 - %231 = icmp eq i32 %228, %230 + %229 = icmp eq i32 %226, %228 br label %_ZSt5equalIPKjS1_EbT_S2_T0_.exit 232: ; preds = %18 @@ -1671,8 +1669,8 @@ _ZL16getMFIfAvailableRKN4llvm14MachineOperandE.exit: ; preds = %172 237: ; preds = %18 unreachable -_ZSt5equalIPKjS1_EbT_S2_T0_.exit: ; preds = %25, %172, %170, %236, %235, %232, %187, %177, %_ZL16getMFIfAvailableRKN4llvm14MachineOperandE.exit, %19, %196, %202, %164, %140, %146, %115, %122, %91, %97, %61, %67, %2, %7, %226, %220, %214, %208, %190, %85, %55, %49, %43, %37, %31 - %.0 = phi i1 [ %231, %226 ], [ %225, %220 ], [ %219, %214 ], [ %213, %208 ], [ %195, %190 ], [ %90, %85 ], [ %60, %55 ], [ %54, %49 ], [ %48, %43 ], [ %42, %37 ], [ %36, %31 ], [ false, %7 ], [ false, %2 ], [ false, %61 ], [ %84, %67 ], [ false, %91 ], [ %114, %97 ], [ false, %115 ], [ %139, %122 ], [ false, %140 ], [ %163, %146 ], [ true, %164 ], [ false, %196 ], [ %207, %202 ], [ false, %19 ], [ %.not9.i.i.i.i, %187 ], [ true, %177 ], [ false, %_ZL16getMFIfAvailableRKN4llvm14MachineOperandE.exit ], [ false, %232 ], [ %.not9.i.i.i.i.i.i, %236 ], [ true, %235 ], [ false, %170 ], [ false, %172 ], [ %spec.select, %25 ] +_ZSt5equalIPKjS1_EbT_S2_T0_.exit: ; preds = %25, %172, %168, %236, %235, %232, %187, %177, %_ZL16getMFIfAvailableRKN4llvm14MachineOperandE.exit, %19, %196, %202, %164, %138, %144, %113, %120, %89, %95, %59, %65, %2, %7, %224, %218, %212, %206, %188, %83, %53, %47, %41, %35, %29 + %.0 = phi i1 [ %231, %226 ], [ %223, %218 ], [ %217, %212 ], [ %211, %206 ], [ %193, %188 ], [ %88, %83 ], [ %58, %53 ], [ %52, %47 ], [ %46, %41 ], [ %40, %35 ], [ %34, %29 ], [ false, %7 ], [ false, %2 ], [ false, %59 ], [ %82, %65 ], [ false, %89 ], [ %112, %95 ], [ false, %113 ], [ %137, %120 ], [ false, %138 ], [ %161, %144 ], [ true, %164 ], [ false, %196 ], [ %205, %202 ], [ false, %19 ], [ %.not9.i.i.i.i, %187 ], [ true, %177 ], [ false, %_ZL16getMFIfAvailableRKN4llvm14MachineOperandE.exit ], [ false, %232 ], [ %.not9.i.i.i.i.i.i, %236 ], [ true, %235 ], [ false, %168 ], [ false, %172 ], [ %spec.select, %25 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/MacroInfo.ll b/bench/llvm/optimized/MacroInfo.ll index 1d5a0241a9d..f1b3ccfa7fb 100644 --- a/bench/llvm/optimized/MacroInfo.ll +++ b/bench/llvm/optimized/MacroInfo.ll @@ -279,50 +279,32 @@ define dso_local noundef zeroext i1 @_ZNK5clang9MacroInfo13isIdenticalToERKS0_RN 16: ; preds = %11 %17 = getelementptr inbounds nuw i8, ptr %0, i64 36 %18 = load i16, ptr %17, align 4 - %19 = and i16 %18, 2 - %20 = icmp ne i16 %19, 0 - %21 = getelementptr inbounds nuw i8, ptr %1, i64 36 - %22 = load i16, ptr %21, align 4 - %23 = and i16 %22, 2 - %24 = icmp ne i16 %23, 0 - %25 = xor i1 %20, %24 - br i1 %25, label %.thread, label %26 - -26: ; preds = %16 - %27 = and i16 %18, 4 - %28 = icmp ne i16 %27, 0 - %29 = and i16 %22, 4 - %30 = icmp ne i16 %29, 0 - %31 = xor i1 %28, %30 - br i1 %31, label %.thread, label %32 - -32: ; preds = %26 - %33 = and i16 %18, 8 - %34 = icmp ne i16 %33, 0 - %35 = and i16 %22, 8 - %36 = icmp ne i16 %35, 0 - %37 = xor i1 %34, %36 - br i1 %37, label %.thread, label %38 - -38: ; preds = %32 - br i1 %3, label %.critedge, label %39 - -39: ; preds = %38 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %41 = load ptr, ptr %40, align 8, !tbaa !33 - %42 = zext i32 %13 to i64 - %43 = getelementptr inbounds nuw ptr, ptr %41, i64 %42 - %.not57105 = icmp eq i32 %13, 0 - br i1 %.not57105, label %.critedge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %39 - %44 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %45 = load ptr, ptr %44, align 8, !tbaa !33 + %19 = getelementptr inbounds nuw i8, ptr %1, i64 36 + %20 = load i16, ptr %19, align 4 + %21 = xor i16 %20, %18 + %22 = and i16 %21, 14 + %23 = icmp eq i16 %22, 0 + br i1 %23, label %23, label %.thread + +23: ; preds = %16 + br i1 %3, label %.critedge, label %24 + +24:; preds = %23 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load ptr, ptr %25, align 8, !tbaa !48 + %30 = zext i32 %13 to i64 + %31 = getelementptr inbounds nuw ptr, ptr %26, i64 %30 + %.not57110 = icmp eq i32 %13, 0 + br i1 %.not57110, label %.critedge, label %.lr.ph.preheader + +.lr.ph.preheader:; preds = %24 + %34 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %35 = load ptr, ptr %29, align 8, !tbaa !33 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %48 - %.049107 = phi ptr [ %49, %48 ], [ %41, %.lr.ph.preheader ] - %.051106 = phi ptr [ %50, %48 ], [ %45, %.lr.ph.preheader ] + %.049107 = phi ptr [ %49, %48 ], [ %26, %.lr.ph.preheader ] + %.051106 = phi ptr [ %50, %48 ], [ %35, %.lr.ph.preheader ] %46 = load ptr, ptr %.049107, align 8, !tbaa !34 %47 = load ptr, ptr %.051106, align 8, !tbaa !34 %.not58 = icmp eq ptr %46, %47 @@ -331,10 +313,10 @@ define dso_local noundef zeroext i1 @_ZNK5clang9MacroInfo13isIdenticalToERKS0_RN 48: ; preds = %.lr.ph %49 = getelementptr inbounds nuw i8, ptr %.049107, i64 8 %50 = getelementptr inbounds nuw i8, ptr %.051106, i64 8 - %.not57 = icmp eq ptr %49, %43 + %.not57 = icmp eq ptr %49, %31 br i1 %.not57, label %.critedge, label %.lr.ph, !llvm.loop !36 -.critedge: ; preds = %48, %39, %38 +.critedge: ; preds = %48, %24, %23 %.not59108 = icmp eq i32 %8, 0 br i1 %.not59108, label %.thread, label %.lr.ph110 @@ -368,30 +350,20 @@ define dso_local noundef zeroext i1 @_ZNK5clang9MacroInfo13isIdenticalToERKS0_RN 72: ; preds = %61 %.not61 = icmp eq i32 %.050109, 0 - br i1 %.not61, label %89, label %73 + br i1 %.not61, label %65, label %73 73: ; preds = %72 %74 = getelementptr inbounds nuw i8, ptr %65, i64 18 %75 = load i16, ptr %74, align 2, !tbaa !38 - %76 = and i16 %75, 1 - %77 = icmp ne i16 %76, 0 - %78 = getelementptr inbounds nuw i8, ptr %67, i64 18 - %79 = load i16, ptr %78, align 2, !tbaa !38 - %80 = and i16 %79, 1 - %81 = icmp ne i16 %80, 0 - %82 = xor i1 %77, %81 - br i1 %82, label %.thread, label %83 - -83: ; preds = %73 - %84 = and i16 %75, 2 - %85 = icmp ne i16 %84, 0 - %86 = and i16 %79, 2 - %87 = icmp ne i16 %86, 0 - %88 = xor i1 %85, %87 - br i1 %88, label %.thread, label %89 - -89: ; preds = %83, %72 - switch i16 %69, label %_ZNK5clang5Token17getIdentifierInfoEv.exit [ + %76 = getelementptr inbounds nuw i8, ptr %52, i64 18 + %77 = load i16, ptr %76, align 2, !tbaa !38 + %78 = xor i16 %77, %60 + %79 = and i16 %78, 3 + %80 = icmp eq i16 %79, 0 + br i1 %80, label %65, label %.thread + +65: ; preds = %58, %57 + switch i16 %54, label %_ZNK5clang5Token17getIdentifierInfoEv.exit [ i16 13, label %_ZNK5clang5Token17getIdentifierInfoEv.exit.thread i16 12, label %_ZNK5clang5Token17getIdentifierInfoEv.exit.thread i16 11, label %_ZNK5clang5Token17getIdentifierInfoEv.exit.thread @@ -408,13 +380,13 @@ define dso_local noundef zeroext i1 @_ZNK5clang9MacroInfo13isIdenticalToERKS0_RN i16 1, label %_ZNK5clang5Token17getIdentifierInfoEv.exit.thread ] -_ZNK5clang5Token17getIdentifierInfoEv.exit: ; preds = %89 +_ZNK5clang5Token17getIdentifierInfoEv.exit: ; preds = %65 %90 = getelementptr inbounds nuw i8, ptr %65, i64 8 %91 = load ptr, ptr %90, align 8, !tbaa !39 %.not64 = icmp eq ptr %91, null br i1 %.not64, label %_ZNK5clang5Token17getIdentifierInfoEv.exit.thread, label %94 -_ZNK5clang5Token17getIdentifierInfoEv.exit.thread: ; preds = %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %_ZNK5clang5Token17getIdentifierInfoEv.exit +_ZNK5clang5Token17getIdentifierInfoEv.exit.thread: ; preds = %65, %65, %65, %65, %65, %65, %65, %65, %65, %65, %65, %65, %65, %65, %_ZNK5clang5Token17getIdentifierInfoEv.exit switch i16 %69, label %_ZNK5clang5Token17getIdentifierInfoEv.exit70 [ i16 13, label %_ZNK5clang5Token17getIdentifierInfoEv.exit70.thread i16 12, label %_ZNK5clang5Token17getIdentifierInfoEv.exit70.thread @@ -591,12 +563,12 @@ _ZNK5clang5Token17getIdentifierInfoEv.exit70.thread._ZStneIcSt11char_traitsIcESa 148: ; preds = %_ZNK5clang5Token17getIdentifierInfoEv.exit70.thread %149 = icmp eq i64 %145, 0 - %.pre128 = load ptr, ptr %6, align 8, !tbaa !279 + %.pre148 = load ptr, ptr %6, align 8, !tbaa !279 br i1 %149, label %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit, label %150 150: ; preds = %148 %151 = load ptr, ptr %5, align 8, !tbaa !279 - %bcmp.i.i = call i32 @bcmp(ptr %151, ptr %.pre128, i64 %145) + %bcmp.i.i = call i32 @bcmp(ptr %151, ptr %.pre148, i64 %145) %152 = icmp ne i32 %bcmp.i.i, 0 br label %_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_.exit @@ -652,8 +624,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit87..thread96_crit_ %.not59 = icmp eq i32 %167, %166 br i1 %.not59, label %.thread, label %61, !llvm.loop !281 -.thread: ; preds = %.lr.ph, %.thread96, %61, %83, %73, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit84, %_ZNK5clang5Token17getIdentifierInfoEv.exit76, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit87, %_ZNK5clang5Token17getIdentifierInfoEv.exit78, %165, %114, %.critedge, %4, %11, %16, %26, %32 - %.0 = phi i1 [ false, %32 ], [ false, %26 ], [ false, %16 ], [ false, %11 ], [ false, %4 ], [ true, %.critedge ], [ false, %114 ], [ true, %.thread96 ], [ false, %61 ], [ false, %83 ], [ false, %73 ], [ false, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit ], [ false, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit84 ], [ false, %_ZNK5clang5Token17getIdentifierInfoEv.exit76 ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit87 ], [ false, %_ZNK5clang5Token17getIdentifierInfoEv.exit78 ], [ false, %165 ], [ false, %.lr.ph ] +.thread: ; preds = %.lr.ph, %.thread96, %61, %73, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit84, %_ZNK5clang5Token17getIdentifierInfoEv.exit76, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit87, %_ZNK5clang5Token17getIdentifierInfoEv.exit78, %141, %90, %.critedge, %4, %11, %16 + %.0 = phi i1 [ false, %16 ], [ false, %11 ], [ false, %4 ], [ true, %.critedge ], [ false, %114 ], [ true, %.thread96 ], [ false, %61 ], [ false, %73 ], [ false, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit ], [ false, %_ZNK5clang9MacroInfo15getParameterNumEPKNS_14IdentifierInfoE.exit84 ], [ false, %_ZNK5clang5Token17getIdentifierInfoEv.exit76 ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit87 ], [ false, %_ZNK5clang5Token17getIdentifierInfoEv.exit78 ], [ false, %165 ], [ false, %.lr.ph ] ret i1 %.0 } diff --git a/bench/llvm/optimized/RISCVInsertVSETVLI.ll b/bench/llvm/optimized/RISCVInsertVSETVLI.ll index 6b323b99f24..2e64e6e5dcb 100644 --- a/bench/llvm/optimized/RISCVInsertVSETVLI.ll +++ b/bench/llvm/optimized/RISCVInsertVSETVLI.ll @@ -6099,7 +6099,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119areCompatibleVTYPE %13 = and i32 %12, 7 %14 = shl nuw nsw i32 8, %13 %.not = icmp eq i32 %10, %14 - br i1 %.not, label %36, label %91 + br i1 %.not, label %36, label %85 15: ; preds = %3 %16 = trunc i64 %1 to i32 @@ -6111,7 +6111,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119areCompatibleVTYPE %22 = and i32 %21, 7 %23 = shl nuw nsw i32 8, %22 %24 = icmp samesign ult i32 %19, %23 - br i1 %24, label %91, label %36 + br i1 %24, label %85, label %36 25: ; preds = %3 %26 = trunc i64 %1 to i32 @@ -6125,7 +6125,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119areCompatibleVTYPE %34 = icmp samesign ult i32 %29, %33 %35 = icmp samesign ugt i32 %28, 2 %or.cond = select i1 %34, i1 true, i1 %35 - br i1 %or.cond, label %91, label %36 + br i1 %or.cond, label %85, label %36 36: ; preds = %25, %15, %6, %3 %37 = getelementptr inbounds nuw i8, ptr %2, i64 3 @@ -6139,7 +6139,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119areCompatibleVTYPE %40 = xor i64 %1, %0 %41 = and i64 %40, 7 %.not27 = icmp eq i64 %41, 0 - br i1 %.not27, label %51, label %91 + br i1 %.not27, label %51, label %85 42: ; preds = %36 %43 = trunc i64 %1 to i8 @@ -6150,7 +6150,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119areCompatibleVTYPE %48 = and i64 %45, 4294967295 %49 = icmp eq i64 %48, 1 %50 = or i1 %47, %49 - br i1 %50, label %51, label %91 + br i1 %50, label %51, label %85 51: ; preds = %42, %39, %36 %52 = getelementptr inbounds nuw i8, ptr %2, i64 4 @@ -6174,41 +6174,37 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119areCompatibleVTYPE %68 = and i8 %67, 7 %69 = tail call noundef i32 @_ZN4llvm10RISCVVType15getSEWLMULRatioEjNS_7RISCVII5VLMULE(i32 noundef %66, i8 noundef zeroext %68) #20 %.not28.not = icmp eq i32 %62, %69 - br i1 %.not28.not, label %70, label %91 + br i1 %.not28.not, label %70, label %85 70: ; preds = %55, %51 %71 = getelementptr inbounds nuw i8, ptr %2, i64 5 %72 = load i8, ptr %71, align 1, !tbaa !525, !range !52, !noundef !53 %73 = trunc nuw i8 %72 to i1 - br i1 %73, label %74, label %80 + br i1 %73, label %74, label %77 74: ; preds = %70 - %75 = and i64 %0, 64 - %76 = icmp ne i64 %75, 0 - %77 = and i64 %1, 64 - %78 = icmp ne i64 %77, 0 - %79 = xor i1 %76, %78 - br i1 %79, label %91, label %80 - -80: ; preds = %74, %70 - %81 = getelementptr inbounds nuw i8, ptr %2, i64 6 - %82 = load i8, ptr %81, align 1, !tbaa !526, !range !52, !noundef !53 - %83 = trunc nuw i8 %82 to i1 - br i1 %83, label %84, label %90 - -84: ; preds = %80 - %85 = and i64 %0, 128 - %86 = icmp ne i64 %85, 0 - %87 = and i64 %1, 128 - %88 = icmp ne i64 %87, 0 - %89 = xor i1 %86, %88 - br i1 %89, label %91, label %90 - -90: ; preds = %84, %80 - br label %91 - -91: ; preds = %55, %84, %74, %42, %39, %25, %15, %6, %90 - %.026 = phi i1 [ false, %55 ], [ true, %90 ], [ false, %6 ], [ false, %15 ], [ false, %25 ], [ false, %39 ], [ false, %42 ], [ false, %74 ], [ false, %84 ] + %75 = xor i64 %1, %0 + %76 = and i64 %75, 64 + %77 = icmp eq i64 %76, 0 + br i1 %.not31, label %77, label %85 + +77:; preds = %74, %70 + %78 = getelementptr inbounds nuw i8, ptr %2, i64 6 + %79 = load i8, ptr %78, align 1, !tbaa !526, !range !52, !noundef !53 + %81 = trunc nuw i8 %79 to i1 + br i1 %81, label %81, label %84 + +81:; preds = %77 + %82 = xor i64 %1, %0 + %83 = and i64 %82, 128 + %85 = icmp eq i64 %83, 0 + br i1 %.not32, label %84, label %85 + +84:; preds = %81, %77 + br label %85 + +85: ; preds = %55, %81, %74, %42, %39, %25, %15, %6, %84 + %.026 = phi i1 [ false, %55 ], [ true, %84 ], [ false, %6 ], [ false, %15 ], [ false, %25 ], [ false, %39 ], [ false, %42 ], [ false, %74 ], [ false, %81 ] ret i1 %.026 } diff --git a/bench/llvm/optimized/SemaDecl.ll b/bench/llvm/optimized/SemaDecl.ll index 4c699b7d510..3889993289d 100644 --- a/bench/llvm/optimized/SemaDecl.ll +++ b/bench/llvm/optimized/SemaDecl.ll @@ -103031,14 +103031,11 @@ _ZNK5clang4Type15isUndeducedTypeEv.exit.thread: ; preds = %580, %_ZNK5clang4Ty br label %.thread 687: ; preds = %674 - %688 = and i32 %676, 2 - %689 = icmp ne i32 %688, 0 - %690 = and i32 %677, 2 - %691 = icmp ne i32 %690, 0 - %692 = xor i1 %689, %691 - br i1 %692, label %693, label %700 - -693: ; preds = %687 + %688 = and i32 %678, 2 + %689 = icmp eq i32 %688, 0 + br i1 %.not298, label %696, label %689 + +689:; preds = %687 call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %32) #30 %694 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.09.0.copyload = load i32, ptr %6, align 8, !tbaa !694 @@ -103106,8 +103103,8 @@ _ZNK5clang4Type15isUndeducedTypeEv.exit.thread: ; preds = %580, %_ZNK5clang4Ty 726: ; preds = %722, %_ZNK5clang4Type15isUndeducedTypeEv.exit.thread br label %.thread -.thread: ; preds = %715, %703, %693, %680, %667, %658, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit151, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit148, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit145, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit165, %726, %722, %569, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit157, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit154, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit141.thread, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit.thread - %.0 = phi i1 [ true, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit.thread ], [ %78, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit141.thread ], [ %476, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit154 ], [ %565, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit157 ], [ %579, %569 ], [ %166, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit ], [ %628, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit165 ], [ false, %726 ], [ true, %722 ], [ %383, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit151 ], [ %353, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit148 ], [ %265, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit145 ], [ %721, %715 ], [ %709, %703 ], [ %699, %693 ], [ %686, %680 ], [ %673, %667 ], [ %664, %658 ] +.thread: ; preds = %715, %703, %689, %680, %667, %658, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit151, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit148, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit145, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit165, %726, %722, %569, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit157, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit154, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit141.thread, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit.thread + %.0 = phi i1 [ true, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit.thread ], [ %78, %_ZNK5clang4Type5getAsINS_17FunctionProtoTypeEEEPKT_v.exit141.thread ], [ %476, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit154 ], [ %565, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit157 ], [ %579, %569 ], [ %166, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit ], [ %628, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit165 ], [ false, %726 ], [ true, %722 ], [ %383, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit151 ], [ %353, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit148 ], [ %265, %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsIZNS_4Sema41areMultiversionVariantFunctionsCompatibleEPKNS_12FunctionDeclES6_RKNS_17PartialDiagnosticERKSt4pairINS_14SourceLocationES7_ESE_SE_bbbE13DoesntSupportvEERKS1_OT_.exit145 ], [ %721, %715 ], [ %709, %703 ], [ %699, %689 ], [ %686, %680 ], [ %673, %667 ], [ %664, %658 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/SemaOpenACC.ll b/bench/llvm/optimized/SemaOpenACC.ll index b04422313e1..b921ecf97c2 100644 --- a/bench/llvm/optimized/SemaOpenACC.ll +++ b/bench/llvm/optimized/SemaOpenACC.ll @@ -10975,21 +10975,19 @@ _ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit41.thread: %49 = load ptr, ptr %48, align 16, !tbaa !133 %50 = getelementptr inbounds nuw i8, ptr %49, i64 17 %51 = load i16, ptr %50, align 1 - %52 = and i16 %51, 2 - %53 = icmp ne i16 %52, 0 - %54 = and i64 %.sroa.0.0.copyload.i42, -16 - %55 = inttoptr i64 %54 to ptr - %56 = load ptr, ptr %55, align 16, !tbaa !133 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 17 - %58 = load i16, ptr %57, align 1 - %59 = and i16 %58, 2 - %60 = icmp ne i16 %59, 0 - %61 = xor i1 %53, %60 - %62 = zext i1 %61 to i8 + %52 = and i64 %.sroa.0.0.copyload.i42, -16 + %53 = inttoptr i64 %52 to ptr + %54 = load ptr, ptr %53, align 16, !tbaa !133 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 17 + %56 = load i16, ptr %55, align 1 + %57 = xor i16 %56, %51 + %58 = trunc i16 %57 to i8 + %59 = lshr i8 %58, 1 + %60 = and i8 %59, 1 br label %_ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit41.thread.thread _ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit41.thread.thread: ; preds = %33, %39, %_ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit.thread, %_ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit41.thread, %46, %_ZNSt8optionalIPKN5clang4StmtEEaSESt9nullopt_t.exit - %.0 = phi i8 [ 0, %_ZNSt8optionalIPKN5clang4StmtEEaSESt9nullopt_t.exit ], [ 1, %_ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit41.thread ], [ %62, %46 ], [ 1, %_ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit.thread ], [ 1, %39 ], [ 1, %33 ] + %.0 = phi i8 [ 0, %_ZNSt8optionalIPKN5clang4StmtEEaSESt9nullopt_t.exit ], [ 1, %_ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit41.thread ], [ %60, %46 ], [ 1, %_ZN4llvm19dyn_cast_if_presentIN5clang7VarDeclEKNS1_4DeclEEEDaPT0_.exit.thread ], [ 1, %39 ], [ 1, %33 ] call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %9) #21 store ptr %0, ptr %9, align 8, !tbaa !45 %63 = getelementptr inbounds nuw i8, ptr %9, i64 8 diff --git a/bench/llvm/optimized/SemaTemplateVariadic.ll b/bench/llvm/optimized/SemaTemplateVariadic.ll index 697959088fc..827091248a4 100644 --- a/bench/llvm/optimized/SemaTemplateVariadic.ll +++ b/bench/llvm/optimized/SemaTemplateVariadic.ll @@ -8386,15 +8386,13 @@ define dso_local noundef i64 @_ZN5clang4Sema16ActOnCXXFoldExprEPNS_5ScopeENS_14S 28: ; preds = %8 %29 = load i24, ptr %3, align 8 - %30 = and i24 %29, 16384 - %31 = icmp ne i24 %30, 0 - %32 = load i24, ptr %6, align 8 - %33 = and i24 %32, 16384 - %34 = icmp ne i24 %33, 0 - %35 = xor i1 %31, %34 - br i1 %35, label %.thread, label %36 - -36: ; preds = %28 + %30 = load i24, ptr %6, align 8 + %31 = xor i24 %30, %29 + %32 = and i24 %31, 16384 + %33 = icmp eq i24 %32, 0 + br i1 %.not82, label %33, label %.thread + +33: ; preds = %28 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #16 %37 = ptrtoint ptr %20 to i64 %38 = call i64 @_ZN5clang4Sema25CorrectDelayedTyposInExprEPNS_4ExprEPNS_7VarDeclEbN4llvm12function_refIFNS_12ActionResultIS2_Lb1EEES2_EEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %3, ptr noundef null, i1 noundef zeroext false, ptr nonnull @_ZN4llvm12function_refIFN5clang12ActionResultIPNS1_4ExprELb1EEES4_EE11callback_fnIZNS1_4Sema25CorrectDelayedTyposInExprES4_PNS1_7VarDeclEbS7_Ed_UlS4_E_EES5_lS4_, i64 %37) #16 @@ -8416,7 +8414,7 @@ define dso_local noundef i64 @_ZN5clang4Sema16ActOnCXXFoldExprEPNS_5ScopeENS_14S %48 = trunc nuw i8 %47 to i1 br i1 %48, label %49, label %51 -49: ; preds = %36 +49: ; preds = %33 %50 = getelementptr inbounds nuw i8, ptr %22, i64 32 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %18) #16 store i64 %45, ptr %18, align 8 @@ -8426,7 +8424,7 @@ define dso_local noundef i64 @_ZN5clang4Sema16ActOnCXXFoldExprEPNS_5ScopeENS_14S call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %18) #16 br label %_ZNK5clang8SemaBase21SemaDiagnosticBuilderlsINS_11SourceRangeEvEERKS1_OT_.exit -51: ; preds = %36 +51: ; preds = %33 %52 = getelementptr inbounds nuw i8, ptr %22, i64 128 %53 = getelementptr inbounds nuw i8, ptr %22, i64 132 %54 = load i8, ptr %53, align 4, !tbaa !153, !range !40, !noundef !41 @@ -8445,7 +8443,7 @@ define dso_local noundef i64 @_ZN5clang4Sema16ActOnCXXFoldExprEPNS_5ScopeENS_14S %61 = load ptr, ptr %59, align 8, !tbaa !15 %62 = getelementptr inbounds nuw i8, ptr %61, i64 32 %63 = load ptr, ptr %62, align 8 - %64 = call noundef ptr %63(ptr noundef nonnull align 8 dereferenceable(168) %59) #16 + %64 = call noundef ptr %60(ptr noundef nonnull align 8 dereferenceable(168) %59) #16 br label %_ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i _ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i: ; preds = %60, %56 @@ -8500,7 +8498,7 @@ _ZNK5clang8SemaBase21SemaDiagnosticBuilderlsINS_11SourceRangeEvEERKS1_OT_.exit: %86 = load ptr, ptr %84, align 8, !tbaa !15 %87 = getelementptr inbounds nuw i8, ptr %86, i64 32 %88 = load ptr, ptr %87, align 8 - %89 = call noundef ptr %88(ptr noundef nonnull align 8 dereferenceable(168) %84) #16 + %89 = call noundef ptr %85(ptr noundef nonnull align 8 dereferenceable(168) %84) #16 br label %_ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i37 _ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i37: ; preds = %85, %81 @@ -8579,7 +8577,7 @@ _ZNK5clang8SemaBase21SemaDiagnosticBuilderlsINS_11SourceRangeEvEERKS1_OT_.exit42 %122 = load ptr, ptr %120, align 8, !tbaa !15 %123 = getelementptr inbounds nuw i8, ptr %122, i64 32 %124 = load ptr, ptr %123, align 8 - %125 = call noundef ptr %124(ptr noundef nonnull align 8 dereferenceable(168) %120) #16 + %125 = call noundef ptr %121(ptr noundef nonnull align 8 dereferenceable(168) %120) #16 br label %_ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i44 _ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i44: ; preds = %121, %117 diff --git a/bench/llvm/optimized/ValueTracking.ll b/bench/llvm/optimized/ValueTracking.ll index 8c8419d78cd..d6ddf67d5f0 100644 --- a/bench/llvm/optimized/ValueTracking.ll +++ b/bench/llvm/optimized/ValueTracking.ll @@ -39494,14 +39494,12 @@ _ZN4llvm12PatternMatch7bind_tyINS_5ValueEE5matchIS2_EEbPT_.exit.i.i: ; preds = % %.sink19.i.i = phi i64 [ %28, %27 ], [ %24, %23 ] %30 = getelementptr inbounds nuw i8, ptr %0, i64 1 %31 = load i8, ptr %30, align 1 - %32 = and i8 %31, 2 - %33 = icmp ne i8 %32, 0 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 1 - %35 = load i8, ptr %34, align 1 - %36 = and i8 %35, 2 - %37 = icmp ne i8 %36, 0 - %38 = xor i1 %33, %37 - br i1 %38, label %.critedge, label %39 + %32 = getelementptr inbounds nuw i8, ptr %1, i64 1 + %33 = load i8, ptr %32, align 1 + %34 = xor i8 %33, %31 + %35 = and i8 %34, 2 + %36 = icmp eq i8 %35, 0 + br i1 %.not, label %36, label %.critedge 39: ; preds = %29 %40 = icmp eq ptr %12, %.057 diff --git a/bench/openspiel/optimized/clobber.ll b/bench/openspiel/optimized/clobber.ll index b721eafaba5..98262c0e7f0 100644 --- a/bench/openspiel/optimized/clobber.ll +++ b/bench/openspiel/optimized/clobber.ll @@ -1154,7 +1154,7 @@ _ZNSt10shared_ptrIKN10open_spiel4GameEED2Ev.exit: ; preds = %34, %52, %65, %_ZNS %108 = zext nneg i32 %107 to i64 %109 = shl nuw nsw i64 %108, 2 %110 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %109) #26 - to label %.preheader.preheader unwind label %134 + to label %.preheader.preheader unwind label %131 .preheader.preheader: ; preds = %.lr.ph.preheader.i.i.i.i.i.i.i.i.i call void @llvm.memset.p0.i64(ptr nonnull align 4 %110, i8 0, i64 %109, i1 false) @@ -1167,7 +1167,7 @@ _ZNSt10shared_ptrIKN10open_spiel4GameEED2Ev.exit: ; preds = %34, %52, %65, %_ZNS br label %.preheader .loopexit: ; preds = %.lr.ph, %.preheader - %114 = phi i32 [ %116, %.preheader ], [ %132, %.lr.ph ] + %114 = phi i32 [ %116, %.preheader ], [ %129, %.lr.ph ] %115 = icmp sgt i32 %.016.in39, 1 br i1 %115, label %.preheader, label %._crit_edge, !llvm.loop !4 @@ -1179,37 +1179,34 @@ _ZNSt10shared_ptrIKN10open_spiel4GameEED2Ev.exit: ; preds = %34, %52, %65, %_ZNS br i1 %117, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %.preheader, %.lr.ph - %118 = phi i32 [ %132, %.lr.ph ], [ %116, %.preheader ] - %.037 = phi i32 [ %131, %.lr.ph ], [ 0, %.preheader ] + %118 = phi i32 [ %129, %.lr.ph ], [ %116, %.preheader ] + %.037 = phi i32 [ %128, %.lr.ph ], [ 0, %.preheader ] %119 = load i32, ptr %73, align 8 %120 = add i32 %119, %.016.in39 - %121 = and i32 %120, 1 - %122 = icmp eq i32 %121, 0 - %123 = and i32 %.037, 1 - %124 = icmp eq i32 %123, 0 - %125 = xor i1 %122, %124 - %. = select i1 %125, i32 2, i32 1 - %126 = mul nsw i32 %118, %.01640 - %127 = add nsw i32 %126, %.037 - %128 = sext i32 %127 to i64 - %129 = load ptr, ptr %75, align 8 - %130 = getelementptr inbounds i32, ptr %129, i64 %128 - store i32 %., ptr %130, align 4 - %131 = add nuw nsw i32 %.037, 1 - %132 = load i32, ptr %74, align 4 - %133 = icmp slt i32 %131, %132 - br i1 %133, label %.lr.ph, label %.loopexit, !llvm.loop !7 - -134: ; preds = %.lr.ph.preheader.i.i.i.i.i.i.i.i.i - %135 = landingpad { ptr, i32 } + %121 = xor i32 %120, %.037 + %122 = and i32 %121, 1 + %123 = add nuw nsw i32 %122, 1 + %124 = mul nsw i32 %118, %.01640 + %125 = add nsw i32 %123, %.037 + %. = sext i32 %124 to i64 + %126 = load ptr, ptr %75, align 8 + %127 = getelementptr inbounds i32, ptr %126, i64 %. + store i32 %123, ptr %127, align 4 + %129 = add nuw nsw i32 %.037, 1 + %130 = load i32, ptr %74, align 4 + %130 = icmp slt i32 %128, %130 + br i1 %130, label %.lr.ph, label %.loopexit, !llvm.loop !7 + +131:; preds = %.lr.ph.preheader.i.i.i.i.i.i.i.i.i + %132 = landingpad { ptr, i32 } cleanup - br label %136 + br label %133 ._crit_edge: ; preds = %.loopexit ret void -136: ; preds = %134, %105, %98, %91, %84, %82 - %.pn = phi { ptr, i32 } [ %135, %134 ], [ %106, %105 ], [ %83, %82 ], [ %99, %98 ], [ %92, %91 ], [ %85, %84 ] +136: ; preds = %131, %105, %98, %91, %84, %82 + %.pn = phi { ptr, i32 } [ %132, %131 ], [ %106, %105 ], [ %83, %82 ], [ %99, %98 ], [ %92, %91 ], [ %85, %84 ] %137 = load ptr, ptr %75, align 8 %.not.i.i.i27 = icmp eq ptr %137, null br i1 %.not.i.i.i27, label %_ZNSt6vectorIN10open_spiel7clobber9CellStateESaIS2_EED2Ev.exit28, label %138 diff --git a/bench/openusd/optimized/faceSurface.ll b/bench/openusd/optimized/faceSurface.ll index 65855aa1c3a..3e2a8f004ba 100644 --- a/bench/openusd/optimized/faceSurface.ll +++ b/bench/openusd/optimized/faceSurface.ll @@ -609,22 +609,17 @@ _ZN10OpenSubdiv6v3_6_03Bfr11FaceSurface13preInitializeERKNS1_12FaceTopologyEPKi. _ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit.i: ; preds = %56 %62 = load i16, ptr %46, align 4 - %63 = and i16 %62, 1 - %64 = icmp ne i16 %63, 0 - %65 = load i16, ptr %44, align 4 + %63 = load i16, ptr %44, align 4 + %64 = xor i16 %63, %62 + %65 = freeze i16 %64 %66 = and i16 %65, 1 %67 = icmp eq i16 %66, 0 - %68 = xor i1 %64, %67 - br i1 %68, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit.thread + br i1 %67, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit.thread _ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit.i - %69 = and i16 %62, 2 - %70 = icmp ne i16 %69, 0 - %71 = and i16 %65, 2 - %72 = icmp eq i16 %71, 0 - %73 = xor i1 %70, %72 - %cond.fr = freeze i1 %73 - %spec.select = select i1 %cond.fr, i8 2, i8 0 + %69 = trunc i16 %65 to i8 + %70 = and i8 %69, 2 + %71 = xor i8 %67, 2 br label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit.thread _ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit.thread: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset20ShapeMatchesSupersetERKS2_.exit, %56, %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit.i, %51 diff --git a/bench/openusd/optimized/faceVertex.ll b/bench/openusd/optimized/faceVertex.ll index c76256c2be4..d2340659ad7 100644 --- a/bench/openusd/optimized/faceVertex.ll +++ b/bench/openusd/optimized/faceVertex.ll @@ -918,70 +918,68 @@ define void @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex16adjustSubsetTagsEPNS1_16Fa %16 = getelementptr inbounds nuw i8, ptr %1, i64 6 %17 = load i16, ptr %16, align 2 %18 = icmp slt i16 %17, %.in - br i1 %18, label %25, label %19 + br i1 %18, label %23, label %19 19: ; preds = %13 %20 = getelementptr inbounds nuw i8, ptr %0, i64 152 %.in33.in.in = select i1 %.not, ptr %20, ptr %2 %.in33.in = load i16, ptr %.in33.in.in, align 2 - %.in33 = and i16 %.in33.in, 1 - %21 = icmp ne i16 %.in33, 0 - %22 = and i16 %10, 1 - %23 = icmp ne i16 %22, 0 - %24 = xor i1 %21, %23 - br i1 %24, label %25, label %53 - -25: ; preds = %19, %13 - %26 = and i16 %10, 128 - %.not26 = icmp eq i16 %26, 0 - br i1 %.not26, label %32, label %27 - -27: ; preds = %25 - %28 = tail call noundef zeroext i1 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex23subsetHasIrregularFacesERKNS1_16FaceVertexSubsetE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) - %29 = select i1 %28, i16 128, i16 0 - %30 = and i16 %10, -129 - %31 = or disjoint i16 %29, %30 - store i16 %31, ptr %1, align 2 - br label %32 - -32: ; preds = %27, %25 - %33 = phi i16 [ %31, %27 ], [ %10, %25 ] - %34 = and i16 %33, 4 - %.not27 = icmp eq i16 %34, 0 - br i1 %.not27, label %45, label %35 - -35: ; preds = %32 - %36 = tail call noundef zeroext i1 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex22subsetHasInfSharpEdgesERKNS1_16FaceVertexSubsetE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) - %37 = select i1 %36, i16 4, i16 0 - %38 = and i16 %33, -5 - %39 = or disjoint i16 %37, %38 - store i16 %39, ptr %1, align 2 - %40 = and i16 %33, 1 - %41 = icmp ne i16 %40, 0 - %or.cond = and i1 %41, %36 - br i1 %or.cond, label %42, label %45 + %.in33 = xor i16 %10, %.in33.in + %21 = and i16 %.in33, 1 + %22 = icmp eq i16 %21, 0 + br i1 %22, label %51, label %23 + +23:; preds = %25, %13 + %24 = and i16 %10, 128 + %.not26 = icmp eq i16 %24, 0 + br i1 %.not26, label %30, label %28 + +25: ; preds = %23 + %26 = tail call noundef zeroext i1 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex23subsetHasIrregularFacesERKNS1_16FaceVertexSubsetE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) + %30 = select i1 %26, i16 128, i16 0 + %28 = and i16 %10, -129 + %29 = or disjoint i16 %27, %31 + store i16 %32, ptr %1, align 2 + br label %30 + +30:; preds = %25, %23 + %31 = phi i16 [ %29, %25 ], [ %10, %23 ] + %32 = and i16 %31, 4 + %33 = icmp eq i16 %32, 0 + br i1 %33, label %43, label %33 + +33: ; preds = %30 + %34 = tail call noundef zeroext i1 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex22subsetHasInfSharpEdgesERKNS1_16FaceVertexSubsetE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) + %35 = select i1 %34, i16 4, i16 0 + %36 = and i16 %31, -5 + %37 = or disjoint i16 %35, %36 + store i16 %37, ptr %1, align 2 + %39 = and i16 %31, 1 + %39 = icmp ne i16 %39, 0 + %40 = and i1 %39, %34 + br i1 %40, label %40, label %43 + +40:; preds = %33 + %41 = and i16 %37, -19 + %42 = or disjoint i16 %41, 2 + store i16 %42, ptr %1, align 4 + br label %43 -42: ; preds = %35 - %43 = and i16 %39, -19 - %44 = or disjoint i16 %43, 2 - store i16 %44, ptr %1, align 4 - br label %45 +42: ; preds = %33, %40, %30 + %43 = phi i16 [ %37, %33 ], [ %42, %40 ], [ %31, %30 ] + %44 = and i16 %43, 32 + %.not29 = icmp eq i16 %44, 0 + br i1 %.not29, label %45, label %46 + +46: ; preds = %43 + %47 = tail call noundef zeroext i1 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex23subsetHasSemiSharpEdgesERKNS1_16FaceVertexSubsetE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) + %48 = select i1 %47, i16 32, i16 0 + %49 = and i16 %44, -33 + %50 = or disjoint i16 %48, %49 + store i16 %50, ptr %1, align 2 + br label %51 -45: ; preds = %35, %42, %32 - %46 = phi i16 [ %39, %35 ], [ %44, %42 ], [ %33, %32 ] - %47 = and i16 %46, 32 - %.not29 = icmp eq i16 %47, 0 - br i1 %.not29, label %53, label %48 - -48: ; preds = %45 - %49 = tail call noundef zeroext i1 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex23subsetHasSemiSharpEdgesERKNS1_16FaceVertexSubsetE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) - %50 = select i1 %49, i16 32, i16 0 - %51 = and i16 %46, -33 - %52 = or disjoint i16 %50, %51 - store i16 %52, ptr %1, align 2 - br label %53 - -53: ; preds = %45, %48, %19 +45: ; preds = %43, %46, %22 ret void } @@ -1441,13 +1439,11 @@ define noundef range(i32 -32768, 32768) i32 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVe br i1 %10, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit.thread _ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit: ; preds = %4 - %11 = and i16 %.pre, 1 - %12 = icmp ne i16 %11, 0 - %13 = load i16, ptr %3, align 4 - %14 = and i16 %13, 1 - %15 = icmp eq i16 %14, 0 - %16 = xor i1 %12, %15 - br i1 %16, label %33, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit.thread + %11 = load i16, ptr %3, align 4 + %12 = xor i16 %11, %.pre + %13 = and i16 %12, 1 + %14 = icmp eq i16 %13, 0 + br i1 %14, label %30, label %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit.thread _ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit.thread: ; preds = %4, %_ZNK10OpenSubdiv6v3_6_03Bfr16FaceVertexSubset21ExtentMatchesSupersetERKS2_.exit %17 = and i16 %.pre, 2 @@ -1520,50 +1516,50 @@ _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit: ; preds %55 = load ptr, ptr %54, align 8 %56 = sext i16 %51 to i64 %57 = getelementptr inbounds i32, ptr %55, i64 %56 + %55 = load i32, ptr %54, align 4 + %56 = sext i32 %55 to i64 + %57 = getelementptr inbounds i32, ptr %2, i64 %56 %58 = load i32, ptr %57, align 4 - %59 = sext i32 %58 to i64 - %60 = getelementptr inbounds i32, ptr %2, i64 %59 - %61 = load i32, ptr %60, align 4 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %63 = load i16, ptr %62, align 2 - %64 = icmp sgt i16 %63, 0 - br i1 %64, label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader, label %.loopexit - -_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit.thread: ; preds = %49 - %65 = sext i16 %51 to i64 - %66 = sext i16 %53 to i64 - %67 = mul nsw i64 %66, %65 - %68 = getelementptr inbounds i32, ptr %2, i64 %67 - %69 = load i32, ptr %68, align 4 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %71 = load i16, ptr %70, align 2 - %72 = icmp sgt i16 %71, 0 - br i1 %72, label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.preheader, label %.loopexit + %59 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %60 = load i16, ptr %59, align 2 + %61 = icmp sgt i16 %60, 0 + br i1 %61, label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader, label %.loopexit + +_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit.thread:; preds = %46 + %62 = sext i16 %48 to i64 + %63 = sext i16 %50 to i64 + %64 = mul nsw i64 %63, %62 + %65 = getelementptr inbounds i32, ptr %2, i64 %64 + %66 = load i32, ptr %65, align 4 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %68 = load i16, ptr %67, align 2 + %69 = icmp sgt i16 %68, 0 + br i1 %69, label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.preheader, label %.loopexit _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.preheader: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit.thread - %wide.trip.count = zext nneg i16 %71 to i64 + %wide.trip.count = zext nneg i16 %68 to i64 %73 = sext i16 %53 to i64 br label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit %74 = getelementptr inbounds nuw i8, ptr %0, i64 96 %75 = load ptr, ptr %74, align 8 - %wide.trip.count41 = zext nneg i16 %63 to i64 + %wide.trip.count41 = zext nneg i16 %60 to i64 br label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader, %85 %indvars.iv38 = phi i64 [ 0, %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader ], [ %indvars.iv.next39, %85 ] - %.02733.us = phi i32 [ 0, %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader ], [ %83, %85 ] + %.02733.us = phi i32 [ 0, %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader ], [ %80, %85 ] %76 = getelementptr inbounds nuw i32, ptr %75, i64 %indvars.iv38 + %74 = load i32, ptr %73, align 4 + %75 = sext i32 %74 to i64 + %76 = getelementptr inbounds i32, ptr %2, i64 %75 %77 = load i32, ptr %76, align 4 - %78 = sext i32 %77 to i64 - %79 = getelementptr inbounds i32, ptr %2, i64 %78 - %80 = load i32, ptr %79, align 4 - %81 = icmp eq i32 %80, %61 - %82 = zext i1 %81 to i32 - %83 = add nuw nsw i32 %.02733.us, %82 - %84 = icmp sgt i32 %83, %46 - br i1 %84, label %.split.us, label %85 + %78 = icmp eq i32 %77, %58 + %79 = zext i1 %78 to i32 + %80 = add nuw nsw i32 %.02733.us, %79 + %81 = icmp sgt i32 %80, %46 + br i1 %81, label %.split.us, label %82 85: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us %indvars.iv.next39 = add nuw nsw i64 %indvars.iv38, 1 @@ -1581,7 +1577,7 @@ _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit: ; preds %87 = mul nsw i64 %indvars.iv, %73 %88 = getelementptr inbounds i32, ptr %2, i64 %87 %89 = load i32, ptr %88, align 4 - %90 = icmp eq i32 %89, %69 + %90 = icmp eq i32 %89, %66 %91 = zext i1 %90 to i32 %92 = add nuw nsw i32 %.02733, %91 %93 = icmp sgt i32 %92, %46 diff --git a/bench/openusd/optimized/value.ll b/bench/openusd/optimized/value.ll index bbe9b066d6c..6758ddb254d 100644 --- a/bench/openusd/optimized/value.ll +++ b/bench/openusd/optimized/value.ll @@ -2466,110 +2466,109 @@ define noundef zeroext i1 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue13_Equa %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load ptr, ptr %5, align 8 %7 = ptrtoint ptr %6 to i64 - %8 = and i64 %7, 4 - %9 = icmp ne i64 %8, 0 - %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %11 = load ptr, ptr %10, align 8 - %12 = ptrtoint ptr %11 to i64 - %13 = and i64 %12, 4 - %14 = icmp ne i64 %13, 0 - %15 = xor i1 %9, %14 - br i1 %15, label %16, label %42 - -16: ; preds = %2 - %17 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) - %18 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %1) - %.not45 = icmp eq ptr %17, %18 - br i1 %.not45, label %19, label %.critedge30 - -19: ; preds = %16 - %20 = load ptr, ptr %5, align 8 - %21 = ptrtoint ptr %20 to i64 - %22 = and i64 %21, 4 - %.not46 = icmp eq i64 %22, 0 - %23 = select i1 %.not46, ptr %1, ptr %0 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %25 = load ptr, ptr %24, align 8 - %26 = ptrtoint ptr %25 to i64 - %27 = and i64 %26, -8 - %28 = inttoptr i64 %27 to ptr - %29 = getelementptr inbounds nuw i8, ptr %28, i64 168 - %30 = load ptr, ptr %29, align 8 - %31 = tail call noundef ptr %30(ptr noundef nonnull align 8 dereferenceable(8) %23) - %.not = icmp eq ptr %31, null - br i1 %.not, label %.critedge30, label %32 - -32: ; preds = %19 - %33 = select i1 %.not46, ptr %0, ptr %1 - %34 = getelementptr inbounds nuw i8, ptr %33, i64 8 - %35 = load ptr, ptr %34, align 8 - %36 = ptrtoint ptr %35 to i64 - %37 = and i64 %36, -8 - %38 = inttoptr i64 %37 to ptr - %39 = getelementptr inbounds nuw i8, ptr %38, i64 72 - %40 = load ptr, ptr %39, align 8 - %41 = tail call noundef zeroext i1 %40(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull %31) + %8 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %9 = load ptr, ptr %8, align 8 + %10 = ptrtoint ptr %9 to i64 + %11 = xor i64 %10, %7 + %12 = and i64 %11, 4 + %13 = icmp eq i64 %12, 0 + br i1 %.not45, label %39, label %13 + +13:; preds = %2 + %14 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) + %15 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %1) + %17 = icmp eq ptr %14, %15 + br i1 %.not46, label %16, label %.critedge30 + +16: ; preds = %13 + %17 = load ptr, ptr %5, align 8 + %18 = ptrtoint ptr %17 to i64 + %20 = and i64 %18, 4 + %21 = icmp eq i64 %19, 0 + %22 = select i1 %21, ptr %1, ptr %0 + %.not46 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %23 = load ptr, ptr %21, align 8 + %24 = ptrtoint ptr %23 to i64 + %25 = and i64 %24, -8 + %26 = inttoptr i64 %25 to ptr + %27 = getelementptr inbounds nuw i8, ptr %26, i64 168 + %27 = load ptr, ptr %26, align 8 + %29 = tail call noundef ptr %27(ptr noundef nonnull align 8 dereferenceable(8) %20) + %30 = icmp eq ptr %29, null + br i1 %30, label %.critedge30, label %29 + +29: ; preds = %16 + %30 = select i1 %.not47, ptr %0, ptr %1 + %31 = getelementptr inbounds nuw i8, ptr %30, i64 8 + %33 = load ptr, ptr %31, align 8 + %34 = ptrtoint ptr %33 to i64 + %35 = and i64 %34, -8 + %36 = inttoptr i64 %35 to ptr + %37 = getelementptr inbounds nuw i8, ptr %36, i64 72 + %37 = load ptr, ptr %36, align 8 + %39 = tail call noundef zeroext i1 %37(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull %28) br label %.critedge30 42: ; preds = %2 - %43 = and i64 %8, %12 - %brmerge.demorgan.not = icmp eq i64 %43, 0 - br i1 %brmerge.demorgan.not, label %.critedge, label %44 - -44: ; preds = %42 - %45 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) - %46 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %1) - %47 = icmp eq ptr %45, %46 - br i1 %47, label %48, label %.critedge30 - -48: ; preds = %44 - %49 = load ptr, ptr %5, align 8 - %50 = ptrtoint ptr %49 to i64 - %51 = and i64 %50, -8 - %52 = inttoptr i64 %51 to ptr - %53 = getelementptr inbounds nuw i8, ptr %52, i64 176 - %54 = load ptr, ptr %53, align 8, !noalias !46 - call void %54(ptr dead_on_unwind nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::VtValue") align 8 %3, ptr noundef nonnull align 8 dereferenceable(8) %0) - %55 = load ptr, ptr %10, align 8 - %56 = ptrtoint ptr %55 to i64 - %57 = and i64 %56, -8 - %58 = inttoptr i64 %57 to ptr - %59 = getelementptr inbounds nuw i8, ptr %58, i64 176 - %60 = load ptr, ptr %59, align 8, !noalias !49 - invoke void %60(ptr dead_on_unwind nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::VtValue") align 8 %4, ptr noundef nonnull align 8 dereferenceable(8) %1) - to label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9_TypeInfo19GetProxiedAsVtValueERKNSt15aligned_storageILm8ELm8EE4typeE.exit unwind label %89 - -_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9_TypeInfo19GetProxiedAsVtValueERKNSt15aligned_storageILm8ELm8EE4typeE.exit: ; preds = %48 - %61 = invoke noundef zeroext i1 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValueeqERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4) - to label %62 unwind label %91 - -62: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9_TypeInfo19GetProxiedAsVtValueERKNSt15aligned_storageILm8ELm8EE4typeE.exit - %63 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %64 = load ptr, ptr %63, align 8 - %65 = ptrtoint ptr %64 to i64 - %.not.i.i = icmp eq ptr %64, null - %66 = and i64 %65, 3 - %67 = icmp eq i64 %66, 3 - %or.cond.i.i = or i1 %.not.i.i, %67 - br i1 %or.cond.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit, label %68 - -68: ; preds = %62 - %69 = and i64 %65, -8 - %70 = inttoptr i64 %69 to ptr - %71 = getelementptr inbounds nuw i8, ptr %70, i64 32 - %72 = load ptr, ptr %71, align 8 - invoke void %72(ptr noundef nonnull align 8 dereferenceable(16) %4) - to label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit unwind label %73 - -73: ; preds = %68 - %74 = landingpad { ptr, i32 } + %43 = and i64 %7, 4 + %brmerge.demorgan.not = and i64 %43, %10 + %brmerge.demorgan.not = icmp eq i64 %41, 0 + br i1 %brmerge.demorgan.not, label %.critedge, label %42 + +42:; preds = %39 + %46 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) + %47 = tail call ptr @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue7GetTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %1) + %45 = icmp eq ptr %43, %44 + br i1 %45, label %46, label %.critedge30 + +46:; preds = %42 + %50 = load ptr, ptr %5, align 8 + %51 = ptrtoint ptr %50 to i64 + %52 = and i64 %51, -8 + %53 = inttoptr i64 %49 to ptr + %54 = getelementptr inbounds nuw i8, ptr %53, i64 176 + %52 = load ptr, ptr %54, align 8, !noalias !46 + call void %52(ptr dead_on_unwind nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::VtValue") align 8 %3, ptr noundef nonnull align 8 dereferenceable(8) %0) + %56 = load ptr, ptr %8, align 8 + %57 = ptrtoint ptr %56 to i64 + %58 = and i64 %57, -8 + %59 = inttoptr i64 %55 to ptr + %60 = getelementptr inbounds nuw i8, ptr %59, i64 176 + %58 = load ptr, ptr %60, align 8, !noalias !49 + invoke void %58(ptr dead_on_unwind nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::VtValue") align 8 %4, ptr noundef nonnull align 8 dereferenceable(8) %1) + to label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9_TypeInfo19GetProxiedAsVtValueERKNSt15aligned_storageILm8ELm8EE4typeE.exit unwind label %87 + +_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9_TypeInfo19GetProxiedAsVtValueERKNSt15aligned_storageILm8ELm8EE4typeE.exit: ; preds = %46 + %59 = invoke noundef zeroext i1 @_ZNK32pxrInternal_v0_24__pxrReserved__7VtValueeqERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4) + to label %60 unwind label %89 + +60: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9_TypeInfo19GetProxiedAsVtValueERKNSt15aligned_storageILm8ELm8EE4typeE.exit + %64 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %65 = load ptr, ptr %64, align 8 + %.not.i.i = ptrtoint ptr %62 to i64 + %66 = icmp eq ptr %65, null + %67 = and i64 %63, 3 + %or.cond.i.i = icmp eq i64 %67, 3 + %or.cond.i.i = or i1 %.not.i.i, %65 + br i1 %or.cond.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit, label %66 + +66:; preds = %60 + %70 = and i64 %63, -8 + %71 = inttoptr i64 %67 to ptr + %72 = getelementptr inbounds nuw i8, ptr %71, i64 32 + %70 = load ptr, ptr %69, align 8 + invoke void %70(ptr noundef nonnull align 8 dereferenceable(16) %4) + to label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit unwind label %71 + +71:; preds = %66 + %72 = landingpad { ptr, i32 } catch ptr null - %75 = extractvalue { ptr, i32 } %74, 0 + %75 = extractvalue { ptr, i32 } %72, 0 call void @__clang_call_terminate(ptr %75) #26 unreachable -_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit: ; preds = %62, %68 - store ptr null, ptr %63, align 8 +_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit: ; preds = %60, %66 + store ptr null, ptr %61, align 8 %76 = getelementptr inbounds nuw i8, ptr %3, i64 8 %77 = load ptr, ptr %76, align 8 %78 = ptrtoint ptr %77 to i64 @@ -2584,7 +2583,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit: ; preds = %62, %68 %83 = inttoptr i64 %82 to ptr %84 = getelementptr inbounds nuw i8, ptr %83, i64 32 %85 = load ptr, ptr %84, align 8 - invoke void %85(ptr noundef nonnull align 8 dereferenceable(16) %3) + invoke void %83(ptr noundef nonnull align 8 dereferenceable(16) %3) to label %.critedge30 unwind label %86 86: ; preds = %81 @@ -2594,7 +2593,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit: ; preds = %62, %68 call void @__clang_call_terminate(ptr %88) #26 unreachable -89: ; preds = %48 +89: ; preds = %46 %90 = landingpad { ptr, i32 } cleanup br label %93 @@ -2619,12 +2618,12 @@ _ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit: ; preds = %62, %68 %96 = inttoptr i64 %95 to ptr %97 = getelementptr inbounds nuw i8, ptr %96, i64 160 %98 = load ptr, ptr %97, align 8 - %99 = tail call noundef nonnull align 8 dereferenceable(16) ptr %98(ptr noundef nonnull align 8 dereferenceable(16) %0) - %.pre = load ptr, ptr %10, align 8 + %99 = tail call noundef nonnull align 8 dereferenceable(16) ptr %96(ptr noundef nonnull align 8 dereferenceable(16) %0) + %.pre = load ptr, ptr %8, align 8 br label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit: ; preds = %.critedge, %94 - %100 = phi ptr [ %.pre, %94 ], [ %11, %.critedge ] + %100 = phi ptr [ %.pre, %94 ], [ %9, %.critedge ] %101 = phi ptr [ %99, %94 ], [ @_ZTIv, %.critedge ] %.not.i34 = icmp eq ptr %100, null br i1 %.not.i34, label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit35, label %102 @@ -2635,29 +2634,29 @@ _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit: ; preds = %.cri %105 = inttoptr i64 %104 to ptr %106 = getelementptr inbounds nuw i8, ptr %105, i64 160 %107 = load ptr, ptr %106, align 8 - %108 = tail call noundef nonnull align 8 dereferenceable(16) ptr %107(ptr noundef nonnull align 8 dereferenceable(16) %1) + %108 = tail call noundef nonnull align 8 dereferenceable(16) ptr %105(ptr noundef nonnull align 8 dereferenceable(16) %1) br label %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit35 _ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit35: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit, %102 %109 = phi ptr [ %108, %102 ], [ @_ZTIv, %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit ] %110 = getelementptr inbounds nuw i8, ptr %101, i64 8 + %109 = load ptr, ptr %108, align 8 + %110 = getelementptr inbounds nuw i8, ptr %107, i64 8 %111 = load ptr, ptr %110, align 8 - %112 = getelementptr inbounds nuw i8, ptr %109, i64 8 - %113 = load ptr, ptr %112, align 8 - %114 = icmp eq ptr %111, %113 - br i1 %114, label %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit.thread, label %115 + %112 = icmp eq ptr %109, %111 + br i1 %112, label %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit.thread, label %113 115: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9GetTypeidEv.exit35 - %116 = load i8, ptr %111, align 1 + %116 = load i8, ptr %109, align 1 %.not.i.i36 = icmp eq i8 %116, 42 br i1 %.not.i.i36, label %.critedge30, label %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit _ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit: ; preds = %115 - %117 = load i8, ptr %113, align 1 + %117 = load i8, ptr %111, align 1 %118 = icmp eq i8 %117, 42 %.idx.i.i.i = zext i1 %118 to i64 - %119 = getelementptr inbounds nuw i8, ptr %113, i64 %.idx.i.i.i - %120 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %111, ptr noundef nonnull dereferenceable(1) %119) #16 + %119 = getelementptr inbounds nuw i8, ptr %111, i64 %.idx.i.i.i + %120 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %109, ptr noundef nonnull dereferenceable(1) %119) #16 %121 = icmp eq i32 %120, 0 br i1 %121, label %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit.thread, label %.critedge30 @@ -2668,11 +2667,11 @@ _ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit. %125 = inttoptr i64 %124 to ptr %126 = getelementptr inbounds nuw i8, ptr %125, i64 64 %127 = load ptr, ptr %126, align 8 - %128 = tail call noundef zeroext i1 %127(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) + %128 = tail call noundef zeroext i1 %125(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) br label %.critedge30 -.critedge30: ; preds = %81, %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit, %115, %44, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit.thread, %19, %32, %16 - %.026 = phi i1 [ false, %16 ], [ false, %19 ], [ %41, %32 ], [ false, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit ], [ %128, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit.thread ], [ false, %44 ], [ false, %115 ], [ %61, %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit ], [ %61, %81 ] +.critedge30: ; preds = %81, %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit, %115, %42, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit.thread, %16, %29, %13 + %.026 = phi i1 [ false, %13 ], [ false, %16 ], [ %38, %29 ], [ false, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit ], [ %128, %_ZN32pxrInternal_v0_24__pxrReserved__17TfSafeTypeCompareERKSt9type_infoS2_.exit.thread ], [ false, %42 ], [ false, %115 ], [ %59, %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueD2Ev.exit ], [ %59, %81 ] ret i1 %.026 } diff --git a/bench/softposit-rs/optimized/xadcarspawrhwb8.ll b/bench/softposit-rs/optimized/xadcarspawrhwb8.ll index b5d70923657..daa73c49407 100644 --- a/bench/softposit-rs/optimized/xadcarspawrhwb8.ll +++ b/bench/softposit-rs/optimized/xadcarspawrhwb8.ll @@ -263,7 +263,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit93: ; preds %131 = icmp eq ptr %5, %128 br i1 %131, label %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread", label %.lr.ph -132: ; preds = %180 +132: ; preds = %179 %.sroa.046.0.copyload = load i64, ptr %4, align 8 %.sroa.447.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.447.0.copyload = load i64, ptr %.sroa.447.0..sroa_idx, align 8 @@ -296,19 +296,17 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit113: ; preds = %132 %139 = icmp eq i64 %.sroa.10.0.copyload, 0 br i1 %139, label %150, label %_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit113.thread -140: ; preds = %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread", %180 - %.064203 = phi i1 [ false, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %.165, %180 ] - %.sroa.24.0202 = phi i64 [ 8, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %141, %180 ] +140: ; preds = %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread", %179 + %.064203 = phi i1 [ false, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %.165, %179 ] + %.sroa.24.0202 = phi i64 [ 8, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %141, %179 ] %141 = add nsw i64 %.sroa.24.0202, -1 %142 = getelementptr inbounds i64, ptr %4, i64 %141 %143 = getelementptr inbounds i64, ptr %6, i64 %141 %144 = getelementptr inbounds i64, ptr %5, i64 %141 %145 = load i64, ptr %143, align 8, !noundef !4 - %146 = and i64 %145, 1 - %147 = load i64, ptr %144, align 8, !noundef !4 - %148 = and i64 %147, 1 - %149 = icmp eq i64 %141, 7 - br i1 %149, label %152, label %164 + %146 = load i64, ptr %144, align 8, !noundef !4 + %147 = icmp eq i64 %141, 7 + br i1 %147, label %150, label %161 150: ; preds = %_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit113 br label %_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit113.thread @@ -339,40 +337,41 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit113.thread: ; preds = ret void 152: ; preds = %140 - %153 = icmp ne i64 %148, 0 - %154 = icmp ne i64 %146, 0 - %155 = and i64 %146, %147 - %156 = lshr i64 %145, 1 - %157 = lshr i64 %147, 1 - %158 = add nuw i64 %157, %156 - %159 = add nuw i64 %158, %155 - %160 = shl i64 %159, 1 - %161 = xor i1 %154, %153 - %162 = zext i1 %161 to i64 - %163 = or disjoint i64 %160, %162 - br label %180 - -164: ; preds = %140 - %165 = trunc nuw nsw i64 %146 to i8 - %166 = trunc nuw nsw i64 %148 to i8 - %167 = zext i1 %.064203 to i8 - %168 = add nuw nsw i8 %165, %167 - %169 = add nuw nsw i8 %168, %166 - %170 = lshr i64 %145, 1 - %171 = lshr i64 %147, 1 - %172 = add nuw i64 %171, %170 - %173 = lshr i8 %169, 1 - %174 = zext nneg i8 %173 to i64 - %175 = add nuw i64 %172, %174 - %176 = shl i64 %175, 1 - %177 = and i8 %169, 1 - %178 = zext nneg i8 %177 to i64 - %179 = or disjoint i64 %176, %178 - br label %180 - -180: ; preds = %164, %152 - %storemerge = phi i64 [ %163, %152 ], [ %179, %164 ] - %.165.in.in = phi i64 [ %159, %152 ], [ %175, %164 ] + %153 = and i64 %145, 1 + %154 = and i64 %151, %146 + %155 = lshr i64 %145, 1 + %156 = lshr i64 %146, 1 + %157 = add nuw i64 %154, %153 + %158 = add nuw i64 %157, %152 + %159 = shl i64 %158, 1 + %160 = xor i64 %146, %145 + %161 = and i64 %158, 1 + %162 = or disjoint i64 %157, %161 + br label %179 + +161: ; preds = %140 + %162 = trunc i64 %145 to i8 + %165 = and i8 %162, 1 + %166 = trunc i64 %146 to i8 + %167 = and i8 %164, 1 + %168 = zext i1 %.064203 to i8 + %169 = add nuw nsw i8 %163, %166 + %170 = add nuw nsw i8 %167, %165 + %171 = lshr i64 %145, 1 + %172 = lshr i64 %146, 1 + %173 = add nuw i64 %170, %171 + %174 = lshr i8 %170, 1 + %175 = zext nneg i8 %172 to i64 + %176 = add nuw i64 %171, %173 + %177 = shl i64 %176, 1 + %178 = and i8 %170, 1 + %179 = zext nneg i8 %176 to i64 + %178 = or disjoint i64 %175, %177 + br label %179 + +179: ; preds = %161, %152 + %.165.in.in = phi i64 [ %160, %152 ], [ %178, %161 ] + %.165.in.in = phi i64 [ %156, %150 ], [ %174, %161 ] store i64 %storemerge, ptr %142, align 8 %.165 = icmp slt i64 %.165.in.in, 0 %.not187 = icmp eq i64 %141, 0 @@ -562,7 +561,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit.split: ; p %97 = icmp eq ptr %4, %94 br i1 %97, label %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread", label %.lr.ph -98: ; preds = %146 +98: ; preds = %145 %.sroa.035.0.copyload = load i64, ptr %3, align 8 %.sroa.436.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 %.sroa.436.0.copyload = load i64, ptr %.sroa.436.0..sroa_idx, align 8 @@ -595,19 +594,17 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit86: ; preds = %98 %105 = icmp eq i64 %.sroa.10.0.copyload, 0 br i1 %105, label %116, label %_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit86.thread -106: ; preds = %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread", %146 - %.052171 = phi i1 [ false, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %.153, %146 ] - %.sroa.24.0170 = phi i64 [ 8, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %107, %146 ] +106: ; preds = %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread", %145 + %.052171 = phi i1 [ false, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %.153, %145 ] + %.sroa.24.0170 = phi i64 [ 8, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17ha5cc3784aa0d10b4E.exit.thread" ], [ %107, %145 ] %107 = add nsw i64 %.sroa.24.0170, -1 %108 = getelementptr inbounds i64, ptr %3, i64 %107 %109 = getelementptr inbounds i64, ptr %5, i64 %107 %110 = getelementptr inbounds i64, ptr %4, i64 %107 %111 = load i64, ptr %109, align 8, !noundef !4 - %112 = and i64 %111, 1 - %113 = load i64, ptr %110, align 8, !noundef !4 - %114 = and i64 %113, 1 - %115 = icmp eq i64 %107, 7 - br i1 %115, label %118, label %130 + %112 = load i64, ptr %110, align 8, !noundef !4 + %113 = icmp eq i64 %107, 7 + br i1 %113, label %116, label %127 116: ; preds = %_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit86 br label %_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit86.thread @@ -638,40 +635,41 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit86.thread: ; preds = ret void 118: ; preds = %106 - %119 = icmp ne i64 %114, 0 - %120 = icmp ne i64 %112, 0 - %121 = and i64 %112, %113 - %122 = lshr i64 %111, 1 - %123 = lshr i64 %113, 1 + %119 = and i64 %111, 1 + %120 = and i64 %117, %112 + %121 = lshr i64 %111, 1 + %122 = lshr i64 %112, 1 + %123 = add nuw i64 %120, %119 %124 = add nuw i64 %123, %122 - %125 = add nuw i64 %124, %121 - %126 = shl i64 %125, 1 - %127 = xor i1 %120, %119 - %128 = zext i1 %127 to i64 - %129 = or disjoint i64 %126, %128 - br label %146 - -130: ; preds = %106 - %131 = trunc nuw nsw i64 %112 to i8 - %132 = trunc nuw nsw i64 %114 to i8 - %133 = zext i1 %.052171 to i8 - %134 = add nuw nsw i8 %131, %133 - %135 = add nuw nsw i8 %134, %132 - %136 = lshr i64 %111, 1 - %137 = lshr i64 %113, 1 - %138 = add nuw i64 %137, %136 - %139 = lshr i8 %135, 1 - %140 = zext nneg i8 %139 to i64 - %141 = add nuw i64 %138, %140 - %142 = shl i64 %141, 1 - %143 = and i8 %135, 1 - %144 = zext nneg i8 %143 to i64 - %145 = or disjoint i64 %142, %144 - br label %146 - -146: ; preds = %130, %118 - %storemerge = phi i64 [ %129, %118 ], [ %145, %130 ] - %.153.in.in = phi i64 [ %125, %118 ], [ %141, %130 ] + %125 = shl i64 %124, 1 + %126 = xor i64 %112, %111 + %127 = and i64 %124, 1 + %128 = or disjoint i64 %123, %127 + br label %145 + +127: ; preds = %106 + %128 = trunc i64 %111 to i8 + %131 = and i8 %128, 1 + %132 = trunc i64 %112 to i8 + %133 = and i8 %130, 1 + %134 = zext i1 %.052171 to i8 + %135 = add nuw nsw i8 %131, %132 + %136 = add nuw nsw i8 %133, %131 + %137 = lshr i64 %111, 1 + %138 = lshr i64 %112, 1 + %139 = add nuw i64 %138, %137 + %140 = lshr i8 %134, 1 + %141 = zext nneg i8 %138 to i64 + %142 = add nuw i64 %137, %139 + %143 = shl i64 %140, 1 + %144 = and i8 %134, 1 + %145 = zext nneg i8 %142 to i64 + %144 = or disjoint i64 %141, %143 + br label %145 + +145: ; preds = %127, %118 + %.153.in.in = phi i64 [ %126, %118 ], [ %144, %127 ] + %.153.in.in = phi i64 [ %122, %116 ], [ %140, %127 ] store i64 %storemerge, ptr %108, align 8 %.153 = icmp slt i64 %.153.in.in, 0 %.not160 = icmp eq i64 %107, 0 diff --git a/bench/spike/optimized/s_mulAddF32.ll b/bench/spike/optimized/s_mulAddF32.ll index cad5abdb0ec..6e8e338831f 100644 --- a/bench/spike/optimized/s_mulAddF32.ll +++ b/bench/spike/optimized/s_mulAddF32.ll @@ -7,170 +7,168 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define i32 @softfloat_mulAddF32(i64 noundef %0, i64 noundef %1, i64 noundef %2, i8 noundef zeroext %3) local_unnamed_addr #0 { - %5 = and i64 %0, 2147483648 - %6 = icmp ne i64 %5, 0 - %7 = lshr i64 %0, 23 - %8 = and i64 %7, 255 - %9 = and i64 %0, 8388607 - %10 = and i64 %1, 2147483648 - %11 = icmp ne i64 %10, 0 - %12 = lshr i64 %1, 23 - %13 = and i64 %12, 255 - %14 = and i64 %1, 8388607 - %15 = and i64 %2, 2147483648 - %16 = icmp ne i64 %15, 0 - %17 = icmp eq i8 %3, 1 - %18 = xor i1 %16, %17 - %19 = lshr i64 %2, 23 - %20 = and i64 %19, 255 - %21 = and i64 %2, 8388607 - %22 = xor i1 %6, %11 - %23 = icmp eq i8 %3, 2 - %24 = xor i1 %22, %23 - %25 = icmp eq i64 %8, 255 - br i1 %25, label %26, label %32 - -26: ; preds = %4 - %.not166 = icmp eq i64 %9, 0 - br i1 %.not166, label %27, label %171 - -27: ; preds = %26 - %28 = icmp eq i64 %13, 255 - %29 = icmp ne i64 %14, 0 - %or.cond = and i1 %29, %28 - br i1 %or.cond, label %171, label %30 - -30: ; preds = %27 - %31 = or i64 %13, %14 - br label %173 - -32: ; preds = %4 - %33 = icmp eq i64 %13, 255 - br i1 %33, label %34, label %37 - -34: ; preds = %32 - %.not165 = icmp eq i64 %14, 0 - br i1 %.not165, label %35, label %171 - -35: ; preds = %34 - %36 = or i64 %8, %9 - br label %173 - -37: ; preds = %32 - %38 = icmp eq i64 %20, 255 - br i1 %38, label %39, label %40 - -39: ; preds = %37 - %.not164 = icmp eq i64 %21, 0 - br i1 %.not164, label %189, label %180 - -40: ; preds = %37 - %.not = icmp eq i64 %8, 0 - br i1 %.not, label %41, label %46 - -41: ; preds = %40 - %.not154 = icmp eq i64 %9, 0 - br i1 %.not154, label %182, label %42 - -42: ; preds = %41 - %43 = tail call { i64, i64 } @softfloat_normSubnormalF32Sig(i64 noundef %9) #2 - %44 = extractvalue { i64, i64 } %43, 0 - %45 = extractvalue { i64, i64 } %43, 1 - br label %46 - -46: ; preds = %42, %40 - %.0124 = phi i64 [ %9, %40 ], [ %45, %42 ] - %.0 = phi i64 [ %8, %40 ], [ %44, %42 ] - %.not155 = icmp eq i64 %13, 0 - br i1 %.not155, label %47, label %52 - -47: ; preds = %46 - %.not156 = icmp eq i64 %14, 0 - br i1 %.not156, label %182, label %48 - -48: ; preds = %47 - %49 = tail call { i64, i64 } @softfloat_normSubnormalF32Sig(i64 noundef %14) #2 - %50 = extractvalue { i64, i64 } %49, 0 - %51 = extractvalue { i64, i64 } %49, 1 - br label %52 - -52: ; preds = %48, %46 - %.0126 = phi i64 [ %14, %46 ], [ %51, %48 ] - %.0125 = phi i64 [ %13, %46 ], [ %50, %48 ] - %53 = add nsw i64 %.0125, %.0 - %54 = shl i64 %.0124, 7 + %5 = lshr i64 %0, 23 + %6 = and i64 %5, 255 + %7 = and i64 %0, 8388607 + %8 = lshr i64 %1, 23 + %9 = and i64 %8, 255 + %10 = and i64 %1, 8388607 + %11 = and i64 %2, 2147483648 + %12 = icmp ne i64 %11, 0 + %13 = icmp eq i8 %3, 1 + %14 = xor i1 %12, %13 + %15 = lshr i64 %2, 23 + %16 = and i64 %15, 255 + %17 = and i64 %2, 8388607 + %18 = xor i64 %1, %0 + %19 = and i64 %18, 2147483648 + %20 = icmp ne i64 %19, 0 + %21 = icmp eq i8 %3, 2 + %22 = xor i1 %20, %21 + %23 = icmp eq i64 %6, 255 + br i1 %23, label %24, label %30 + +24:; preds = %4 + %.not166 = icmp eq i64 %7, 0 + br i1 %.not166, label %25, label %174 + +25: ; preds = %24 + %26 = icmp eq i64 %9, 255 + %27 = icmp ne i64 %10, 0 + %28 = and i1 %27, %26 + br i1 %or.cond, label %174, label %28 + +28:; preds = %25 + %29 = or i64 %9, %10 + br label %171 + +30:; preds = %4 + %31 = icmp eq i64 %9, 255 + br i1 %31, label %32, label %35 + +32:; preds = %30 + %.not165 = icmp eq i64 %10, 0 + br i1 %.not165, label %33, label %169 + +33: ; preds = %32 + %34 = or i64 %6, %7 + br label %171 + +35:; preds = %30 + %36 = icmp eq i64 %16, 255 + br i1 %36, label %37, label %38 + +37:; preds = %35 + %.not164 = icmp eq i64 %17, 0 + br i1 %.not164, label %187, label %178 + +38:; preds = %35 + %.not = icmp eq i64 %6, 0 + br i1 %.not, label %39, label %44 + +39:; preds = %38 + %.not154 = icmp eq i64 %7, 0 + br i1 %.not154, label %180, label %40 + +40:; preds = %39 + %41 = tail call { i64, i64 } @softfloat_normSubnormalF32Sig(i64 noundef %7) #2 + %42 = extractvalue { i64, i64 } %41, 0 + %43 = extractvalue { i64, i64 } %41, 1 + br label %44 + +44:; preds = %40, %38 + %.0124 = phi i64 [ %7, %38 ], [ %43, %40 ] + %.0 = phi i64 [ %6, %38 ], [ %42, %40 ] + %.0124 = icmp eq i64 %9, 0 + br i1 %.not155, label %45, label %50 + +45:; preds = %44 + %.not156 = icmp eq i64 %10, 0 + br i1 %.not156, label %180, label %46 + +46: ; preds = %45 + %47 = tail call { i64, i64 } @softfloat_normSubnormalF32Sig(i64 noundef %10) #2 + %48 = extractvalue { i64, i64 } %47, 0 + %49 = extractvalue { i64, i64 } %47, 1 + br label %50 + +50:; preds = %46, %44 + %.0126 = phi i64 [ %10, %44 ], [ %49, %46 ] + %.0125 = phi i64 [ %9, %44 ], [ %48, %46 ] + %.0126 = add nsw i64 %.0125, %.0 + %.0125 = shl i64 %.0124, 7 + %53 = or i64 %.0125, 1073741824 + %54 = shl i64 %.0126, 7 %55 = or i64 %54, 1073741824 - %56 = shl i64 %.0126, 7 - %57 = or i64 %56, 1073741824 - %58 = mul i64 %57, %55 - %59 = icmp ult i64 %58, 2305843009213693952 - %.0139.v = select i1 %59, i64 -127, i64 -126 - %.0139 = add nsw i64 %53, %.0139.v - %60 = zext i1 %59 to i64 - %.0138 = shl nuw nsw i64 %58, %60 - %.not159 = icmp eq i64 %20, 0 - br i1 %.not159, label %61, label %73 - -61: ; preds = %52 - %.not160 = icmp eq i64 %21, 0 - br i1 %.not160, label %62, label %69 - -62: ; preds = %61 - %63 = add nsw i64 %.0139, -1 - %64 = lshr i64 %.0138, 31 - %65 = and i64 %.0138, 2147467264 - %66 = icmp ne i64 %65, 0 - %67 = zext i1 %66 to i64 - %68 = or i64 %64, %67 - br label %169 - -69: ; preds = %61 - %70 = tail call { i64, i64 } @softfloat_normSubnormalF32Sig(i64 noundef %21) #2 - %71 = extractvalue { i64, i64 } %70, 0 - %72 = extractvalue { i64, i64 } %70, 1 - br label %73 - -73: ; preds = %69, %52 - %.0128 = phi i64 [ %21, %52 ], [ %72, %69 ] - %.0127 = phi i64 [ %20, %52 ], [ %71, %69 ] - %74 = shl i64 %.0128, 6 - %75 = or i64 %74, 536870912 - %76 = sub nsw i64 %.0139, %.0127 - %77 = xor i1 %24, %18 - br i1 %77, label %116, label %78 - -78: ; preds = %73 - %79 = icmp slt i64 %76, 1 - br i1 %79, label %80, label %93 - -80: ; preds = %78 - %81 = sub nsw i64 32, %76 - %82 = icmp samesign ult i64 %81, 63 - br i1 %82, label %83, label %softfloat_shiftRightJam64.exit - -83: ; preds = %80 - %84 = lshr i64 %.0138, %81 - %85 = and i64 %76, 63 - %86 = xor i64 %85, 32 - %87 = shl i64 %.0138, %86 - %88 = icmp ne i64 %87, 0 - %89 = zext i1 %88 to i64 - %90 = or i64 %84, %89 + %56 = mul i64 %55, %53 + %57 = icmp ult i64 %56, 2305843009213693952 + %58 = select i1 %57, i64 -127, i64 -126 + %59 = add nsw i64 %51, %.0139.v + %.0139.v = zext i1 %57 to i64 + %.0139 = shl nuw nsw i64 %56, %.0139.v + %60 = icmp eq i64 %16, 0 + br i1 %.not159, label %59, label %71 + +59:; preds = %50 + %.not160 = icmp eq i64 %17, 0 + br i1 %.not160, label %60, label %67 + +60:; preds = %59 + %61 = add nsw i64 %.0139, -1 + %62 = lshr i64 %.0138, 31 + %63 = and i64 %.0139, 2147467264 + %64 = icmp ne i64 %63, 0 + %65 = zext i1 %64 to i64 + %66 = or i64 %62, %65 + br label %167 + +67:; preds = %59 + %68 = tail call { i64, i64 } @softfloat_normSubnormalF32Sig(i64 noundef %17) #2 + %69 = extractvalue { i64, i64 } %68, 0 + %70 = extractvalue { i64, i64 } %68, 1 + br label %71 + +71:; preds = %67, %50 + %.0128 = phi i64 [ %17, %50 ], [ %70, %67 ] + %.0127 = phi i64 [ %16, %50 ], [ %69, %67 ] + %.0128 = shl i64 %.0128, 6 + %.0127 = or i64 %.0128, 536870912 + %74 = sub nsw i64 %.0139, %.0127 + %75 = xor i1 %22, %14 + br i1 %75, label %114, label %76 + +76:; preds = %71 + %77 = icmp slt i64 %74, 1 + br i1 %77, label %78, label %93 + +78:; preds = %76 + %79 = sub nsw i64 32, %74 + %80 = icmp samesign ult i64 %79, 63 + br i1 %80, label %81, label %softfloat_shiftRightJam64.exit + +81:; preds = %78 + %82 = lshr i64 %.0138, %79 + %83 = and i64 %74, 63 + %84 = xor i64 %83, 32 + %85 = shl i64 %.0138, %84 + %86 = icmp ne i64 %85, 0 + %87 = zext i1 %86 to i64 + %88 = or i64 %82, %87 br label %softfloat_shiftRightJam64.exit -softfloat_shiftRightJam64.exit: ; preds = %80, %83 - %91 = phi i64 [ %90, %83 ], [ 1, %80 ] - %92 = add i64 %91, %75 +softfloat_shiftRightJam64.exit: ; preds = %78, %81 + %91 = phi i64 [ %88, %81 ], [ 1, %78 ] + %92 = add i64 %91, %73 br label %111 -93: ; preds = %78 - %94 = icmp samesign ult i64 %76, 63 +93: ; preds = %76 + %94 = icmp samesign ult i64 %74, 63 br i1 %94, label %95, label %softfloat_shiftRightJam64.exit171 95: ; preds = %93 - %96 = shl i64 %75, 32 - %97 = lshr i64 %96, %76 - %98 = sub nsw i64 0, %76 + %96 = shl i64 %73, 32 + %97 = lshr i64 %96, %74 + %98 = sub nsw i64 0, %74 %99 = and i64 %98, 63 %100 = shl i64 %96, %99 %101 = icmp ne i64 %100, 0 @@ -199,19 +197,19 @@ softfloat_shiftRightJam64.exit171: ; preds = %93, %95 %115 = shl nuw nsw i64 %.1133, 1 br label %169 -116: ; preds = %73 - %117 = shl i64 %75, 32 - %118 = icmp slt i64 %76, 0 +116: ; preds = %71 + %117 = shl i64 %73, 32 + %118 = icmp slt i64 %74, 0 br i1 %118, label %119, label %131 119: ; preds = %116 - %120 = sub nsw i64 0, %76 + %120 = sub nsw i64 0, %74 %121 = icmp samesign ult i64 %120, 63 br i1 %121, label %122, label %softfloat_shiftRightJam64.exit172 122: ; preds = %119 %123 = lshr i64 %.0138, %120 - %124 = and i64 %76, 63 + %124 = and i64 %74, 63 %125 = shl i64 %.0138, %124 %126 = icmp ne i64 %125, 0 %127 = zext i1 %126 to i64 @@ -230,24 +228,24 @@ softfloat_shiftRightJam64.exit172: ; preds = %119, %122 132: ; preds = %131 %133 = sub i64 %.0138, %117 %.not162 = icmp eq i64 %133, 0 - br i1 %.not162, label %185, label %134 + br i1 %.not162, label %183, label %134 134: ; preds = %132 %.not163 = icmp sgt i64 %133, -1 br i1 %.not163, label %150, label %135 135: ; preds = %134 - %136 = xor i1 %24, true + %136 = xor i1 %22, true %137 = sub i64 0, %133 br label %150 138: ; preds = %131 - %139 = icmp samesign ult i64 %76, 63 + %139 = icmp samesign ult i64 %74, 63 br i1 %139, label %140, label %softfloat_shiftRightJam64.exit173 140: ; preds = %138 - %141 = lshr i64 %117, %76 - %142 = sub nsw i64 0, %76 + %141 = lshr i64 %117, %74 + %142 = sub nsw i64 0, %74 %143 = and i64 %142, 63 %144 = shl i64 %117, %143 %145 = icmp ne i64 %144, 0 @@ -261,7 +259,7 @@ softfloat_shiftRightJam64.exit173: ; preds = %138, %140 br label %150 150: ; preds = %softfloat_shiftRightJam64.exit173, %135, %134, %softfloat_shiftRightJam64.exit172 - %.1137 = phi i1 [ %18, %softfloat_shiftRightJam64.exit172 ], [ %24, %softfloat_shiftRightJam64.exit173 ], [ %136, %135 ], [ %24, %134 ] + %.1137 = phi i1 [ %14, %softfloat_shiftRightJam64.exit172 ], [ %22, %softfloat_shiftRightJam64.exit173 ], [ %136, %135 ], [ %22, %134 ] %.2 = phi i64 [ %.0127, %softfloat_shiftRightJam64.exit172 ], [ %.0139, %softfloat_shiftRightJam64.exit173 ], [ %.0139, %135 ], [ %.0139, %134 ] %.0130 = phi i64 [ %130, %softfloat_shiftRightJam64.exit172 ], [ %149, %softfloat_shiftRightJam64.exit173 ], [ %137, %135 ], [ %133, %134 ] %151 = tail call zeroext i8 @softfloat_countLeadingZeros64(i64 noundef %.0130) #2 @@ -289,64 +287,64 @@ softfloat_shiftRightJam64.exit173: ; preds = %138, %140 %168 = shl i64 %.0130, %167 br label %169 -169: ; preds = %113, %111, %166, %157, %62 - %.0136 = phi i1 [ %24, %113 ], [ %24, %111 ], [ %.1137, %157 ], [ %.1137, %166 ], [ %24, %62 ] - %.0134 = phi i64 [ %114, %113 ], [ %.1135, %111 ], [ %154, %157 ], [ %154, %166 ], [ %63, %62 ] - %.0132 = phi i64 [ %115, %113 ], [ %.1133, %111 ], [ %165, %157 ], [ %168, %166 ], [ %68, %62 ] +169: ; preds = %113, %111, %166, %157, %60 + %.0136 = phi i1 [ %22, %113 ], [ %22, %111 ], [ %.1137, %157 ], [ %.1137, %166 ], [ %22, %60 ] + %.0134 = phi i64 [ %114, %113 ], [ %.1135, %111 ], [ %154, %157 ], [ %154, %166 ], [ %61, %60 ] + %.0132 = phi i64 [ %115, %113 ], [ %.1133, %111 ], [ %165, %157 ], [ %168, %166 ], [ %66, %60 ] %170 = tail call i32 @softfloat_roundPackToF32(i1 noundef zeroext %.0136, i64 noundef %.0134, i64 noundef %.0132) #2 - br label %191 - -171: ; preds = %34, %26, %27 - %172 = tail call i64 @softfloat_propagateNaNF32UI(i64 noundef %0, i64 noundef %1) #2 - br label %180 - -173: ; preds = %35, %30 - %.0129 = phi i64 [ %31, %30 ], [ %36, %35 ] - %.not167 = icmp eq i64 %.0129, 0 - br i1 %.not167, label %179, label %174 + br label %189 -174: ; preds = %173 - %175 = select i1 %24, i64 4286578688, i64 2139095040 - %.not168 = icmp eq i64 %20, 255 - br i1 %.not168, label %176, label %189 +174: ; preds = %32, %24, %25 + %175 = tail call i64 @softfloat_propagateNaNF32UI(i64 noundef %0, i64 noundef %1) #2 + br label %178 -176: ; preds = %174 - %.not169 = icmp eq i64 %21, 0 - br i1 %.not169, label %177, label %180 +176: ; preds = %33, %28 + %.not169 = phi i64 [ %29, %28 ], [ %34, %33 ] + %.not169 = icmp eq i64 %.0131, 0 + br i1 %.not167, label %177, label %172 177: ; preds = %176 - %178 = xor i1 %24, %18 - br i1 %178, label %179, label %189 + %178 = select i1 %22, i64 4286578688, i64 2139095040 + %.not168 = icmp eq i64 %16, 255 + br i1 %.not168, label %174, label %187 -179: ; preds = %177, %173 - tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #2 - br label %180 +179: ; preds = %177 + %.not169 = icmp eq i64 %17, 0 + br i1 %.not169, label %180, label %178 -180: ; preds = %39, %176, %179, %171 - %.0131 = phi i64 [ %172, %171 ], [ %175, %176 ], [ 2143289344, %179 ], [ 0, %39 ] - %181 = tail call i64 @softfloat_propagateNaNF32UI(i64 noundef %.0131, i64 noundef %2) #2 - br label %189 +180: ; preds = %179 + %.0131 = xor i1 %22, %14 + br i1 %.0131, label %182, label %187 -182: ; preds = %47, %41 - %183 = or i64 %20, %21 - %.not157 = icmp eq i64 %183, 0 - %184 = xor i1 %24, %18 - %or.cond170 = and i1 %.not157, %184 - br i1 %or.cond170, label %185, label %189 - -185: ; preds = %182, %132 - %186 = load i8, ptr @softfloat_roundingMode, align 1 - %187 = icmp eq i8 %186, 2 - %188 = select i1 %187, i64 2147483648, i64 0 +182: ; preds = %175, %171 + tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #2 + br label %178 + +178:; preds = %37, %174, %177, %169 + %.0131 = phi i64 [ %170, %169 ], [ %178, %174 ], [ 2143289344, %177 ], [ 0, %37 ] + %179 = tail call i64 @softfloat_propagateNaNF32UI(i64 noundef %.0131, i64 noundef %2) #2 + br label %187 + +180:; preds = %45, %39 + %188 = or i64 %16, %17 + %.not157 = icmp eq i64 %181, 0 + %182 = xor i1 %22, %14 + %or.cond170 = and i1 %.not157, %182 + br i1 %or.cond170, label %183, label %187 + +183: ; preds = %180, %130 + %184 = load i8, ptr @softfloat_roundingMode, align 1 + %185 = icmp eq i8 %184, 2 + %186 = select i1 %185, i64 2147483648, i64 0 + br label %187 + +187: ; preds = %37, %180, %183, %175, %172, %178 + %.1 = phi i64 [ %179, %178 ], [ %173, %172 ], [ %173, %175 ], [ %186, %183 ], [ %2, %180 ], [ %2, %37 ] + %188 = trunc i64 %.1 to i32 br label %189 -189: ; preds = %39, %182, %185, %177, %174, %180 - %.1 = phi i64 [ %181, %180 ], [ %175, %174 ], [ %175, %177 ], [ %188, %185 ], [ %2, %182 ], [ %2, %39 ] - %190 = trunc i64 %.1 to i32 - br label %191 - -191: ; preds = %189, %169 - %.sroa.0123.0 = phi i32 [ %190, %189 ], [ %170, %169 ] +189: ; preds = %187, %167 + %.1 = phi i32 [ %188, %187 ], [ %168, %169 ] ret i32 %.sroa.0123.0 } diff --git a/bench/turborepo-rs/optimized/b9mxqsqxupsuldn67x7vgrl1g.ll b/bench/turborepo-rs/optimized/b9mxqsqxupsuldn67x7vgrl1g.ll index 3b64179a705..d32fc81ddf6 100644 --- a/bench/turborepo-rs/optimized/b9mxqsqxupsuldn67x7vgrl1g.ll +++ b/bench/turborepo-rs/optimized/b9mxqsqxupsuldn67x7vgrl1g.ll @@ -783,35 +783,30 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor %.sroa.1572.1 = phi i32 [ 3, %_RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4core3cmp9PartialEq2eq.exit31 ], [ %.sroa.04.0.copyload, %_RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4core3cmp9PartialEq2eq.exit31.thread ], [ 3, %130 ], [ 3, %117 ] %141 = getelementptr inbounds nuw i8, ptr %0, i64 8 %142 = load i8, ptr %141, align 1, !alias.scope !68, !noundef !7 - %143 = and i8 %142, 1 - %144 = icmp ne i8 %143, 0 - %145 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %146 = load i8, ptr %145, align 1, !alias.scope !71, !noundef !7 - %147 = and i8 %146, 1 - %148 = icmp ne i8 %147, 0 - %149 = xor i1 %144, %148 - %150 = zext nneg i8 %143 to i64 - %.sroa.0131.sroa.0.0 = select i1 %149, i64 %150, i64 2 - %151 = and i8 %142, 2 - %152 = icmp ne i8 %151, 0 - %153 = and i8 %146, 2 - %154 = icmp ne i8 %153, 0 - %155 = xor i1 %152, %154 - %.lobit = lshr exact i8 %151, 1 - %156 = zext nneg i8 %.lobit to i64 - %157 = shl nuw nsw i64 %156, 8 - %.sroa.0131.sroa.6.1 = select i1 %155, i64 %157, i64 512 - %158 = and i8 %142, 4 - %159 = icmp ne i8 %158, 0 - %160 = and i8 %146, 4 - %161 = icmp ne i8 %160, 0 - %162 = xor i1 %159, %161 - br i1 %162, label %163, label %164 - -163: ; preds = %_RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4core3cmp9PartialEq2eq.exit31.thread203 - %.lobit205 = lshr exact i8 %158, 2 + %143 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %144 = load i8, ptr %143, align 1, !alias.scope !71, !noundef !7 + %145 = xor i8 %144, %142 + %146 = and i8 %145, 1 + %147 = icmp eq i8 %146, 0 + %148 = and i8 %142, 1 + %149 = select i1 %147, i8 2, i8 %148 + %150 = zext nneg i8 %149 to i64 + %.sroa.0131.sroa.0.0 = and i8 %145, 2 + %151 = icmp eq i8 %148, 0 + %152 = lshr i8 %142, 1 + %153 = and i8 %149, 1 + %154 = zext nneg i8 %153 to i64 + %155 = shl nuw nsw i64 %154, 8 + %.lobit = select i1 %151, i64 512, i64 %151 + %156 = and i8 %145, 4 + %157 = icmp eq i8 %156, 0 + br i1 %157, label %155, label %153 + +153:; preds = %_RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4core3cmp9PartialEq2eq.exit31.thread203 + %160 = lshr i8 %142, 2 + %161 = and i8 %160, 1 %.sroa.0131.sroa.11.0.insert.shift160 = and i64 %.sroa.066.sroa.13.0, -16777216 - %.sroa.0131.sroa.8.0.insert.ext152 = zext nneg i8 %.lobit205 to i64 + %.sroa.0131.sroa.8.0.insert.ext152 = zext nneg i8 %.lobit207 to i64 %.sroa.0131.sroa.8.0.insert.shift153 = shl nuw nsw i64 %.sroa.0131.sroa.8.0.insert.ext152, 16 %.sroa.0131.sroa.8.0.insert.insert155 = or disjoint i64 %.sroa.0131.sroa.8.0.insert.shift153, %.sroa.0131.sroa.11.0.insert.shift160 %.sroa.0131.sroa.6.0.insert.insert149 = or disjoint i64 %.sroa.0131.sroa.8.0.insert.insert155, %.sroa.0131.sroa.6.1 @@ -820,25 +815,23 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor 164: ; preds = %_RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4core3cmp9PartialEq2eq.exit31.thread203 %.sroa.0131.sroa.8.0.insert.insert = or i64 %.sroa.0131.sroa.6.1, %.sroa.066.sroa.13.0 - %.sroa.0131.sroa.6.0.insert.insert = or i64 %.sroa.0131.sroa.0.0, %.sroa.0131.sroa.8.0.insert.insert + %.sroa.0131.sroa.6.0.insert.insert = or i64 %.sroa.0131.sroa.8.0.insert.insert, %150 %.sroa.0131.sroa.0.0.insert.insert = or i64 %.sroa.0131.sroa.6.0.insert.insert, 131072 br label %165 -165: ; preds = %164, %163 - %.sroa.0166.sroa.4.0.in.in = phi i64 [ %.sroa.0131.sroa.6.0.insert.insert149, %163 ], [ %.sroa.0131.sroa.8.0.insert.insert, %164 ] - %.sroa.0166.sroa.0.sroa.0.0.in = phi i64 [ %.sroa.0131.sroa.0.0.insert.insert143, %163 ], [ %.sroa.0131.sroa.0.0.insert.insert, %164 ] +165: ; preds = %164, %153 + %.sroa.0166.sroa.4.0.in.in = phi i64 [ %.sroa.0131.sroa.6.0.insert.insert149, %153 ], [ %.sroa.0131.sroa.8.0.insert.insert, %164 ] + %.sroa.0166.sroa.0.sroa.0.0.in = phi i64 [ %.sroa.0131.sroa.0.0.insert.insert143, %153 ], [ %.sroa.0131.sroa.0.0.insert.insert, %164 ] call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4) - %166 = and i8 %142, 8 - %167 = icmp ne i8 %166, 0 - %168 = and i8 %146, 8 - %169 = icmp ne i8 %168, 0 - %170 = xor i1 %167, %169 - br i1 %170, label %171, label %172 - -171: ; preds = %165 + %166 = and i8 %145, 8 + %167 = icmp eq i8 %166, 0 + br i1 %167, label %160, label %158 + +158:; preds = %156 %.sroa.0166.sroa.5.0.in = and i64 %.sroa.0166.sroa.4.0.in.in, -4294967296 - %.lobit206 = lshr exact i8 %166, 3 - %.sroa.0166.sroa.4.0.insert.ext177 = zext nneg i8 %.lobit206 to i64 + %.lobit206 = lshr i8 %142, 3 + %.sroa.0166.sroa.4.0.insert.ext177 = and i8 %.lobit206, 1 + %.sroa.0166.sroa.4.0.insert.ext177 = zext nneg i8 %.lobit209 to i64 %.sroa.0166.sroa.4.0.insert.shift178 = shl nuw nsw i64 %.sroa.0166.sroa.4.0.insert.ext177, 24 %.sroa.0166.sroa.4.0.insert.insert180 = or disjoint i64 %.sroa.0166.sroa.5.0.in, %.sroa.0166.sroa.4.0.insert.shift178 %.sroa.0166.sroa.0.0.insert.ext172 = and i64 %.sroa.0166.sroa.0.sroa.0.0.in, 16777215 @@ -851,8 +844,8 @@ _RNvXs2_NtCs8mTrBI1stz4_15turborepo_vt1005attrsNtB5_5ColorNtNtCs1LoaDTb72WA_4cor %.sroa.0166.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0166.sroa.0.0.insert.ext, %.sroa.0166.sroa.4.0.insert.insert br label %173 -173: ; preds = %172, %171 - %.sroa.0166.sroa.0.0.insert.insert.sink = phi i64 [ %.sroa.0166.sroa.0.0.insert.insert174, %171 ], [ %.sroa.0166.sroa.0.0.insert.insert, %172 ] +173: ; preds = %172, %158 + %.sroa.0166.sroa.0.0.insert.insert.sink = phi i64 [ %.sroa.0166.sroa.0.0.insert.insert, %172 ], [ %.sroa.0166.sroa.0.0.insert.insert174, %158 ] store i64 %.sroa.0166.sroa.0.0.insert.insert.sink, ptr %4, align 8 %174 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i32 %.sroa.1572.1, ptr %174, align 8 diff --git a/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll b/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll index f1de757d4cb..3ff585f00c7 100644 --- a/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll +++ b/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll @@ -119718,47 +119718,40 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant call void @llvm.experimental.noalias.scope.decl(metadata !23808) %51 = getelementptr inbounds nuw i8, ptr %48, i64 48 %52 = load i32, ptr %51, align 8, !alias.scope !23805, !noalias !23810, !noundef !5 - %53 = and i32 %52, 1 - %54 = icmp ne i32 %53, 0 - %55 = load i32, ptr %16, align 8, !alias.scope !23808, !noalias !23812, !noundef !5 - %56 = and i32 %55, 1 - %57 = icmp ne i32 %56, 0 - %58 = xor i1 %54, %57 - %59 = and i32 %52, 2 - %60 = icmp ne i32 %59, 0 - %61 = and i32 %55, 2 - %62 = icmp ne i32 %61, 0 - %63 = xor i1 %60, %62 - %64 = getelementptr inbounds nuw i8, ptr %48, i64 8 - %65 = load ptr, ptr %64, align 8, !alias.scope !23805, !noalias !23810, !nonnull !5, !noundef !5 - %66 = getelementptr inbounds nuw i8, ptr %48, i64 16 - %67 = load i64, ptr %66, align 8, !alias.scope !23805, !noalias !23810, !noundef !5 - %68 = load ptr, ptr %17, align 8, !alias.scope !23808, !noalias !23812, !nonnull !5, !noundef !5 - %69 = load i64, ptr %18, align 8, !alias.scope !23808, !noalias !23812, !noundef !5 + %53 = load i32, ptr %16, align 8, !alias.scope !23808, !noalias !23812, !noundef !5 + %54 = xor i32 %53, %52 + %55 = getelementptr inbounds nuw i8, ptr %48, i64 8 + %56 = load ptr, ptr %55, align 8, !alias.scope !23805, !noalias !23810, !nonnull !5, !noundef !5 + %57 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %58 = load i64, ptr %57, align 8, !alias.scope !23805, !noalias !23810, !noundef !5 + %59 = load ptr, ptr %17, align 8, !alias.scope !23808, !noalias !23812, !nonnull !5, !noundef !5 + %60 = load i64, ptr %18, align 8, !alias.scope !23808, !noalias !23812, !noundef !5 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %5), !noalias !23813 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false), !noalias !23813 store ptr @_ZN20unicode_segmentation4word16has_alphanumeric17hbe73756c12ca5c1aE.llvm.4930786928582598558, ptr %.sroa.418.0..sroa_idx.i.i, align 8, !noalias !23813 - store ptr %65, ptr %.sroa.519.0..sroa_idx.i.i, align 8, !noalias !23813 - store i64 %67, ptr %.sroa.620.0..sroa_idx.i.i, align 8, !noalias !23813 + store ptr %56, ptr %.sroa.519.0..sroa_idx.i.i, align 8, !noalias !23813 + store i64 %65, ptr %.sroa.620.0..sroa_idx.i.i, align 8, !noalias !23813 store i8 19, ptr %.sroa.721.0..sroa_idx.i.i, align 8, !noalias !23813 store i8 19, ptr %.sroa.822.0..sroa_idx.i.i, align 1, !noalias !23813 store ptr @_ZN20unicode_segmentation4word16has_alphanumeric17hbe73756c12ca5c1aE.llvm.4930786928582598558, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !23813 - store ptr %68, ptr %.sroa.10.sroa.4.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23813 - store i64 %69, ptr %.sroa.10.sroa.5.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23813 + store ptr %66, ptr %.sroa.10.sroa.4.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23813 + store i64 %60, ptr %.sroa.10.sroa.5.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23813 store i8 19, ptr %.sroa.10.sroa.6.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23813 store i8 19, ptr %.sroa.10.sroa.7.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 1, !noalias !23813 store i8 0, ptr %19, align 8, !noalias !23813 %70 = call noundef i64 @"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h6cb90b9bb6ea7aefE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(96) %5, i64 noundef 0), !noalias !23817 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5), !noalias !23813 - %71 = zext i1 %58 to i8 - %72 = zext i1 %63 to i8 - br label %73 + %71 = trunc i32 %54 to i8 + %63 = and i8 %62, 1 + %64 = lshr i8 %71, 1 + %65 = and i8 %64, 1 + br label %66 73: ; preds = %47, %50 %.sroa.513.sroa.0.1 = phi i8 [ %.sroa.513.sroa.0.086, %47 ], [ %72, %50 ] - %.sroa.513.sroa.5.1 = phi i64 [ %.sroa.513.sroa.5.087, %47 ], [ %67, %50 ] + %.sroa.513.sroa.5.1 = phi i64 [ %.sroa.513.sroa.5.087, %47 ], [ %65, %50 ] %.sroa.08.1 = phi i64 [ %.sroa.08.097, %47 ], [ %70, %50 ] - %.sroa.410.0 = phi i8 [ 2, %47 ], [ %71, %50 ] + %.sroa.410.0 = phi i8 [ 2, %47 ], [ %72, %50 ] %74 = getelementptr inbounds nuw i8, ptr %48, i64 52 %75 = getelementptr inbounds nuw i8, ptr %48, i64 56 %76 = load i8, ptr %75, align 4, !range !435, !noundef !5 @@ -119781,40 +119774,40 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant %87 = icmp eq i8 %.sroa.219.099, 3 br i1 %87, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit.thread65", label %88 -88: ; preds = %73 - %89 = icmp ne i8 %.sroa.410.0, 2 - %90 = icmp ne i8 %.sroa.219.099, 2 - %brmerge.not.i.i.i.i = and i1 %90, %89 - br i1 %brmerge.not.i.i.i.i, label %94, label %91 - -91: ; preds = %88 - %.not.i.i.i.i = xor i1 %89, true - %92 = and i1 %90, %.not.i.i.i.i - %93 = xor i1 %90, %89 - %..i.i.i.i = zext i1 %93 to i8 - br i1 %92, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit.thread65", label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" +91: ; preds = %66 + %.not.i.i.i.i = icmp ne i8 %.sroa.410.0, 2 + %92 = icmp ne i8 %.sroa.219.099, 2 + %93 = and i1 %92, %89 + br i1 %93, label %87, label %84 94: ; preds = %88 - %95 = sub nsw i8 %.sroa.410.0, %.sroa.219.099 - %96 = icmp eq i8 %95, 0 - br i1 %96, label %97, label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" - -97: ; preds = %94 - %98 = sub nsw i8 %.sroa.513.sroa.0.1, %.sroa.322.sroa.0.088 + %95 = xor i1 %.not.i.i.i.i, true + %96 = and i1 %92, %102 + %86 = xor i1 %92, %.not.i.i.i.i + %..i.i.i.i = zext i1 %86 to i8 + br i1 %85, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit.thread65", label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" + +97: ; preds = %91 + %98 = sub nsw i8 %.sroa.410.0, %.sroa.219.0106 %99 = icmp eq i8 %98, 0 - br i1 %99, label %100, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit" + br i1 %99, label %100, label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" 100: ; preds = %97 + %91 = sub nsw i8 %.sroa.513.sroa.0.1, %.sroa.322.sroa.0.088 + %92 = icmp eq i8 %91, 0 + br i1 %92, label %93, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit" + +93: ; preds = %90 %.0.i.i.i.i.i.i.i = call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i64(i64 %.sroa.017.098, i64 %.sroa.08.1) %101 = icmp eq i64 %.sroa.017.098, %.sroa.08.1 br i1 %101, label %102, label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" -102: ; preds = %100 +102: ; preds = %93 %.0.i.i.i.i.i.i = call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i64(i64 %.sroa.513.sroa.5.1, i64 %.sroa.322.sroa.3.089) br label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" -"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i": ; preds = %102, %100, %94, %91 - %.0.i.i.i.i = phi i8 [ %..i.i.i.i, %91 ], [ %.0.i.i.i.i.i.i, %102 ], [ %95, %94 ], [ %.0.i.i.i.i.i.i.i, %100 ] +"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i": ; preds = %102, %93, %94, %91 + %.0.i.i.i.i = phi i8 [ %..i.i.i.i, %91 ], [ %.0.i.i.i.i.i.i, %102 ], [ %98, %97 ], [ %.0.i.i.i.i.i.i.i, %93 ] %103 = icmp eq i8 %.0.i.i.i.i, 0 br i1 %103, label %104, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit" @@ -119843,8 +119836,8 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant %or.cond = select i1 %110, i1 true, i1 %113 br i1 %or.cond, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit.thread65", label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit.thread63" -"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit": ; preds = %97, %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" - %.0.i8.i.i.i = phi i8 [ %.0.i.i.i.i, %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" ], [ %98, %97 ] +"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit": ; preds = %90, %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" + %.0.i8.i.i.i = phi i8 [ %.0.i.i.i.i, %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" ], [ %91, %90 ] %114 = icmp eq i8 %.0.i8.i.i.i, -1 br i1 %114, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit.thread65", label %"_ZN4core6option15Option$LT$T$GT$6map_or17hfda457e7f53262c5E.exit.thread63" @@ -119942,47 +119935,40 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant call void @llvm.experimental.noalias.scope.decl(metadata !23840) %30 = getelementptr inbounds nuw i8, ptr %27, i64 48 %31 = load i32, ptr %30, align 8, !alias.scope !23837, !noalias !23842, !noundef !5 - %32 = and i32 %31, 1 - %33 = icmp ne i32 %32, 0 - %34 = load i32, ptr %14, align 8, !alias.scope !23840, !noalias !23844, !noundef !5 - %35 = and i32 %34, 1 - %36 = icmp ne i32 %35, 0 - %37 = xor i1 %33, %36 - %38 = and i32 %31, 2 - %39 = icmp ne i32 %38, 0 - %40 = and i32 %34, 2 - %41 = icmp ne i32 %40, 0 - %42 = xor i1 %39, %41 - %43 = getelementptr inbounds nuw i8, ptr %27, i64 8 - %44 = load ptr, ptr %43, align 8, !alias.scope !23837, !noalias !23842, !nonnull !5, !noundef !5 - %45 = getelementptr inbounds nuw i8, ptr %27, i64 16 - %46 = load i64, ptr %45, align 8, !alias.scope !23837, !noalias !23842, !noundef !5 - %47 = load ptr, ptr %15, align 8, !alias.scope !23840, !noalias !23844, !nonnull !5, !noundef !5 - %48 = load i64, ptr %16, align 8, !alias.scope !23840, !noalias !23844, !noundef !5 + %32 = load i32, ptr %14, align 8, !alias.scope !23840, !noalias !23844, !noundef !5 + %33 = xor i32 %32, %31 + %34 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %35 = load ptr, ptr %34, align 8, !alias.scope !23837, !noalias !23842, !nonnull !5, !noundef !5 + %36 = getelementptr inbounds nuw i8, ptr %27, i64 16 + %37 = load i64, ptr %36, align 8, !alias.scope !23837, !noalias !23842, !noundef !5 + %38 = load ptr, ptr %15, align 8, !alias.scope !23840, !noalias !23844, !nonnull !5, !noundef !5 + %39 = load i64, ptr %16, align 8, !alias.scope !23840, !noalias !23844, !noundef !5 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %6), !noalias !23845 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false), !noalias !23845 store ptr @_ZN20unicode_segmentation4word16has_alphanumeric17hbe73756c12ca5c1aE.llvm.4930786928582598558, ptr %.sroa.418.0..sroa_idx.i.i, align 8, !noalias !23845 - store ptr %44, ptr %.sroa.519.0..sroa_idx.i.i, align 8, !noalias !23845 - store i64 %46, ptr %.sroa.620.0..sroa_idx.i.i, align 8, !noalias !23845 + store ptr %35, ptr %.sroa.519.0..sroa_idx.i.i, align 8, !noalias !23845 + store i64 %37, ptr %.sroa.620.0..sroa_idx.i.i, align 8, !noalias !23845 store i8 19, ptr %.sroa.721.0..sroa_idx.i.i, align 8, !noalias !23845 store i8 19, ptr %.sroa.822.0..sroa_idx.i.i, align 1, !noalias !23845 store ptr @_ZN20unicode_segmentation4word16has_alphanumeric17hbe73756c12ca5c1aE.llvm.4930786928582598558, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !23845 - store ptr %47, ptr %.sroa.10.sroa.4.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23845 - store i64 %48, ptr %.sroa.10.sroa.5.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23845 + store ptr %38, ptr %.sroa.10.sroa.4.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23845 + store i64 %39, ptr %.sroa.10.sroa.5.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23845 store i8 19, ptr %.sroa.10.sroa.6.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !23845 store i8 19, ptr %.sroa.10.sroa.7.0..sroa.10.0..sroa_idx.sroa_idx.i.i, align 1, !noalias !23845 store i8 0, ptr %17, align 8, !noalias !23845 %49 = call noundef i64 @"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h6cb90b9bb6ea7aefE.llvm.4930786928582598558"(ptr noalias noundef nonnull align 8 dereferenceable(96) %6, i64 noundef 0), !noalias !23849 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %6), !noalias !23845 - %50 = zext i1 %37 to i8 - %51 = zext i1 %42 to i8 - br label %52 + %50 = trunc i32 %33 to i8 + %42 = and i8 %41, 1 + %43 = lshr i8 %50, 1 + %44 = and i8 %43, 1 + br label %45 52: ; preds = %26, %29 - %.sroa.513.sroa.0.1 = phi i8 [ %.sroa.513.sroa.0.070, %26 ], [ %51, %29 ] - %.sroa.513.sroa.5.1 = phi i64 [ %.sroa.513.sroa.5.071, %26 ], [ %46, %29 ] + %.sroa.513.sroa.0.1 = phi i8 [ %.sroa.513.sroa.0.070, %26 ], [ %44, %29 ] + %.sroa.513.sroa.5.1 = phi i64 [ %.sroa.513.sroa.5.071, %26 ], [ %37, %29 ] %.sroa.08.1 = phi i64 [ %.sroa.08.080, %26 ], [ %49, %29 ] - %.sroa.410.0 = phi i8 [ 2, %26 ], [ %50, %29 ] + %.sroa.410.0 = phi i8 [ 2, %26 ], [ %51, %29 ] %53 = getelementptr inbounds nuw i8, ptr %27, i64 52 %54 = getelementptr inbounds nuw i8, ptr %27, i64 56 %55 = load i8, ptr %54, align 4, !range !435, !noundef !5 @@ -120009,7 +119995,7 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant %68 = icmp ne i8 %.sroa.410.0, 2 %69 = icmp ne i8 %.sroa.219.082, 2 %brmerge.not.i.i.i.i = and i1 %69, %68 - br i1 %brmerge.not.i.i.i.i, label %73, label %70 + br i1 %brmerge.not.i.i.i.i, label %73, label %72 70: ; preds = %67 %.not.i.i.i.i = xor i1 %68, true @@ -120018,17 +120004,17 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant %..i.i.i.i = zext i1 %72 to i8 br i1 %71, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61", label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" -73: ; preds = %67 - %74 = sub nsw i8 %.sroa.410.0, %.sroa.219.082 - %75 = icmp eq i8 %74, 0 - br i1 %75, label %76, label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" - -76: ; preds = %73 - %77 = sub nsw i8 %.sroa.513.sroa.0.1, %.sroa.322.sroa.0.072 +76: ; preds = %67 + %77 = sub nsw i8 %.sroa.410.0, %.sroa.219.082 %78 = icmp eq i8 %77, 0 - br i1 %78, label %79, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" + br i1 %78, label %79, label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" 79: ; preds = %76 + %70 = sub nsw i8 %.sroa.513.sroa.0.1, %.sroa.322.sroa.0.072 + %71 = icmp eq i8 %70, 0 + br i1 %71, label %72, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" + +72: ; preds = %69 %.0.i.i.i.i.i.i.i = call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i64(i64 %.sroa.017.081, i64 %.sroa.08.1) %80 = icmp eq i64 %.sroa.017.081, %.sroa.08.1 br i1 %80, label %81, label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" @@ -120038,7 +120024,7 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant br label %"_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i" "_ZN71_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17haed88b96688d9432E.exit.i.i.i": ; preds = %81, %79, %73, %70 - %.0.i.i.i.i = phi i8 [ %..i.i.i.i, %70 ], [ %.0.i.i.i.i.i.i, %81 ], [ %74, %73 ], [ %.0.i.i.i.i.i.i.i, %79 ] + %.0.i.i.i.i = phi i8 [ %..i.i.i.i, %72 ], [ %.0.i.i.i.i.i.i, %81 ], [ %74, %73 ], [ %.0.i.i.i.i.i.i.i, %79 ] %82 = icmp eq i8 %.0.i.i.i.i, 0 br i1 %82, label %83, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" @@ -120053,12 +120039,12 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant 87: ; preds = %83 %88 = fcmp ugt double %63, %.sroa.322.sroa.4.074 %89 = fcmp ult double %63, %.sroa.322.sroa.4.074 - br i1 %88, label %90, label %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" + br i1 %88, label %92, label %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" 90: ; preds = %87 br i1 %89, label %91, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread59" -91: ; preds = %90 +91: ; preds = %92 call void @_ZN4core6option13expect_failed17h5c9b166b5a7a71f0E(ptr noalias noundef nonnull readonly align 1 @anon.a2b023d1a4e2834952d16152dce23780.284.llvm.7889846851399105414, i64 noundef 12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a2b023d1a4e2834952d16152dce23780.288.llvm.7889846851399105414) #64, !noalias !23850 unreachable @@ -120075,18 +120061,18 @@ define hidden { i64, i64 } @_ZN5typst4text4font4book8FontBook17find_best_variant "_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61": ; preds = %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i", %52, %70, %85, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" br label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread59" -"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread59": ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit", %85, %90, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i", %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" - %.sroa.322.sroa.0.1 = phi i8 [ %.sroa.513.sroa.0.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.0.072, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.0.072, %90 ], [ %.sroa.322.sroa.0.072, %85 ], [ %.sroa.322.sroa.0.072, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.322.sroa.3.1 = phi i64 [ %.sroa.513.sroa.5.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.3.073, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.3.073, %90 ], [ %.sroa.322.sroa.3.073, %85 ], [ %.sroa.322.sroa.3.073, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.322.sroa.4.1 = phi double [ %63, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.4.074, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.4.074, %90 ], [ %.sroa.322.sroa.4.074, %85 ], [ %.sroa.322.sroa.4.074, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.322.sroa.5.1 = phi i16 [ %.0.i, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.5.075, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.5.075, %90 ], [ %.sroa.322.sroa.5.075, %85 ], [ %.sroa.322.sroa.5.075, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.322.sroa.6.1 = phi i16 [ %.0.i36, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.6.076, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.6.076, %90 ], [ %.sroa.322.sroa.6.076, %85 ], [ %.sroa.322.sroa.6.076, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.04.1 = phi i64 [ 1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.04.078, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.04.078, %90 ], [ %.sroa.04.078, %85 ], [ %.sroa.04.078, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.35.1 = phi i64 [ %24, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.35.079, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.35.079, %90 ], [ %.sroa.35.079, %85 ], [ %.sroa.35.079, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.017.1 = phi i64 [ %.sroa.08.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.017.081, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.017.081, %90 ], [ %.sroa.017.081, %85 ], [ %.sroa.017.081, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %.sroa.219.1 = phi i8 [ %.sroa.410.0, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.219.082, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.219.082, %90 ], [ %.sroa.219.082, %85 ], [ %.sroa.219.082, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] - %94 = icmp eq ptr %23, %4 - br i1 %94, label %._crit_edge, label %22 +"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread59": ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit", %85, %92, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i", %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" + %.sroa.322.sroa.0.1 = phi i8 [ %.sroa.513.sroa.0.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.0.072, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.0.072, %92 ], [ %.sroa.322.sroa.0.072, %85 ], [ %.sroa.322.sroa.0.072, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.322.sroa.3.1 = phi i64 [ %.sroa.513.sroa.5.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.3.073, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.3.073, %92 ], [ %.sroa.322.sroa.3.073, %85 ], [ %.sroa.322.sroa.3.073, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.322.sroa.4.1 = phi double [ %63, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.4.074, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.4.074, %92 ], [ %.sroa.322.sroa.4.074, %85 ], [ %.sroa.322.sroa.4.074, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.322.sroa.5.1 = phi i16 [ %.0.i, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.5.075, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.5.075, %92 ], [ %.sroa.322.sroa.5.075, %85 ], [ %.sroa.322.sroa.5.075, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.322.sroa.6.1 = phi i16 [ %.0.i36, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.322.sroa.6.076, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.322.sroa.6.076, %92 ], [ %.sroa.322.sroa.6.076, %85 ], [ %.sroa.322.sroa.6.076, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.04.1 = phi i64 [ 1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.04.078, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.04.078, %92 ], [ %.sroa.04.078, %85 ], [ %.sroa.04.078, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.35.1 = phi i64 [ %24, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.35.079, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.35.079, %92 ], [ %.sroa.35.079, %85 ], [ %.sroa.35.079, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.017.1 = phi i64 [ %.sroa.08.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.017.081, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.017.081, %92 ], [ %.sroa.017.081, %85 ], [ %.sroa.017.081, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %.sroa.219.1 = phi i8 [ %.sroa.410.0, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit.thread61" ], [ %.sroa.219.082, %"_ZN69_$LT$typst..layout..ratio..Ratio$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h3b05fb681664ddd1E.exit.i.i.i" ], [ %.sroa.219.082, %92 ], [ %.sroa.219.082, %85 ], [ %.sroa.219.082, %"_ZN4core6option15Option$LT$T$GT$6map_or17h9a1953b587210ec4E.exit" ] + %97 = icmp eq ptr %23, %4 + br i1 %97, label %._crit_edge, label %22 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/verilator/optimized/V3AstNodes.ll b/bench/verilator/optimized/V3AstNodes.ll index d5e188c6aea..ed63db3497f 100644 --- a/bench/verilator/optimized/V3AstNodes.ll +++ b/bench/verilator/optimized/V3AstNodes.ll @@ -157455,14 +157455,12 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZNK8AstCFunc4sameEPK7AstNode( %8 = alloca %"class.std::__cxx11::basic_string", align 8 %9 = getelementptr inbounds nuw i8, ptr %0, i64 313 %10 = load i32, ptr %9, align 1 - %11 = and i32 %10, 2 - %12 = icmp ne i32 %11, 0 - %13 = getelementptr inbounds nuw i8, ptr %1, i64 313 - %14 = load i32, ptr %13, align 1 - %15 = and i32 %14, 2 - %16 = icmp ne i32 %15, 0 - %17 = xor i1 %12, %16 - br i1 %17, label %.critedge37, label %18 + %11 = getelementptr inbounds nuw i8, ptr %1, i64 313 + %12 = load i32, ptr %11, align 1 + %13 = xor i32 %12, %10 + %14 = and i32 %13, 2 + %15 = icmp eq i32 %14, 0 + br i1 %.not, label %15, label %.critedge37 18: ; preds = %2 call void @_ZNK8AstCFunc11rtnTypeVoidB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(328) %0) @@ -157501,71 +157499,69 @@ _ZNK8AstCFunc8argTypesB5cxx11Ev.exit38: ; preds = %_ZNK8AstCFunc8argTy %31 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #33 %32 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #33 %33 = icmp eq i64 %31, %32 - br i1 %33, label %34, label %.critedge.thread50 - -34: ; preds = %_ZNK8AstCFunc8argTypesB5cxx11Ev.exit38 - %35 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #33 - %36 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #33 - %37 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #33 - %38 = icmp eq i64 %37, 0 - br i1 %38, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40 - -_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40: ; preds = %34 - %bcmp.i39 = call i32 @bcmp(ptr %35, ptr %36, i64 %37) - %39 = icmp eq i32 %bcmp.i39, 0 - br i1 %39, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread, label %.critedge.thread50 - -_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread: ; preds = %34, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40 - %40 = load i32, ptr %9, align 1 - %41 = and i32 %40, 512 - %42 = icmp ne i32 %41, 0 - %43 = load i32, ptr %13, align 1 - %44 = and i32 %43, 512 - %45 = icmp ne i32 %44, 0 - %46 = xor i1 %42, %45 - br i1 %46, label %.critedge.thread50, label %47 - -47: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread - %48 = and i32 %40, 196608 - %or.cond.not = icmp eq i32 %48, 0 - br i1 %or.cond.not, label %.critedge.thread50, label %49 + br i1 %33, label %31, label %.critedge.thread50 -49: ; preds = %47 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 152 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %50) - to label %_ZNK8AstCFunc4nameB5cxx11Ev.exit unwind label %71 +49: ; preds = %_ZNK8AstCFunc8argTypesB5cxx11Ev.exit38 + %50 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #33 + %33 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #33 + %34 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #33 + %35 = icmp eq i64 %34, 0 + br i1 %35, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40 + +_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40: ; preds = %31 + %bcmp.i39 = call i32 @bcmp(ptr %32, ptr %33, i64 %34) + %36 = icmp eq i32 %bcmp.i39, 0 + br i1 %36, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread, label %.critedge.thread50 + +_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread: ; preds = %31, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40 + %37 = load i32, ptr %9, align 1 + %38 = load i32, ptr %11, align 1 + %39 = xor i32 %38, %37 + %40 = and i32 %39, 512 + %.not54 = icmp eq i32 %40, 0 + br i1 %.not54, label %41, label %.critedge.thread50 + +41: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread + %42 = and i32 %37, 196608 + %or.cond.not = icmp eq i32 %42, 0 + br i1 %or.cond.not, label %.critedge.thread50, label %43 + +43: ; preds = %41 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 152 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %44) + to label %_ZNK8AstCFunc4nameB5cxx11Ev.exit unwind label %65 -_ZNK8AstCFunc4nameB5cxx11Ev.exit: ; preds = %49 +_ZNK8AstCFunc4nameB5cxx11Ev.exit: ; preds = %43 %51 = getelementptr inbounds nuw i8, ptr %1, i64 152 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %51) to label %_ZNK8AstCFunc4nameB5cxx11Ev.exit41 unwind label %73 _ZNK8AstCFunc4nameB5cxx11Ev.exit41: ; preds = %_ZNK8AstCFunc4nameB5cxx11Ev.exit + %46 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 + %47 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #33 + %48 = icmp eq i64 %46, %47 + br i1 %48, label %49, label %.critedge.thread + +49: ; preds = %_ZNK8AstCFunc4nameB5cxx11Ev.exit41 + %50 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 + %51 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #33 %52 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 - %53 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #33 - %54 = icmp eq i64 %52, %53 - br i1 %54, label %55, label %.critedge.thread - -55: ; preds = %_ZNK8AstCFunc4nameB5cxx11Ev.exit41 - %56 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 - %57 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #33 - %58 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 - %59 = icmp eq i64 %58, 0 - br i1 %59, label %.critedge.thread, label %60 - -60: ; preds = %55 - %bcmp.i42 = call i32 @bcmp(ptr %56, ptr %57, i64 %58) - %61 = icmp eq i32 %bcmp.i42, 0 + %53 = icmp eq i64 %52, 0 + br i1 %53, label %.critedge.thread, label %54 + +54: ; preds = %49 + %bcmp.i42 = call i32 @bcmp(ptr %50, ptr %51, i64 %52) + %56 = icmp eq i32 %bcmp.i42, 0 br label %.critedge.thread -.critedge.thread: ; preds = %60, %55, %_ZNK8AstCFunc4nameB5cxx11Ev.exit41 - %62 = phi i1 [ false, %_ZNK8AstCFunc4nameB5cxx11Ev.exit41 ], [ %61, %60 ], [ true, %55 ] +.critedge.thread: ; preds = %54, %49, %_ZNK8AstCFunc4nameB5cxx11Ev.exit41 + %62 = phi i1 [ false, %_ZNK8AstCFunc4nameB5cxx11Ev.exit41 ], [ %56, %54 ], [ true, %49 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #33 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 br label %.critedge.thread50 -.critedge.thread50: ; preds = %47, %_ZNK8AstCFunc8argTypesB5cxx11Ev.exit38, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40, %.critedge.thread - %63 = phi i1 [ %62, %.critedge.thread ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40 ], [ false, %_ZNK8AstCFunc8argTypesB5cxx11Ev.exit38 ], [ true, %47 ] +.critedge.thread50: ; preds = %41, %_ZNK8AstCFunc8argTypesB5cxx11Ev.exit38, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40, %.critedge.thread + %63 = phi i1 [ %62, %.critedge.thread ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40.thread ], [ false, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit40 ], [ false, %_ZNK8AstCFunc8argTypesB5cxx11Ev.exit38 ], [ true, %41 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #33 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #33 br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread44 @@ -157595,7 +157591,7 @@ _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__c cleanup br label %76 -71: ; preds = %49 +71: ; preds = %43 %72 = landingpad { ptr, i32 } cleanup br label %75 diff --git a/bench/yoga/optimized/LayoutResults.ll b/bench/yoga/optimized/LayoutResults.ll index cb490e0b60c..d7c8bdfa29d 100644 --- a/bench/yoga/optimized/LayoutResults.ll +++ b/bench/yoga/optimized/LayoutResults.ll @@ -210,19 +210,11 @@ land.lhs.true14: ; preds = %_ZN8facebook4yoga13 %direction_.i78 = getelementptr inbounds nuw i8, ptr %layout, i64 236 %bf.load.i79 = load i8, ptr %direction_.i78, align 4 %20 = xor i8 %bf.load.i79, %bf.load.i - %21 = and i8 %20, 3 + %21 = and i8 %20, 7 %cmp = icmp eq i8 %21, 0 br i1 %cmp, label %land.lhs.true17, label %for.end land.lhs.true17: ; preds = %land.lhs.true14 - %22 = and i8 %bf.load.i, 4 - %bf.cast.i = icmp ne i8 %22, 0 - %23 = and i8 %bf.load.i79, 4 - %bf.cast.i84 = icmp ne i8 %23, 0 - %24 = xor i1 %bf.cast.i, %bf.cast.i84 - br i1 %24, label %for.end, label %land.lhs.true22 - -land.lhs.true22: ; preds = %land.lhs.true17 %lastOwnerDirection = getelementptr inbounds nuw i8, ptr %this, i64 12 %25 = load i8, ptr %lastOwnerDirection, align 4 %lastOwnerDirection23 = getelementptr inbounds nuw i8, ptr %layout, i64 12 @@ -332,9 +324,9 @@ for.end.loopexit: ; preds = %_ZNK8facebook4yoga1 %frombool49 = zext i1 %isEqual.3.v.i to i8 br label %for.end -for.end: ; preds = %if.end.i.i, %if.end.i.i14, %if.end.i.i29, %if.end.i.i47, %if.end.i.i65, %lor.rhs.i, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit, %_ZN8facebook4yoga13inexactEqualsILm2EfEEbRKSt5arrayIT0_XT_EES6_.exit, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit41, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit59, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit77, %land.lhs.true14, %land.lhs.true17, %land.lhs.true22, %land.lhs.true25, %land.lhs.true28, %for.end.loopexit - %isEqual.0.lcssa = phi i8 [ %frombool49, %for.end.loopexit ], [ 0, %land.lhs.true28 ], [ 0, %land.lhs.true25 ], [ 0, %land.lhs.true22 ], [ 0, %land.lhs.true17 ], [ 0, %land.lhs.true14 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit77 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit59 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit41 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm2EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ 0, %lor.rhs.i ], [ 0, %if.end.i.i65 ], [ 0, %if.end.i.i47 ], [ 0, %if.end.i.i29 ], [ 0, %if.end.i.i14 ], [ 0, %if.end.i.i ] - %tobool.lcssa = phi i1 [ %isEqual.3.v.i, %for.end.loopexit ], [ false, %land.lhs.true28 ], [ false, %land.lhs.true25 ], [ false, %land.lhs.true22 ], [ false, %land.lhs.true17 ], [ false, %land.lhs.true14 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit77 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit59 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit41 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm2EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ false, %lor.rhs.i ], [ false, %if.end.i.i65 ], [ false, %if.end.i.i47 ], [ false, %if.end.i.i29 ], [ false, %if.end.i.i14 ], [ false, %if.end.i.i ] +for.end: ; preds = %if.end.i.i, %if.end.i.i14, %if.end.i.i29, %if.end.i.i47, %if.end.i.i65, %lor.rhs.i, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit, %_ZN8facebook4yoga13inexactEqualsILm2EfEEbRKSt5arrayIT0_XT_EES6_.exit, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit41, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit59, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit77, %land.lhs.true14, %land.lhs.true22, %land.lhs.true25, %land.lhs.true28, %for.end.loopexit + %isEqual.0.lcssa = phi i8 [ %frombool49, %for.end.loopexit ], [ 0, %land.lhs.true28 ], [ 0, %land.lhs.true25 ], [ 0, %land.lhs.true22 ], [ 0, %land.lhs.true14 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit77 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit59 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit41 ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm2EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ 0, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ 0, %lor.rhs.i ], [ 0, %if.end.i.i65 ], [ 0, %if.end.i.i47 ], [ 0, %if.end.i.i29 ], [ 0, %if.end.i.i14 ], [ 0, %if.end.i.i ] + %tobool.lcssa = phi i1 [ %isEqual.3.v.i, %for.end.loopexit ], [ false, %land.lhs.true28 ], [ false, %land.lhs.true25 ], [ false, %land.lhs.true22 ], [ false, %land.lhs.true14 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit77 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit59 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit41 ], [ false, %_ZN8facebook4yoga13inexactEqualsILm2EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ false, %_ZN8facebook4yoga13inexactEqualsILm4EfEEbRKSt5arrayIT0_XT_EES6_.exit ], [ false, %lor.rhs.i ], [ false, %if.end.i.i65 ], [ false, %if.end.i.i47 ], [ false, %if.end.i.i29 ], [ false, %if.end.i.i14 ], [ false, %if.end.i.i ] %measuredDimensions_ = getelementptr inbounds nuw i8, ptr %this, i64 248 %37 = load float, ptr %measuredDimensions_, align 4 %cmp.i92 = fcmp uno float %37, 0.000000e+00 diff --git a/bench/z3/optimized/arith_solver.ll b/bench/z3/optimized/arith_solver.ll index 66e57e2b1b8..9a9cd61cd5c 100644 --- a/bench/z3/optimized/arith_solver.ll +++ b/bench/z3/optimized/arith_solver.ll @@ -6176,13 +6176,11 @@ if.then22: ; preds = %land.lhs.true.i.i.i %retval.0.i.i.i = phi ptr [ %curr.132.i.i.i, %land.lhs.true25.i.i.i ], [ %curr.030.i.i.i, %land.lhs.true.i.i.i ] %m_value.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 16 %29 = load ptr, ptr %m_value.i, align 8 - %30 = and i32 %20, 1 - %tobool.i12 = icmp ne i32 %30, 0 %m_bv.i = getelementptr inbounds nuw i8, ptr %29, i64 8 %retval.sroa.0.0.copyload.i = load i32, ptr %m_bv.i, align 8 - %31 = and i32 %retval.sroa.0.0.copyload.i, 1 - %32 = icmp eq i32 %31, 0 - %cmp28 = xor i1 %tobool.i12, %32 + %31 = xor i32 %retval.sroa.0.0.copyload.i, %20 + %32 = and i32 %31, 1 + %cmp28 = icmp eq i32 %32, 0 tail call void @_ZN5arith6solver12assert_boundEbRN6lp_api5boundIN3sat7literalEEE(ptr noundef nonnull align 8 dereferenceable(1144) %this, i1 noundef zeroext %cmp28, ptr noundef nonnull align 8 dereferenceable(68) %29) %.pre = load i32, ptr %m_asserted_qhead8, align 8 %.pre39 = load ptr, ptr %m_asserted10, align 8 diff --git a/bench/z3/optimized/dep_intervals.ll b/bench/z3/optimized/dep_intervals.ll index f53ba34de3d..ebea43996ad 100644 --- a/bench/z3/optimized/dep_intervals.ll +++ b/bench/z3/optimized/dep_intervals.ll @@ -7835,24 +7835,19 @@ _Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit60: ; land.lhs.true13: ; preds = %if.then.i.i16.i.i51, %if.else.i24, %_Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit60 %bf.load.i.i61 = load i8, ptr %m_lower_inf.i.i, align 8 - %bf.clear.i.i = and i8 %bf.load.i.i61, 1 - %tobool.i.i = icmp ne i8 %bf.clear.i.i, 0 %bf.load.i.i63 = load i8, ptr %m_lower_inf.i.i11, align 8 - %bf.clear.i.i64 = and i8 %bf.load.i.i63, 1 - %tobool.i.i65 = icmp ne i8 %bf.clear.i.i64, 0 - %14 = xor i1 %tobool.i.i, %tobool.i.i65 - br i1 %14, label %land.end, label %land.rhs + %bf.clear.i.i64 = xor i8 %bf.load.i.i63, %bf.load.i.i61 + %tobool.i.i65 = and i8 %bf.clear.i.i64, 1 + %14 = icmp eq i8 %tobool.i.i65, 0 + br i1 %14, label %land.rhs, label %land.end land.rhs: ; preds = %land.lhs.true13 - %15 = and i8 %bf.load.i.i61, 2 - %tobool.i.i67 = icmp ne i8 %15, 0 - %16 = and i8 %bf.load.i.i63, 2 - %17 = icmp eq i8 %16, 0 - %cmp21 = xor i1 %tobool.i.i67, %17 + %15 = and i8 %bf.clear.i.i64, 2 + %tobool.i.i67 = icmp eq i8 %15, 0 br label %land.end land.end: ; preds = %if.then.i.i.i.i58, %_ZN11mpq_managerILb0EE2eqERK3mpzS3_.exit.i.i33, %if.then.i27, %if.then.i.i.i.i, %_ZN11mpq_managerILb0EE2eqERK3mpzS3_.exit.i.i, %if.then.i, %if.then.i.i16.i.i51, %if.else.i24, %if.then.i.i16.i.i, %if.else.i, %land.rhs, %land.lhs.true13, %_Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit60, %_Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit - %18 = phi i1 [ false, %land.lhs.true13 ], [ false, %_Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit60 ], [ false, %_Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit ], [ %cmp21, %land.rhs ], [ false, %if.else.i ], [ false, %if.then.i.i16.i.i ], [ false, %if.else.i24 ], [ false, %if.then.i.i16.i.i51 ], [ false, %if.then.i ], [ false, %_ZN11mpq_managerILb0EE2eqERK3mpzS3_.exit.i.i ], [ false, %if.then.i.i.i.i ], [ false, %if.then.i27 ], [ false, %_ZN11mpq_managerILb0EE2eqERK3mpzS3_.exit.i.i33 ], [ false, %if.then.i.i.i.i58 ] + %18 = phi i1 [ false, %land.lhs.true13 ], [ false, %_Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit60 ], [ false, %_Z2eqI11mpq_managerILb0EEEbRT_RKNS2_7numeralE16ext_numeral_kindS6_S7_.exit ], [ %.not73, %land.rhs ], [ false, %if.else.i ], [ false, %if.then.i.i16.i.i ], [ false, %if.else.i24 ], [ false, %if.then.i.i16.i.i51 ], [ false, %if.then.i ], [ false, %_ZN11mpq_managerILb0EE2eqERK3mpzS3_.exit.i.i ], [ false, %if.then.i.i.i.i ], [ false, %if.then.i27 ], [ false, %_ZN11mpq_managerILb0EE2eqERK3mpzS3_.exit.i.i33 ], [ false, %if.then.i.i.i.i58 ] ret i1 %18 } diff --git a/bench/z3/optimized/mbp_term_graph.ll b/bench/z3/optimized/mbp_term_graph.ll index 2c71c54269a..0ef5e4ad6b9 100644 --- a/bench/z3/optimized/mbp_term_graph.ll +++ b/bench/z3/optimized/mbp_term_graph.ll @@ -6198,15 +6198,13 @@ for.end: ; preds = %for.inc, %_ZN15ref_ %23 = load ptr, ptr %m_root.i20, align 8 %m_class_props.i.i = getelementptr inbounds nuw i8, ptr %23, i64 64 %bf.load.i.i = load i8, ptr %m_class_props.i.i, align 8 - %bf.clear.i.i = and i8 %bf.load.i.i, 1 - %tobool.i.i = icmp ne i8 %bf.clear.i.i, 0 %m_root.i21 = getelementptr inbounds nuw i8, ptr %spec.select82, i64 16 %24 = load ptr, ptr %m_root.i21, align 8 %m_class_props.i.i22 = getelementptr inbounds nuw i8, ptr %24, i64 64 %bf.load.i.i23 = load i8, ptr %m_class_props.i.i22, align 8 - %bf.clear.i.i24 = and i8 %bf.load.i.i23, 1 - %tobool.i.i25 = icmp ne i8 %bf.clear.i.i24, 0 - %25 = xor i1 %tobool.i.i, %tobool.i.i25 + %bf.clear.i.i24 = xor i8 %bf.load.i.i23, %bf.load.i.i + %tobool.i.i25 = and i8 %bf.clear.i.i24, 1 + %25 = icmp eq i8 %tobool.i.i25, 0 store ptr %spec.select82, ptr %m_root.i20, align 8 %m_next.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %it.085 = load ptr, ptr %m_next.i, align 8 @@ -6389,7 +6387,7 @@ for.inc49: ; preds = %for.body33, %_ZN6ve br i1 %cmp32.not, label %for.end51, label %for.body33 for.end51: ; preds = %for.inc49, %_ZN3mbp4term14merge_eq_classERS0_.exit, %_ZNK3mbp4term7parents3endEv.exit38 - br i1 %25, label %if.then52, label %if.end53 + br i1 %25, label %if.end53, label %if.then52 if.then52: ; preds = %for.end51 call void @_ZN3mbp10term_graph20cground_percolate_upEPNS_4termE(ptr noundef nonnull align 8 dereferenceable(244) %this, ptr noundef %spec.select82) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..f2b993a9b62 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/125676 export COMPTIME_MODE=0 # Please rebase manually