nak: Add tests for nak_builder::iadd64

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30381>
This commit is contained in:
Faith Ekstrand 2024-07-24 20:48:37 -05:00 committed by Marge Bot
parent 074ba214fe
commit 6056bc4afa

View file

@ -611,6 +611,44 @@ fn test_op_prmt() {
test_foldable_op(op);
}
#[test]
fn test_iadd64() {
let run = RunSingleton::get();
let invocations = 100;
let mut b = TestShaderBuilder::new(run.sm.as_ref());
let x = SSARef::from([
b.ld_test_data(0, MemType::B32)[0],
b.ld_test_data(4, MemType::B32)[0],
]);
let y = SSARef::from([
b.ld_test_data(8, MemType::B32)[0],
b.ld_test_data(12, MemType::B32)[0],
]);
let dst = b.iadd64(x.into(), y.into(), 0.into());
b.st_test_data(16, MemType::B32, dst[0].into());
b.st_test_data(20, MemType::B32, dst[1].into());
let bin = b.compile();
let mut a = Acorn::new();
let mut data = Vec::new();
for _ in 0..invocations {
data.push([a.get_u32(), a.get_u32(), a.get_u32(), a.get_u32(), 0, 0]);
}
run.run.run(&bin, &mut data).unwrap();
for d in &data {
let x = u64::from(d[0]) | (u64::from(d[1]) << 32);
let y = u64::from(d[2]) | (u64::from(d[3]) << 32);
let dst = x.wrapping_add(y);
assert_eq!(d[4], dst as u32);
assert_eq!(d[5], (dst >> 32) as u32);
}
}
#[test]
fn test_isetp64() {
let run = RunSingleton::get();