@@ -2595,33 +2595,53 @@ define i8 @cond_freeze(i8 %x, i8 %y) {
2595
2595
ret i8 %s
2596
2596
}
2597
2597
2598
- define i8 @cond_freeze2 (i8 %x , i8 %y ) {
2599
- ; CHECK-LABEL: @cond_freeze2 (
2598
+ define i8 @cond_freeze_constant_false_val (i8 %x ) {
2599
+ ; CHECK-LABEL: @cond_freeze_constant_false_val (
2600
2600
; CHECK-NEXT: ret i8 1
2601
2601
;
2602
2602
%cond.fr = freeze i1 undef
2603
2603
%s = select i1 %cond.fr , i8 %x , i8 1
2604
2604
ret i8 %s
2605
2605
}
2606
2606
2607
- define i8 @cond_freeze3 (i8 %x ) {
2608
- ; CHECK-LABEL: @cond_freeze3 (
2607
+ define i8 @cond_freeze_constant_true_val (i8 %x ) {
2608
+ ; CHECK-LABEL: @cond_freeze_constant_true_val (
2609
2609
; CHECK-NEXT: ret i8 1
2610
2610
;
2611
2611
%cond.fr = freeze i1 undef
2612
2612
%s = select i1 %cond.fr , i8 1 , i8 %x
2613
2613
ret i8 %s
2614
2614
}
2615
2615
2616
- define <2 x i8 > @cond_freeze_vec (<2 x i8 > %x ) {
2617
- ; CHECK-LABEL: @cond_freeze_vec(
2616
+ define i8 @cond_freeze_both_arms_constant () {
2617
+ ; CHECK-LABEL: @cond_freeze_both_arms_constant(
2618
+ ; CHECK-NEXT: ret i8 3
2619
+ ;
2620
+ %cond.fr = freeze i1 undef
2621
+ %s = select i1 %cond.fr , i8 42 , i8 3
2622
+ ret i8 %s
2623
+ }
2624
+
2625
+ define <2 x i8 > @cond_freeze_constant_true_val_vec (<2 x i8 > %x ) {
2626
+ ; CHECK-LABEL: @cond_freeze_constant_true_val_vec(
2618
2627
; CHECK-NEXT: ret <2 x i8> <i8 1, i8 2>
2619
2628
;
2620
2629
%cond.fr = freeze <2 x i1 > <i1 undef , i1 undef >
2621
2630
%s = select <2 x i1 > %cond.fr , <2 x i8 > <i8 1 , i8 2 >, <2 x i8 > %x
2622
2631
ret <2 x i8 > %s
2623
2632
}
2624
2633
2634
+ define <2 x i8 > @partial_cond_freeze_constant_true_val_vec (<2 x i8 > %x ) {
2635
+ ; CHECK-LABEL: @partial_cond_freeze_constant_true_val_vec(
2636
+ ; CHECK-NEXT: [[COND_FR:%.*]] = freeze <2 x i1> <i1 true, i1 undef>
2637
+ ; CHECK-NEXT: [[S:%.*]] = select <2 x i1> [[COND_FR]], <2 x i8> <i8 1, i8 2>, <2 x i8> [[X:%.*]]
2638
+ ; CHECK-NEXT: ret <2 x i8> [[S]]
2639
+ ;
2640
+ %cond.fr = freeze <2 x i1 > <i1 true , i1 undef >
2641
+ %s = select <2 x i1 > %cond.fr , <2 x i8 > <i8 1 , i8 2 >, <2 x i8 > %x
2642
+ ret <2 x i8 > %s
2643
+ }
2644
+
2625
2645
declare void @foo2 (i8 , i8 )
2626
2646
2627
2647
define void @cond_freeze_multipleuses (i8 %x , i8 %y ) {
0 commit comments