Skip to content

Commit c4b5cb0

Browse files
committed
[AArch64] Add accelerate test coverage for acos/asin/atan and cosh/sinh/tanh intrinsics to support #106584
1 parent a2a93f0 commit c4b5cb0

File tree

2 files changed

+480
-0
lines changed

2 files changed

+480
-0
lines changed

llvm/test/Transforms/SLPVectorizer/AArch64/accelerate-vector-functions-inseltpoison.ll

Lines changed: 240 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,46 @@ entry:
611611
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
612612
ret <4 x float> %vecins.3
613613
}
614+
define <4 x float> @int_asin_4x(ptr %a) {
615+
; CHECK-LABEL: @int_asin_4x(
616+
; CHECK-NEXT: entry:
617+
; CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
618+
; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @vasinf(<4 x float> [[TMP0]])
619+
; CHECK-NEXT: ret <4 x float> [[TMP1]]
620+
;
621+
; NOACCELERATE-LABEL: @int_asin_4x(
622+
; NOACCELERATE-NEXT: entry:
623+
; NOACCELERATE-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
624+
; NOACCELERATE-NEXT: [[VECEXT:%.*]] = extractelement <4 x float> [[TMP0]], i32 0
625+
; NOACCELERATE-NEXT: [[TMP1:%.*]] = tail call fast float @llvm.asin.f32(float [[VECEXT]])
626+
; NOACCELERATE-NEXT: [[VECINS:%.*]] = insertelement <4 x float> poison, float [[TMP1]], i32 0
627+
; NOACCELERATE-NEXT: [[VECEXT_1:%.*]] = extractelement <4 x float> [[TMP0]], i32 1
628+
; NOACCELERATE-NEXT: [[TMP2:%.*]] = tail call fast float @llvm.asin.f32(float [[VECEXT_1]])
629+
; NOACCELERATE-NEXT: [[VECINS_1:%.*]] = insertelement <4 x float> [[VECINS]], float [[TMP2]], i32 1
630+
; NOACCELERATE-NEXT: [[VECEXT_2:%.*]] = extractelement <4 x float> [[TMP0]], i32 2
631+
; NOACCELERATE-NEXT: [[TMP3:%.*]] = tail call fast float @llvm.asin.f32(float [[VECEXT_2]])
632+
; NOACCELERATE-NEXT: [[VECINS_2:%.*]] = insertelement <4 x float> [[VECINS_1]], float [[TMP3]], i32 2
633+
; NOACCELERATE-NEXT: [[VECEXT_3:%.*]] = extractelement <4 x float> [[TMP0]], i32 3
634+
; NOACCELERATE-NEXT: [[TMP4:%.*]] = tail call fast float @llvm.asin.f32(float [[VECEXT_3]])
635+
; NOACCELERATE-NEXT: [[VECINS_3:%.*]] = insertelement <4 x float> [[VECINS_2]], float [[TMP4]], i32 3
636+
; NOACCELERATE-NEXT: ret <4 x float> [[VECINS_3]]
637+
;
638+
entry:
639+
%0 = load <4 x float>, ptr %a, align 16
640+
%vecext = extractelement <4 x float> %0, i32 0
641+
%1 = tail call fast float @llvm.asin.f32(float %vecext)
642+
%vecins = insertelement <4 x float> poison, float %1, i32 0
643+
%vecext.1 = extractelement <4 x float> %0, i32 1
644+
%2 = tail call fast float @llvm.asin.f32(float %vecext.1)
645+
%vecins.1 = insertelement <4 x float> %vecins, float %2, i32 1
646+
%vecext.2 = extractelement <4 x float> %0, i32 2
647+
%3 = tail call fast float @llvm.asin.f32(float %vecext.2)
648+
%vecins.2 = insertelement <4 x float> %vecins.1, float %3, i32 2
649+
%vecext.3 = extractelement <4 x float> %0, i32 3
650+
%4 = tail call fast float @llvm.asin.f32(float %vecext.3)
651+
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
652+
ret <4 x float> %vecins.3
653+
}
614654
declare float @acosf(float) readonly nounwind willreturn
615655
define <4 x float> @acos_4x(ptr %a) {
616656
; CHECK-LABEL: @acos_4x(
@@ -652,6 +692,46 @@ entry:
652692
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
653693
ret <4 x float> %vecins.3
654694
}
695+
define <4 x float> @int_acos_4x(ptr %a) {
696+
; CHECK-LABEL: @int_acos_4x(
697+
; CHECK-NEXT: entry:
698+
; CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
699+
; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @vacosf(<4 x float> [[TMP0]])
700+
; CHECK-NEXT: ret <4 x float> [[TMP1]]
701+
;
702+
; NOACCELERATE-LABEL: @int_acos_4x(
703+
; NOACCELERATE-NEXT: entry:
704+
; NOACCELERATE-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
705+
; NOACCELERATE-NEXT: [[VECEXT:%.*]] = extractelement <4 x float> [[TMP0]], i32 0
706+
; NOACCELERATE-NEXT: [[TMP1:%.*]] = tail call fast float @llvm.acos.f32(float [[VECEXT]])
707+
; NOACCELERATE-NEXT: [[VECINS:%.*]] = insertelement <4 x float> poison, float [[TMP1]], i32 0
708+
; NOACCELERATE-NEXT: [[VECEXT_1:%.*]] = extractelement <4 x float> [[TMP0]], i32 1
709+
; NOACCELERATE-NEXT: [[TMP2:%.*]] = tail call fast float @llvm.acos.f32(float [[VECEXT_1]])
710+
; NOACCELERATE-NEXT: [[VECINS_1:%.*]] = insertelement <4 x float> [[VECINS]], float [[TMP2]], i32 1
711+
; NOACCELERATE-NEXT: [[VECEXT_2:%.*]] = extractelement <4 x float> [[TMP0]], i32 2
712+
; NOACCELERATE-NEXT: [[TMP3:%.*]] = tail call fast float @llvm.acos.f32(float [[VECEXT_2]])
713+
; NOACCELERATE-NEXT: [[VECINS_2:%.*]] = insertelement <4 x float> [[VECINS_1]], float [[TMP3]], i32 2
714+
; NOACCELERATE-NEXT: [[VECEXT_3:%.*]] = extractelement <4 x float> [[TMP0]], i32 3
715+
; NOACCELERATE-NEXT: [[TMP4:%.*]] = tail call fast float @llvm.acos.f32(float [[VECEXT_3]])
716+
; NOACCELERATE-NEXT: [[VECINS_3:%.*]] = insertelement <4 x float> [[VECINS_2]], float [[TMP4]], i32 3
717+
; NOACCELERATE-NEXT: ret <4 x float> [[VECINS_3]]
718+
;
719+
entry:
720+
%0 = load <4 x float>, ptr %a, align 16
721+
%vecext = extractelement <4 x float> %0, i32 0
722+
%1 = tail call fast float @llvm.acos.f32(float %vecext)
723+
%vecins = insertelement <4 x float> poison, float %1, i32 0
724+
%vecext.1 = extractelement <4 x float> %0, i32 1
725+
%2 = tail call fast float @llvm.acos.f32(float %vecext.1)
726+
%vecins.1 = insertelement <4 x float> %vecins, float %2, i32 1
727+
%vecext.2 = extractelement <4 x float> %0, i32 2
728+
%3 = tail call fast float @llvm.acos.f32(float %vecext.2)
729+
%vecins.2 = insertelement <4 x float> %vecins.1, float %3, i32 2
730+
%vecext.3 = extractelement <4 x float> %0, i32 3
731+
%4 = tail call fast float @llvm.acos.f32(float %vecext.3)
732+
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
733+
ret <4 x float> %vecins.3
734+
}
655735
declare float @atanf(float) readonly nounwind willreturn
656736
define <4 x float> @atan_4x(ptr %a) {
657737
; CHECK-LABEL: @atan_4x(
@@ -693,6 +773,46 @@ entry:
693773
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
694774
ret <4 x float> %vecins.3
695775
}
776+
define <4 x float> @int_atan_4x(ptr %a) {
777+
; CHECK-LABEL: @int_atan_4x(
778+
; CHECK-NEXT: entry:
779+
; CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
780+
; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @vatanf(<4 x float> [[TMP0]])
781+
; CHECK-NEXT: ret <4 x float> [[TMP1]]
782+
;
783+
; NOACCELERATE-LABEL: @int_atan_4x(
784+
; NOACCELERATE-NEXT: entry:
785+
; NOACCELERATE-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
786+
; NOACCELERATE-NEXT: [[VECEXT:%.*]] = extractelement <4 x float> [[TMP0]], i32 0
787+
; NOACCELERATE-NEXT: [[TMP1:%.*]] = tail call fast float @llvm.atan.f32(float [[VECEXT]])
788+
; NOACCELERATE-NEXT: [[VECINS:%.*]] = insertelement <4 x float> poison, float [[TMP1]], i32 0
789+
; NOACCELERATE-NEXT: [[VECEXT_1:%.*]] = extractelement <4 x float> [[TMP0]], i32 1
790+
; NOACCELERATE-NEXT: [[TMP2:%.*]] = tail call fast float @llvm.atan.f32(float [[VECEXT_1]])
791+
; NOACCELERATE-NEXT: [[VECINS_1:%.*]] = insertelement <4 x float> [[VECINS]], float [[TMP2]], i32 1
792+
; NOACCELERATE-NEXT: [[VECEXT_2:%.*]] = extractelement <4 x float> [[TMP0]], i32 2
793+
; NOACCELERATE-NEXT: [[TMP3:%.*]] = tail call fast float @llvm.atan.f32(float [[VECEXT_2]])
794+
; NOACCELERATE-NEXT: [[VECINS_2:%.*]] = insertelement <4 x float> [[VECINS_1]], float [[TMP3]], i32 2
795+
; NOACCELERATE-NEXT: [[VECEXT_3:%.*]] = extractelement <4 x float> [[TMP0]], i32 3
796+
; NOACCELERATE-NEXT: [[TMP4:%.*]] = tail call fast float @llvm.atan.f32(float [[VECEXT_3]])
797+
; NOACCELERATE-NEXT: [[VECINS_3:%.*]] = insertelement <4 x float> [[VECINS_2]], float [[TMP4]], i32 3
798+
; NOACCELERATE-NEXT: ret <4 x float> [[VECINS_3]]
799+
;
800+
entry:
801+
%0 = load <4 x float>, ptr %a, align 16
802+
%vecext = extractelement <4 x float> %0, i32 0
803+
%1 = tail call fast float @llvm.atan.f32(float %vecext)
804+
%vecins = insertelement <4 x float> poison, float %1, i32 0
805+
%vecext.1 = extractelement <4 x float> %0, i32 1
806+
%2 = tail call fast float @llvm.atan.f32(float %vecext.1)
807+
%vecins.1 = insertelement <4 x float> %vecins, float %2, i32 1
808+
%vecext.2 = extractelement <4 x float> %0, i32 2
809+
%3 = tail call fast float @llvm.atan.f32(float %vecext.2)
810+
%vecins.2 = insertelement <4 x float> %vecins.1, float %3, i32 2
811+
%vecext.3 = extractelement <4 x float> %0, i32 3
812+
%4 = tail call fast float @llvm.atan.f32(float %vecext.3)
813+
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
814+
ret <4 x float> %vecins.3
815+
}
696816
declare float @sinhf(float) readonly nounwind willreturn
697817
define <4 x float> @sinh_4x(ptr %a) {
698818
; CHECK-LABEL: @sinh_4x(
@@ -734,6 +854,46 @@ entry:
734854
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
735855
ret <4 x float> %vecins.3
736856
}
857+
define <4 x float> @int_sinh_4x(ptr %a) {
858+
; CHECK-LABEL: @int_sinh_4x(
859+
; CHECK-NEXT: entry:
860+
; CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
861+
; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @vsinhf(<4 x float> [[TMP0]])
862+
; CHECK-NEXT: ret <4 x float> [[TMP1]]
863+
;
864+
; NOACCELERATE-LABEL: @int_sinh_4x(
865+
; NOACCELERATE-NEXT: entry:
866+
; NOACCELERATE-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
867+
; NOACCELERATE-NEXT: [[VECEXT:%.*]] = extractelement <4 x float> [[TMP0]], i32 0
868+
; NOACCELERATE-NEXT: [[TMP1:%.*]] = tail call fast float @llvm.sinh.f32(float [[VECEXT]])
869+
; NOACCELERATE-NEXT: [[VECINS:%.*]] = insertelement <4 x float> poison, float [[TMP1]], i32 0
870+
; NOACCELERATE-NEXT: [[VECEXT_1:%.*]] = extractelement <4 x float> [[TMP0]], i32 1
871+
; NOACCELERATE-NEXT: [[TMP2:%.*]] = tail call fast float @llvm.sinh.f32(float [[VECEXT_1]])
872+
; NOACCELERATE-NEXT: [[VECINS_1:%.*]] = insertelement <4 x float> [[VECINS]], float [[TMP2]], i32 1
873+
; NOACCELERATE-NEXT: [[VECEXT_2:%.*]] = extractelement <4 x float> [[TMP0]], i32 2
874+
; NOACCELERATE-NEXT: [[TMP3:%.*]] = tail call fast float @llvm.sinh.f32(float [[VECEXT_2]])
875+
; NOACCELERATE-NEXT: [[VECINS_2:%.*]] = insertelement <4 x float> [[VECINS_1]], float [[TMP3]], i32 2
876+
; NOACCELERATE-NEXT: [[VECEXT_3:%.*]] = extractelement <4 x float> [[TMP0]], i32 3
877+
; NOACCELERATE-NEXT: [[TMP4:%.*]] = tail call fast float @llvm.sinh.f32(float [[VECEXT_3]])
878+
; NOACCELERATE-NEXT: [[VECINS_3:%.*]] = insertelement <4 x float> [[VECINS_2]], float [[TMP4]], i32 3
879+
; NOACCELERATE-NEXT: ret <4 x float> [[VECINS_3]]
880+
;
881+
entry:
882+
%0 = load <4 x float>, ptr %a, align 16
883+
%vecext = extractelement <4 x float> %0, i32 0
884+
%1 = tail call fast float @llvm.sinh.f32(float %vecext)
885+
%vecins = insertelement <4 x float> poison, float %1, i32 0
886+
%vecext.1 = extractelement <4 x float> %0, i32 1
887+
%2 = tail call fast float @llvm.sinh.f32(float %vecext.1)
888+
%vecins.1 = insertelement <4 x float> %vecins, float %2, i32 1
889+
%vecext.2 = extractelement <4 x float> %0, i32 2
890+
%3 = tail call fast float @llvm.sinh.f32(float %vecext.2)
891+
%vecins.2 = insertelement <4 x float> %vecins.1, float %3, i32 2
892+
%vecext.3 = extractelement <4 x float> %0, i32 3
893+
%4 = tail call fast float @llvm.sinh.f32(float %vecext.3)
894+
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
895+
ret <4 x float> %vecins.3
896+
}
737897
declare float @coshf(float) readonly nounwind willreturn
738898
define <4 x float> @cosh_4x(ptr %a) {
739899
; CHECK-LABEL: @cosh_4x(
@@ -775,6 +935,46 @@ entry:
775935
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
776936
ret <4 x float> %vecins.3
777937
}
938+
define <4 x float> @int_cosh_4x(ptr %a) {
939+
; CHECK-LABEL: @int_cosh_4x(
940+
; CHECK-NEXT: entry:
941+
; CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
942+
; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @vcoshf(<4 x float> [[TMP0]])
943+
; CHECK-NEXT: ret <4 x float> [[TMP1]]
944+
;
945+
; NOACCELERATE-LABEL: @int_cosh_4x(
946+
; NOACCELERATE-NEXT: entry:
947+
; NOACCELERATE-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
948+
; NOACCELERATE-NEXT: [[VECEXT:%.*]] = extractelement <4 x float> [[TMP0]], i32 0
949+
; NOACCELERATE-NEXT: [[TMP1:%.*]] = tail call fast float @llvm.cosh.f32(float [[VECEXT]])
950+
; NOACCELERATE-NEXT: [[VECINS:%.*]] = insertelement <4 x float> poison, float [[TMP1]], i32 0
951+
; NOACCELERATE-NEXT: [[VECEXT_1:%.*]] = extractelement <4 x float> [[TMP0]], i32 1
952+
; NOACCELERATE-NEXT: [[TMP2:%.*]] = tail call fast float @llvm.cosh.f32(float [[VECEXT_1]])
953+
; NOACCELERATE-NEXT: [[VECINS_1:%.*]] = insertelement <4 x float> [[VECINS]], float [[TMP2]], i32 1
954+
; NOACCELERATE-NEXT: [[VECEXT_2:%.*]] = extractelement <4 x float> [[TMP0]], i32 2
955+
; NOACCELERATE-NEXT: [[TMP3:%.*]] = tail call fast float @llvm.cosh.f32(float [[VECEXT_2]])
956+
; NOACCELERATE-NEXT: [[VECINS_2:%.*]] = insertelement <4 x float> [[VECINS_1]], float [[TMP3]], i32 2
957+
; NOACCELERATE-NEXT: [[VECEXT_3:%.*]] = extractelement <4 x float> [[TMP0]], i32 3
958+
; NOACCELERATE-NEXT: [[TMP4:%.*]] = tail call fast float @llvm.cosh.f32(float [[VECEXT_3]])
959+
; NOACCELERATE-NEXT: [[VECINS_3:%.*]] = insertelement <4 x float> [[VECINS_2]], float [[TMP4]], i32 3
960+
; NOACCELERATE-NEXT: ret <4 x float> [[VECINS_3]]
961+
;
962+
entry:
963+
%0 = load <4 x float>, ptr %a, align 16
964+
%vecext = extractelement <4 x float> %0, i32 0
965+
%1 = tail call fast float @llvm.cosh.f32(float %vecext)
966+
%vecins = insertelement <4 x float> poison, float %1, i32 0
967+
%vecext.1 = extractelement <4 x float> %0, i32 1
968+
%2 = tail call fast float @llvm.cosh.f32(float %vecext.1)
969+
%vecins.1 = insertelement <4 x float> %vecins, float %2, i32 1
970+
%vecext.2 = extractelement <4 x float> %0, i32 2
971+
%3 = tail call fast float @llvm.cosh.f32(float %vecext.2)
972+
%vecins.2 = insertelement <4 x float> %vecins.1, float %3, i32 2
973+
%vecext.3 = extractelement <4 x float> %0, i32 3
974+
%4 = tail call fast float @llvm.cosh.f32(float %vecext.3)
975+
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
976+
ret <4 x float> %vecins.3
977+
}
778978
declare float @tanhf(float) readonly nounwind willreturn
779979
define <4 x float> @tanh_4x(ptr %a) {
780980
; CHECK-LABEL: @tanh_4x(
@@ -816,6 +1016,46 @@ entry:
8161016
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
8171017
ret <4 x float> %vecins.3
8181018
}
1019+
define <4 x float> @int_tanh_4x(ptr %a) {
1020+
; CHECK-LABEL: @int_tanh_4x(
1021+
; CHECK-NEXT: entry:
1022+
; CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
1023+
; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @vtanhf(<4 x float> [[TMP0]])
1024+
; CHECK-NEXT: ret <4 x float> [[TMP1]]
1025+
;
1026+
; NOACCELERATE-LABEL: @int_tanh_4x(
1027+
; NOACCELERATE-NEXT: entry:
1028+
; NOACCELERATE-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[A:%.*]], align 16
1029+
; NOACCELERATE-NEXT: [[VECEXT:%.*]] = extractelement <4 x float> [[TMP0]], i32 0
1030+
; NOACCELERATE-NEXT: [[TMP1:%.*]] = tail call fast float @llvm.tanh.f32(float [[VECEXT]])
1031+
; NOACCELERATE-NEXT: [[VECINS:%.*]] = insertelement <4 x float> poison, float [[TMP1]], i32 0
1032+
; NOACCELERATE-NEXT: [[VECEXT_1:%.*]] = extractelement <4 x float> [[TMP0]], i32 1
1033+
; NOACCELERATE-NEXT: [[TMP2:%.*]] = tail call fast float @llvm.tanh.f32(float [[VECEXT_1]])
1034+
; NOACCELERATE-NEXT: [[VECINS_1:%.*]] = insertelement <4 x float> [[VECINS]], float [[TMP2]], i32 1
1035+
; NOACCELERATE-NEXT: [[VECEXT_2:%.*]] = extractelement <4 x float> [[TMP0]], i32 2
1036+
; NOACCELERATE-NEXT: [[TMP3:%.*]] = tail call fast float @llvm.tanh.f32(float [[VECEXT_2]])
1037+
; NOACCELERATE-NEXT: [[VECINS_2:%.*]] = insertelement <4 x float> [[VECINS_1]], float [[TMP3]], i32 2
1038+
; NOACCELERATE-NEXT: [[VECEXT_3:%.*]] = extractelement <4 x float> [[TMP0]], i32 3
1039+
; NOACCELERATE-NEXT: [[TMP4:%.*]] = tail call fast float @llvm.tanh.f32(float [[VECEXT_3]])
1040+
; NOACCELERATE-NEXT: [[VECINS_3:%.*]] = insertelement <4 x float> [[VECINS_2]], float [[TMP4]], i32 3
1041+
; NOACCELERATE-NEXT: ret <4 x float> [[VECINS_3]]
1042+
;
1043+
entry:
1044+
%0 = load <4 x float>, ptr %a, align 16
1045+
%vecext = extractelement <4 x float> %0, i32 0
1046+
%1 = tail call fast float @llvm.tanh.f32(float %vecext)
1047+
%vecins = insertelement <4 x float> poison, float %1, i32 0
1048+
%vecext.1 = extractelement <4 x float> %0, i32 1
1049+
%2 = tail call fast float @llvm.tanh.f32(float %vecext.1)
1050+
%vecins.1 = insertelement <4 x float> %vecins, float %2, i32 1
1051+
%vecext.2 = extractelement <4 x float> %0, i32 2
1052+
%3 = tail call fast float @llvm.tanh.f32(float %vecext.2)
1053+
%vecins.2 = insertelement <4 x float> %vecins.1, float %3, i32 2
1054+
%vecext.3 = extractelement <4 x float> %0, i32 3
1055+
%4 = tail call fast float @llvm.tanh.f32(float %vecext.3)
1056+
%vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3
1057+
ret <4 x float> %vecins.3
1058+
}
8191059
declare float @asinhf(float) readonly nounwind willreturn
8201060
define <4 x float> @asinh_4x(ptr %a) {
8211061
; CHECK-LABEL: @asinh_4x(

0 commit comments

Comments
 (0)