@@ -104,3 +104,45 @@ define double @test_fmadd(double %a0, double %a1, double %a2) {
104
104
%t2 = fdiv double %t1 , %t0
105
105
ret double %t2
106
106
}
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