@@ -704,11 +704,11 @@ define i32 @trunc_shl_32_i32_i64(i64 %val) {
704
704
ret i32 %trunc
705
705
}
706
706
707
- ; TODO: Should be able to handle vectors
707
+ ; Should be able to handle vectors
708
708
define <2 x i32 > @trunc_shl_16_v2i32_v2i64 (<2 x i64 > %val ) {
709
709
; CHECK-LABEL: @trunc_shl_16_v2i32_v2i64(
710
- ; CHECK-NEXT: [[SHL :%.*]] = shl <2 x i64> [[VAL:%.*]], <i64 16, i64 16 >
711
- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc <2 x i64 > [[SHL]] to <2 x i32>
710
+ ; CHECK-NEXT: [[VAL_TR :%.*]] = trunc <2 x i64> [[VAL:%.*]] to <2 x i32 >
711
+ ; CHECK-NEXT: [[TRUNC:%.*]] = shl <2 x i32 > [[VAL_TR]], <i32 16, i32 16 >
712
712
; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
713
713
;
714
714
%shl = shl <2 x i64 > %val , <i64 16 , i64 16 >
@@ -718,8 +718,8 @@ define <2 x i32> @trunc_shl_16_v2i32_v2i64(<2 x i64> %val) {
718
718
719
719
define <2 x i32 > @trunc_shl_nosplat_v2i32_v2i64 (<2 x i64 > %val ) {
720
720
; CHECK-LABEL: @trunc_shl_nosplat_v2i32_v2i64(
721
- ; CHECK-NEXT: [[SHL :%.*]] = shl <2 x i64> [[VAL:%.*]], <i64 15, i64 16 >
722
- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc <2 x i64 > [[SHL]] to <2 x i32>
721
+ ; CHECK-NEXT: [[VAL_TR :%.*]] = trunc <2 x i64> [[VAL:%.*]] to <2 x i32 >
722
+ ; CHECK-NEXT: [[TRUNC:%.*]] = shl <2 x i32 > [[VAL_TR]], <i32 15, i32 16 >
723
723
; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
724
724
;
725
725
%shl = shl <2 x i64 > %val , <i64 15 , i64 16 >
@@ -757,8 +757,8 @@ define i32 @trunc_shl_lshr_infloop(i64 %arg) {
757
757
758
758
define <2 x i32 > @trunc_shl_v2i32_v2i64_uniform (<2 x i64 > %val ) {
759
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>
760
+ ; CHECK-NEXT: [[VAL_TR :%.*]] = trunc <2 x i64> [[VAL:%.*]] to <2 x i32 >
761
+ ; CHECK-NEXT: [[TRUNC:%.*]] = shl <2 x i32 > [[VAL_TR]], <i32 31, i32 31 >
762
762
; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
763
763
;
764
764
%shl = shl <2 x i64 > %val , <i64 31 , i64 31 >
@@ -768,8 +768,8 @@ define <2 x i32> @trunc_shl_v2i32_v2i64_uniform(<2 x i64> %val) {
768
768
769
769
define <2 x i32 > @trunc_shl_v2i32_v2i64_undef (<2 x i64 > %val ) {
770
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>
771
+ ; CHECK-NEXT: [[VAL_TR :%.*]] = trunc <2 x i64> [[VAL:%.*]] to <2 x i32 >
772
+ ; CHECK-NEXT: [[TRUNC:%.*]] = shl <2 x i32 > [[VAL_TR]], <i32 31, i32 undef >
773
773
; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
774
774
;
775
775
%shl = shl <2 x i64 > %val , <i64 31 , i64 undef >
@@ -779,8 +779,8 @@ define <2 x i32> @trunc_shl_v2i32_v2i64_undef(<2 x i64> %val) {
779
779
780
780
define <2 x i32 > @trunc_shl_v2i32_v2i64_nonuniform (<2 x i64 > %val ) {
781
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>
782
+ ; CHECK-NEXT: [[VAL_TR :%.*]] = trunc <2 x i64> [[VAL:%.*]] to <2 x i32 >
783
+ ; CHECK-NEXT: [[TRUNC:%.*]] = shl <2 x i32 > [[VAL_TR]], <i32 31, i32 12 >
784
784
; CHECK-NEXT: ret <2 x i32> [[TRUNC]]
785
785
;
786
786
%shl = shl <2 x i64 > %val , <i64 31 , i64 12 >
@@ -865,8 +865,8 @@ define i32 @trunc_shl_shl_var(i64 %arg, i64 %val) {
865
865
866
866
define <8 x i16 > @trunc_shl_v8i15_v8i32_15 (<8 x i32 > %a ) {
867
867
; CHECK-LABEL: @trunc_shl_v8i15_v8i32_15(
868
- ; CHECK-NEXT: [[SHL :%.*]] = shl <8 x i32> [[A:%.*]], <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15 >
869
- ; CHECK-NEXT: [[CONV:%.*]] = trunc <8 x i32 > [[SHL]] to <8 x i16>
868
+ ; CHECK-NEXT: [[A_TR :%.*]] = trunc <8 x i32> [[A:%.*]] to <8 x i16 >
869
+ ; CHECK-NEXT: [[CONV:%.*]] = shl <8 x i16 > [[A_TR]], <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15 >
870
870
; CHECK-NEXT: ret <8 x i16> [[CONV]]
871
871
;
872
872
%shl = shl <8 x i32 > %a , <i32 15 , i32 15 , i32 15 , i32 15 , i32 15 , i32 15 , i32 15 , i32 15 >
@@ -894,8 +894,8 @@ define <8 x i16> @trunc_shl_v8i16_v8i32_17(<8 x i32> %a) {
894
894
895
895
define <8 x i16 > @trunc_shl_v8i16_v8i32_4 (<8 x i32 > %a ) {
896
896
; CHECK-LABEL: @trunc_shl_v8i16_v8i32_4(
897
- ; CHECK-NEXT: [[SHL :%.*]] = shl <8 x i32> [[A:%.*]], <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4 >
898
- ; CHECK-NEXT: [[CONV:%.*]] = trunc <8 x i32 > [[SHL]] to <8 x i16>
897
+ ; CHECK-NEXT: [[A_TR :%.*]] = trunc <8 x i32> [[A:%.*]] to <8 x i16 >
898
+ ; CHECK-NEXT: [[CONV:%.*]] = shl <8 x i16 > [[A_TR]], <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4 >
899
899
; CHECK-NEXT: ret <8 x i16> [[CONV]]
900
900
;
901
901
%shl = shl <8 x i32 > %a , <i32 4 , i32 4 , i32 4 , i32 4 , i32 4 , i32 4 , i32 4 , i32 4 >
0 commit comments