@@ -1520,14 +1520,6 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
15201520 }
15211521}
15221522impl < ' 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-
15311523 pub ( crate ) fn insert_element (
15321524 & mut self ,
15331525 vec : & ' ll Value ,
@@ -1546,66 +1538,6 @@ impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
15461538 unsafe { llvm:: LLVMBuildShuffleVector ( self . llbuilder , v1, v2, mask, UNNAMED ) }
15471539 }
15481540
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-
16091541 pub ( crate ) fn add_clause ( & mut self , landing_pad : & ' ll Value , clause : & ' ll Value ) {
16101542 unsafe {
16111543 llvm:: LLVMAddClause ( landing_pad, clause) ;
@@ -1893,3 +1825,91 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
18931825 self . call_intrinsic ( "llvm.instrprof.increment" , & [ ] , & [ fn_name, hash, num_counters, index] ) ;
18941826 }
18951827}
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