{
  "name": "gc-aot-test-suites",
  "description": "Test suites for GC AOT feature",
  "sub-requirements": [
    {
      "req_id": 1,
      "issue_id": "633",
      "desciption": "Modify existing opcodes to conform to the semantics of the GC proposal when needed.",
      "cases": [
        {
          "name": "local_set",
          "description": "Test opcodes: 'WASM_OP_GET_LOCAL', 'WASM_OP_SET_LOCAL'"
        },
        {
          "name": "local_tee",
          "description": "Test opcodes: 'WASM_OP_GET_LOCAL', 'WASM_OP_TEE_LOCAL'"
        },
        {
          "name": "table_init",
          "description": "Test opcodes: 'WASM_OP_TABLE_INIT'"
        },
        {
          "name": "table_grow",
          "description": "Test opcodes: 'WASM_OP_TABLE_GROW'"
        },
        {
          "name": "table_fill",
          "description": "Test opcodes: 'WASM_OP_TABLE_FILL'"
        },
        {
          "name": "call_ref",
          "description": "Test opcodes: 'WASM_OP_CALL_REF'"
        },
        {
          "name": "return_call_ref",
          "description": "Test opcodes: 'WASM_OP_RETURN_CALL_REF'"
        },
        {
          "name": "table_get",
          "description": "Test opcodes: 'WASM_OP_TABLE_GET'"
        },
        {
          "name": "table_set",
          "description": "Test opcodes: 'WASM_OP_TABLE_SET'"
        },
        {
          "name": "select",
          "description": "Test opcodes: 'WASM_OP_SELECT_T'"
        }
      ]
    },
    {
      "req_id": 2,
      "issue_id": "634",
      "desciption": "Supporting new GC opcodes(semantics of GC MVP proposal spec).",
      "cases": [
        {
          "name": "ref_test",
          "description": "Test opcodes: 'WASM_OP_TABLE_GET', 'WASM_OP_TABLE_SET', 'WASM_OP_REF_NULL', 'WASM_OP_REF_IS_NULL', 'WASM_OP_REF_TEST', 'WASM_OP_REF_TEST_NULLABLE'"
        },
        {
          "name": "ref_eq",
          "description": "Test opcodes: 'WASM_OP_REF_EQ', 'WASM_OP_GET_LOCAL'"
        },
        {
          "name": "ref_cast",
          "description": "Test opcodes: 'WASM_OP_REF_CAST', 'WASM_OP_REF_CAST_NULLABLE', 'WASM_OP_REF_AS_NON_NULL'"
        },
        {
          "name": "type_subtyping",
          "description": "Test opcodes: 'WASM_OP_CALL_INDIRECT', 'WASM_OP_REF_FUNC'"
        },
        {
          "name": "array",
          "description": "Test opcodes: 'WASM_OP_ARRAY_NEW', 'WASM_OP_ARRAY_NEW_DEFAULT', 'WASM_OP_ARRAY_NEW_FIXED', 'WASM_OP_ARRAY_NEW_DATA', 'WASM_OP_ARRAY_GET', 'WASM_OP_ARRAY_GET_S', 'WASM_OP_ARRAY_GET_U', 'WASM_OP_ARRAY_SET', 'WASM_OP_ARRAY_LEN'"
        },
        {
          "name": "array_fill",
          "description": "Test opcodes: 'WASM_OP_ARRAY_FILL'"
        },
        {
          "name": "struct",
          "description": "Test opcodes: 'WASM_OP_STRUCT_NEW', 'WASM_OP_STRUCT_NEW_DEFAULT', 'WASM_OP_STRUCT_GET', 'WASM_OP_STRUCT_GET_S', 'WASM_OP_STRUCT_GET_U', 'WASM_OP_STRUCT_SET'"
        },
        {
          "name": "i31",
          "description": "Test opcodes: 'WASM_OP_I31_NEW', 'WASM_OP_I31_GET_S', 'WASM_OP_I31_GET_U'"
        },
        {
          "name": "br_on_cast",
          "description": "Test opcodes: 'WASM_OP_BR_ON_NULL', 'WASM_OP_BR_ON_CAST'"
        },
        {
          "name": "br_on_cast_fail",
          "description": "Test opcodes: 'WASM_OP_BR_ON_NON_NULL', 'WASM_OP_BR_ON_CAST_FAIL'"
        },
        {
          "name": "extern",
          "description": "Test opcodes: 'WASM_OP_ANY_CONVERT_EXTERN', 'WASM_OP_EXTERN_CONVERT_ANY'"
        }
      ]
    },
    {
      "req_id": 3,
      "issue_id": "635",
      "desciption": "Supporting new GC opcode(semantics of Binaryen GC spec).",
      "cases": [
        {
          "name": "array_copy",
          "description": "Test the opcodes: 'WASM_OP_ARRAY_COPY', 'WASM_OP_SET_LOCAL'"
        }
      ]
    }
  ]
}
