@@ -1814,6 +1814,62 @@ impl OpVisitor for Interpreter<'_> {
1814
1814
ControlFlow :: Continue ( ( ) )
1815
1815
}
1816
1816
1817
+ fn xmin32_u ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1818
+ let a = self . state [ operands. src1 ] . get_u32 ( ) ;
1819
+ let b = self . state [ operands. src2 ] . get_u32 ( ) ;
1820
+ self . state [ operands. dst ] . set_u32 ( a. min ( b) ) ;
1821
+ ControlFlow :: Continue ( ( ) )
1822
+ }
1823
+
1824
+ fn xmin32_s ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1825
+ let a = self . state [ operands. src1 ] . get_i32 ( ) ;
1826
+ let b = self . state [ operands. src2 ] . get_i32 ( ) ;
1827
+ self . state [ operands. dst ] . set_i32 ( a. min ( b) ) ;
1828
+ ControlFlow :: Continue ( ( ) )
1829
+ }
1830
+
1831
+ fn xmax32_u ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1832
+ let a = self . state [ operands. src1 ] . get_u32 ( ) ;
1833
+ let b = self . state [ operands. src2 ] . get_u32 ( ) ;
1834
+ self . state [ operands. dst ] . set_u32 ( a. max ( b) ) ;
1835
+ ControlFlow :: Continue ( ( ) )
1836
+ }
1837
+
1838
+ fn xmax32_s ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1839
+ let a = self . state [ operands. src1 ] . get_i32 ( ) ;
1840
+ let b = self . state [ operands. src2 ] . get_i32 ( ) ;
1841
+ self . state [ operands. dst ] . set_i32 ( a. max ( b) ) ;
1842
+ ControlFlow :: Continue ( ( ) )
1843
+ }
1844
+
1845
+ fn xmin64_u ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1846
+ let a = self . state [ operands. src1 ] . get_u64 ( ) ;
1847
+ let b = self . state [ operands. src2 ] . get_u64 ( ) ;
1848
+ self . state [ operands. dst ] . set_u64 ( a. min ( b) ) ;
1849
+ ControlFlow :: Continue ( ( ) )
1850
+ }
1851
+
1852
+ fn xmin64_s ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1853
+ let a = self . state [ operands. src1 ] . get_i64 ( ) ;
1854
+ let b = self . state [ operands. src2 ] . get_i64 ( ) ;
1855
+ self . state [ operands. dst ] . set_i64 ( a. min ( b) ) ;
1856
+ ControlFlow :: Continue ( ( ) )
1857
+ }
1858
+
1859
+ fn xmax64_u ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1860
+ let a = self . state [ operands. src1 ] . get_u64 ( ) ;
1861
+ let b = self . state [ operands. src2 ] . get_u64 ( ) ;
1862
+ self . state [ operands. dst ] . set_u64 ( a. max ( b) ) ;
1863
+ ControlFlow :: Continue ( ( ) )
1864
+ }
1865
+
1866
+ fn xmax64_s ( & mut self , operands : BinaryOperands < XReg > ) -> ControlFlow < Done > {
1867
+ let a = self . state [ operands. src1 ] . get_i64 ( ) ;
1868
+ let b = self . state [ operands. src2 ] . get_i64 ( ) ;
1869
+ self . state [ operands. dst ] . set_i64 ( a. max ( b) ) ;
1870
+ ControlFlow :: Continue ( ( ) )
1871
+ }
1872
+
1817
1873
fn fconst32 ( & mut self , dst : FReg , bits : u32 ) -> ControlFlow < Done > {
1818
1874
self . state [ dst] . set_f32 ( f32:: from_bits ( bits) ) ;
1819
1875
ControlFlow :: Continue ( ( ) )
0 commit comments