@@ -9,7 +9,7 @@ declare void @use.i8(i8)
9
9
define i1 @or_ugt (i8 %x , i8 %y ) {
10
10
; CHECK-LABEL: @or_ugt(
11
11
; CHECK-NEXT: [[XN1:%.*]] = or i8 [[X:%.*]], [[Y:%.*]]
12
- ; CHECK-NEXT: [[R:%.*]] = icmp ugt i8 [[XN1]], [[X]]
12
+ ; CHECK-NEXT: [[R:%.*]] = icmp ne i8 [[XN1]], [[X]]
13
13
; CHECK-NEXT: ret i1 [[R]]
14
14
;
15
15
%xn1 = or i8 %x , %y
@@ -20,7 +20,7 @@ define i1 @or_ugt(i8 %x, i8 %y) {
20
20
define <2 x i1 > @or_ule (<2 x i8 > %x , <2 x i8 > %y ) {
21
21
; CHECK-LABEL: @or_ule(
22
22
; CHECK-NEXT: [[XN1:%.*]] = or <2 x i8> [[X:%.*]], [[Y:%.*]]
23
- ; CHECK-NEXT: [[R:%.*]] = icmp ule <2 x i8> [[XN1]], [[X]]
23
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[XN1]], [[X]]
24
24
; CHECK-NEXT: ret <2 x i1> [[R]]
25
25
;
26
26
%xn1 = or <2 x i8 > %x , %y
@@ -82,9 +82,8 @@ define i1 @or_eq_noundef(i8 %x, i8 noundef %y) {
82
82
83
83
define i1 @or_eq_notY_eq_0 (i8 %x , i8 %y ) {
84
84
; CHECK-LABEL: @or_eq_notY_eq_0(
85
- ; CHECK-NEXT: [[NY:%.*]] = xor i8 [[Y:%.*]], -1
86
- ; CHECK-NEXT: [[OR:%.*]] = or i8 [[NY]], [[X:%.*]]
87
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[OR]], [[NY]]
85
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[X:%.*]], [[Y:%.*]]
86
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP1]], 0
88
87
; CHECK-NEXT: ret i1 [[CMP]]
89
88
;
90
89
%ny = xor i8 %y , -1
@@ -110,9 +109,8 @@ define i1 @or_eq_notY_eq_0_fail_multiuse(i8 %x, i8 %y) {
110
109
111
110
define i1 @or_ne_notY_eq_1s (i8 %x , i8 %y ) {
112
111
; CHECK-LABEL: @or_ne_notY_eq_1s(
113
- ; CHECK-NEXT: [[NY:%.*]] = xor i8 [[Y:%.*]], -1
114
- ; CHECK-NEXT: [[OR:%.*]] = or i8 [[NY]], [[X:%.*]]
115
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[OR]], [[X]]
112
+ ; CHECK-NEXT: [[TMP1:%.*]] = or i8 [[X:%.*]], [[Y:%.*]]
113
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[TMP1]], -1
116
114
; CHECK-NEXT: ret i1 [[CMP]]
117
115
;
118
116
%ny = xor i8 %y , -1
@@ -136,8 +134,8 @@ define i1 @or_ne_notY_eq_1s_fail_bad_not(i8 %x, i8 %y) {
136
134
137
135
define <2 x i1 > @or_ne_vecC (<2 x i8 > %x ) {
138
136
; CHECK-LABEL: @or_ne_vecC(
139
- ; CHECK-NEXT: [[OR :%.*]] = or <2 x i8> [[X:%.*]], <i8 9 , i8 42 >
140
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i8> [[OR ]], <i8 9, i8 42>
137
+ ; CHECK-NEXT: [[TMP1 :%.*]] = and <2 x i8> [[X:%.*]], <i8 -10 , i8 -43 >
138
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i8> [[TMP1 ]], zeroinitializer
141
139
; CHECK-NEXT: ret <2 x i1> [[CMP]]
142
140
;
143
141
%or = or <2 x i8 > %x , <i8 9 , i8 42 >
@@ -359,7 +357,7 @@ define i1 @or_simplify_ugt_fail(i8 %y_in, i8 %rhs_in) {
359
357
; CHECK-LABEL: @or_simplify_ugt_fail(
360
358
; CHECK-NEXT: [[RHS:%.*]] = or i8 [[RHS_IN:%.*]], 1
361
359
; CHECK-NEXT: [[LBO:%.*]] = or i8 [[RHS]], [[Y_IN:%.*]]
362
- ; CHECK-NEXT: [[R:%.*]] = icmp ugt i8 [[LBO]], [[RHS]]
360
+ ; CHECK-NEXT: [[R:%.*]] = icmp ne i8 [[LBO]], [[RHS]]
363
361
; CHECK-NEXT: ret i1 [[R]]
364
362
;
365
363
%y = and i8 %y_in , -2
@@ -371,11 +369,7 @@ define i1 @or_simplify_ugt_fail(i8 %y_in, i8 %rhs_in) {
371
369
372
370
define i1 @pr64610 (ptr %b ) {
373
371
; CHECK-LABEL: @pr64610(
374
- ; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[B:%.*]], align 2
375
- ; CHECK-NEXT: [[S:%.*]] = select i1 [[V]], i32 74, i32 0
376
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[S]], 1
377
- ; CHECK-NEXT: [[R:%.*]] = icmp ugt i32 [[OR]], [[S]]
378
- ; CHECK-NEXT: ret i1 [[R]]
372
+ ; CHECK-NEXT: ret i1 true
379
373
;
380
374
%v = load i1 , ptr %b , align 2
381
375
%s = select i1 %v , i32 74 , i32 0
0 commit comments