@@ -104,3 +104,45 @@ define double @test_fmadd(double %a0, double %a1, double %a2) {
104104 %t2 = fdiv double %t1 , %t0
105105 ret double %t2
106106}
107+
108+
109+ define i64 @test_or_flags (i64 %a0 , i64 %a1 , i64 %a2 , i64 %a3 ) {
110+ ; CHECK-LABEL: name: test_or_flags
111+ ; CHECK: bb.0 (%ir-block.0):
112+ ; CHECK-NEXT: liveins: $x10, $x11, $x12, $x13
113+ ; CHECK-NEXT: {{ $}}
114+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x13
115+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x12
116+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x11
117+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x10
118+ ; CHECK-NEXT: [[OR:%[0-9]+]]:gpr = OR [[COPY3]], [[COPY2]]
119+ ; CHECK-NEXT: [[OR1:%[0-9]+]]:gpr = disjoint OR [[COPY1]], [[COPY]]
120+ ; CHECK-NEXT: [[OR2:%[0-9]+]]:gpr = disjoint OR killed [[OR]], killed [[OR1]]
121+ ; CHECK-NEXT: $x10 = COPY [[OR2]]
122+ ; CHECK-NEXT: PseudoRET implicit $x10
123+ %t0 = or i64 %a0 , %a1
124+ %t1 = or disjoint i64 %t0 , %a2
125+ %t2 = or disjoint i64 %t1 , %a3
126+ ret i64 %t2
127+ }
128+
129+ define i64 @test_add_flags (i64 %a0 , i64 %a1 , i64 %a2 , i64 %a3 ) {
130+ ; CHECK-LABEL: name: test_add_flags
131+ ; CHECK: bb.0 (%ir-block.0):
132+ ; CHECK-NEXT: liveins: $x10, $x11, $x12, $x13
133+ ; CHECK-NEXT: {{ $}}
134+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x13
135+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x12
136+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x11
137+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x10
138+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:gpr = ADD [[COPY3]], [[COPY2]]
139+ ; CHECK-NEXT: [[ADD1:%[0-9]+]]:gpr = ADD [[COPY1]], [[COPY]]
140+ ; CHECK-NEXT: [[ADD2:%[0-9]+]]:gpr = ADD killed [[ADD]], killed [[ADD1]]
141+ ; CHECK-NEXT: $x10 = COPY [[ADD2]]
142+ ; CHECK-NEXT: PseudoRET implicit $x10
143+ %t0 = add i64 %a0 , %a1
144+ %t1 = add nsw i64 %t0 , %a2
145+ %t2 = add nuw i64 %t1 , %a3
146+ ret i64 %t2
147+ }
148+
0 commit comments