@@ -755,6 +755,50 @@ define i32 @trunc_shl_lshr_infloop(i64 %arg) {
755
755
ret i32 %C
756
756
}
757
757
758
+ define <2 x i32 > @trunc_shl_v2i32_v2i64_uniform (<2 x i64 > %val ) {
759
+ ; CHECK-LABEL: @trunc_shl_v2i32_v2i64_uniform(
760
+ ; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i64> [[VAL:%.*]], <i64 31, i64 31>
761
+ ; CHECK-NEXT: [[TRUNC:%.*]] = trunc <2 x i64> [[SHL]] to <2 x i32>
762
+ ; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
763
+ ;
764
+ %shl = shl <2 x i64 > %val , <i64 31 , i64 31 >
765
+ %trunc = trunc <2 x i64 > %shl to <2 x i32 >
766
+ ret <2 x i32 > %trunc
767
+ }
768
+
769
+ define <2 x i32 > @trunc_shl_v2i32_v2i64_undef (<2 x i64 > %val ) {
770
+ ; CHECK-LABEL: @trunc_shl_v2i32_v2i64_undef(
771
+ ; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i64> [[VAL:%.*]], <i64 31, i64 undef>
772
+ ; CHECK-NEXT: [[TRUNC:%.*]] = trunc <2 x i64> [[SHL]] to <2 x i32>
773
+ ; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
774
+ ;
775
+ %shl = shl <2 x i64 > %val , <i64 31 , i64 undef >
776
+ %trunc = trunc <2 x i64 > %shl to <2 x i32 >
777
+ ret <2 x i32 > %trunc
778
+ }
779
+
780
+ define <2 x i32 > @trunc_shl_v2i32_v2i64_nonuniform (<2 x i64 > %val ) {
781
+ ; CHECK-LABEL: @trunc_shl_v2i32_v2i64_nonuniform(
782
+ ; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i64> [[VAL:%.*]], <i64 31, i64 12>
783
+ ; CHECK-NEXT: [[TRUNC:%.*]] = trunc <2 x i64> [[SHL]] to <2 x i32>
784
+ ; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
785
+ ;
786
+ %shl = shl <2 x i64 > %val , <i64 31 , i64 12 >
787
+ %trunc = trunc <2 x i64 > %shl to <2 x i32 >
788
+ ret <2 x i32 > %trunc
789
+ }
790
+
791
+ define <2 x i32 > @trunc_shl_v2i32_v2i64_outofrange (<2 x i64 > %val ) {
792
+ ; CHECK-LABEL: @trunc_shl_v2i32_v2i64_outofrange(
793
+ ; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i64> [[VAL:%.*]], <i64 31, i64 33>
794
+ ; CHECK-NEXT: [[TRUNC:%.*]] = trunc <2 x i64> [[SHL]] to <2 x i32>
795
+ ; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
796
+ ;
797
+ %shl = shl <2 x i64 > %val , <i64 31 , i64 33 >
798
+ %trunc = trunc <2 x i64 > %shl to <2 x i32 >
799
+ ret <2 x i32 > %trunc
800
+ }
801
+
758
802
define i32 @trunc_shl_ashr_infloop (i64 %arg ) {
759
803
; CHECK-LABEL: @trunc_shl_ashr_infloop(
760
804
; CHECK-NEXT: [[A:%.*]] = ashr i64 [[ARG:%.*]], 3
0 commit comments