()
| 1204 | |
| 1205 | #[test] |
| 1206 | fn constraints() { |
| 1207 | let a = Opcode::Iadd.constraints(); |
| 1208 | assert!(a.use_typevar_operand()); |
| 1209 | assert!(!a.requires_typevar_operand()); |
| 1210 | assert_eq!(a.num_fixed_results(), 1); |
| 1211 | assert_eq!(a.num_fixed_value_arguments(), 2); |
| 1212 | assert_eq!(a.result_type(0, types::I32), types::I32); |
| 1213 | assert_eq!(a.result_type(0, types::I8), types::I8); |
| 1214 | assert_eq!( |
| 1215 | a.value_argument_constraint(0, types::I32), |
| 1216 | ResolvedConstraint::Bound(types::I32) |
| 1217 | ); |
| 1218 | assert_eq!( |
| 1219 | a.value_argument_constraint(1, types::I32), |
| 1220 | ResolvedConstraint::Bound(types::I32) |
| 1221 | ); |
| 1222 | |
| 1223 | let b = Opcode::Bitcast.constraints(); |
| 1224 | assert!(!b.use_typevar_operand()); |
| 1225 | assert!(!b.requires_typevar_operand()); |
| 1226 | assert_eq!(b.num_fixed_results(), 1); |
| 1227 | assert_eq!(b.num_fixed_value_arguments(), 1); |
| 1228 | assert_eq!(b.result_type(0, types::I32), types::I32); |
| 1229 | assert_eq!(b.result_type(0, types::I8), types::I8); |
| 1230 | match b.value_argument_constraint(0, types::I32) { |
| 1231 | ResolvedConstraint::Free(vts) => assert!(vts.contains(types::F32)), |
| 1232 | _ => panic!("Unexpected constraint from value_argument_constraint"), |
| 1233 | } |
| 1234 | |
| 1235 | let c = Opcode::Call.constraints(); |
| 1236 | assert_eq!(c.num_fixed_results(), 0); |
| 1237 | assert_eq!(c.num_fixed_value_arguments(), 0); |
| 1238 | |
| 1239 | let i = Opcode::CallIndirect.constraints(); |
| 1240 | assert_eq!(i.num_fixed_results(), 0); |
| 1241 | assert_eq!(i.num_fixed_value_arguments(), 1); |
| 1242 | |
| 1243 | let cmp = Opcode::Icmp.constraints(); |
| 1244 | assert!(cmp.use_typevar_operand()); |
| 1245 | assert!(cmp.requires_typevar_operand()); |
| 1246 | assert_eq!(cmp.num_fixed_results(), 1); |
| 1247 | assert_eq!(cmp.num_fixed_value_arguments(), 2); |
| 1248 | assert_eq!(cmp.result_type(0, types::I64), types::I8); |
| 1249 | } |
| 1250 | |
| 1251 | #[test] |
| 1252 | fn value_set() { |
nothing calls this directly
no test coverage detected