@@ -32,7 +32,7 @@ define i8 @trunc_i16_i8(i16* %ptr, i16 zeroext %arg0, i8 zeroext %arg1) {
32
32
; CHECK-LABEL: @trunc_i16_i8(
33
33
; CHECK-NEXT: entry:
34
34
; CHECK-NEXT: [[TMP0:%.*]] = zext i8 [[ARG1:%.*]] to i32
35
- ; CHECK-NEXT: [[TMP1:%.*]] = load i16, i16* [[PTR:%.*]]
35
+ ; CHECK-NEXT: [[TMP1:%.*]] = load i16, i16* [[PTR:%.*]], align 2
36
36
; CHECK-NEXT: [[TMP2:%.*]] = add i16 [[TMP1]], [[ARG0:%.*]]
37
37
; CHECK-NEXT: [[TMP3:%.*]] = trunc i16 [[TMP2]] to i8
38
38
; CHECK-NEXT: [[TMP4:%.*]] = zext i8 [[TMP3]] to i32
@@ -132,7 +132,7 @@ entry:
132
132
define i1 @or_icmp_ugt (i32 %arg , i8* %ptr ) {
133
133
; CHECK-LABEL: @or_icmp_ugt(
134
134
; CHECK-NEXT: entry:
135
- ; CHECK-NEXT: [[TMP0:%.*]] = load i8, i8* [[PTR:%.*]]
135
+ ; CHECK-NEXT: [[TMP0:%.*]] = load i8, i8* [[PTR:%.*]], align 1
136
136
; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[TMP0]] to i32
137
137
; CHECK-NEXT: [[TMP2:%.*]] = zext i8 [[TMP0]] to i32
138
138
; CHECK-NEXT: [[MUL:%.*]] = shl nuw nsw i32 [[TMP2]], 1
@@ -246,6 +246,16 @@ exit:
246
246
}
247
247
248
248
define i16 @bitcast_i16 (i16 zeroext %arg0 , i16 zeroext %arg1 ) {
249
+ ; CHECK-LABEL: @bitcast_i16(
250
+ ; CHECK-NEXT: entry:
251
+ ; CHECK-NEXT: [[TMP0:%.*]] = zext i16 [[ARG0:%.*]] to i32
252
+ ; CHECK-NEXT: [[CAST:%.*]] = bitcast i16 12345 to i16
253
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i16 [[CAST]] to i32
254
+ ; CHECK-NEXT: [[ADD:%.*]] = add nuw i32 [[TMP0]], 1
255
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ule i32 [[ADD]], [[TMP1]]
256
+ ; CHECK-NEXT: [[RES:%.*]] = select i1 [[CMP]], i16 [[ARG1:%.*]], i16 32657
257
+ ; CHECK-NEXT: ret i16 [[RES]]
258
+ ;
249
259
entry:
250
260
%cast = bitcast i16 12345 to i16
251
261
%add = add nuw i16 %arg0 , 1
@@ -518,7 +528,7 @@ define i8 @search_through_zext_load(i8* %a, i8 zeroext %b, i16 zeroext %c) {
518
528
; CHECK-NEXT: entry:
519
529
; CHECK-NEXT: [[TMP0:%.*]] = zext i8 [[B:%.*]] to i32
520
530
; CHECK-NEXT: [[TMP1:%.*]] = zext i16 [[C:%.*]] to i32
521
- ; CHECK-NEXT: [[LOAD:%.*]] = load i8, i8* [[A:%.*]]
531
+ ; CHECK-NEXT: [[LOAD:%.*]] = load i8, i8* [[A:%.*]], align 1
522
532
; CHECK-NEXT: [[TMP2:%.*]] = zext i8 [[LOAD]] to i32
523
533
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i32 [[TMP2]], [[TMP1]]
524
534
; CHECK-NEXT: br i1 [[CMP1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
@@ -631,7 +641,7 @@ define i16 @trunc_sink_less_than_store(i16 zeroext %a, i16 zeroext %b, i16 zeroe
631
641
; CHECK-NEXT: [[TMP4:%.*]] = and i32 [[SUB]], 255
632
642
; CHECK-NEXT: [[ADD:%.*]] = add nuw i32 [[TMP2]], [[TMP4]]
633
643
; CHECK-NEXT: [[TMP5:%.*]] = trunc i32 [[ADD]] to i8
634
- ; CHECK-NEXT: store i8 [[TMP5]], i8* [[E:%.*]]
644
+ ; CHECK-NEXT: store i8 [[TMP5]], i8* [[E:%.*]], align 1
635
645
; CHECK-NEXT: br label [[IF_END]]
636
646
; CHECK: if.end:
637
647
; CHECK-NEXT: [[RETVAL:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[SUB]], [[IF_THEN]] ]
@@ -981,7 +991,7 @@ entry:
981
991
define i32 @replace_trunk_with_mask (i16* %a ) {
982
992
; CHECK-LABEL: @replace_trunk_with_mask(
983
993
; CHECK-NEXT: entry:
984
- ; CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* [[A:%.*]]
994
+ ; CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* [[A:%.*]], align 2
985
995
; CHECK-NEXT: [[TMP1:%.*]] = zext i16 [[TMP0]] to i32
986
996
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[TMP1]], 0
987
997
; CHECK-NEXT: br i1 [[CMP]], label [[COND_END:%.*]], label [[COND_FALSE:%.*]]
0 commit comments