7
7
8
8
define i16 @simple1 (i8 %a ) {
9
9
; CHECK-LABEL: @simple1(
10
- ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i32
11
- ; CHECK-NEXT: [[T21:%.*]] = add i32 [[TMP1]], 1
12
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[T21]] to i16
13
- ; CHECK-NEXT: ret i16 [[TMP2]]
10
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i16
11
+ ; CHECK-NEXT: [[T21:%.*]] = add i16 [[TMP1]], 1
12
+ ; CHECK-NEXT: ret i16 [[T21]]
14
13
;
15
14
%t1 = uitofp i8 %a to float
16
15
%t2 = fadd float %t1 , 1 .0
@@ -20,9 +19,9 @@ define i16 @simple1(i8 %a) {
20
19
21
20
define i8 @simple2 (i8 %a ) {
22
21
; CHECK-LABEL: @simple2(
23
- ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i32
24
- ; CHECK-NEXT: [[T21:%.*]] = sub i32 [[TMP1]], 1
25
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[T21]] to i8
22
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i16
23
+ ; CHECK-NEXT: [[T21:%.*]] = sub i16 [[TMP1]], 1
24
+ ; CHECK-NEXT: [[TMP2:%.*]] = trunc i16 [[T21]] to i8
26
25
; CHECK-NEXT: ret i8 [[TMP2]]
27
26
;
28
27
%t1 = uitofp i8 %a to float
@@ -33,9 +32,10 @@ define i8 @simple2(i8 %a) {
33
32
34
33
define i32 @simple3 (i8 %a ) {
35
34
; CHECK-LABEL: @simple3(
36
- ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i32
37
- ; CHECK-NEXT: [[T21:%.*]] = sub i32 [[TMP1]], 1
38
- ; CHECK-NEXT: ret i32 [[T21]]
35
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i16
36
+ ; CHECK-NEXT: [[T21:%.*]] = sub i16 [[TMP1]], 1
37
+ ; CHECK-NEXT: [[TMP2:%.*]] = zext i16 [[T21]] to i32
38
+ ; CHECK-NEXT: ret i32 [[TMP2]]
39
39
;
40
40
%t1 = uitofp i8 %a to float
41
41
%t2 = fsub float %t1 , 1 .0
@@ -45,9 +45,9 @@ define i32 @simple3(i8 %a) {
45
45
46
46
define i1 @cmp (i8 %a , i8 %b ) {
47
47
; CHECK-LABEL: @cmp(
48
- ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i32
49
- ; CHECK-NEXT: [[TMP2:%.*]] = zext i8 [[B:%.*]] to i32
50
- ; CHECK-NEXT: [[T31:%.*]] = icmp slt i32 [[TMP1]], [[TMP2]]
48
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i16
49
+ ; CHECK-NEXT: [[TMP2:%.*]] = zext i8 [[B:%.*]] to i16
50
+ ; CHECK-NEXT: [[T31:%.*]] = icmp slt i16 [[TMP1]], [[TMP2]]
51
51
; CHECK-NEXT: ret i1 [[T31]]
52
52
;
53
53
%t1 = uitofp i8 %a to float
@@ -106,13 +106,14 @@ define i32 @simple6(i8 %a, i8 %b) {
106
106
107
107
define i32 @multi1 (i8 %a , i8 %b , i8 %c , float %d ) {
108
108
; CHECK-LABEL: @multi1(
109
- ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i32
110
- ; CHECK-NEXT: [[TMP2:%.*]] = zext i8 [[B:%.*]] to i32
109
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i16
110
+ ; CHECK-NEXT: [[TMP2:%.*]] = zext i8 [[B:%.*]] to i16
111
111
; CHECK-NEXT: [[FC:%.*]] = uitofp i8 [[C:%.*]] to float
112
- ; CHECK-NEXT: [[X1:%.*]] = add i32 [[TMP1]], [[TMP2]]
112
+ ; CHECK-NEXT: [[X1:%.*]] = add i16 [[TMP1]], [[TMP2]]
113
+ ; CHECK-NEXT: [[TMP3:%.*]] = zext i16 [[X1]] to i32
113
114
; CHECK-NEXT: [[Z:%.*]] = fadd float [[FC]], [[D:%.*]]
114
115
; CHECK-NEXT: [[W:%.*]] = fptoui float [[Z]] to i32
115
- ; CHECK-NEXT: [[R:%.*]] = add i32 [[X1 ]], [[W]]
116
+ ; CHECK-NEXT: [[R:%.*]] = add i32 [[TMP3 ]], [[W]]
116
117
; CHECK-NEXT: ret i32 [[R]]
117
118
;
118
119
%fa = uitofp i8 %a to float
@@ -128,10 +129,9 @@ define i32 @multi1(i8 %a, i8 %b, i8 %c, float %d) {
128
129
129
130
define i16 @simple_negzero (i8 %a ) {
130
131
; CHECK-LABEL: @simple_negzero(
131
- ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i32
132
- ; CHECK-NEXT: [[T21:%.*]] = add i32 [[TMP1]], 0
133
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[T21]] to i16
134
- ; CHECK-NEXT: ret i16 [[TMP2]]
132
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i16
133
+ ; CHECK-NEXT: [[T21:%.*]] = add i16 [[TMP1]], 0
134
+ ; CHECK-NEXT: ret i16 [[T21]]
135
135
;
136
136
%t1 = uitofp i8 %a to float
137
137
%t2 = fadd fast float %t1 , -0 .0
@@ -141,9 +141,9 @@ define i16 @simple_negzero(i8 %a) {
141
141
142
142
define i32 @simple_negative (i8 %call ) {
143
143
; CHECK-LABEL: @simple_negative(
144
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[CALL:%.*]] to i32
145
- ; CHECK-NEXT: [[MUL1:%.*]] = mul i32 [[TMP1]], -3
146
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[MUL1]] to i8
144
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[CALL:%.*]] to i16
145
+ ; CHECK-NEXT: [[MUL1:%.*]] = mul i16 [[TMP1]], -3
146
+ ; CHECK-NEXT: [[TMP2:%.*]] = trunc i16 [[MUL1]] to i8
147
147
; CHECK-NEXT: [[CONV3:%.*]] = sext i8 [[TMP2]] to i32
148
148
; CHECK-NEXT: ret i32 [[CONV3]]
149
149
;
@@ -156,10 +156,9 @@ define i32 @simple_negative(i8 %call) {
156
156
157
157
define i16 @simple_fneg (i8 %a ) {
158
158
; CHECK-LABEL: @simple_fneg(
159
- ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i32
160
- ; CHECK-NEXT: [[T21:%.*]] = sub i32 0, [[TMP1]]
161
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[T21]] to i16
162
- ; CHECK-NEXT: ret i16 [[TMP2]]
159
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[A:%.*]] to i16
160
+ ; CHECK-NEXT: [[T21:%.*]] = sub i16 0, [[TMP1]]
161
+ ; CHECK-NEXT: ret i16 [[T21]]
163
162
;
164
163
%t1 = uitofp i8 %a to float
165
164
%t2 = fneg fast float %t1
0 commit comments