You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: backend.rs
    path of file: ./repos/firecracker/src/seccompiler/src
    
    the code of the file until where you have to start completion: // Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
#![cfg(target_endian = "little")]
//! This module defines the data structures used for the intermmediate representation (IR),
//! as well as the logic for compiling the filter into BPF code, the final form of the filter.

use std::collections::BTreeMap;
use std::convert::{Into, TryFrom, TryInto};

use serde::{Deserialize, Deserializer};

use crate::common::{sock_filter, BpfProgram, BPF_MAX_LEN};

// BPF Instruction classes.
// See /usr/include/linux/bpf_common.h .
const BPF_LD: u16 = 0x00;
const BPF_ALU: u16 = 0x04;
const BPF_JMP: u16 = 0x05;
const BPF_RET: u16 = 0x06;

// BPF ld/ldx fields.
// See /usr/include/linux/bpf_common.h .
const BPF_W: u16 = 0x00;
const BPF_ABS: u16 = 0x20;

// BPF alu fields.
// See /usr/include/linux/bpf_common.h .
const BPF_AND: u16 =
    
    fn test_ge_operator() {
        // check use case for SeccompCmpArgLen::DWORD
        let rules = vec![allow_syscall_if(
            libc::SYS_ioctl,
            vec![SeccompRule::new(
                vec![Cond::new(1, SeccompCmpArgLen::Dword, Ge, KVM_GET_PIT2).unwrap()],
                SeccompAction::Allow,
            )],
        )];
        // check syscalls that are supposed to work
        validate_seccomp_filter(
            rules.clone(),
            || unsafe {
                libc::ioctl(0, KVM_GET_PIT2 as IoctlRequest);
                libc::ioctl(0, (KVM_GET_PIT2 + 1) as IoctlRequest);
            },
            false,
        );
        // check syscalls that are not supposed to work
        validate_seccomp_filter(
            rules,
            || unsafe {
                libc::ioctl(0, (KVM_GET_PIT2 - 1) as IoctlRequest);
            },
            true,
        );

        // check use case for SeccompCmpArgLen::QWORD
        let rules = vec![allow_syscall_if(
            libc::SYS_ioctl,
            vec![SeccompRule::new(
                vec![Cond::new(2, SeccompCmpArgLen::Qword, Ge, u64::from(std::u32::MAX)).unwrap()],
                SeccompAction::Allow,
            )],
        )];
        // check syscalls that are supposed to work
        validate_seccomp_filter(
            rules.clone(),
            || unsafe {
                libc::ioctl(0, 0, u64::from(std::u32::MAX));
                libc::ioctl(0, 0, u64::from(std::u32::MAX) + 1);
            },
            false,
        );
        // check syscalls that are not supposed to work
        validate_seccomp_filter(
            rules,
            || unsafe {
                libc::ioctl(0, 0, 1);
            },
            true,
        );
    }