/**
 * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Autogenerated file -- DO NOT EDIT!
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_I32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_ABS_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_ABS_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_ABS_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_I64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_ABS_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_ABS_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_ABS_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_F32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_ABS_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_ABS_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_ABS_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_F64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_ABS_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_ABS_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_ABS_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_ABS_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_I32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MIN_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MIN_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MIN_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_I64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MIN_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MIN_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MIN_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_F32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MIN_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MIN_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MIN_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_F64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MIN_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MIN_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MIN_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MIN_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_I32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MAX_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MAX_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MAX_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_I64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MAX_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MAX_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MAX_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_F32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MAX_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MAX_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MAX_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_F64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_MAX_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_MAX_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_MAX_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_MAX_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DOUBLE_IS_INF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_DOUBLE_IS_INF, arch.first, true))
        << "intrinsic INTRINSIC_DOUBLE_IS_INF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DOUBLE_IS_INF behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT_IS_INF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT_IS_INF, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT_IS_INF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT_IS_INF behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SIN_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SIN_F32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_SIN_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_SIN_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SIN_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_SIN_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SIN_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SIN_F64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_SIN_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_SIN_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SIN_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_SIN_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_COS_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_COS_F32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_COS_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_COS_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_COS_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_COS_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_COS_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_COS_F64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_COS_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_COS_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_COS_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_COS_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_POW_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_POW_F32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_POW_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_POW_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_POW_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_POW_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_POW_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_POW_F64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_POW_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_POW_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_POW_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_POW_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SQRT_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SQRT_F32, arch.first, true))
        << "intrinsic INTRINSIC_MATH_SQRT_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_SQRT_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SQRT_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_SQRT_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SQRT_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SQRT_F64, arch.first, true))
        << "intrinsic INTRINSIC_MATH_SQRT_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_SQRT_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_SQRT_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_SQRT_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_CALCULATE_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_CALCULATE_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_MATH_CALCULATE_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_CALCULATE_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_CALCULATE_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_CALCULATE_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_MATH_CALCULATE_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_CALCULATE_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_MATH_CALCULATE_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_MATH_CALCULATE_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_MATH_CALCULATE_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_MATH_CALCULATE_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_STRING, arch.first, true))
        << "intrinsic INTRINSIC_IO_PRINT_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_IO_PRINT_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_IO_PRINT_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_F32, arch.first, true))
        << "intrinsic INTRINSIC_IO_PRINT_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_IO_PRINT_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_IO_PRINT_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_F64, arch.first, true))
        << "intrinsic INTRINSIC_IO_PRINT_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_IO_PRINT_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_IO_PRINT_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_I32, arch.first, true))
        << "intrinsic INTRINSIC_IO_PRINT_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_IO_PRINT_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_IO_PRINT_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_U32, arch.first, true))
        << "intrinsic INTRINSIC_IO_PRINT_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_IO_PRINT_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_IO_PRINT_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_I64, arch.first, true))
        << "intrinsic INTRINSIC_IO_PRINT_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_IO_PRINT_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_IO_PRINT_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_U64, arch.first, true))
        << "intrinsic INTRINSIC_IO_PRINT_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_IO_PRINT_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_IO_PRINT_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_IO_PRINT_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_COMPILE_METHOD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT8, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_COMPILE_METHOD, arch.first, true))
        << "intrinsic INTRINSIC_SYSTEM_COMPILE_METHOD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_SYSTEM_COMPILE_METHOD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT8, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_COMPILE_METHOD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_SYSTEM_COMPILE_METHOD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_EXIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_EXIT, arch.first, true))
        << "intrinsic INTRINSIC_SYSTEM_EXIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_SYSTEM_EXIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_EXIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_SYSTEM_EXIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_NANO_TIME, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_NANO_TIME, arch.first, true))
        << "intrinsic INTRINSIC_SYSTEM_NANO_TIME" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_SYSTEM_NANO_TIME behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_NANO_TIME, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_SYSTEM_NANO_TIME"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_ASSERT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_ASSERT, arch.first, true))
        << "intrinsic INTRINSIC_SYSTEM_ASSERT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_SYSTEM_ASSERT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_ASSERT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_SYSTEM_ASSERT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_ASSERT_PRINT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_ASSERT_PRINT, arch.first, true))
        << "intrinsic INTRINSIC_SYSTEM_ASSERT_PRINT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_SYSTEM_ASSERT_PRINT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_ASSERT_PRINT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_SYSTEM_ASSERT_PRINT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_SCHEDULE_COROUTINE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_SCHEDULE_COROUTINE, arch.first, true))
        << "intrinsic INTRINSIC_SYSTEM_SCHEDULE_COROUTINE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_SYSTEM_SCHEDULE_COROUTINE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_SCHEDULE_COROUTINE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_SYSTEM_SCHEDULE_COROUTINE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_COROUTINE_GET_WORKER_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_COROUTINE_GET_WORKER_ID, arch.first, true))
        << "intrinsic INTRINSIC_SYSTEM_COROUTINE_GET_WORKER_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_SYSTEM_COROUTINE_GET_WORKER_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_SYSTEM_COROUTINE_GET_WORKER_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_SYSTEM_COROUTINE_GET_WORKER_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CHECK_TAG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CHECK_TAG, arch.first, true))
        << "intrinsic INTRINSIC_CHECK_TAG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CHECK_TAG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CHECK_TAG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CHECK_TAG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_I32, arch.first, true))
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONVERT_STRING_TO_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT32, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_U32, arch.first, true))
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONVERT_STRING_TO_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT32, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_I64, arch.first, true))
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONVERT_STRING_TO_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT64, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_U64, arch.first, true))
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONVERT_STRING_TO_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT64, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_F32, arch.first, true))
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONVERT_STRING_TO_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_F64, arch.first, true))
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONVERT_STRING_TO_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_CONVERT_STRING_TO_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONVERT_STRING_TO_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_CREATE_NON_MOVABLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_CREATE_NON_MOVABLE, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_CREATE_NON_MOVABLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_CREATE_NON_MOVABLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_CREATE_NON_MOVABLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_CREATE_NON_MOVABLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_MONITOR_ENTER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_MONITOR_ENTER, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_MONITOR_ENTER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_MONITOR_ENTER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_MONITOR_ENTER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_MONITOR_ENTER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_MONITOR_EXIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_MONITOR_EXIT, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_MONITOR_EXIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_MONITOR_EXIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_MONITOR_EXIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_MONITOR_EXIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_TIMED_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_TIMED_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_TIMED_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_TIMED_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_TIMED_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_TIMED_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_TIMED_WAIT_NANOS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_TIMED_WAIT_NANOS, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_TIMED_WAIT_NANOS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_TIMED_WAIT_NANOS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_TIMED_WAIT_NANOS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_TIMED_WAIT_NANOS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_NOTIFY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_NOTIFY, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_NOTIFY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_NOTIFY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_NOTIFY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_NOTIFY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_NOTIFY_ALL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_NOTIFY_ALL, arch.first, true))
        << "intrinsic INTRINSIC_OBJECT_NOTIFY_ALL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_OBJECT_NOTIFY_ALL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_OBJECT_NOTIFY_ALL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_OBJECT_NOTIFY_ALL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SIN, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_SIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_SIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_SIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COS, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_COS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_COS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_COS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_POWER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_POWER, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_POWER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_POWER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_POWER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_POWER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SQRT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SQRT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_SQRT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_SQRT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SQRT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_SQRT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ABS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ABS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ABS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ABS_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ABS_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ABS_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ABS_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ABS_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ABS_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ABS_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ABS_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ABS_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ABS_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_I32, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MAX_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MAX_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MAX_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_I64, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MAX_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MAX_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MAX_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_F32, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MAX_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MAX_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MAX_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_F64, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MAX_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MAX_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MAX_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MAX_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_I32, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MIN_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MIN_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MIN_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_I64, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MIN_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MIN_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MIN_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_F32, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MIN_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MIN_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MIN_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_F64, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MIN_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MIN_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MIN_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MIN_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_RANDOM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_RANDOM, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_RANDOM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_RANDOM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_RANDOM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_RANDOM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOS, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ACOS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ACOS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ACOS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOS_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOS_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ACOS_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ACOS_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOS_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ACOS_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOSH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOSH, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ACOSH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ACOSH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOSH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ACOSH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOSH_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOSH_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ACOSH_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ACOSH_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ACOSH_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ACOSH_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASIN, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ASIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ASIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ASIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASIN_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASIN_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ASIN_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ASIN_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASIN_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ASIN_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASINH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASINH, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ASINH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ASINH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASINH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ASINH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASINH_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASINH_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ASINH_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ASINH_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ASINH_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ASINH_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN2, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN2, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ATAN2" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ATAN2 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN2, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ATAN2"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN2_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN2_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ATAN2_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ATAN2_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN2_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ATAN2_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATANH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATANH, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ATANH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ATANH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATANH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ATANH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATANH_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATANH_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ATANH_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ATANH_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATANH_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ATANH_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ATAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ATAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ATAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ATAN_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ATAN_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ATAN_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_ATAN_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SINH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SINH, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_SINH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_SINH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SINH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_SINH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SINH_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SINH_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_SINH_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_SINH_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SINH_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_SINH_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COSH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COSH, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_COSH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_COSH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COSH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_COSH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COSH_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COSH_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_COSH_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_COSH_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_COSH_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_COSH_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_FLOOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_FLOOR, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_FLOOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_FLOOR behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ROUND, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_ROUND, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_ROUND" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_ROUND behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TRUNC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TRUNC, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_TRUNC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_TRUNC behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CBRT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CBRT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_CBRT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_CBRT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CBRT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_CBRT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CBRT_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CBRT_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_CBRT_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_CBRT_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CBRT_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_CBRT_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TAN, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_TAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_TAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_TAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TAN_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TAN_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_TAN_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_TAN_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TAN_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_TAN_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TANH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TANH, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_TANH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_TANH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TANH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_TANH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TANH_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TANH_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_TANH_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_TANH_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_TANH_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_TANH_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXP, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXP, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_EXP" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_EXP behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXP, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_EXP"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXP_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXP_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_EXP_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_EXP_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXP_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_EXP_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG10, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG10, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_LOG10" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_LOG10 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG10, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_LOG10"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG10_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG10_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_LOG10_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_LOG10_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG10_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_LOG10_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXPM1, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXPM1, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_EXPM1" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_EXPM1 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXPM1, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_EXPM1"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXPM1_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXPM1_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_EXPM1_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_EXPM1_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_EXPM1_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_EXPM1_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CEIL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CEIL, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_CEIL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_CEIL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_LOG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_LOG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_LOG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_LOG_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_LOG_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_LOG_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_LOG_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_REM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_REM, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_REM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_REM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_REM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_REM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MOD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MOD, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_MOD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_MOD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_MOD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_MOD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CLZ64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CLZ64, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_CLZ64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_CLZ64 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CLZ32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CLZ32, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_CLZ32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_CLZ32 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CLZ32_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CLZ32_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_CLZ32_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_CLZ32_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_CLZ32_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_CLZ32_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SIGNBIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SIGNBIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_SIGNBIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_SIGNBIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_SIGNBIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_SIGNBIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_IMUL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_IMUL, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_IMUL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_IMUL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_IMUL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_IMUL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_FROUND, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_FROUND, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_FROUND" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_FROUND behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_FROUND, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_FROUND"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_HYPOT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_HYPOT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_HYPOT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_HYPOT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_HYPOT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_HYPOT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_HYPOT_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_HYPOT_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_MATH_HYPOT_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MATH_HYPOT_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MATH_HYPOT_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MATH_HYPOT_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONSOLE_PRINT_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONSOLE_PRINT_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONSOLE_PRINT_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONSOLE_PRINT_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONSOLE_PRINT_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONSOLE_PRINT_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LOAD_LIBRARY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LOAD_LIBRARY, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LOAD_LIBRARY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LOAD_LIBRARY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LOAD_LIBRARY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LOAD_LIBRARY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LOAD_LIBRARY_WITH_PERMISSION_CHECK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LOAD_LIBRARY_WITH_PERMISSION_CHECK, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LOAD_LIBRARY_WITH_PERMISSION_CHECK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LOAD_LIBRARY_WITH_PERMISSION_CHECK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LOAD_LIBRARY_WITH_PERMISSION_CHECK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LOAD_LIBRARY_WITH_PERMISSION_CHECK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INITIALIZE_PRIMITIVES_IN_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INITIALIZE_PRIMITIVES_IN_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INITIALIZE_PRIMITIVES_IN_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INITIALIZE_PRIMITIVES_IN_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INITIALIZE_PRIMITIVES_IN_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INITIALIZE_PRIMITIVES_IN_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_STRINGIFY_FAST, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_STRINGIFY_FAST, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_JSON_STRINGIFY_FAST" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_JSON_STRINGIFY_FAST behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_STRINGIFY_FAST, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_JSON_STRINGIFY_FAST"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET_CHARS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET_CHARS, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_GET_CHARS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_GET_CHARS behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET_BYTES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET_BYTES, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_GET_BYTES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_GET_BYTES behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET_LENGTH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET_LENGTH, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_GET_LENGTH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_GET_LENGTH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET_LENGTH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_GET_LENGTH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LENGTH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LENGTH, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_LENGTH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_LENGTH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LENGTH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_LENGTH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_EMPTY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_EMPTY, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_IS_EMPTY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_IS_EMPTY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_EMPTY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_IS_EMPTY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CHAR_AT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CHAR_AT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_CHAR_AT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_CHAR_AT behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_EQUALS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_EQUALS, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_EQUALS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_EQUALS behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFC, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_NORMALIZE_NFC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFD, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_NORMALIZE_NFD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKC, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKD, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_NORMALIZE_NFKD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_LOWER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_LOWER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_TO_LOWER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_TO_LOWER_CASE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_UPPER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_UPPER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_TO_UPPER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_TO_UPPER_CASE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_LOCALE_LOWER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_LOCALE_LOWER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_TO_LOCALE_LOWER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_TO_LOCALE_LOWER_CASE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_LOCALE_UPPER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TO_LOCALE_UPPER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_TO_LOCALE_UPPER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_TO_LOCALE_UPPER_CASE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_WELL_FORMED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_WELL_FORMED, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_IS_WELL_FORMED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_IS_WELL_FORMED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_WELL_FORMED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_IS_WELL_FORMED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_INDEX_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_INDEX_OF, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_INDEX_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_INDEX_OF behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_INDEX_OF_AFTER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_INDEX_OF_AFTER, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_INDEX_OF_AFTER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_INDEX_OF_AFTER behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_INDEX_OF_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_INDEX_OF_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_INDEX_OF_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_INDEX_OF_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_INDEX_OF_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_INDEX_OF_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_LAST_INDEX_OF_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_SUBSTRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_SUBSTRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_SUBSTRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_SUBSTRING behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CODE_POINT_TO_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CODE_POINT_TO_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_CODE_POINT_TO_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_CODE_POINT_TO_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CODE_POINT_TO_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_CODE_POINT_TO_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_COMPRESSED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_COMPRESSED, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_IS_COMPRESSED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_IS_COMPRESSED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_IS_COMPRESSED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_IS_COMPRESSED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CONCAT2, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CONCAT2, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_CONCAT2" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_CONCAT2 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CONCAT3, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CONCAT3, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_CONCAT3" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_CONCAT3 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CONCAT4, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_CONCAT4, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_CONCAT4" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_CONCAT4 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_COMPARE_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_COMPARE_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_COMPARE_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_COMPARE_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TRIM_LEFT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TRIM_LEFT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_TRIM_LEFT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_TRIM_LEFT behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TRIM_RIGHT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TRIM_RIGHT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_TRIM_RIGHT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_TRIM_RIGHT behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TRIM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_TRIM, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_TRIM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_TRIM behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_STARTS_WITH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_STARTS_WITH, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_STARTS_WITH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_STARTS_WITH behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_ENDS_WITH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_ENDS_WITH, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_ENDS_WITH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_ENDS_WITH behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE_SINGLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE_SINGLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE_SINGLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE_SINGLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE_SINGLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_FROM_CHAR_CODE_SINGLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_REPEAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_REPEAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_REPEAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_REPEAT behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STRING_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STRING_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STRING_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STRING_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_TO_STRING_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_TO_STRING_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_TO_STRING_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_TO_STRING_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_TO_STRING_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_TO_STRING_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_TO_STRING_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_TO_STRING_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_LONG behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_INT behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_SHORT behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_BYTE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_CHAR behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_BOOL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_BOOL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_BOOL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_BOOL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_STRING behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING2, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING2, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_STRING2" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_STRING2 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING3, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING3, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_STRING3" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_STRING3 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING4, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_APPEND_STRING4, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_APPEND_STRING4" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_APPEND_STRING4 behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_TO_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SB_TO_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SB_TO_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SB_TO_STRING behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_MAX, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_MAX, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_MATH_MAX" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_MATH_MAX behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_MAX, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_MATH_MAX"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_MIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_MIN, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_MATH_MIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_MATH_MIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_MIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_MATH_MIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_RANDOM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_RANDOM, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_MATH_RANDOM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_MATH_RANDOM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_MATH_RANDOM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_MATH_RANDOM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_STRINGIFY_IGNORE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_STRINGIFY_IGNORE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_JSON_GET_JSON_STRINGIFY_IGNORE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_JSON_GET_JSON_STRINGIFY_IGNORE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_STRINGIFY_IGNORE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_JSON_GET_JSON_STRINGIFY_IGNORE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_PARSE_IGNORE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_PARSE_IGNORE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_JSON_GET_JSON_PARSE_IGNORE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_JSON_GET_JSON_PARSE_IGNORE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_PARSE_IGNORE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_JSON_GET_JSON_PARSE_IGNORE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_RENAME, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_RENAME, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_JSON_GET_JSON_RENAME" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_JSON_GET_JSON_RENAME behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_JSON_GET_JSON_RENAME, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_JSON_GET_JSON_RENAME"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_NOW, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_NOW, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_DATE_NOW" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_DATE_NOW behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_NOW, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_DATE_NOW"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_GET_LOCAL_TIMEZONE_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_GET_LOCAL_TIMEZONE_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_DATE_GET_LOCAL_TIMEZONE_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_DATE_GET_LOCAL_TIMEZONE_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_GET_LOCAL_TIMEZONE_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_DATE_GET_LOCAL_TIMEZONE_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_GET_TIMEZONE_NAME, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_GET_TIMEZONE_NAME, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_DATE_GET_TIMEZONE_NAME" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_DATE_GET_TIMEZONE_NAME behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_DATE_GET_TIMEZONE_NAME, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_DATE_GET_TIMEZONE_NAME"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_SET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_SET, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_SET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_SET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_SET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_SET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_INTERNAL_ARRAY_INDEX_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_INTERNAL_ARRAY_INDEX_OF, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_INTERNAL_ARRAY_INDEX_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_INTERNAL_ARRAY_INDEX_OF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_INTERNAL_ARRAY_INDEX_OF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_INTERNAL_ARRAY_INDEX_OF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_INTERNAL_LAST_INDEX_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_INTERNAL_LAST_INDEX_OF, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_INTERNAL_LAST_INDEX_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_INTERNAL_LAST_INDEX_OF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_INTERNAL_LAST_INDEX_OF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_INTERNAL_LAST_INDEX_OF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_FILL_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_FILL_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_FILL_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_FILL_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_FILL_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_FILL_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_SET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_SET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_SET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_SET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_SET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_SET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_UNSHIFT_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_UNSHIFT_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_UNSHIFT_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_UNSHIFT_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_UNSHIFT_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_UNSHIFT_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_REVERSE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_IS_PLATFORM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_IS_PLATFORM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_IS_PLATFORM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_IS_PLATFORM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_GET_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_GET_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_GET_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_GET_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MAP_SAME_VALUE_ZERO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MAP_SAME_VALUE_ZERO, arch.first, true))
        << "intrinsic INTRINSIC_STD_MAP_SAME_VALUE_ZERO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MAP_SAME_VALUE_ZERO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_WEAK_MAP_VALIDATE_KEY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_WEAK_MAP_VALIDATE_KEY, arch.first, true))
        << "intrinsic INTRINSIC_WEAK_MAP_VALIDATE_KEY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_WEAK_MAP_VALIDATE_KEY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_WEAK_MAP_VALIDATE_KEY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_WEAK_MAP_VALIDATE_KEY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_AT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_AT, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_AT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_BUFFER_AT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_AT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_AT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_ALLOCATE_NON_MOVABLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_ALLOCATE_NON_MOVABLE, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_ALLOCATE_NON_MOVABLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_BUFFER_ALLOCATE_NON_MOVABLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_ALLOCATE_NON_MOVABLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_ALLOCATE_NON_MOVABLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_GET_ADDRESS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_GET_ADDRESS, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_GET_ADDRESS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_BUFFER_GET_ADDRESS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_GET_ADDRESS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_GET_ADDRESS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_ENCODED_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_ENCODED_STRING, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_ENCODED_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_ENCODED_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_ENCODED_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_ENCODED_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_BUFFER_SLICE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_BUFFER_SLICE, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_BUFFER_SLICE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_BUFFER_SLICE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_BUFFER_SLICE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ARRAY_BUFFER_FROM_BUFFER_SLICE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_STRING_BYTES_LENGTH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_STRING_BYTES_LENGTH, arch.first, true))
        << "intrinsic INTRINSIC_ETS_STRING_BYTES_LENGTH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_STRING_BYTES_LENGTH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_STRING_BYTES_LENGTH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_STRING_BYTES_LENGTH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_TO_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_TO_STRING, arch.first, true))
        << "intrinsic INTRINSIC_ETS_ARRAY_BUFFER_TO_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_ARRAY_BUFFER_TO_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_TO_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_ARRAY_BUFFER_TO_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_REGISTER_WEAK_REF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_REGISTER_WEAK_REF, arch.first, true))
        << "intrinsic INTRINSIC_ETS_ARRAY_BUFFER_REGISTER_WEAK_REF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_ARRAY_BUFFER_REGISTER_WEAK_REF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_REGISTER_WEAK_REF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_ARRAY_BUFFER_REGISTER_WEAK_REF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_UNREGISTER_WEAK_REF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_UNREGISTER_WEAK_REF, arch.first, true))
        << "intrinsic INTRINSIC_ETS_ARRAY_BUFFER_UNREGISTER_WEAK_REF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_ARRAY_BUFFER_UNREGISTER_WEAK_REF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_ARRAY_BUFFER_UNREGISTER_WEAK_REF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_ARRAY_BUFFER_UNREGISTER_WEAK_REF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_SET_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_UNSIGNED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_UNSIGNED, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_UNSIGNED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_UNSIGNED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_UNSIGNED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_UNSIGNED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_SET_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_UNSIGNED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_UNSIGNED, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_UNSIGNED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_UNSIGNED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_UNSIGNED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_UNSIGNED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SET_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_SET_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SET_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SET_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_SET_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SET_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_CONTAINS_NA_N, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_CONTAINS_NA_N, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_CONTAINS_NA_N" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_CONTAINS_NA_N behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_CONTAINS_NA_N, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_CONTAINS_NA_N"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SET_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_SET_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SET_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_CONTAINS_NA_N, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_CONTAINS_NA_N, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_CONTAINS_NA_N" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_CONTAINS_NA_N behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_CONTAINS_NA_N, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_CONTAINS_NA_N"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_CLAMPED_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_CLAMPED_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_CLAMPED_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_SINGED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_SINGED, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_SINGED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_SINGED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_SINGED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_SINGED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_SIGNED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_SIGNED, arch.first, true))
        << "intrinsic INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_SIGNED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_SIGNED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_SIGNED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_SIGNED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT16_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_UINT16_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT16_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT16_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_UINT16_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT16_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT16_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_SET_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_SIGNED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_SIGNED, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_SIGNED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_SIGNED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_SIGNED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_SIGNED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT32_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT32_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_INT, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_SET_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_SET_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_GET, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_GET_UNSAFE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_GET_UNSAFE, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_GET_UNSAFE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_GET_UNSAFE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_GET_UNSAFE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_GET_UNSAFE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES_WITH_OFFSET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES_WITH_OFFSET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES_WITH_OFFSET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_SET_VALUES_WITH_OFFSET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_SET_VALUES_FROM_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_SET_VALUES_FROM_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_SET_VALUES_FROM_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_UINT64_ARRAY_SET_VALUES_FROM_ARRAY behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_FILL_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_FILL_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_FILL_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_FILL_INTERNAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_SORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_SORT, arch.first, true))
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_SORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_UINT64_ARRAY_SORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_SORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_SORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_UINT64_ARRAY_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_REVERSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_REVERSE, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_REVERSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_REVERSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_REVERSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_REVERSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRA_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRA_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRA_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRA_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRA_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRA_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_REVERSE_COPY_BUFFER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_REVERSE_COPY_BUFFER, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_REVERSE_COPY_BUFFER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_REVERSE_COPY_BUFFER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_REVERSE_COPY_BUFFER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_REVERSE_COPY_BUFFER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_COPY_WITHIN_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_COPY_WITHIN_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_COPY_WITHIN_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_COPY_WITHIN_IMPL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT16_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT32_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_U_INT64_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_U_INT8_CLAMPED_ARRAY_LAST_INDEX_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_OF_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_OF_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_OF_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_OF_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_OF_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_OF_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_OF_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_OF_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_BIG_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_BIG_INT, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_BIG_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_OF_BIG_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_BIG_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_BIG_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_INT64_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_INT64_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_INT64_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_OF_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_OF_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_OF_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT32_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT32_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT32_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_FLOAT64_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_FLOAT64_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_FLOAT64_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_CLAMPED_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_CLAMPED_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_OF_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_CLAMPED_ARRAY_OF_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_OF_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_OF_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_OF_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_OF_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_OF_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_ARRAY_OF_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_UINT16_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT16_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT16_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_UINT16_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT16_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT16_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_OF_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_OF_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT32_ARRAY_OF_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT32_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT32_ARRAY_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_INT, arch.first, true))
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_OF_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_UINT64_ARRAY_OF_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_OF_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_LONG, arch.first, true))
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_OF_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_UINT64_ARRAY_OF_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_OF_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_BIG_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_BIG_INT, arch.first, true))
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_OF_BIG_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_BIG_UINT64_ARRAY_OF_BIG_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_BIG_UINT64_ARRAY_OF_BIG_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_BIG_UINT64_ARRAY_OF_BIG_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_TO_UINT8_CLAMPED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_TO_UINT8_CLAMPED, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_TO_UINT8_CLAMPED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_CLAMPED_ARRAY_TO_UINT8_CLAMPED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_CLAMPED_ARRAY_TO_UINT8_CLAMPED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_CLAMPED_ARRAY_TO_UINT8_CLAMPED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_ID, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_GENERATE_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GET_TASK_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GET_TASK_ID, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_GET_TASK_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_GET_TASK_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GET_TASK_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_GET_TASK_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_SET_TASK_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_SET_TASK_ID, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_SET_TASK_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_SET_TASK_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_SET_TASK_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_SET_TASK_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_GROUP_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_GROUP_ID, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_GROUP_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_GENERATE_GROUP_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_GROUP_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_GROUP_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_IS_USING_LAUNCH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_IS_USING_LAUNCH, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_IS_USING_LAUNCH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_IS_USING_LAUNCH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_IS_USING_LAUNCH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_IS_USING_LAUNCH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_IS_SUPPORT_INTEROP, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_IS_SUPPORT_INTEROP, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_IS_SUPPORT_INTEROP" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_IS_SUPPORT_INTEROP behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_IS_SUPPORT_INTEROP, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_IS_SUPPORT_INTEROP"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_SEQUENCE_RUNNER_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_SEQUENCE_RUNNER_ID, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_SEQUENCE_RUNNER_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_GENERATE_SEQUENCE_RUNNER_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_SEQUENCE_RUNNER_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_SEQUENCE_RUNNER_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_ASYNC_RUNNER_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_ASYNC_RUNNER_ID, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_ASYNC_RUNNER_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_GENERATE_ASYNC_RUNNER_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GENERATE_ASYNC_RUNNER_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_GENERATE_ASYNC_RUNNER_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GET_TASK_POOL_WORKERS_LIMIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GET_TASK_POOL_WORKERS_LIMIT, arch.first, true))
        << "intrinsic INTRINSIC_TASKPOOL_GET_TASK_POOL_WORKERS_LIMIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TASKPOOL_GET_TASK_POOL_WORKERS_LIMIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TASKPOOL_GET_TASK_POOL_WORKERS_LIMIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TASKPOOL_GET_TASK_POOL_WORKERS_LIMIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_TIME_DATE_NANO_NOW, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TIME_DATE_NANO_NOW, arch.first, true))
        << "intrinsic INTRINSIC_STD_TIME_DATE_NANO_NOW" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_TIME_DATE_NANO_NOW behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TIME_DATE_NANO_NOW, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_TIME_DATE_NANO_NOW"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_TIME_CHRONO_GET_CPU_TIME, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TIME_CHRONO_GET_CPU_TIME, arch.first, true))
        << "intrinsic INTRINSIC_STD_TIME_CHRONO_GET_CPU_TIME" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_TIME_CHRONO_GET_CPU_TIME behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TIME_CHRONO_GET_CPU_TIME, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_TIME_CHRONO_GET_CPU_TIME"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_TO_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_TO_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_FLOAT_TO_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FLOAT_TO_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_TO_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FLOAT_TO_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_NAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_NAN, arch.first, true))
        << "intrinsic INTRINSIC_STD_FLOAT_IS_NAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FLOAT_IS_NAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_NAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FLOAT_IS_NAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_FINITE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_FINITE, arch.first, true))
        << "intrinsic INTRINSIC_STD_FLOAT_IS_FINITE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FLOAT_IS_FINITE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_FINITE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FLOAT_IS_FINITE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_BIT_CAST_FROM_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_BIT_CAST_FROM_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_FLOAT_BIT_CAST_FROM_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FLOAT_BIT_CAST_FROM_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_BIT_CAST_FROM_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FLOAT_BIT_CAST_FROM_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_BIT_CAST_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_BIT_CAST_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_FLOAT_BIT_CAST_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FLOAT_BIT_CAST_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_BIT_CAST_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FLOAT_BIT_CAST_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_INTEGER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_INTEGER, arch.first, true))
        << "intrinsic INTRINSIC_STD_FLOAT_IS_INTEGER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FLOAT_IS_INTEGER behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_SAFE_INTEGER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FLOAT_IS_SAFE_INTEGER, arch.first, true))
        << "intrinsic INTRINSIC_STD_FLOAT_IS_SAFE_INTEGER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FLOAT_IS_SAFE_INTEGER behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_FLOAT_TO_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_FLOAT_TO_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_FLOAT_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_FLOAT_TO_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_FLOAT_TO_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_TO_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_TO_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_TO_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_TO_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_DOUBLE_TO_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DOUBLE_TO_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_TO_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_DOUBLE_TO_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_PARSE_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_PARSE_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_PARSE_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_PARSE_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_PARSE_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_PARSE_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_PARSE_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_PARSE_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_PARSE_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_PARSE_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_PARSE_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_PARSE_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL_WITH_NO_DIGIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL_WITH_NO_DIGIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL_WITH_NO_DIGIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL_WITH_NO_DIGIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL_WITH_NO_DIGIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_EXPONENTIAL_WITH_NO_DIGIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_PRECISION, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_PRECISION, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_PRECISION" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_PRECISION behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_PRECISION, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_PRECISION"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_FIXED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_FIXED, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_FIXED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_FIXED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_FIXED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_FIXED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_NUMBER_FROM_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_NUMBER_FROM_STRING, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_NUMBER_FROM_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_NUMBER_FROM_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_NUMBER_FROM_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_NUMBER_FROM_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_NAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_NAN, arch.first, true))
        << "intrinsic INTRINSIC_STD_DOUBLE_IS_NAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DOUBLE_IS_NAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_NAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_DOUBLE_IS_NAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_FINITE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_FINITE, arch.first, true))
        << "intrinsic INTRINSIC_STD_DOUBLE_IS_FINITE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DOUBLE_IS_FINITE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_FINITE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_DOUBLE_IS_FINITE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_BIT_CAST_FROM_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_BIT_CAST_FROM_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_DOUBLE_BIT_CAST_FROM_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DOUBLE_BIT_CAST_FROM_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_BIT_CAST_FROM_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_DOUBLE_BIT_CAST_FROM_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_BIT_CAST_TO_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_BIT_CAST_TO_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_DOUBLE_BIT_CAST_TO_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DOUBLE_BIT_CAST_TO_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_BIT_CAST_TO_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_DOUBLE_BIT_CAST_TO_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_INTEGER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_INTEGER, arch.first, true))
        << "intrinsic INTRINSIC_STD_DOUBLE_IS_INTEGER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DOUBLE_IS_INTEGER behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_SAFE_INTEGER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DOUBLE_IS_SAFE_INTEGER, arch.first, true))
        << "intrinsic INTRINSIC_STD_DOUBLE_IS_SAFE_INTEGER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DOUBLE_IS_SAFE_INTEGER behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_DOUBLE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_DOUBLE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT32_ARRAY_DOUBLE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT32_ARRAY_DOUBLE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_INT32_ARRAY_DOUBLE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT32_ARRAY_DOUBLE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_DOUBLE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_DOUBLE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT16_ARRAY_DOUBLE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT16_ARRAY_DOUBLE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_INT16_ARRAY_DOUBLE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT16_ARRAY_DOUBLE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_DOUBLE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_DOUBLE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_INT8_ARRAY_DOUBLE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INT8_ARRAY_DOUBLE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_INT8_ARRAY_DOUBLE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INT8_ARRAY_DOUBLE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_DOUBLE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_DOUBLE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_UINT32_ARRAY_DOUBLE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT32_ARRAY_DOUBLE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_UINT32_ARRAY_DOUBLE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT32_ARRAY_DOUBLE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_DOUBLE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_DOUBLE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_UINT16_ARRAY_DOUBLE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT16_ARRAY_DOUBLE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UINT16_ARRAY_DOUBLE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT16_ARRAY_DOUBLE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_DOUBLE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_DOUBLE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_UINT8_ARRAY_DOUBLE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UINT8_ARRAY_DOUBLE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UINT8_ARRAY_DOUBLE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UINT8_ARRAY_DOUBLE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_TO_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_TO_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_TO_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT8, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_INT8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT16, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_INT16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT32, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_INT32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT64, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_INT64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_INT64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_INT64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT32, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT64, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_FLOAT64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_STRING, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_WRITE_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_WRITE_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_WRITE_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT8, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_INT8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT16, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_INT16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT32, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_INT32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT64, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_INT64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_INT64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_INT64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_FLOAT32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_FLOAT32, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_FLOAT32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_FLOAT32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_FLOAT32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_FLOAT32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_FLOAT64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_FLOAT64, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_FLOAT64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_FLOAT64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_FLOAT64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_FLOAT64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_NUMBER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_NUMBER, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_NUMBER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_NUMBER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_NUMBER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_NUMBER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_STRING, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_READ_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_READ_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_READ_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_GET_STRING_SIZE_IN_BYTES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_GET_STRING_SIZE_IN_BYTES, arch.first, true))
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_GET_STRING_SIZE_IN_BYTES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_UNSAFE_MEMORY_GET_STRING_SIZE_IN_BYTES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_UNSAFE_MEMORY_GET_STRING_SIZE_IN_BYTES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_UNSAFE_MEMORY_GET_STRING_SIZE_IN_BYTES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ALLOC_GENERIC_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ALLOC_GENERIC_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_ALLOC_GENERIC_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_ALLOC_GENERIC_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ALLOC_GENERIC_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_ALLOC_GENERIC_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BOOL_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BOOL_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BOOL_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BOOL_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_OBJECT_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_OBJECT_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_OBJECT_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_OBJECT_COPY_TO behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_OBJECT_COPY_TO, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_OBJECT_COPY_TO"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED_WITH_BARRIERS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED_WITH_BARRIERS, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED_WITH_BARRIERS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_OBJECT_FAST_COPY_TO_UNCHECKED_WITH_BARRIERS behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_FLOAT_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_FLOAT_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_FLOAT_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_COPY_TO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_DOUBLE_COPY_TO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_DOUBLE_COPY_TO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_DOUBLE_COPY_TO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_PRINT_STACK_TRACE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_PRINT_STACK_TRACE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_PRINT_STACK_TRACE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_PRINT_STACK_TRACE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_PRINT_STACK_TRACE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_PRINT_STACK_TRACE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STACK_TRACE_LINES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STACK_TRACE_LINES, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STACK_TRACE_LINES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STACK_TRACE_LINES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STACK_TRACE_LINES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STACK_TRACE_LINES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STACK_TRACE_PROVISION_STACK_TRACE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STACK_TRACE_PROVISION_STACK_TRACE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_STACK_TRACE_PROVISION_STACK_TRACE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_STACK_TRACE_PROVISION_STACK_TRACE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_STACK_TRACE_PROVISION_STACK_TRACE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_STACK_TRACE_PROVISION_STACK_TRACE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_EXIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_EXIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_EXIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_EXIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_EXIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_EXIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REGISTER_TIMER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REGISTER_TIMER, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REGISTER_TIMER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REGISTER_TIMER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REGISTER_TIMER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REGISTER_TIMER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLEAR_TIMER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLEAR_TIMER, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLEAR_TIMER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLEAR_TIMER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLEAR_TIMER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLEAR_TIMER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_START_GC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_START_GC, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_START_GC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_START_GC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_START_GC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_START_GC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_WAIT_FOR_FINISH_GC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_WAIT_FOR_FINISH_GC, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_WAIT_FOR_FINISH_GC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_WAIT_FOR_FINISH_GC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_WAIT_FOR_FINISH_GC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_WAIT_FOR_FINISH_GC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_SCHEDULE_GC_AFTER_NTH_ALLOC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_SCHEDULE_GC_AFTER_NTH_ALLOC, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_SCHEDULE_GC_AFTER_NTH_ALLOC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_SCHEDULE_GC_AFTER_NTH_ALLOC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_SCHEDULE_GC_AFTER_NTH_ALLOC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_SCHEDULE_GC_AFTER_NTH_ALLOC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_IS_SCHEDULED_GC_TRIGGERED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_IS_SCHEDULED_GC_TRIGGERED, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_IS_SCHEDULED_GC_TRIGGERED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_IS_SCHEDULED_GC_TRIGGERED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_IS_SCHEDULED_GC_TRIGGERED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_IS_SCHEDULED_GC_TRIGGERED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_POSTPONE_GC_START, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_POSTPONE_GC_START, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_POSTPONE_GC_START" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_POSTPONE_GC_START behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_POSTPONE_GC_START, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_POSTPONE_GC_START"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_POSTPONE_GC_END, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_POSTPONE_GC_END, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_POSTPONE_GC_END" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_POSTPONE_GC_END behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_POSTPONE_GC_END, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_POSTPONE_GC_END"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_BOOLEAN_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_BOOLEAN_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_BOOLEAN_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_BOOLEAN_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_BOOLEAN_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_BOOLEAN_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_BYTE_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_BYTE_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_BYTE_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_BYTE_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_BYTE_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_BYTE_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_CHAR_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_CHAR_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_CHAR_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_CHAR_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_CHAR_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_CHAR_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_SHORT_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_SHORT_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_SHORT_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_SHORT_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_SHORT_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_SHORT_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_INT_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_INT_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_INT_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_INT_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_INT_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_INT_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_LONG_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_LONG_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_LONG_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_LONG_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_LONG_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_LONG_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_FLOAT_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_FLOAT_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_FLOAT_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_FLOAT_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_FLOAT_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_FLOAT_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_DOUBLE_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_DOUBLE_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_DOUBLE_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_ALLOCATE_PINNED_DOUBLE_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_ALLOCATE_PINNED_DOUBLE_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_ALLOCATE_PINNED_DOUBLE_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_GET_OBJECT_SPACE_TYPE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_GET_OBJECT_SPACE_TYPE, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_GET_OBJECT_SPACE_TYPE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_GET_OBJECT_SPACE_TYPE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_GET_OBJECT_SPACE_TYPE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_GET_OBJECT_SPACE_TYPE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_GET_OBJECT_ADDRESS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_GET_OBJECT_ADDRESS, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_GET_OBJECT_ADDRESS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_GET_OBJECT_ADDRESS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_GET_OBJECT_ADDRESS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_GET_OBJECT_ADDRESS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_OBJECT_SIZE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_OBJECT_SIZE, arch.first, true))
        << "intrinsic INTRINSIC_STD_GET_OBJECT_SIZE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GET_OBJECT_SIZE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_OBJECT_SIZE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GET_OBJECT_SIZE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_PIN_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_PIN_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_PIN_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_PIN_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_PIN_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_PIN_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_UNPIN_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_UNPIN_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_UNPIN_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_UNPIN_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_UNPIN_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_UNPIN_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_FREE_HEAP_SIZE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_FREE_HEAP_SIZE, arch.first, true))
        << "intrinsic INTRINSIC_STD_GET_FREE_HEAP_SIZE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GET_FREE_HEAP_SIZE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_FREE_HEAP_SIZE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GET_FREE_HEAP_SIZE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_USED_HEAP_SIZE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_USED_HEAP_SIZE, arch.first, true))
        << "intrinsic INTRINSIC_STD_GET_USED_HEAP_SIZE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GET_USED_HEAP_SIZE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_USED_HEAP_SIZE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GET_USED_HEAP_SIZE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_RESERVED_HEAP_SIZE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_RESERVED_HEAP_SIZE, arch.first, true))
        << "intrinsic INTRINSIC_STD_GET_RESERVED_HEAP_SIZE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GET_RESERVED_HEAP_SIZE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GET_RESERVED_HEAP_SIZE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GET_RESERVED_HEAP_SIZE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_REGISTER_NATIVE_ALLOCATION, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_REGISTER_NATIVE_ALLOCATION, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_REGISTER_NATIVE_ALLOCATION" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_REGISTER_NATIVE_ALLOCATION behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_REGISTER_NATIVE_ALLOCATION, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_REGISTER_NATIVE_ALLOCATION"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_REGISTER_NATIVE_FREE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_REGISTER_NATIVE_FREE, arch.first, true))
        << "intrinsic INTRINSIC_STD_GC_REGISTER_NATIVE_FREE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_GC_REGISTER_NATIVE_FREE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_GC_REGISTER_NATIVE_FREE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_GC_REGISTER_NATIVE_FREE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_ID, arch.first, true))
        << "intrinsic INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_DOMAIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_DOMAIN, arch.first, true))
        << "intrinsic INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_DOMAIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_DOMAIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_DOMAIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FINALIZATION_REGISTRY_GET_WORKER_DOMAIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_FINISH_CLEANUP, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_FINISH_CLEANUP, arch.first, true))
        << "intrinsic INTRINSIC_STD_FINALIZATION_REGISTRY_FINISH_CLEANUP" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_FINALIZATION_REGISTRY_FINISH_CLEANUP behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_FINALIZATION_REGISTRY_FINISH_CLEANUP, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_FINALIZATION_REGISTRY_FINISH_CLEANUP"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_AWAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_AWAIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_JOB_AWAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_JOB_AWAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_AWAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_JOB_AWAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_FINISH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_FINISH, arch.first, true))
        << "intrinsic INTRINSIC_STD_JOB_FINISH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_JOB_FINISH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_FINISH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_JOB_FINISH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_FAIL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_FAIL, arch.first, true))
        << "intrinsic INTRINSIC_STD_JOB_FAIL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_JOB_FAIL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_JOB_FAIL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_JOB_FAIL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_RESOLVE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_RESOLVE, arch.first, true))
        << "intrinsic INTRINSIC_STD_PROMISE_RESOLVE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_PROMISE_RESOLVE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_RESOLVE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_PROMISE_RESOLVE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_REJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_REJECT, arch.first, true))
        << "intrinsic INTRINSIC_STD_PROMISE_REJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_PROMISE_REJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_REJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_PROMISE_REJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_SUBMIT_CALLBACK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_SUBMIT_CALLBACK, arch.first, true))
        << "intrinsic INTRINSIC_STD_PROMISE_SUBMIT_CALLBACK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_PROMISE_SUBMIT_CALLBACK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_SUBMIT_CALLBACK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_PROMISE_SUBMIT_CALLBACK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_AWAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_AWAIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_PROMISE_AWAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_PROMISE_AWAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_PROMISE_AWAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_PROMISE_AWAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SCHEDULE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SCHEDULE, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_SCHEDULE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_SCHEDULE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SCHEDULE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_SCHEDULE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MUTEX_LOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MUTEX_LOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_MUTEX_LOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MUTEX_LOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MUTEX_LOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MUTEX_LOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_MUTEX_UNLOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MUTEX_UNLOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_MUTEX_UNLOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_MUTEX_UNLOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_MUTEX_UNLOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_MUTEX_UNLOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_EVENT_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_EVENT_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_EVENT_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_EVENT_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_EVENT_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_EVENT_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_EVENT_FIRE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_EVENT_FIRE, arch.first, true))
        << "intrinsic INTRINSIC_STD_EVENT_FIRE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_EVENT_FIRE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_EVENT_FIRE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_EVENT_FIRE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_COND_VAR_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COND_VAR_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COND_VAR_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_NOTFIY_ONE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_NOTFIY_ONE, arch.first, true))
        << "intrinsic INTRINSIC_STD_COND_VAR_NOTFIY_ONE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COND_VAR_NOTFIY_ONE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_NOTFIY_ONE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COND_VAR_NOTFIY_ONE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_NOTIFY_ALL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_NOTIFY_ALL, arch.first, true))
        << "intrinsic INTRINSIC_STD_COND_VAR_NOTIFY_ALL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COND_VAR_NOTIFY_ALL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COND_VAR_NOTIFY_ALL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COND_VAR_NOTIFY_ALL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_QUEUE_SPINLOCK_GUARD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_QUEUE_SPINLOCK_GUARD, arch.first, true))
        << "intrinsic INTRINSIC_STD_QUEUE_SPINLOCK_GUARD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_QUEUE_SPINLOCK_GUARD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_QUEUE_SPINLOCK_GUARD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_QUEUE_SPINLOCK_GUARD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_READ_LOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_READ_LOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_READ_LOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_READ_LOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_READ_LOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_READ_LOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_READ_UNLOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_READ_UNLOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_READ_UNLOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_READ_UNLOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_READ_UNLOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_READ_UNLOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_WRITE_LOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_WRITE_LOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_WRITE_LOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_WRITE_LOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_WRITE_LOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_WRITE_LOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_WRITE_UNLOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_WRITE_UNLOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_WRITE_UNLOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_WRITE_UNLOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_WRITE_UNLOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_WRITE_UNLOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFERR_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFERR_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFERR_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFERR_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFERR_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFERR_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_OR_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_OR_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_OR_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_OR_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U8, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_OR_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U16, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_OR_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U32, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_ADD_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_ADD_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_ADD_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_AND_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_AND_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_AND_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_COMPARE_EXCHANGE_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_EXCHANGE_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_EXCHANGE_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_EXCHANGE_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_LOAD_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_LOAD_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_LOAD_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_OR_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_OR_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_OR_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_STORE_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_STORE_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_STORE_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_SUB_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_SUB_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_SUB_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U64, arch.first, true))
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ARRAY_BUFFER_XOR_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_ARRAY_BUFFER_XOR_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ARRAY_BUFFER_XOR_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_WORKER_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_WORKER_ID, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_WORKER_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_GET_WORKER_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_WORKER_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_WORKER_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_TASK_POOL_IS_SUPPORTING_INTEROP, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TASK_POOL_IS_SUPPORTING_INTEROP, arch.first, true))
        << "intrinsic INTRINSIC_STD_TASK_POOL_IS_SUPPORTING_INTEROP" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_TASK_POOL_IS_SUPPORTING_INTEROP behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TASK_POOL_IS_SUPPORTING_INTEROP, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_TASK_POOL_IS_SUPPORTING_INTEROP"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_TASK_POOL_IS_USING_LAUNCH_MODE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TASK_POOL_IS_USING_LAUNCH_MODE, arch.first, true))
        << "intrinsic INTRINSIC_STD_TASK_POOL_IS_USING_LAUNCH_MODE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_TASK_POOL_IS_USING_LAUNCH_MODE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_TASK_POOL_IS_USING_LAUNCH_MODE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_TASK_POOL_IS_USING_LAUNCH_MODE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_SCHEDULING_POLICY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_SCHEDULING_POLICY, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_SCHEDULING_POLICY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_SET_SCHEDULING_POLICY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_SCHEDULING_POLICY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_SCHEDULING_POLICY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_COROUTINE_ID, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_COROUTINE_ID, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_COROUTINE_ID" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_GET_COROUTINE_ID behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_COROUTINE_ID, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_COROUTINE_ID"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_IS_MAIN_WORKER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_IS_MAIN_WORKER, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_IS_MAIN_WORKER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_IS_MAIN_WORKER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_IS_MAIN_WORKER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_IS_MAIN_WORKER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_WORKER_HAS_EXTERNAL_SCHEDULER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_WORKER_HAS_EXTERNAL_SCHEDULER, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_WORKER_HAS_EXTERNAL_SCHEDULER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_WORKER_HAS_EXTERNAL_SCHEDULER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_WORKER_HAS_EXTERNAL_SCHEDULER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_WORKER_HAS_EXTERNAL_SCHEDULER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SCALE_WORKERS_POOL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SCALE_WORKERS_POOL, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_SCALE_WORKERS_POOL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_SCALE_WORKERS_POOL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SCALE_WORKERS_POOL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_SCALE_WORKERS_POOL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_STOP_TASKPOOL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_STOP_TASKPOOL, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_STOP_TASKPOOL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_STOP_TASKPOOL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_STOP_TASKPOOL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_STOP_TASKPOOL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_INCREASE_TASKPOOL_WORKERS_TO_N, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_INCREASE_TASKPOOL_WORKERS_TO_N, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_INCREASE_TASKPOOL_WORKERS_TO_N" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_INCREASE_TASKPOOL_WORKERS_TO_N behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_INCREASE_TASKPOOL_WORKERS_TO_N, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_INCREASE_TASKPOOL_WORKERS_TO_N"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_TRIGGER_SHRINK_INTERVAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_TRIGGER_SHRINK_INTERVAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_TASK_POOL_TRIGGER_SHRINK_INTERVAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_SET_TASK_POOL_TRIGGER_SHRINK_INTERVAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_TRIGGER_SHRINK_INTERVAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_TASK_POOL_TRIGGER_SHRINK_INTERVAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_IDLE_THRESHOLD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_IDLE_THRESHOLD, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_TASK_POOL_IDLE_THRESHOLD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_SET_TASK_POOL_IDLE_THRESHOLD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_IDLE_THRESHOLD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_TASK_POOL_IDLE_THRESHOLD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_NUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_NUM, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_NUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_NUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_NUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_NUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_WORKERS_LIMIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_WORKERS_LIMIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_TASK_POOL_WORKERS_LIMIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_SET_TASK_POOL_WORKERS_LIMIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_SET_TASK_POOL_WORKERS_LIMIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_SET_TASK_POOL_WORKERS_LIMIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_RETRIGGER_TASK_POOL_SHRINK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_RETRIGGER_TASK_POOL_SHRINK, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_RETRIGGER_TASK_POOL_SHRINK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_RETRIGGER_TASK_POOL_SHRINK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_RETRIGGER_TASK_POOL_SHRINK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_RETRIGGER_TASK_POOL_SHRINK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_LIMIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_LIMIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_LIMIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_LIMIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_LIMIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_GET_TASK_POOL_WORKERS_LIMIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_IS_EXTERNAL_TIMER_ENABLED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_IS_EXTERNAL_TIMER_ENABLED, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_IS_EXTERNAL_TIMER_ENABLED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_IS_EXTERNAL_TIMER_ENABLED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_IS_EXTERNAL_TIMER_ENABLED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_IS_EXTERNAL_TIMER_ENABLED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_DUMP_UNHANDLED_FAILED_JOBS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_DUMP_UNHANDLED_FAILED_JOBS, arch.first, true))
        << "intrinsic INTRINSIC_STD_COROUTINE_DUMP_UNHANDLED_FAILED_JOBS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_COROUTINE_DUMP_UNHANDLED_FAILED_JOBS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_COROUTINE_DUMP_UNHANDLED_FAILED_JOBS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_COROUTINE_DUMP_UNHANDLED_FAILED_JOBS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_ATOMIC_FLAG_SET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_ATOMIC_FLAG_SET, arch.first, true))
        << "intrinsic INTRINSIC_STD_ATOMIC_FLAG_SET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_ATOMIC_FLAG_SET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_ATOMIC_FLAG_SET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_ATOMIC_FLAG_SET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_ATOMIC_FLAG_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_ATOMIC_FLAG_GET, arch.first, true))
        << "intrinsic INTRINSIC_STD_ATOMIC_FLAG_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_ATOMIC_FLAG_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_ATOMIC_FLAG_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_ATOMIC_FLAG_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_IS_LITTLE_ENDIAN_PLATFORM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_IS_LITTLE_ENDIAN_PLATFORM, arch.first, true))
        << "intrinsic INTRINSIC_STD_IS_LITTLE_ENDIAN_PLATFORM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_IS_LITTLE_ENDIAN_PLATFORM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_IS_LITTLE_ENDIAN_PLATFORM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_IS_LITTLE_ENDIAN_PLATFORM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_IS_SAME_REFERENCE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_IS_SAME_REFERENCE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_IS_SAME_REFERENCE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_RUNTIME_IS_SAME_REFERENCE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_IS_SAME_REFERENCE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_IS_SAME_REFERENCE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_RUNTIME_GET_HASH_CODE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_RUNTIME_GET_HASH_CODE, arch.first, true))
        << "intrinsic INTRINSIC_STD_RUNTIME_GET_HASH_CODE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_RUNTIME_GET_HASH_CODE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_RUNTIME_GET_HASH_CODE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_RUNTIME_GET_HASH_CODE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_RUNTIME_GET_HASH_CODE_BY_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_RUNTIME_GET_HASH_CODE_BY_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_STD_RUNTIME_GET_HASH_CODE_BY_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_RUNTIME_GET_HASH_CODE_BY_VALUE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_EXCL_UNDEFINED_STUB, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_EXCL_UNDEFINED_STUB, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_EXCL_UNDEFINED_STUB" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_EXCL_UNDEFINED_STUB behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_EXCL_UNDEFINED_STUB, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_EXCL_UNDEFINED_STUB"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_INCL_UNDEFINED_STUB, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_INCL_UNDEFINED_STUB, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_INCL_UNDEFINED_STUB" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_INCL_UNDEFINED_STUB behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_INCL_UNDEFINED_STUB, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_FAILED_TYPE_CAST_INCL_UNDEFINED_STUB"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_GET_TYPE_INFO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_GET_TYPE_INFO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_GET_TYPE_INFO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_RUNTIME_GET_TYPE_INFO behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_GET_TYPE_INFO, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_GET_TYPE_INFO"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_ALLOC_SAME_TYPE_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_ALLOC_SAME_TYPE_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_ALLOC_SAME_TYPE_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_RUNTIME_ALLOC_SAME_TYPE_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_ALLOC_SAME_TYPE_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_ALLOC_SAME_TYPE_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_RETURN_TYPE_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_RETURN_TYPE_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_RETURN_TYPE_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_METHOD_GET_RETURN_TYPE_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_RETURN_TYPE_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_RETURN_TYPE_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETER_TYPE_BY_IDX_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETER_TYPE_BY_IDX_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETER_TYPE_BY_IDX_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETER_TYPE_BY_IDX_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETER_TYPE_BY_IDX_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETER_TYPE_BY_IDX_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_TYPES_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_TYPES_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_TYPES_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_TYPES_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_TYPES_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_TYPES_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_NUM_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_NUM_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_NUM_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_NUM_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_NUM_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_PARAMETERS_NUM_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_NAME_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_NAME_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_NAME_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_METHOD_GET_NAME_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_GET_NAME_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_GET_NAME_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_INVOKE_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_INVOKE_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_INVOKE_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_METHOD_INVOKE_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_INVOKE_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_INVOKE_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_CREATE_INSTANCE_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_CREATE_INSTANCE_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_CREATE_INSTANCE_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_METHOD_CREATE_INSTANCE_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_METHOD_CREATE_INSTANCE_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_METHOD_CREATE_INSTANCE_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_NAME_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_NAME_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_GET_NAME_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_FIELD_GET_NAME_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_NAME_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_GET_NAME_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_TYPE_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_TYPE_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_GET_TYPE_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_FIELD_GET_TYPE_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_TYPE_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_GET_TYPE_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_SET_VALUE_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_SET_VALUE_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_SET_VALUE_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_FIELD_SET_VALUE_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_SET_VALUE_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_SET_VALUE_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_VALUE_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_VALUE_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_GET_VALUE_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_FIELD_GET_VALUE_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_FIELD_GET_VALUE_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_FIELD_GET_VALUE_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_INTERNALS_CREATE_FIXED_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_INTERNALS_CREATE_FIXED_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_INTERNALS_CREATE_FIXED_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_INTERNALS_CREATE_FIXED_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_INTERNALS_CREATE_FIXED_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_INTERNALS_CREATE_FIXED_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_NAME_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_NAME_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_NAME_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_NAME_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_NAME_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_NAME_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_LINKER_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_LINKER_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_LINKER_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_LINKER_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_LINKER_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_LINKER_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_NAMESPACE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_NAMESPACE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_NAMESPACE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_NAMESPACE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_NAMESPACE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_NAMESPACE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_FIXED_ARRAY_COMPONENT_TYPE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_FIXED_ARRAY_COMPONENT_TYPE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_FIXED_ARRAY_COMPONENT_TYPE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_FIXED_ARRAY_COMPONENT_TYPE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_FIXED_ARRAY_COMPONENT_TYPE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_FIXED_ARRAY_COMPONENT_TYPE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_OF, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_OF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_OF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_OF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_CURRENT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_CURRENT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_CURRENT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_CURRENT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_CURRENT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_CURRENT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_OF_CALLER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_OF_CALLER, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_OF_CALLER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_OF_CALLER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_OF_CALLER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_OF_CALLER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_INITIALIZE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_INITIALIZE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_INITIALIZE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_INITIALIZE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_INITIALIZE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_INITIALIZE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_CREATE_INSTANCE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_CREATE_INSTANCE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_CREATE_INSTANCE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_CREATE_INSTANCE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_CREATE_INSTANCE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_CREATE_INSTANCE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_METHODS_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_METHODS_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_METHODS_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_METHODS_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_METHODS_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_METHODS_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELD_BY_NAME_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELD_BY_NAME_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELD_BY_NAME_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELD_BY_NAME_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELD_BY_NAME_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELD_BY_NAME_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELD_BY_NAME_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELD_BY_NAME_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELD_BY_NAME_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELD_BY_NAME_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELD_BY_NAME_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELD_BY_NAME_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_METHODS_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_METHODS_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_STATIC_METHODS_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_STATIC_METHODS_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_METHODS_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_STATIC_METHODS_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_CONSTRUCTORS_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_CONSTRUCTORS_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_CONSTRUCTORS_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_CONSTRUCTORS_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_CONSTRUCTORS_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_CONSTRUCTORS_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELDS_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELDS_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELDS_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELDS_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELDS_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INSTANCE_FIELDS_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELDS_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELDS_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELDS_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELDS_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELDS_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_STATIC_FIELDS_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INTERFACES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INTERFACES, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INTERFACES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_INTERFACES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_INTERFACES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_INTERFACES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_ENUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_ENUM, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_ENUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_ENUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_ENUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_ENUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_INTERFACE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_INTERFACE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_INTERFACE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_INTERFACE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_INTERFACE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_INTERFACE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_FIXED_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_FIXED_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_FIXED_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_FIXED_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_FIXED_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_FIXED_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_SUBTYPE_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_SUBTYPE_OF, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_SUBTYPE_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_SUBTYPE_OF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_SUBTYPE_OF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_SUBTYPE_OF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_UNION, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_UNION, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_UNION" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_UNION behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_UNION, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_UNION"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_UNION_CONSTITUENT_TYPES_INTERNAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_UNION_CONSTITUENT_TYPES_INTERNAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_UNION_CONSTITUENT_TYPES_INTERNAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_GET_UNION_CONSTITUENT_TYPES_INTERNAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_GET_UNION_CONSTITUENT_TYPES_INTERNAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_GET_UNION_CONSTITUENT_TYPES_INTERNAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_FINAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_FINAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_FINAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_FINAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_FINAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_FINAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_ABSTRACT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_ABSTRACT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_ABSTRACT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_ABSTRACT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_ABSTRACT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_ABSTRACT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_PRIMITIVE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_PRIMITIVE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_PRIMITIVE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CLASS_IS_PRIMITIVE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CLASS_IS_PRIMITIVE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CLASS_IS_PRIMITIVE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_LINKER_FIND_LOADED_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_LINKER_FIND_LOADED_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_LINKER_FIND_LOADED_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_RUNTIME_LINKER_FIND_LOADED_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_LINKER_FIND_LOADED_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_LINKER_FIND_LOADED_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_LINKER_INITIALIZE_CONTEXT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_LINKER_INITIALIZE_CONTEXT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_LINKER_INITIALIZE_CONTEXT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_RUNTIME_LINKER_INITIALIZE_CONTEXT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_RUNTIME_LINKER_INITIALIZE_CONTEXT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_RUNTIME_LINKER_INITIALIZE_CONTEXT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BOOT_RUNTIME_LINKER_FIND_AND_LOAD_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BOOT_RUNTIME_LINKER_FIND_AND_LOAD_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BOOT_RUNTIME_LINKER_FIND_AND_LOAD_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BOOT_RUNTIME_LINKER_FIND_AND_LOAD_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BOOT_RUNTIME_LINKER_FIND_AND_LOAD_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BOOT_RUNTIME_LINKER_FIND_AND_LOAD_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_GET_NEAREST_NON_BOOT_RUNTIME_LINKER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_GET_NEAREST_NON_BOOT_RUNTIME_LINKER, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_GET_NEAREST_NON_BOOT_RUNTIME_LINKER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_GET_NEAREST_NON_BOOT_RUNTIME_LINKER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_GET_NEAREST_NON_BOOT_RUNTIME_LINKER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_GET_NEAREST_NON_BOOT_RUNTIME_LINKER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_ABC_FILE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_ABC_FILE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_LOAD_ABC_FILE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_ABC_FILE_LOAD_ABC_FILE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_ABC_FILE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_LOAD_ABC_FILE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_FROM_MEMORY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_FROM_MEMORY, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_LOAD_FROM_MEMORY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_ABC_FILE_LOAD_FROM_MEMORY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_FROM_MEMORY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_LOAD_FROM_MEMORY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_LOAD_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_ABC_FILE_LOAD_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_LOAD_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_LOAD_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_GET_FILENAME, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_GET_FILENAME, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_GET_FILENAME" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_ABC_FILE_GET_FILENAME behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_FILE_GET_FILENAME, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_ABC_FILE_GET_FILENAME"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_LOAD_CLASS_FROM_ABC_FILES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_LOAD_CLASS_FROM_ABC_FILES, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_LOAD_CLASS_FROM_ABC_FILES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_LOAD_CLASS_FROM_ABC_FILES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_LOAD_CLASS_FROM_ABC_FILES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_LOAD_CLASS_FROM_ABC_FILES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_ADD_NEW_ABC_FILES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_ADD_NEW_ABC_FILES, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_ADD_NEW_ABC_FILES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_ADD_NEW_ABC_FILES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_ADD_NEW_ABC_FILES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_ABC_RUNTIME_LINKER_ADD_NEW_ABC_FILES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REG_EXP_PARSE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REG_EXP_PARSE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REG_EXP_PARSE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REG_EXP_PARSE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REG_EXP_PARSE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REG_EXP_PARSE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_TYPE_KIND, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_TYPE_KIND, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_TYPE_KIND" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_TYPE_KIND behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_TYPE_KIND, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_TYPE_KIND"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_IS_VALUE_TYPE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_IS_VALUE_TYPE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_IS_VALUE_TYPE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_IS_VALUE_TYPE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_IS_VALUE_TYPE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_IS_VALUE_TYPE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_NULL_TYPE_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_NULL_TYPE_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_NULL_TYPE_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_NULL_TYPE_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_NULL_TYPE_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_NULL_TYPE_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_UNDEFINED_TYPE_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_UNDEFINED_TYPE_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_UNDEFINED_TYPE_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_UNDEFINED_TYPE_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_UNDEFINED_TYPE_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_UNDEFINED_TYPE_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CLASS_ATTRIBUTES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CLASS_ATTRIBUTES, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_CLASS_ATTRIBUTES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_CLASS_ATTRIBUTES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CLASS_ATTRIBUTES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_CLASS_ATTRIBUTES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELDS_NUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELDS_NUM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELDS_NUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FIELDS_NUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELDS_NUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELDS_NUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_OWN_FIELDS_NUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_OWN_FIELDS_NUM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_OWN_FIELDS_NUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_OWN_FIELDS_NUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_OWN_FIELDS_NUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_OWN_FIELDS_NUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_PTR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_PTR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_PTR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FIELD_PTR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_PTR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_PTR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_OWN_FIELD_PTR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_OWN_FIELD_PTR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_OWN_FIELD_PTR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_OWN_FIELD_PTR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_OWN_FIELD_PTR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_OWN_FIELD_PTR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_PTR_BY_NAME, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_PTR_BY_NAME, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_PTR_BY_NAME" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FIELD_PTR_BY_NAME behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_PTR_BY_NAME, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_PTR_BY_NAME"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FIELD_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_OWNER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_OWNER, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_OWNER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FIELD_OWNER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD_OWNER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD_OWNER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FIELD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FIELD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FIELD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHODS_NUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHODS_NUM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_METHODS_NUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_METHODS_NUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHODS_NUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_METHODS_NUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHOD_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHOD_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_METHOD_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_METHOD_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHOD_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_METHOD_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHOD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHOD, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_METHOD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_METHOD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_METHOD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_METHOD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CONSTRUCTORS_NUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CONSTRUCTORS_NUM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_CONSTRUCTORS_NUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_CONSTRUCTORS_NUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CONSTRUCTORS_NUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_CONSTRUCTORS_NUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CONSTRUCTOR_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CONSTRUCTOR_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_CONSTRUCTOR_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_CONSTRUCTOR_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_CONSTRUCTOR_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_CONSTRUCTOR_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_ARRAY_ELEMENT_TYPE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_ARRAY_ELEMENT_TYPE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_ARRAY_ELEMENT_TYPE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_ARRAY_ELEMENT_TYPE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_ARRAY_ELEMENT_TYPE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_ARRAY_ELEMENT_TYPE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_MAKE_ARRAY_INSTANCE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_MAKE_ARRAY_INSTANCE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_MAKE_ARRAY_INSTANCE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_MAKE_ARRAY_INSTANCE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_MAKE_ARRAY_INSTANCE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_MAKE_ARRAY_INSTANCE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_INTERFACES_NUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_INTERFACES_NUM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_INTERFACES_NUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_INTERFACES_NUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_INTERFACES_NUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_INTERFACES_NUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_INTERFACE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_INTERFACE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_INTERFACE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_INTERFACE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_INTERFACE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_INTERFACE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_IS_INHERITED_FROM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_IS_INHERITED_FROM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_IS_INHERITED_FROM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_IS_INHERITED_FROM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_IS_INHERITED_FROM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_IS_INHERITED_FROM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FUNCTION_ATTRIBUTES, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FUNCTION_ATTRIBUTES, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FUNCTION_ATTRIBUTES" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FUNCTION_ATTRIBUTES behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FUNCTION_ATTRIBUTES, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FUNCTION_ATTRIBUTES"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_DECLARING_CLASS_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_DECLARING_CLASS_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_DECLARING_CLASS_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_DECLARING_CLASS_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_DECLARING_CLASS_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_DECLARING_CLASS_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_STATIC_FIELD_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_STATIC_FIELD_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_STATIC_FIELD_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_STATIC_FIELD_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_STATIC_FIELD_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_STATIC_FIELD_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_SET_STATIC_FIELD_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_SET_STATIC_FIELD_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_SET_STATIC_FIELD_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_SET_STATIC_FIELD_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_SET_STATIC_FIELD_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_SET_STATIC_FIELD_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_METHOD_INVOKE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_METHOD_INVOKE, arch.first, true))
        << "intrinsic INTRINSIC_STD_METHOD_INVOKE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_METHOD_INVOKE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_METHOD_INVOKE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_METHOD_INVOKE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_METHOD_INVOKE_CONSTRUCTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_METHOD_INVOKE_CONSTRUCTOR, arch.first, true))
        << "intrinsic INTRINSIC_STD_METHOD_INVOKE_CONSTRUCTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_METHOD_INVOKE_CONSTRUCTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_METHOD_INVOKE_CONSTRUCTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_METHOD_INVOKE_CONSTRUCTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FUNCTION_OBJECT_NAME_FROM_ANNOTATION, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FUNCTION_OBJECT_NAME_FROM_ANNOTATION, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_FUNCTION_OBJECT_NAME_FROM_ANNOTATION" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_FUNCTION_OBJECT_NAME_FROM_ANNOTATION behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_FUNCTION_OBJECT_NAME_FROM_ANNOTATION, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_FUNCTION_OBJECT_NAME_FROM_ANNOTATION"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETERS_NUM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETERS_NUM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_PARAMETERS_NUM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_PARAMETERS_NUM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETERS_NUM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_PARAMETERS_NUM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_RESULT_TYPE_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_RESULT_TYPE_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_RESULT_TYPE_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_RESULT_TYPE_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_RESULT_TYPE_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_RESULT_TYPE_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETER_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETER_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_PARAMETER_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_PARAMETER_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETER_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_PARAMETER_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETER, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_PARAMETER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_PARAMETER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_PARAMETER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_PARAMETER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_RECEIVER_TYPE_DESCRIPTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_RECEIVER_TYPE_DESCRIPTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_GET_RECEIVER_TYPE_DESCRIPTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_GET_RECEIVER_TYPE_DESCRIPTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_GET_RECEIVER_TYPE_DESCRIPTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_GET_RECEIVER_TYPE_DESCRIPTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_UPPER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_UPPER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_IS_UPPER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_IS_UPPER_CASE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_UPPER_CASE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_IS_UPPER_CASE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_UPPER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_UPPER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_UPPER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_UPPER_CASE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_UPPER_CASE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_UPPER_CASE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_LOWER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_LOWER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_IS_LOWER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_IS_LOWER_CASE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_LOWER_CASE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_IS_LOWER_CASE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_LOWER_CASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_LOWER_CASE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_LOWER_CASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_TO_LOWER_CASE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_TO_LOWER_CASE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CHAR_TO_LOWER_CASE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_WHITE_SPACE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CHAR_IS_WHITE_SPACE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CHAR_IS_WHITE_SPACE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CHAR_IS_WHITE_SPACE behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_INT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_LONG, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_INT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_LONG, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_FIELD_BY_NAME_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_INT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_LONG, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_INT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_LONG, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_FIELD_BY_NAME_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ARRAY_LENGTH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ARRAY_LENGTH, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ARRAY_LENGTH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ARRAY_LENGTH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ARRAY_LENGTH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ARRAY_LENGTH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_INT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_LONG, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_SET_ELEMENT_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_SET_ELEMENT_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_SET_ELEMENT_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_INT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_LONG, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_VALUE_API_GET_ELEMENT_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_VALUE_API_GET_ELEMENT_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_VALUE_API_GET_ELEMENT_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_DESTROY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_DESTROY, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_DESTROY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_DESTROY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_DESTROY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_DESTROY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_COMMIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_COMMIT, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_COMMIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_COMMIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_COMMIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_COMMIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_ERROR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_ERROR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_ERROR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_ERROR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_ERROR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_ERROR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_OBJECTS_ARRAY_FOR_C_CTOR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_OBJECTS_ARRAY_FOR_C_CTOR, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_OBJECTS_ARRAY_FOR_C_CTOR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_OBJECTS_ARRAY_FOR_C_CTOR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_OBJECTS_ARRAY_FOR_C_CTOR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_OBJECTS_ARRAY_FOR_C_CTOR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_TYPE_DESC_FROM_POINTER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_TYPE_DESC_FROM_POINTER, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_TYPE_DESC_FROM_POINTER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_TYPE_DESC_FROM_POINTER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_TYPE_DESC_FROM_POINTER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_GET_TYPE_DESC_FROM_POINTER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_SET_BASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_SET_BASE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_SET_BASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_SET_BASE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_SET_BASE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_SET_BASE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_IFACE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_IFACE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_IFACE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_IFACE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_IFACE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_IFACE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_FIELD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_FIELD, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_FIELD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_FIELD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_FIELD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_CLASS_ADD_FIELD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_ADD_BASE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_ADD_BASE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_ADD_BASE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_ADD_BASE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_ADD_BASE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_INTERFACE_ADD_BASE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_ACCESS_MOD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_ACCESS_MOD, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_ACCESS_MOD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_ACCESS_MOD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_ACCESS_MOD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_ACCESS_MOD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_PARAM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_PARAM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_PARAM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_PARAM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_PARAM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_PARAM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_METHOD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_METHOD, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_METHOD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_METHOD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_METHOD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_METHOD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_LAMBDA, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_LAMBDA, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_LAMBDA" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_LAMBDA behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_LAMBDA, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_LAMBDA"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_ERASED_LAMBDA, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_ERASED_LAMBDA, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_ERASED_LAMBDA" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_ERASED_LAMBDA behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_ERASED_LAMBDA, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_FROM_ERASED_LAMBDA"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_DEFAULT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_DEFAULT, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_DEFAULT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_DEFAULT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_DEFAULT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_BODY_DEFAULT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_RESULT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_RESULT, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_RESULT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_RESULT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_RESULT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD_RESULT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_METHOD_ADD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_PARAM, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_PARAM, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_PARAM" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_PARAM behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_PARAM, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_PARAM"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_RESULT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_RESULT, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_RESULT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_RESULT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_RESULT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD_RESULT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD, arch.first, true))
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_TYPE_API_TYPE_CREATOR_CTX_LAMBDA_TYPE_ADD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_MUTEX_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_MUTEX_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_MUTEX_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_MUTEX_LOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_MUTEX_LOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_MUTEX_LOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_MUTEX_UNLOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_MUTEX_UNLOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_MUTEX_UNLOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_EVENT_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_EVENT_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_EVENT_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_EVENT_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_EVENT_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_EVENT_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_FIRE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_FIRE, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_EVENT_FIRE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_EVENT_FIRE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_EVENT_FIRE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_EVENT_FIRE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_GUARD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_GUARD, arch.first, true))
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_GUARD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_GUARD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_GUARD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_CONCURRENCY_HELPERS_SPINLOCK_GUARD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_SET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_SET, arch.first, true))
        << "intrinsic INTRINSIC_ATOMIC_INT_SET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ATOMIC_INT_SET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_SET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ATOMIC_INT_SET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_GET, arch.first, true))
        << "intrinsic INTRINSIC_ATOMIC_INT_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ATOMIC_INT_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ATOMIC_INT_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_EXCHANGE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_EXCHANGE, arch.first, true))
        << "intrinsic INTRINSIC_ATOMIC_INT_EXCHANGE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ATOMIC_INT_EXCHANGE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_EXCHANGE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ATOMIC_INT_EXCHANGE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_COMPARE_AND_SWAP, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_COMPARE_AND_SWAP, arch.first, true))
        << "intrinsic INTRINSIC_ATOMIC_INT_COMPARE_AND_SWAP" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ATOMIC_INT_COMPARE_AND_SWAP behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_COMPARE_AND_SWAP, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ATOMIC_INT_COMPARE_AND_SWAP"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_FETCH_AND_ADD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_FETCH_AND_ADD, arch.first, true))
        << "intrinsic INTRINSIC_ATOMIC_INT_FETCH_AND_ADD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ATOMIC_INT_FETCH_AND_ADD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_FETCH_AND_ADD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ATOMIC_INT_FETCH_AND_ADD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_FETCH_AND_SUB, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_FETCH_AND_SUB, arch.first, true))
        << "intrinsic INTRINSIC_ATOMIC_INT_FETCH_AND_SUB" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ATOMIC_INT_FETCH_AND_SUB behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ATOMIC_INT_FETCH_AND_SUB, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ATOMIC_INT_FETCH_AND_SUB"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_DEBUG_COUNT_INSTANCES_OF_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DEBUG_COUNT_INSTANCES_OF_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_STD_DEBUG_COUNT_INSTANCES_OF_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_DEBUG_COUNT_INSTANCES_OF_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_DEBUG_COUNT_INSTANCES_OF_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_DEBUG_COUNT_INSTANCES_OF_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_INT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_LONG, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_GET_LOCAL_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_GET_LOCAL_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_GET_LOCAL_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_INT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_LONG, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_DEBUGGER_API_SET_LOCAL_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_DEBUGGER_API_SET_LOCAL_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_DEBUGGER_API_SET_LOCAL_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_SET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_SET, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_SET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ATOMIC_INT_SET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_SET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_SET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_GET, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_GET, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_GET" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ATOMIC_INT_GET behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_GET, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_GET"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_EXCHANGE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_EXCHANGE, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_EXCHANGE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ATOMIC_INT_EXCHANGE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_EXCHANGE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_EXCHANGE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_COMPARE_AND_SWAP, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_COMPARE_AND_SWAP, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_COMPARE_AND_SWAP" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ATOMIC_INT_COMPARE_AND_SWAP behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_COMPARE_AND_SWAP, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_COMPARE_AND_SWAP"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_ADD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_ADD, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_ADD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_ADD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_ADD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_ADD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_SUB, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_SUB, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_SUB" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_SUB behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_SUB, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_ATOMIC_INT_FETCH_AND_SUB"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_IS_INTERFACE_LITERAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_IS_INTERFACE_LITERAL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_IS_INTERFACE_LITERAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_IS_INTERFACE_LITERAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_IS_INTERFACE_LITERAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_IS_INTERFACE_LITERAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_IS_FUNC_OBJ_ASYNC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_IS_FUNC_OBJ_ASYNC, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_IS_FUNC_OBJ_ASYNC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_REFLECT_IS_FUNC_OBJ_ASYNC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_REFLECT_IS_FUNC_OBJ_ASYNC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_REFLECT_IS_FUNC_OBJ_ASYNC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_LOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_LOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_LOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_UNLOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_UNLOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_MUTEX_UNLOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_FIRE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_FIRE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_FIRE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_FIRE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_FIRE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_EVENT_FIRE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_GUARD, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_GUARD, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_GUARD" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_GUARD behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_GUARD, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_HELPERS_SPINLOCK_GUARD"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_CONCURRENCY_HELPERS_COND_VAR_WAIT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_CONCURRENCY_HELPERS_COND_VAR_WAIT, arch.first, true))
        << "intrinsic INTRINSIC_ESCOMPAT_CONCURRENCY_HELPERS_COND_VAR_WAIT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ESCOMPAT_CONCURRENCY_HELPERS_COND_VAR_WAIT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ESCOMPAT_CONCURRENCY_HELPERS_COND_VAR_WAIT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ESCOMPAT_CONCURRENCY_HELPERS_COND_VAR_WAIT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ONE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_CONCURRENCY_HELPERS_COND_VAR_NOTIFY_ALL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_ASYNC_WORK_NATIVE_INVOKE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_ASYNC_WORK_NATIVE_INVOKE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_ASYNC_WORK_NATIVE_INVOKE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_ASYNC_WORK_NATIVE_INVOKE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_ASYNC_WORK_NATIVE_INVOKE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_ASYNC_WORK_NATIVE_INVOKE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_EVENT_NATIVE_INVOKE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_EVENT_NATIVE_INVOKE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_EVENT_NATIVE_INVOKE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_EVENT_NATIVE_INVOKE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_EVENT_NATIVE_INVOKE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_NATIVE_ASYNC_WORK_HELPER_EVENT_NATIVE_INVOKE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_WORKER_GROUP_GENERATE_GROUP_ID_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_WORKER_GROUP_GENERATE_GROUP_ID_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENCY_WORKER_GROUP_GENERATE_GROUP_ID_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENCY_WORKER_GROUP_GENERATE_GROUP_ID_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENCY_WORKER_GROUP_GENERATE_GROUP_ID_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CONCURRENCY_WORKER_GROUP_GENERATE_GROUP_ID_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_CREATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_CREATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_CREATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_CREATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_LOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_LOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_LOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_LOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_UNLOCK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_UNLOCK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_UNLOCK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_CONCURRENCY_HELPERS_MUTEX_UNLOCK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_EXCLUSIVE_LAUNCHER_LAUNCH, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_EXCLUSIVE_LAUNCHER_LAUNCH, arch.first, true))
        << "intrinsic INTRINSIC_STD_EXCLUSIVE_LAUNCHER_LAUNCH" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_EXCLUSIVE_LAUNCHER_LAUNCH behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_EXCLUSIVE_LAUNCHER_LAUNCH, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_EXCLUSIVE_LAUNCHER_LAUNCH"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_EA_WORKER_SET_PRIORITY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_EA_WORKER_SET_PRIORITY, arch.first, true))
        << "intrinsic INTRINSIC_ETS_EA_WORKER_SET_PRIORITY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_EA_WORKER_SET_PRIORITY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_EA_WORKER_SET_PRIORITY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_EA_WORKER_SET_PRIORITY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_EA_WORKER_JOIN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_EA_WORKER_JOIN, arch.first, true))
        << "intrinsic INTRINSIC_ETS_EA_WORKER_JOIN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_EA_WORKER_JOIN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_EA_WORKER_JOIN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_EA_WORKER_JOIN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_LAUNCH_INTERNAL_JOB_NATIVE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_LAUNCH_INTERNAL_JOB_NATIVE, arch.first, true))
        << "intrinsic INTRINSIC_ETS_LAUNCH_INTERNAL_JOB_NATIVE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_LAUNCH_INTERNAL_JOB_NATIVE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_LAUNCH_INTERNAL_JOB_NATIVE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_LAUNCH_INTERNAL_JOB_NATIVE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_ETS_LAUNCH_ON_THE_SAME_WORKER, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_LAUNCH_ON_THE_SAME_WORKER, arch.first, true))
        << "intrinsic INTRINSIC_ETS_LAUNCH_ON_THE_SAME_WORKER" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_ETS_LAUNCH_ON_THE_SAME_WORKER behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_ETS_LAUNCH_ON_THE_SAME_WORKER, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_ETS_LAUNCH_ON_THE_SAME_WORKER"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_TO_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_TO_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_TO_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_TO_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_TO_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_TO_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BYTE_TO_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_PARSE_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_PARSE_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_BYTE_PARSE_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_BYTE_PARSE_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_BYTE_PARSE_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_BYTE_PARSE_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_TO_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_TO_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_TO_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_TO_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_TO_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_TO_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SHORT_TO_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_PARSE_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_PARSE_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_SHORT_PARSE_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_SHORT_PARSE_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_SHORT_PARSE_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_SHORT_PARSE_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_TO_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_TO_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_LONG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_LONG, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_LONG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_TO_LONG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_LONG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_LONG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_TO_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_TO_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_TO_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_TO_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INT_TO_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_PARSE_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_PARSE_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_INT_PARSE_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_INT_PARSE_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_INT_PARSE_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_INT_PARSE_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_SHORT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_SHORT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_SHORT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_TO_SHORT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_SHORT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_SHORT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_BYTE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_BYTE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_BYTE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_TO_BYTE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_BYTE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_BYTE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_TO_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_FLOAT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_FLOAT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_FLOAT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_TO_FLOAT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_FLOAT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_FLOAT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_TO_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_CHAR, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_CHAR, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_CHAR" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_TO_CHAR behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_TO_CHAR, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LONG_TO_CHAR"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_PARSE_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_PARSE_INT, arch.first, true))
        << "intrinsic INTRINSIC_STD_CORE_LONG_PARSE_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CORE_LONG_PARSE_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CORE_LONG_PARSE_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_STD_CORE_LONG_PARSE_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_REFLECT_PROXY_GENERATE_PROXY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_REFLECT_PROXY_GENERATE_PROXY, arch.first, true))
        << "intrinsic INTRINSIC_REFLECT_PROXY_GENERATE_PROXY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_REFLECT_PROXY_GENERATE_PROXY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_REFLECT_PROXY_GENERATE_PROXY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_REFLECT_PROXY_GENERATE_PROXY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_REFLECT_PROXY_HAS_PROXY_FLAG, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_REFLECT_PROXY_HAS_PROXY_FLAG, arch.first, true))
        << "intrinsic INTRINSIC_REFLECT_PROXY_HAS_PROXY_FLAG" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_REFLECT_PROXY_HAS_PROXY_FLAG behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_REFLECT_PROXY_HAS_PROXY_FLAG, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_REFLECT_PROXY_HAS_PROXY_FLAG"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENT_MAP_SAME_VALUE_ZERO, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_STD_CONCURRENT_MAP_SAME_VALUE_ZERO, arch.first, true))
        << "intrinsic INTRINSIC_STD_CONCURRENT_MAP_SAME_VALUE_ZERO" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_STD_CONCURRENT_MAP_SAME_VALUE_ZERO behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_FINALIZATION_REGISTRY_CALLBACK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_FINALIZATION_REGISTRY_CALLBACK, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_FINALIZATION_REGISTRY_CALLBACK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_FINALIZATION_REGISTRY_CALLBACK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_FINALIZATION_REGISTRY_CALLBACK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_FINALIZATION_REGISTRY_CALLBACK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_STRING, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_JS_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_JS_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_IS_JS_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_IS_JS_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_JS_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_IS_JS_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BIG_INT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BIG_INT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BIG_INT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BIG_INT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BIG_INT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_NEW_JS_VALUE_BIG_INT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_VALUE_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_VALUE_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_STRING, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_VALUE_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_VALUE_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_VALUE_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_VALUE_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE_BY_KEY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE_BY_KEY, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE_BY_KEY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE_BY_KEY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE_BY_KEY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_JS_VALUE_BY_KEY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_PROPERTY_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_PROPERTY_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_STRING, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_PROPERTY_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_PROPERTY_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_JS_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_JS_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_JS_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_SET_PROPERTY_JS_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_JS_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_JS_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIMESET_PROPERTY_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIMESET_PROPERTY_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIMESET_PROPERTY_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIMESET_PROPERTY_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIMESET_PROPERTY_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIMESET_PROPERTY_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_ELEMENT_JS_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_ELEMENT_JS_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_ELEMENT_JS_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_SET_ELEMENT_JS_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_ELEMENT_JS_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_ELEMENT_JS_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_ELEMENT_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_ELEMENT_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_ELEMENT_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_SET_ELEMENT_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_ELEMENT_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_ELEMENT_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_SET_PROPERTY_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_STRING, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_SET_PROPERTY_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_BOOLEAN, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_BOOLEAN, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_BOOLEAN" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_SET_PROPERTY_BOOLEAN behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY_BOOLEAN, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY_BOOLEAN"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_JS_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_JS_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_ELEMENT_JS_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_ELEMENT_JS_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_JS_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_ELEMENT_JS_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_ELEMENT_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_ELEMENT_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_ELEMENT_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_DOUBLE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_DOUBLE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_ELEMENT_DOUBLE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_ELEMENT_DOUBLE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_ELEMENT_DOUBLE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_ELEMENT_DOUBLE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_UNDEFINED, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_UNDEFINED, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_UNDEFINED" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_UNDEFINED behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_UNDEFINED, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_UNDEFINED"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_NULL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_NULL, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_NULL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_NULL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_NULL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_NULL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_GLOBAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_GLOBAL, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_GLOBAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_GLOBAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_GLOBAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_GLOBAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_CREATE_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_CREATE_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_CREATE_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_CREATE_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_CREATE_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_CREATE_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_CREATE_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_CREATE_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_CREATE_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_CREATE_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_CREATE_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_CREATE_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANTIATE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANTIATE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANTIATE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INSTANTIATE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANTIATE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANTIATE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANCE_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INSTANCE_OF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANCE_OF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF_DYNAMIC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF_DYNAMIC, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANCE_OF_DYNAMIC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INSTANCE_OF_DYNAMIC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF_DYNAMIC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANCE_OF_DYNAMIC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF_STATIC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF_STATIC, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANCE_OF_STATIC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INSTANCE_OF_STATIC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INSTANCE_OF_STATIC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INSTANCE_OF_STATIC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INIT_JS_CALL_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INIT_JS_CALL_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INIT_JS_CALL_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INIT_JS_CALL_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INIT_JS_CALL_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INIT_JS_CALL_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INIT_JS_NEW_CLASS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INIT_JS_NEW_CLASS, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INIT_JS_NEW_CLASS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INIT_JS_NEW_CLASS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INIT_JS_NEW_CLASS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INIT_JS_NEW_CLASS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_LOAD_MODULE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_LOAD_MODULE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_LOAD_MODULE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_LOAD_MODULE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_LOAD_MODULE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_LOAD_MODULE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_STRICT_EQUAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_STRICT_EQUAL, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_STRICT_EQUAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_STRICT_EQUAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_STRICT_EQUAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_STRICT_EQUAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_SET_PROPERTY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_SET_PROPERTY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_SET_PROPERTY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_STATIC_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_STATIC_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_IS_STATIC_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_IS_STATIC_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_STATIC_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_IS_STATIC_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_PROPERTY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_PROPERTY, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_PROPERTY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_HAS_PROPERTY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_PROPERTY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_PROPERTY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_GET_PROPERTY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_GET_PROPERTY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_GET_PROPERTY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_PROPERTY_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_PROPERTY_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_PROPERTY_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_HAS_PROPERTY_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_PROPERTY_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_PROPERTY_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_ELEMENT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_ELEMENT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_ELEMENT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_HAS_ELEMENT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_ELEMENT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_ELEMENT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY_OBJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY_OBJECT, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY_OBJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY_OBJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY_OBJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_HAS_OWN_PROPERTY_OBJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_TYPE_OF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_TYPE_OF, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_TYPE_OF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_TYPE_OF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_TYPE_OF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_TYPE_OF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_PROMISE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_PROMISE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_IS_PROMISE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_IS_PROMISE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_IS_PROMISE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_IS_PROMISE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INVOKE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INVOKE, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INVOKE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INVOKE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INVOKE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INVOKE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_XGC, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_XGC, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_XGC" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_XGC behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_XGC, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_XGC"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INVOKE_DYNAMIC_FUNCTION, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INVOKE_DYNAMIC_FUNCTION, arch.first, true))
        << "intrinsic INTRINSIC_JS_RUNTIME_INVOKE_DYNAMIC_FUNCTION" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_RUNTIME_INVOKE_DYNAMIC_FUNCTION behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_RUNTIME_INVOKE_DYNAMIC_FUNCTION, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_RUNTIME_INVOKE_DYNAMIC_FUNCTION"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JS_VALUE_TO_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_VALUE_TO_STRING, arch.first, true))
        << "intrinsic INTRINSIC_JS_VALUE_TO_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JS_VALUE_TO_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JS_VALUE_TO_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JS_VALUE_TO_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_JSON_STRINGIFY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JSON_STRINGIFY, arch.first, true))
        << "intrinsic INTRINSIC_JSON_STRINGIFY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_JSON_STRINGIFY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_JSON_STRINGIFY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_JSON_STRINGIFY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_NAMED_PROPERTY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_NAMED_PROPERTY, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_GET_JS_NAMED_PROPERTY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_GET_JS_NAMED_PROPERTY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_NAMED_PROPERTY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_GET_JS_NAMED_PROPERTY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_PROPERTY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_PROPERTY, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_GET_JS_PROPERTY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_GET_JS_PROPERTY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_PROPERTY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_GET_JS_PROPERTY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_ELEMENT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_ELEMENT, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_GET_JS_ELEMENT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_GET_JS_ELEMENT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_GET_JS_ELEMENT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_GET_JS_ELEMENT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_CHECK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_CHECK, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_JS_CALL_CHECK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_JS_CALL_CHECK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_CHECK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_JS_CALL_CHECK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_FUNCTION, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_FUNCTION, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_JS_CALL_FUNCTION" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_JS_CALL_FUNCTION behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_FUNCTION, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_JS_CALL_FUNCTION"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_VOID_FUNCTION, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_VOID_FUNCTION, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_JS_CALL_VOID_FUNCTION" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_JS_CALL_VOID_FUNCTION behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_CALL_VOID_FUNCTION, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_JS_CALL_VOID_FUNCTION"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_NEW_INSTANCE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_NEW_INSTANCE, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_JS_NEW_INSTANCE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_JS_NEW_INSTANCE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_JS_NEW_INSTANCE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_JS_NEW_INSTANCE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CREATE_LOCAL_SCOPE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CREATE_LOCAL_SCOPE, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CREATE_LOCAL_SCOPE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CREATE_LOCAL_SCOPE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CREATE_LOCAL_SCOPE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CREATE_LOCAL_SCOPE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_DESTROY_LOCAL_SCOPE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_DESTROY_LOCAL_SCOPE, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_DESTROY_LOCAL_SCOPE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_DESTROY_LOCAL_SCOPE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_DESTROY_LOCAL_SCOPE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_DESTROY_LOCAL_SCOPE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_LOAD_JS_CONSTANT_POOL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_LOAD_JS_CONSTANT_POOL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_LOAD_JS_CONSTANT_POOL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_LOAD_JS_CONSTANT_POOL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_LOAD_JS_CONSTANT_POOL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_LOAD_JS_CONSTANT_POOL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_INIT_JS_CALL_CLASS_FOR_CTX, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_INIT_JS_CALL_CLASS_FOR_CTX, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_INIT_JS_CALL_CLASS_FOR_CTX" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_INIT_JS_CALL_CLASS_FOR_CTX behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_INIT_JS_CALL_CLASS_FOR_CTX, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_INIT_JS_CALL_CLASS_FOR_CTX"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_VOID_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_VOID_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_VOID_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_VOID_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_VOID_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_VOID_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U1_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U1_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U1_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_U1_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U1_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U1_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U8_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U8_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U8_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_U8_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U8_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U8_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I8_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I8_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I8_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_I8_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I8_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I8_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U16_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U16_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U16_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_U16_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U16_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U16_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I16_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I16_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I16_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_I16_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I16_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I16_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U32_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U32_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U32_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_U32_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U32_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U32_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I32_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I32_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I32_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_I32_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I32_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I32_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U64_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U64_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U64_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_U64_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_U64_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_U64_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I64_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I64_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I64_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_I64_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_I64_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_I64_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_F32_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_F32_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_F32_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_F32_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_F32_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_F32_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_F64_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_F64_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_F64_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_F64_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_F64_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_F64_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_REF_TYPE_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_REF_TYPE_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_REF_TYPE_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_REF_TYPE_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_REF_TYPE_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_REF_TYPE_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_JS_VALUE_TO_LOCAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_JS_VALUE_TO_LOCAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_JS_VALUE_TO_LOCAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_JS_VALUE_TO_LOCAL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_JS_VALUE_TO_LOCAL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_JS_VALUE_TO_LOCAL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U1, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U1, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U1" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U1 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U1, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U1"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT8, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U8, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT8, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I8, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT8, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U16, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT16, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I16, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT16, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U32, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I32, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::UINT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U64, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::UINT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_U64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I64, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F32, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F64, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_JS_VALUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_JS_VALUE, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_JS_VALUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_JS_VALUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_JS_VALUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_JS_VALUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_STRING, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_STRING, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_STRING" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_STRING behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_STRING, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_STRING"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_REF_TYPE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_REF_TYPE, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_REF_TYPE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_CONVERT_LOCAL_TO_REF_TYPE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_CONVERT_LOCAL_TO_REF_TYPE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_CONVERT_LOCAL_TO_REF_TYPE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_PROMISE_INTEROP_RESOLVE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_PROMISE_INTEROP_RESOLVE, arch.first, true))
        << "intrinsic INTRINSIC_PROMISE_INTEROP_RESOLVE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_PROMISE_INTEROP_RESOLVE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_PROMISE_INTEROP_RESOLVE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_PROMISE_INTEROP_RESOLVE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_PROMISE_INTEROP_REJECT, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_PROMISE_INTEROP_REJECT, arch.first, true))
        << "intrinsic INTRINSIC_PROMISE_INTEROP_REJECT" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_PROMISE_INTEROP_REJECT behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_PROMISE_INTEROP_REJECT, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_PROMISE_INTEROP_REJECT"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_STATIC_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_STATIC_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_STATIC_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_STATIC_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_STATIC_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_STATIC_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_DYNAMIC_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_DYNAMIC_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_DYNAMIC_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_DYNAMIC_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_DYNAMIC_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_TRANSFER_ARRAY_BUFFER_TO_DYNAMIC_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_TYPED_ARRAY, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_TYPED_ARRAY, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_TYPED_ARRAY" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_TYPED_ARRAY behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_TYPED_ARRAY, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_TYPED_ARRAY"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_DATA_VIEW, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_DATA_VIEW, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_DATA_VIEW" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_DATA_VIEW behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_DATA_VIEW, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_TRANSFER_HELPER_CREATE_DYNAMIC_DATA_VIEW"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_CONTEXT_SET_INTEROP_RUNTIME_LINKER_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_CONTEXT_SET_INTEROP_RUNTIME_LINKER_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_CONTEXT_SET_INTEROP_RUNTIME_LINKER_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_CONTEXT_SET_INTEROP_RUNTIME_LINKER_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_CONTEXT_SET_INTEROP_RUNTIME_LINKER_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_CONTEXT_SET_INTEROP_RUNTIME_LINKER_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_CONTEXT_GET_INTEROP_RUNTIME_LINKER_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_CONTEXT_GET_INTEROP_RUNTIME_LINKER_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_CONTEXT_GET_INTEROP_RUNTIME_LINKER_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_CONTEXT_GET_INTEROP_RUNTIME_LINKER_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_CONTEXT_GET_INTEROP_RUNTIME_LINKER_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_CONTEXT_GET_INTEROP_RUNTIME_LINKER_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_IS_JS_INTEROP_REF_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_IS_JS_INTEROP_REF_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_SERIALIZE_HELPER_IS_JS_INTEROP_REF_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_SERIALIZE_HELPER_IS_JS_INTEROP_REF_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_IS_JS_INTEROP_REF_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_SERIALIZE_HELPER_IS_JS_INTEROP_REF_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_SERIALIZE_HANDLE_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_SERIALIZE_HANDLE_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_SERIALIZE_HELPER_SERIALIZE_HANDLE_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_SERIALIZE_HELPER_SERIALIZE_HANDLE_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_SERIALIZE_HANDLE_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_SERIALIZE_HELPER_SERIALIZE_HANDLE_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_DESERIALIZE_HANDLE_IMPL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_DESERIALIZE_HANDLE_IMPL, arch.first, true))
        << "intrinsic INTRINSIC_INTEROP_SERIALIZE_HELPER_DESERIALIZE_HANDLE_IMPL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_INTEROP_SERIALIZE_HELPER_DESERIALIZE_HANDLE_IMPL behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_INTEROP_SERIALIZE_HELPER_DESERIALIZE_HANDLE_IMPL, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_INTEROP_SERIALIZE_HELPER_DESERIALIZE_HANDLE_IMPL"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_OBJ, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_OBJ, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_OBJ" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_OBJ behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_OBJ, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_OBJ"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I32, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I64, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::INT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F32, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT32, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F64, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::FLOAT64, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_LD_OBJ_BY_NAME_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_OBJ, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_OBJ, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_OBJ" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_OBJ behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_OBJ, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_OBJ"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I8, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I8, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I8" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I8 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I8, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I8"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I16, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I16, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I16" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I16 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I16, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I16"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I32, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I64, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_I64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F32, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F32, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F32" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F32 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F32, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F32"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F64, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F64, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F64" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F64 behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F64, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ST_OBJ_BY_NAME_F64"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_EQUALS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_EQUALS, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_EQUALS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_EQUALS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_EQUALS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_EQUALS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_STRICT_EQUALS, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_STRICT_EQUALS, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_STRICT_EQUALS" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_STRICT_EQUALS behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_STRICT_EQUALS, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_STRICT_EQUALS"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_TYPEOF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_TYPEOF, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_TYPEOF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_TYPEOF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_TYPEOF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_TYPEOF"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ISTRUE, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ISTRUE, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_ISTRUE" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_ISTRUE behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::BOOL, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_ISTRUE, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_ISTRUE"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_DOUBLE_TO_STRING_DECIMAL, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::REFERENCE, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_DOUBLE_TO_STRING_DECIMAL, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_DOUBLE_TO_STRING_DECIMAL" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_DOUBLE_TO_STRING_DECIMAL behavior because it is not supported by some encoders
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_NULLCHECK, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_NULLCHECK, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_NULLCHECK" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_NULLCHECK behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_NULLCHECK, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_NULLCHECK"
        << ", arch " << arch.second;
#endif
}
if (EncodesBuiltin(GetGraph()->GetRuntime(), RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_MEMMOVE_UNCHECKED_REF, arch.first)) {
    EXPECT_TRUE(TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_MEMMOVE_UNCHECKED_REF, arch.first, true))
        << "intrinsic INTRINSIC_COMPILER_ETS_MEMMOVE_UNCHECKED_REF" << ", arch " << arch.second;
} else {
    // cannot verify INTRINSIC_COMPILER_ETS_MEMMOVE_UNCHECKED_REF behavior in Release build
#ifndef NDEBUG
    EXPECT_DEATH(
        TryEncode(DataType::VOID, RuntimeInterface::IntrinsicId::INTRINSIC_COMPILER_ETS_MEMMOVE_UNCHECKED_REF, arch.first, false),
        "")  // actual expected message is "This line should be unreachable" but sometimes gtest does not capture stderr output
        << "intrinsic INTRINSIC_COMPILER_ETS_MEMMOVE_UNCHECKED_REF"
        << ", arch " << arch.second;
#endif
}
