@@ -15543,65 +15543,65 @@ should exit, this ``SUB`` is not allowed to wrap. The result is a condition
15543
15543
that is used by the conditional branch controlling the loop.
15544
15544
15545
15545
15546
- Experimental Vector Reduction Intrinsics
15547
- ----------------------------------------
15546
+ Vector Reduction Intrinsics
15547
+ ---------------------------
15548
15548
15549
15549
Horizontal reductions of vectors can be expressed using the following
15550
15550
intrinsics. Each one takes a vector operand as an input and applies its
15551
15551
respective operation across all elements of the vector, returning a single
15552
15552
scalar result of the same element type.
15553
15553
15554
15554
15555
- '``llvm.experimental. vector.reduce.add.*``' Intrinsic
15556
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15555
+ '``llvm.vector.reduce.add.*``' Intrinsic
15556
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15557
15557
15558
15558
Syntax:
15559
15559
"""""""
15560
15560
15561
15561
::
15562
15562
15563
- declare i32 @llvm.experimental. vector.reduce.add.v4i32(<4 x i32> %a)
15564
- declare i64 @llvm.experimental. vector.reduce.add.v2i64(<2 x i64> %a)
15563
+ declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %a)
15564
+ declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %a)
15565
15565
15566
15566
Overview:
15567
15567
"""""""""
15568
15568
15569
- The '``llvm.experimental. vector.reduce.add.*``' intrinsics do an integer ``ADD``
15569
+ The '``llvm.vector.reduce.add.*``' intrinsics do an integer ``ADD``
15570
15570
reduction of a vector, returning the result as a scalar. The return type matches
15571
15571
the element-type of the vector input.
15572
15572
15573
15573
Arguments:
15574
15574
""""""""""
15575
15575
The argument to this intrinsic must be a vector of integer values.
15576
15576
15577
- '``llvm.experimental. vector.reduce.v2 .fadd.*``' Intrinsic
15578
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15577
+ '``llvm.vector.reduce.fadd.*``' Intrinsic
15578
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15579
15579
15580
15580
Syntax:
15581
15581
"""""""
15582
15582
15583
15583
::
15584
15584
15585
- declare float @llvm.experimental. vector.reduce.v2. fadd.f32 .v4f32(float %start_value, <4 x float> %a)
15586
- declare double @llvm.experimental. vector.reduce.v2. fadd.f64 .v2f64(double %start_value, <2 x double> %a)
15585
+ declare float @llvm.vector.reduce.fadd.v4f32(float %start_value, <4 x float> %a)
15586
+ declare double @llvm.vector.reduce.fadd.v2f64(double %start_value, <2 x double> %a)
15587
15587
15588
15588
Overview:
15589
15589
"""""""""
15590
15590
15591
- The '``llvm.experimental. vector.reduce.v2 .fadd.*``' intrinsics do a floating-point
15591
+ The '``llvm.vector.reduce.fadd.*``' intrinsics do a floating-point
15592
15592
``ADD`` reduction of a vector, returning the result as a scalar. The return type
15593
15593
matches the element-type of the vector input.
15594
15594
15595
- If the intrinsic call has the 'reassoc' or 'fast' flags set, then the
15596
- reduction will not preserve the associativity of an equivalent scalarized
15597
- counterpart. Otherwise the reduction will be *ordered *, thus implying that
15598
- the operation respects the associativity of a scalarized reduction. That is, the
15599
- reduction begins with the start value and performs an fadd operation with consecutively
15600
- increasing vector element indices. See the following pseudocode:
15595
+ If the intrinsic call has the 'reassoc' flag set, then the reduction will not
15596
+ preserve the associativity of an equivalent scalarized counterpart. Otherwise
15597
+ the reduction will be *sequential *, thus implying that the operation respects
15598
+ the associativity of a scalarized reduction. That is, the reduction begins with
15599
+ the start value and performs an fadd operation with consecutively increasing
15600
+ vector element indices. See the following pseudocode:
15601
15601
15602
15602
::
15603
15603
15604
- float ordered_fadd (start_value, input_vector)
15604
+ float sequential_fadd (start_value, input_vector)
15605
15605
result = start_value
15606
15606
for i = 0 to length(input_vector)
15607
15607
result = result + input_vector[i]
@@ -15619,60 +15619,60 @@ Examples:
15619
15619
15620
15620
::
15621
15621
15622
- %unord = call reassoc float @llvm.experimental. vector.reduce.v2. fadd.f32. v4f32(float 0.0, <4 x float> %input) ; unordered reduction
15623
- %ord = call float @llvm.experimental. vector.reduce.v2. fadd.f32. v4f32(float %start_value, <4 x float> %input) ; ordered reduction
15622
+ %unord = call reassoc float @llvm.vector.reduce.fadd.v4f32(float 0.0, <4 x float> %input) ; relaxed reduction
15623
+ %ord = call float @llvm.vector.reduce.fadd.v4f32(float %start_value, <4 x float> %input) ; sequential reduction
15624
15624
15625
15625
15626
- '``llvm.experimental. vector.reduce.mul.*``' Intrinsic
15627
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15626
+ '``llvm.vector.reduce.mul.*``' Intrinsic
15627
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15628
15628
15629
15629
Syntax:
15630
15630
"""""""
15631
15631
15632
15632
::
15633
15633
15634
- declare i32 @llvm.experimental. vector.reduce.mul.v4i32(<4 x i32> %a)
15635
- declare i64 @llvm.experimental. vector.reduce.mul.v2i64(<2 x i64> %a)
15634
+ declare i32 @llvm.vector.reduce.mul.v4i32(<4 x i32> %a)
15635
+ declare i64 @llvm.vector.reduce.mul.v2i64(<2 x i64> %a)
15636
15636
15637
15637
Overview:
15638
15638
"""""""""
15639
15639
15640
- The '``llvm.experimental. vector.reduce.mul.*``' intrinsics do an integer ``MUL``
15640
+ The '``llvm.vector.reduce.mul.*``' intrinsics do an integer ``MUL``
15641
15641
reduction of a vector, returning the result as a scalar. The return type matches
15642
15642
the element-type of the vector input.
15643
15643
15644
15644
Arguments:
15645
15645
""""""""""
15646
15646
The argument to this intrinsic must be a vector of integer values.
15647
15647
15648
- '``llvm.experimental. vector.reduce.v2 .fmul.*``' Intrinsic
15649
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15648
+ '``llvm.vector.reduce.fmul.*``' Intrinsic
15649
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15650
15650
15651
15651
Syntax:
15652
15652
"""""""
15653
15653
15654
15654
::
15655
15655
15656
- declare float @llvm.experimental. vector.reduce.v2. fmul.f32 .v4f32(float %start_value, <4 x float> %a)
15657
- declare double @llvm.experimental. vector.reduce.v2. fmul.f64 .v2f64(double %start_value, <2 x double> %a)
15656
+ declare float @llvm.vector.reduce.fmul.v4f32(float %start_value, <4 x float> %a)
15657
+ declare double @llvm.vector.reduce.fmul.v2f64(double %start_value, <2 x double> %a)
15658
15658
15659
15659
Overview:
15660
15660
"""""""""
15661
15661
15662
- The '``llvm.experimental. vector.reduce.v2 .fmul.*``' intrinsics do a floating-point
15662
+ The '``llvm.vector.reduce.fmul.*``' intrinsics do a floating-point
15663
15663
``MUL`` reduction of a vector, returning the result as a scalar. The return type
15664
15664
matches the element-type of the vector input.
15665
15665
15666
- If the intrinsic call has the 'reassoc' or 'fast' flags set, then the
15667
- reduction will not preserve the associativity of an equivalent scalarized
15668
- counterpart. Otherwise the reduction will be *ordered *, thus implying that
15669
- the operation respects the associativity of a scalarized reduction. That is, the
15670
- reduction begins with the start value and performs an fmul operation with consecutively
15671
- increasing vector element indices. See the following pseudocode:
15666
+ If the intrinsic call has the 'reassoc' flag set, then the reduction will not
15667
+ preserve the associativity of an equivalent scalarized counterpart. Otherwise
15668
+ the reduction will be *sequential *, thus implying that the operation respects
15669
+ the associativity of a scalarized reduction. That is, the reduction begins with
15670
+ the start value and performs an fmul operation with consecutively increasing
15671
+ vector element indices. See the following pseudocode:
15672
15672
15673
15673
::
15674
15674
15675
- float ordered_fmul (start_value, input_vector)
15675
+ float sequential_fmul (start_value, input_vector)
15676
15676
result = start_value
15677
15677
for i = 0 to length(input_vector)
15678
15678
result = result * input_vector[i]
@@ -15690,171 +15690,171 @@ Examples:
15690
15690
15691
15691
::
15692
15692
15693
- %unord = call reassoc float @llvm.experimental. vector.reduce.v2. fmul.f32. v4f32(float 1.0, <4 x float> %input) ; unordered reduction
15694
- %ord = call float @llvm.experimental. vector.reduce.v2. fmul.f32. v4f32(float %start_value, <4 x float> %input) ; ordered reduction
15693
+ %unord = call reassoc float @llvm.vector.reduce.fmul.v4f32(float 1.0, <4 x float> %input) ; relaxed reduction
15694
+ %ord = call float @llvm.vector.reduce.fmul.v4f32(float %start_value, <4 x float> %input) ; sequential reduction
15695
15695
15696
- '``llvm.experimental. vector.reduce.and.*``' Intrinsic
15697
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15696
+ '``llvm.vector.reduce.and.*``' Intrinsic
15697
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15698
15698
15699
15699
Syntax:
15700
15700
"""""""
15701
15701
15702
15702
::
15703
15703
15704
- declare i32 @llvm.experimental. vector.reduce.and.v4i32(<4 x i32> %a)
15704
+ declare i32 @llvm.vector.reduce.and.v4i32(<4 x i32> %a)
15705
15705
15706
15706
Overview:
15707
15707
"""""""""
15708
15708
15709
- The '``llvm.experimental. vector.reduce.and.*``' intrinsics do a bitwise ``AND``
15709
+ The '``llvm.vector.reduce.and.*``' intrinsics do a bitwise ``AND``
15710
15710
reduction of a vector, returning the result as a scalar. The return type matches
15711
15711
the element-type of the vector input.
15712
15712
15713
15713
Arguments:
15714
15714
""""""""""
15715
15715
The argument to this intrinsic must be a vector of integer values.
15716
15716
15717
- '``llvm.experimental. vector.reduce.or.*``' Intrinsic
15718
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15717
+ '``llvm.vector.reduce.or.*``' Intrinsic
15718
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15719
15719
15720
15720
Syntax:
15721
15721
"""""""
15722
15722
15723
15723
::
15724
15724
15725
- declare i32 @llvm.experimental. vector.reduce.or.v4i32(<4 x i32> %a)
15725
+ declare i32 @llvm.vector.reduce.or.v4i32(<4 x i32> %a)
15726
15726
15727
15727
Overview:
15728
15728
"""""""""
15729
15729
15730
- The '``llvm.experimental. vector.reduce.or.*``' intrinsics do a bitwise ``OR`` reduction
15730
+ The '``llvm.vector.reduce.or.*``' intrinsics do a bitwise ``OR`` reduction
15731
15731
of a vector, returning the result as a scalar. The return type matches the
15732
15732
element-type of the vector input.
15733
15733
15734
15734
Arguments:
15735
15735
""""""""""
15736
15736
The argument to this intrinsic must be a vector of integer values.
15737
15737
15738
- '``llvm.experimental. vector.reduce.xor.*``' Intrinsic
15739
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15738
+ '``llvm.vector.reduce.xor.*``' Intrinsic
15739
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15740
15740
15741
15741
Syntax:
15742
15742
"""""""
15743
15743
15744
15744
::
15745
15745
15746
- declare i32 @llvm.experimental. vector.reduce.xor.v4i32(<4 x i32> %a)
15746
+ declare i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> %a)
15747
15747
15748
15748
Overview:
15749
15749
"""""""""
15750
15750
15751
- The '``llvm.experimental. vector.reduce.xor.*``' intrinsics do a bitwise ``XOR``
15751
+ The '``llvm.vector.reduce.xor.*``' intrinsics do a bitwise ``XOR``
15752
15752
reduction of a vector, returning the result as a scalar. The return type matches
15753
15753
the element-type of the vector input.
15754
15754
15755
15755
Arguments:
15756
15756
""""""""""
15757
15757
The argument to this intrinsic must be a vector of integer values.
15758
15758
15759
- '``llvm.experimental. vector.reduce.smax.*``' Intrinsic
15760
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15759
+ '``llvm.vector.reduce.smax.*``' Intrinsic
15760
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15761
15761
15762
15762
Syntax:
15763
15763
"""""""
15764
15764
15765
15765
::
15766
15766
15767
- declare i32 @llvm.experimental. vector.reduce.smax.v4i32(<4 x i32> %a)
15767
+ declare i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %a)
15768
15768
15769
15769
Overview:
15770
15770
"""""""""
15771
15771
15772
- The '``llvm.experimental. vector.reduce.smax.*``' intrinsics do a signed integer
15772
+ The '``llvm.vector.reduce.smax.*``' intrinsics do a signed integer
15773
15773
``MAX`` reduction of a vector, returning the result as a scalar. The return type
15774
15774
matches the element-type of the vector input.
15775
15775
15776
15776
Arguments:
15777
15777
""""""""""
15778
15778
The argument to this intrinsic must be a vector of integer values.
15779
15779
15780
- '``llvm.experimental. vector.reduce.smin.*``' Intrinsic
15781
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15780
+ '``llvm.vector.reduce.smin.*``' Intrinsic
15781
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15782
15782
15783
15783
Syntax:
15784
15784
"""""""
15785
15785
15786
15786
::
15787
15787
15788
- declare i32 @llvm.experimental. vector.reduce.smin.v4i32(<4 x i32> %a)
15788
+ declare i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %a)
15789
15789
15790
15790
Overview:
15791
15791
"""""""""
15792
15792
15793
- The '``llvm.experimental. vector.reduce.smin.*``' intrinsics do a signed integer
15793
+ The '``llvm.vector.reduce.smin.*``' intrinsics do a signed integer
15794
15794
``MIN`` reduction of a vector, returning the result as a scalar. The return type
15795
15795
matches the element-type of the vector input.
15796
15796
15797
15797
Arguments:
15798
15798
""""""""""
15799
15799
The argument to this intrinsic must be a vector of integer values.
15800
15800
15801
- '``llvm.experimental. vector.reduce.umax.*``' Intrinsic
15802
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15801
+ '``llvm.vector.reduce.umax.*``' Intrinsic
15802
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15803
15803
15804
15804
Syntax:
15805
15805
"""""""
15806
15806
15807
15807
::
15808
15808
15809
- declare i32 @llvm.experimental. vector.reduce.umax.v4i32(<4 x i32> %a)
15809
+ declare i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> %a)
15810
15810
15811
15811
Overview:
15812
15812
"""""""""
15813
15813
15814
- The '``llvm.experimental. vector.reduce.umax.*``' intrinsics do an unsigned
15814
+ The '``llvm.vector.reduce.umax.*``' intrinsics do an unsigned
15815
15815
integer ``MAX`` reduction of a vector, returning the result as a scalar. The
15816
15816
return type matches the element-type of the vector input.
15817
15817
15818
15818
Arguments:
15819
15819
""""""""""
15820
15820
The argument to this intrinsic must be a vector of integer values.
15821
15821
15822
- '``llvm.experimental. vector.reduce.umin.*``' Intrinsic
15823
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15822
+ '``llvm.vector.reduce.umin.*``' Intrinsic
15823
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15824
15824
15825
15825
Syntax:
15826
15826
"""""""
15827
15827
15828
15828
::
15829
15829
15830
- declare i32 @llvm.experimental. vector.reduce.umin.v4i32(<4 x i32> %a)
15830
+ declare i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %a)
15831
15831
15832
15832
Overview:
15833
15833
"""""""""
15834
15834
15835
- The '``llvm.experimental. vector.reduce.umin.*``' intrinsics do an unsigned
15835
+ The '``llvm.vector.reduce.umin.*``' intrinsics do an unsigned
15836
15836
integer ``MIN`` reduction of a vector, returning the result as a scalar. The
15837
15837
return type matches the element-type of the vector input.
15838
15838
15839
15839
Arguments:
15840
15840
""""""""""
15841
15841
The argument to this intrinsic must be a vector of integer values.
15842
15842
15843
- '``llvm.experimental. vector.reduce.fmax.*``' Intrinsic
15844
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15843
+ '``llvm.vector.reduce.fmax.*``' Intrinsic
15844
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15845
15845
15846
15846
Syntax:
15847
15847
"""""""
15848
15848
15849
15849
::
15850
15850
15851
- declare float @llvm.experimental. vector.reduce.fmax.v4f32(<4 x float> %a)
15852
- declare double @llvm.experimental. vector.reduce.fmax.v2f64(<2 x double> %a)
15851
+ declare float @llvm.vector.reduce.fmax.v4f32(<4 x float> %a)
15852
+ declare double @llvm.vector.reduce.fmax.v2f64(<2 x double> %a)
15853
15853
15854
15854
Overview:
15855
15855
"""""""""
15856
15856
15857
- The '``llvm.experimental. vector.reduce.fmax.*``' intrinsics do a floating-point
15857
+ The '``llvm.vector.reduce.fmax.*``' intrinsics do a floating-point
15858
15858
``MAX`` reduction of a vector, returning the result as a scalar. The return type
15859
15859
matches the element-type of the vector input.
15860
15860
@@ -15870,22 +15870,22 @@ Arguments:
15870
15870
""""""""""
15871
15871
The argument to this intrinsic must be a vector of floating-point values.
15872
15872
15873
- '``llvm.experimental. vector.reduce.fmin.*``' Intrinsic
15874
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15873
+ '``llvm.vector.reduce.fmin.*``' Intrinsic
15874
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15875
15875
15876
15876
Syntax:
15877
15877
"""""""
15878
15878
This is an overloaded intrinsic.
15879
15879
15880
15880
::
15881
15881
15882
- declare float @llvm.experimental. vector.reduce.fmin.v4f32(<4 x float> %a)
15883
- declare double @llvm.experimental. vector.reduce.fmin.v2f64(<2 x double> %a)
15882
+ declare float @llvm.vector.reduce.fmin.v4f32(<4 x float> %a)
15883
+ declare double @llvm.vector.reduce.fmin.v2f64(<2 x double> %a)
15884
15884
15885
15885
Overview:
15886
15886
"""""""""
15887
15887
15888
- The '``llvm.experimental. vector.reduce.fmin.*``' intrinsics do a floating-point
15888
+ The '``llvm.vector.reduce.fmin.*``' intrinsics do a floating-point
15889
15889
``MIN`` reduction of a vector, returning the result as a scalar. The return type
15890
15890
matches the element-type of the vector input.
15891
15891
0 commit comments