@@ -673,15 +673,15 @@ define i8 @phi_trans4(ptr %p) {
673
673
; CHECK-NEXT: [[X3:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 192
674
674
; CHECK-NEXT: store i8 -64, ptr [[X3]], align 1
675
675
; CHECK-NEXT: [[X:%.*]] = getelementptr i8, ptr [[P]], i32 4
676
- ; CHECK-NEXT: [[Y :%.*]] = load i8, ptr [[X]], align 1
676
+ ; CHECK-NEXT: [[Y2_PRE :%.*]] = load i8, ptr [[X]], align 1
677
677
; CHECK-NEXT: br label [[LOOP:%.*]]
678
678
; CHECK: loop:
679
- ; CHECK-NEXT: [[Y2:%.*]] = phi i8 [ [[Y ]], [[ENTRY:%.*]] ], [ 0, [[LOOP]] ]
679
+ ; CHECK-NEXT: [[Y2:%.*]] = phi i8 [ [[Y2_PRE ]], [[ENTRY:%.*]] ], [ 0, [[LOOP]] ]
680
680
; CHECK-NEXT: [[COND:%.*]] = call i1 @cond2()
681
681
; CHECK-NEXT: store i32 0, ptr [[X3]], align 4
682
682
; CHECK-NEXT: br i1 [[COND]], label [[LOOP]], label [[OUT:%.*]]
683
683
; CHECK: out:
684
- ; CHECK-NEXT: [[R:%.*]] = add i8 [[Y ]], [[Y2]]
684
+ ; CHECK-NEXT: [[R:%.*]] = add i8 [[Y2_PRE ]], [[Y2]]
685
685
; CHECK-NEXT: ret i8 [[R]]
686
686
;
687
687
entry:
@@ -772,18 +772,18 @@ define i32 @phi_trans6(ptr noalias nocapture readonly %x, i1 %cond) {
772
772
; CHECK-NEXT: call void @use_i32(i32 [[L0]])
773
773
; CHECK-NEXT: br label [[HEADER:%.*]]
774
774
; CHECK: header:
775
- ; CHECK-NEXT: [[L1 :%.*]] = phi i32 [ [[L0]], [[ENTRY:%.*]] ], [ [[L1_PRE :%.*]], [[LATCH_HEADER_CRIT_EDGE:%.*]] ]
775
+ ; CHECK-NEXT: [[L1_PRE :%.*]] = phi i32 [ [[L0]], [[ENTRY:%.*]] ], [ [[L1_PRE1 :%.*]], [[LATCH_HEADER_CRIT_EDGE:%.*]] ]
776
776
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[IV_NEXT:%.*]], [[LATCH_HEADER_CRIT_EDGE]] ]
777
777
; CHECK-NEXT: indirectbr ptr blockaddress(@phi_trans6, [[LATCH:%.*]]), [label %latch]
778
778
; CHECK: latch:
779
779
; CHECK-NEXT: [[IV_NEXT]] = add i32 [[IV]], 1
780
780
; CHECK-NEXT: br i1 [[COND:%.*]], label [[EXIT:%.*]], label [[LATCH_HEADER_CRIT_EDGE]]
781
781
; CHECK: latch.header_crit_edge:
782
782
; CHECK-NEXT: [[GEP_1_PHI_TRANS_INSERT_PHI_TRANS_INSERT:%.*]] = getelementptr i32, ptr [[X]], i32 [[IV_NEXT]]
783
- ; CHECK-NEXT: [[L1_PRE ]] = load i32, ptr [[GEP_1_PHI_TRANS_INSERT_PHI_TRANS_INSERT]], align 4
783
+ ; CHECK-NEXT: [[L1_PRE1 ]] = load i32, ptr [[GEP_1_PHI_TRANS_INSERT_PHI_TRANS_INSERT]], align 4
784
784
; CHECK-NEXT: br label [[HEADER]]
785
785
; CHECK: exit:
786
- ; CHECK-NEXT: ret i32 [[L1 ]]
786
+ ; CHECK-NEXT: ret i32 [[L1_PRE ]]
787
787
;
788
788
entry:
789
789
%l0 = load i32 , ptr %x
@@ -1057,18 +1057,18 @@ define void @load_load_partial_alias_loop(ptr %P) {
1057
1057
; LE-NEXT: [[TMP0:%.*]] = trunc i32 [[V_1_32]] to i8
1058
1058
; LE-NEXT: br label [[LOOP:%.*]]
1059
1059
; LE: loop:
1060
- ; LE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP0]], [[ENTRY:%.*]] ], [ [[V_I_PRE :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
1060
+ ; LE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP0]], [[ENTRY:%.*]] ], [ [[TMP2 :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
1061
1061
; LE-NEXT: [[I:%.*]] = phi i64 [ 1, [[ENTRY]] ], [ [[I_INC:%.*]], [[LOOP_LOOP_CRIT_EDGE]] ]
1062
1062
; LE-NEXT: [[P_I:%.*]] = getelementptr i8, ptr [[P]], i64 [[I]]
1063
1063
; LE-NEXT: call void @use.i8(i8 [[V_I]])
1064
1064
; LE-NEXT: [[V_I_32:%.*]] = load i32, ptr [[P_I]], align 4
1065
1065
; LE-NEXT: call void @use.i32(i32 [[V_I_32]])
1066
1066
; LE-NEXT: [[I_INC]] = add i64 [[I]], 1
1067
1067
; LE-NEXT: [[CMP:%.*]] = icmp ne i64 [[I_INC]], 64
1068
+ ; LE-NEXT: [[TMP1:%.*]] = lshr i32 [[V_I_32]], 8
1069
+ ; LE-NEXT: [[TMP2]] = trunc i32 [[TMP1]] to i8
1068
1070
; LE-NEXT: br i1 [[CMP]], label [[LOOP_LOOP_CRIT_EDGE]], label [[EXIT:%.*]]
1069
1071
; LE: loop.loop_crit_edge:
1070
- ; LE-NEXT: [[P_I_PHI_TRANS_INSERT:%.*]] = getelementptr i8, ptr [[P]], i64 [[I_INC]]
1071
- ; LE-NEXT: [[V_I_PRE]] = load i8, ptr [[P_I_PHI_TRANS_INSERT]], align 1
1072
1072
; LE-NEXT: br label [[LOOP]]
1073
1073
; LE: exit:
1074
1074
; LE-NEXT: ret void
@@ -1084,18 +1084,18 @@ define void @load_load_partial_alias_loop(ptr %P) {
1084
1084
; BE-NEXT: [[TMP1:%.*]] = trunc i32 [[TMP0]] to i8
1085
1085
; BE-NEXT: br label [[LOOP:%.*]]
1086
1086
; BE: loop:
1087
- ; BE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP1]], [[ENTRY:%.*]] ], [ [[V_I_PRE :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
1087
+ ; BE-NEXT: [[V_I:%.*]] = phi i8 [ [[TMP1]], [[ENTRY:%.*]] ], [ [[TMP3 :%.*]], [[LOOP_LOOP_CRIT_EDGE:%.*]] ]
1088
1088
; BE-NEXT: [[I:%.*]] = phi i64 [ 1, [[ENTRY]] ], [ [[I_INC:%.*]], [[LOOP_LOOP_CRIT_EDGE]] ]
1089
1089
; BE-NEXT: [[P_I:%.*]] = getelementptr i8, ptr [[P]], i64 [[I]]
1090
1090
; BE-NEXT: call void @use.i8(i8 [[V_I]])
1091
1091
; BE-NEXT: [[V_I_32:%.*]] = load i32, ptr [[P_I]], align 4
1092
1092
; BE-NEXT: call void @use.i32(i32 [[V_I_32]])
1093
1093
; BE-NEXT: [[I_INC]] = add i64 [[I]], 1
1094
1094
; BE-NEXT: [[CMP:%.*]] = icmp ne i64 [[I_INC]], 64
1095
+ ; BE-NEXT: [[TMP2:%.*]] = lshr i32 [[V_I_32]], 16
1096
+ ; BE-NEXT: [[TMP3]] = trunc i32 [[TMP2]] to i8
1095
1097
; BE-NEXT: br i1 [[CMP]], label [[LOOP_LOOP_CRIT_EDGE]], label [[EXIT:%.*]]
1096
1098
; BE: loop.loop_crit_edge:
1097
- ; BE-NEXT: [[P_I_PHI_TRANS_INSERT:%.*]] = getelementptr i8, ptr [[P]], i64 [[I_INC]]
1098
- ; BE-NEXT: [[V_I_PRE]] = load i8, ptr [[P_I_PHI_TRANS_INSERT]], align 1
1099
1099
; BE-NEXT: br label [[LOOP]]
1100
1100
; BE: exit:
1101
1101
; BE-NEXT: ret void
0 commit comments