@@ -1520,14 +1520,6 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
1520
1520
}
1521
1521
}
1522
1522
impl < ' a , ' ll , CX : Borrow < SCx < ' ll > > > GenericBuilder < ' a , ' ll , CX > {
1523
- pub ( crate ) fn minnum ( & mut self , lhs : & ' ll Value , rhs : & ' ll Value ) -> & ' ll Value {
1524
- unsafe { llvm:: LLVMRustBuildMinNum ( self . llbuilder , lhs, rhs) }
1525
- }
1526
-
1527
- pub ( crate ) fn maxnum ( & mut self , lhs : & ' ll Value , rhs : & ' ll Value ) -> & ' ll Value {
1528
- unsafe { llvm:: LLVMRustBuildMaxNum ( self . llbuilder , lhs, rhs) }
1529
- }
1530
-
1531
1523
pub ( crate ) fn insert_element (
1532
1524
& mut self ,
1533
1525
vec : & ' ll Value ,
@@ -1546,66 +1538,6 @@ impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
1546
1538
unsafe { llvm:: LLVMBuildShuffleVector ( self . llbuilder , v1, v2, mask, UNNAMED ) }
1547
1539
}
1548
1540
1549
- pub ( crate ) fn vector_reduce_fadd ( & mut self , acc : & ' ll Value , src : & ' ll Value ) -> & ' ll Value {
1550
- unsafe { llvm:: LLVMRustBuildVectorReduceFAdd ( self . llbuilder , acc, src) }
1551
- }
1552
- pub ( crate ) fn vector_reduce_fmul ( & mut self , acc : & ' ll Value , src : & ' ll Value ) -> & ' ll Value {
1553
- unsafe { llvm:: LLVMRustBuildVectorReduceFMul ( self . llbuilder , acc, src) }
1554
- }
1555
- pub ( crate ) fn vector_reduce_fadd_reassoc (
1556
- & mut self ,
1557
- acc : & ' ll Value ,
1558
- src : & ' ll Value ,
1559
- ) -> & ' ll Value {
1560
- unsafe {
1561
- let instr = llvm:: LLVMRustBuildVectorReduceFAdd ( self . llbuilder , acc, src) ;
1562
- llvm:: LLVMRustSetAllowReassoc ( instr) ;
1563
- instr
1564
- }
1565
- }
1566
- pub ( crate ) fn vector_reduce_fmul_reassoc (
1567
- & mut self ,
1568
- acc : & ' ll Value ,
1569
- src : & ' ll Value ,
1570
- ) -> & ' ll Value {
1571
- unsafe {
1572
- let instr = llvm:: LLVMRustBuildVectorReduceFMul ( self . llbuilder , acc, src) ;
1573
- llvm:: LLVMRustSetAllowReassoc ( instr) ;
1574
- instr
1575
- }
1576
- }
1577
- pub ( crate ) fn vector_reduce_add ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1578
- unsafe { llvm:: LLVMRustBuildVectorReduceAdd ( self . llbuilder , src) }
1579
- }
1580
- pub ( crate ) fn vector_reduce_mul ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1581
- unsafe { llvm:: LLVMRustBuildVectorReduceMul ( self . llbuilder , src) }
1582
- }
1583
- pub ( crate ) fn vector_reduce_and ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1584
- unsafe { llvm:: LLVMRustBuildVectorReduceAnd ( self . llbuilder , src) }
1585
- }
1586
- pub ( crate ) fn vector_reduce_or ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1587
- unsafe { llvm:: LLVMRustBuildVectorReduceOr ( self . llbuilder , src) }
1588
- }
1589
- pub ( crate ) fn vector_reduce_xor ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1590
- unsafe { llvm:: LLVMRustBuildVectorReduceXor ( self . llbuilder , src) }
1591
- }
1592
- pub ( crate ) fn vector_reduce_fmin ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1593
- unsafe {
1594
- llvm:: LLVMRustBuildVectorReduceFMin ( self . llbuilder , src, /*NoNaNs:*/ false )
1595
- }
1596
- }
1597
- pub ( crate ) fn vector_reduce_fmax ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1598
- unsafe {
1599
- llvm:: LLVMRustBuildVectorReduceFMax ( self . llbuilder , src, /*NoNaNs:*/ false )
1600
- }
1601
- }
1602
- pub ( crate ) fn vector_reduce_min ( & mut self , src : & ' ll Value , is_signed : bool ) -> & ' ll Value {
1603
- unsafe { llvm:: LLVMRustBuildVectorReduceMin ( self . llbuilder , src, is_signed) }
1604
- }
1605
- pub ( crate ) fn vector_reduce_max ( & mut self , src : & ' ll Value , is_signed : bool ) -> & ' ll Value {
1606
- unsafe { llvm:: LLVMRustBuildVectorReduceMax ( self . llbuilder , src, is_signed) }
1607
- }
1608
-
1609
1541
pub ( crate ) fn add_clause ( & mut self , landing_pad : & ' ll Value , clause : & ' ll Value ) {
1610
1542
unsafe {
1611
1543
llvm:: LLVMAddClause ( landing_pad, clause) ;
@@ -1893,3 +1825,91 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
1893
1825
self . call_intrinsic ( "llvm.instrprof.increment" , & [ ] , & [ fn_name, hash, num_counters, index] ) ;
1894
1826
}
1895
1827
}
1828
+
1829
+ impl < ' a , ' ll , ' tcx > Builder < ' a , ' ll , ' tcx > {
1830
+ pub ( crate ) fn minnum ( & mut self , lhs : & ' ll Value , rhs : & ' ll Value ) -> & ' ll Value {
1831
+ self . call_intrinsic ( "llvm.minnum" , & [ self . val_ty ( lhs) ] , & [ lhs, rhs] )
1832
+ }
1833
+
1834
+ pub ( crate ) fn maxnum ( & mut self , lhs : & ' ll Value , rhs : & ' ll Value ) -> & ' ll Value {
1835
+ self . call_intrinsic ( "llvm.maxnum" , & [ self . val_ty ( lhs) ] , & [ lhs, rhs] )
1836
+ }
1837
+
1838
+ pub ( crate ) fn vector_reduce_fadd ( & mut self , acc : & ' ll Value , src : & ' ll Value ) -> & ' ll Value {
1839
+ self . call_intrinsic ( "llvm.vector.reduce.fadd" , & [ self . val_ty ( src) ] , & [ acc, src] )
1840
+ }
1841
+
1842
+ pub ( crate ) fn vector_reduce_fmul ( & mut self , acc : & ' ll Value , src : & ' ll Value ) -> & ' ll Value {
1843
+ self . call_intrinsic ( "llvm.vector.reduce.fmul" , & [ self . val_ty ( src) ] , & [ acc, src] )
1844
+ }
1845
+
1846
+ pub ( crate ) fn vector_reduce_fadd_reassoc (
1847
+ & mut self ,
1848
+ acc : & ' ll Value ,
1849
+ src : & ' ll Value ,
1850
+ ) -> & ' ll Value {
1851
+ unsafe {
1852
+ let instr =
1853
+ self . call_intrinsic ( "llvm.vector.reduce.fadd" , & [ self . val_ty ( src) ] , & [ acc, src] ) ;
1854
+ llvm:: LLVMRustSetAllowReassoc ( instr) ;
1855
+ instr
1856
+ }
1857
+ }
1858
+
1859
+ pub ( crate ) fn vector_reduce_fmul_reassoc (
1860
+ & mut self ,
1861
+ acc : & ' ll Value ,
1862
+ src : & ' ll Value ,
1863
+ ) -> & ' ll Value {
1864
+ unsafe {
1865
+ let instr =
1866
+ self . call_intrinsic ( "llvm.vector.reduce.fmul" , & [ self . val_ty ( src) ] , & [ acc, src] ) ;
1867
+ llvm:: LLVMRustSetAllowReassoc ( instr) ;
1868
+ instr
1869
+ }
1870
+ }
1871
+
1872
+ pub ( crate ) fn vector_reduce_add ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1873
+ self . call_intrinsic ( "llvm.vector.reduce.add" , & [ self . val_ty ( src) ] , & [ src] )
1874
+ }
1875
+
1876
+ pub ( crate ) fn vector_reduce_mul ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1877
+ self . call_intrinsic ( "llvm.vector.reduce.mul" , & [ self . val_ty ( src) ] , & [ src] )
1878
+ }
1879
+
1880
+ pub ( crate ) fn vector_reduce_and ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1881
+ self . call_intrinsic ( "llvm.vector.reduce.and" , & [ self . val_ty ( src) ] , & [ src] )
1882
+ }
1883
+
1884
+ pub ( crate ) fn vector_reduce_or ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1885
+ self . call_intrinsic ( "llvm.vector.reduce.or" , & [ self . val_ty ( src) ] , & [ src] )
1886
+ }
1887
+
1888
+ pub ( crate ) fn vector_reduce_xor ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1889
+ self . call_intrinsic ( "llvm.vector.reduce.xor" , & [ self . val_ty ( src) ] , & [ src] )
1890
+ }
1891
+
1892
+ pub ( crate ) fn vector_reduce_fmin ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1893
+ self . call_intrinsic ( "llvm.vector.reduce.fmin" , & [ self . val_ty ( src) ] , & [ src] )
1894
+ }
1895
+
1896
+ pub ( crate ) fn vector_reduce_fmax ( & mut self , src : & ' ll Value ) -> & ' ll Value {
1897
+ self . call_intrinsic ( "llvm.vector.reduce.fmax" , & [ self . val_ty ( src) ] , & [ src] )
1898
+ }
1899
+
1900
+ pub ( crate ) fn vector_reduce_min ( & mut self , src : & ' ll Value , is_signed : bool ) -> & ' ll Value {
1901
+ self . call_intrinsic (
1902
+ if is_signed { "llvm.vector.reduce.smin" } else { "llvm.vector.reduce.umin" } ,
1903
+ & [ self . val_ty ( src) ] ,
1904
+ & [ src] ,
1905
+ )
1906
+ }
1907
+
1908
+ pub ( crate ) fn vector_reduce_max ( & mut self , src : & ' ll Value , is_signed : bool ) -> & ' ll Value {
1909
+ self . call_intrinsic (
1910
+ if is_signed { "llvm.vector.reduce.smax" } else { "llvm.vector.reduce.umax" } ,
1911
+ & [ self . val_ty ( src) ] ,
1912
+ & [ src] ,
1913
+ )
1914
+ }
1915
+ }
0 commit comments