MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / constraints

Function constraints

cranelift/codegen/src/ir/instructions.rs:1206–1249  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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() {

Callers

nothing calls this directly

Calls 2

constraintsMethod · 0.80

Tested by

no test coverage detected