Mahidhar Tatineni

39 papers A* 1A 2B 1Misc 1Journal 11Unranked 23
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Mohammad Firas Sada, John J. Graham, Mahidhar Tatineni, Dmitry Mishin, Thomas A. DeFanti, Frank Würthwein
2025 J jnl
IEEE Trans. Parallel Distributed Syst.
Anish Govind, Yuchen Jing, Stefanie Dao, Michael Granado, Rachel Handran, Davit Margarian, Matthew Mikhailov, Danny Vo, Matei-Alexandru Gardus, Khai Vu, Derek Bouius, Bryan Chin, Mahidhar Tatineni, Mary P. Thomas
2025 J jnl
CoRR
Mohammad Firas Sada, John J. Graham, Elham E Khoda, Mahidhar Tatineni, Dmitry Mishin, Rajesh K. Gupta, Rick Wagner, Larry Smarr, Thomas A. DeFanti, Frank Würthwein
2025 J jnl
CoRR
Derek Weitzel, Ashton Graves, Sam Albin, Huijun Zhu, Frank Würthwein, Mahidhar Tatineni, Dmitry Mishin, John J. Graham, Elham E Khoda, Mohammad Firas Sada, Larry Smarr, Thomas A. DeFanti
2025 J jnl
CoRR
Mary P. Thomas, Martin Kandes, James McDougall, Dmitry Mishin, Scott Sakai, Subhashini Sivagnanam, Mahidhar Tatineni
2024 conf
SC Workshops
Yuwu Chen, Trevor Cooper, Christopher Irving, Mahidhar Tatineni, Nicole Wolter, Dmitry Mishin, Subhashini Sivagnanam
2024 A conf
SC
Gautham Dharuman, Kyle Hippe, Alexander Brace, Sam Foreman, Väinö Hatanpää, Varuni Katti Sastry, Huihuo Zheng, Logan T. Ward, Servesh Muralidharan, Archit Vasan, Bharat Kale, Carla M. Mann, Heng Ma, Yun-Hsuan Cheng, Yuliana Zamora, Shengchao Liu, Chaowei Xiao, Murali Emani, Tom Gibbs, Mahidhar Tatineni, Deepak Canchi, Jerome Mitchell, Koichi Yamada, Maria Garzaran, Michael E. Papka, Ian T. Foster, Rick Stevens, Anima Anandkumar, Venkatram Vishwanath, Arvind Ramanathan
2023 J jnl
IEEE Trans. Parallel Distributed Syst.
Arunav Gupta, John Ge, John Li, Zihao Kong, Kaiwen He, Matthew Mikhailov, Bryan Chin, Xiaochen Li, Maximilian Apodaca, Paul Rodríguez, Mahidhar Tatineni, Mary P. Thomas, Santosh Bhatt
2023 conf
PEARC
Rommie E. Amaro, Jiunn-Yeu Chen, Javier M. Duarte, Thomas E. Hutton, Christopher Irving, Martin C. Kandes, Amit Majumdar, Dmitry Y. Mishin, Mai H. Nguyen, Paul Rodríguez, Fernando Silva, Robert S. Sinkovits, Shawn M. Strande, Mahidhar Tatineni, Leon Si Tran, Nicole Wolter
2022 conf
PEARC
Abhinand Nasari, Hieu Le, Richard Lawrence, Zhenhua He, Xin Yang, Mario Krell, Alex Tsyplikhin, Mahidhar Tatineni, Tim Cockerill, Lisa M. Perez, Dhruva Chakravorty, Honggao Liu
2022 J jnl
IEEE Trans. Parallel Distributed Syst.
Xiaochen Li, Maximilian Apodaca, Arunav Gupta, Zihao Kong, Hongyi Pan, Hongyu Zhou, Mary P. Thomas, Martin Kandes, Zhaoyi Li, Mahidhar Tatineni, Lewis Carroll
2022 B conf
e-Science
Ilkay Altintas, Ismael Pérez, Dmitry Mishin, Adrien Trouillaud, Christopher Irving, John J. Graham, Mahidhar Tatineni, Thomas A. DeFanti, Shawn Strande, Larry Smarr, Michael L. Norman
2022 J jnl
CoRR
Ilkay Altintas, Ismael Pérez, Dmitry Mishin, Adrien Trouillaud, Christopher Irving, John J. Graham, Mahidhar Tatineni, Thomas A. DeFanti, Shawn Strande, Larry Smarr, Michael L. Norman
2021 J jnl
Int. J. High Perform. Comput. Appl.
Lorenzo Casalino, Abigail C. Dommer, Zied Gaieb, Emília P. Barros, Terra Sztain, Surl-Hee Ahn, Anda Trifan, Alexander Brace, Anthony T. Bogetti, Austin Clyde, Heng Ma, Hyungro Lee, Matteo Turilli, Syma Khalid, Lillian T. Chong, Carlos Simmerling, David J. Hardy, Julio D. C. Maia, James C. Phillips, Thorsten Kurth, Abraham C. Stern, Lei Huang, John D. McCalpin, Mahidhar Tatineni, Tom Gibbs, John E. Stone, Shantenu Jha, Arvind Ramanathan, Rommie E. Amaro
2021 conf
PEARC
Shawn Strande, Haisong Cai, Mahidhar Tatineni, Wayne Pfeiffer, Christopher Irving, Amit Majumdar, Dmitry Mishin, Robert S. Sinkovits, Mike Norman, Nicole Wolter, Trevor Cooper, Ilkay Altintas, Marty Kandes, Ismael Pérez, Manu Shantharam, Mary P. Thomas, Subhashini Sivagnanam, Thomas Hutton
2021 conf
PEARC
Scott Sakai, Dmitry Mishin, Subhashini Sivagnanam, Mahidhar Tatineni, Martin Kandes, Mary P. Thomas, Christopher Irving, Shawn Strande, Michael L. Norman
2019 conf
PEARC
Dawei Mu, Jon Moran, Hui Zhou, Yifeng Cui, Ronald Hawkins, Mahidhar Tatineni, Steve Campbell
2018 conf
PEARC
Manu Shantharam, Mahidhar Tatineni, Dong Ju Choi, Amitava Majumdar
2017 conf
PEARC
Shawn Strande, Haisong Cai, Trevor Cooper, Karen Flammer, Christopher Irving, Gregor von Laszewski, Amitava Majumdar, Dmitry Mishin, Philip M. Papadopoulos, Wayne Pfeiffer, Robert S. Sinkovits, Mahidhar Tatineni, Rick Wagner, Fugang Wang, Nancy Wilkins-Diehr, Nicole Wolter, Michael L. Norman
2016 conf
XSEDE
Mahidhar Tatineni, Xiaoyi Lu, Dong Ju Choi, Amitava Majumdar, Dhabaleswar K. Panda
2016 conf
UIC/ATC/ScalCom/CBDCom/IoP/SmartWorld
Nitin Sukhija, Mahidhar Tatineni, Nicole M. Brown, Mark Van Moer, Paul Rodríguez, Spencer Callicott
2016 conf
XSEDE
Rick Wagner, Philip M. Papadopoulos, Dmitry Mishin, Trevor Cooper, Mahidhar Tatineni, Gregor von Laszewski, Fugang Wang, Geoffrey C. Fox
2015 J jnl
BMC Bioinform.
Kristopher Standish, Tristan M. Carland, Glenn K. Lockwood, Wayne Pfeiffer, Mahidhar Tatineni, C. Huang, Sarah Lamberth, Yauheniya Cherkas, Carrie Brodmerkel, Ed Jaeger, Lance Smith, Gunaretnam Rajagopal, Mark Curran, Nicholas J. Schork
2015 conf
XSEDE
Glenn K. Lockwood, Mahidhar Tatineni, Rick Wagner
2014 conf
XSEDE
Jeff A. Tracey, James K. Sheppard, Glenn K. Lockwood, Amit Chourasia, Mahidhar Tatineni, Robert N. Fisher, Robert S. Sinkovits
2014 conf
XSEDE
Richard Lee Moore, Chaitan Baru, Diane Baxter, Geoffrey Charles Fox, Amitava Majumdar, Philip M. Papadopoulos, Wayne Pfeiffer, Robert S. Sinkovits, Shawn Strande, Mahidhar Tatineni, Richard P. Wagner, Nancy Wilkins-Diehr, Michael L. Norman
2014 conf
XSEDE
Dong Ju Choi, Glenn K. Lockwood, Robert S. Sinkovits, Mahidhar Tatineni
2014 conf
XSEDE
Glenn K. Lockwood, Mahidhar Tatineni, Rick Wagner
2013 conf
XSEDE
Mahidhar Tatineni, Jerry Greenberg, Richard P. Wagner, Eva Hocks, Christopher Irving
2013 conf
XSEDE
Homa Karimabadi, Burlen Loring, Patrick O'Leary, Amitava Majumdar, Mahidhar Tatineni, Berk Geveci
2013 conf
XSEDE
Rick Wagner, Mahidhar Tatineni, Eva Hocks, Kenneth Yoshimoto, Scott Sakai, Michael L. Norman, Brian Bockelman, Igor Sfiligoi, Matevz Tadel, James Letts, Frank Würthwein, Lothar Bauerdick
2012 conf
XSEDE
Shawn M. Strande, Pietro Cicotti, Robert S. Sinkovits, William S. Young, Rick Wagner, Mahidhar Tatineni, Eva Hocks, Allan Snavely, Mike Norman
2012 Misc conf
ICCS
Yuri Bazilevs, Alison L. Marsden, Francesco Lanza di Scalea, Amit Majumdar, Mahidhar Tatineni
2011 A* conf
KDD
Robert S. Sinkovits, Pietro Cicotti, Shawn Strande, Mahidhar Tatineni, Paul Rodríguez, Nicole Wolter, Natasha Balac
2011 conf
TG
Homa Karimabadi, Burlen Loring, H. X. Vu, Yuri A. Omelchenko, Vadim Roytershteyn, William S. Daughton, Tamara B. Sipes, Mahidhar Tatineni, Amitava Majumdar, Ümit V. Çatalyürek, Alper Yilmaz
2011 conf
TG
Jonathan A. Myers, Mahidhar Tatineni, Robert S. Sinkovits
2011 conf
TG
Richard Lee Moore, David L. Hart, Wayne Pfeiffer, Mahidhar Tatineni, Kenneth Yoshimoto, William S. Young
2010 A conf
ICS
Sreeram Potluri, Ping Lai, Karen A. Tomko, Sayantan Sur, Yifeng Cui, Mahidhar Tatineni, Karl W. Schulz, William L. Barth, Amitava Majumdar, Dhabaleswar K. Panda
2007 J jnl
J. Comput. Phys.
Ratnesh K. Shukla, Mahidhar Tatineni, Xiaolin Zhong
redb/extractors/decompiler/bninja/arch/x86.py
← Index redb/extractors/decompiler/bninja/arch/x86.py python
from binaryninja.enums import (
    InstructionTextTokenType,
)

# Support both package and standalone imports
try:
    from .architecture import Architecture
except ImportError:
    # Fallback to absolute imports (for multiprocessing spawned processes)
    from redb.extractors.decompiler.bninja.arch.architecture import Architecture


class Arch_x86(Architecture):
    """The concrete class for architecture-dependent details for x86_64"""

    def __init__(self):
        # general purpose registers for 64bits
        self.gpr_64 = [
            "RAX",
            "RBX",
            "RCX",
            "RDX",
            "RSI",
            "RDIR9",
            "R10",
            "R11",
            "R12",
            "R13",
            "R14",
            "R15",
        ]

        self.gpr_32 = [
            "EAX",
            "EBX",
            "ECX",
            "EDX",
            "ESI",
            "EDI",
            "R8D",
            "R9D",
            "R10D",
            "R11D",
            "R12D",
            "R13D",
            "R14D",
            "R15D",
        ]

        self.gpr_16 = [
            "AX",
            "BX",
            "CX",
            "DX",
            "SI",
            "DI",
            "R8W",
            "R9W",
            "R10W",
            "R11W",
            "R12W",
            "R13W",
            "R14W",
            "R15W",
        ]

        self.gpr_8 = [
            "AL",
            "BL",
            "CL",
            "DL",
            "SIL",
            "DIL",
            "R8B",
            "R9B",
            "R10B",
            "R11B",
            "R12B",
            "R13B",
            "R14B",
            "R15B",
        ]

        self.fpu_x87 = ["ST0", "ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7"]

        self.sse_xmm = [
            "XMM0",
            "XMM1",
            "XMM2",
            "XMM3",
            "XMM4",
            "XMM5",
            "XMM6",
            "XMM7",
            "XMM8",
            "XMM9",
            "XMM10",
            "XMM11",
            "XMM12",
            "XMM13",
            "XMM14",
            "XMM15",
        ]

        self.avx_ymm = [
            "YMM0",
            "YMM1",
            "YMM2",
            "YMM3",
            "YMM4",
            "YMM5",
            "YMM6",
            "YMM7",
            "YMM8",
            "YMM9",
            "YMM10",
            "YMM11",
            "YMM12",
            "YMM13",
            "YMM14",
            "YMM15",
        ]
        self.flags = ["FLAGS", "EFLAGS", "RFLAGS"]
        self.stack_registers = ["RBP", "RSP", "SP", "BP"]
        self.size = 8
        self.global_registers = (
            self.gpr_64
            + self.gpr_32
            + self.gpr_16
            + self.gpr_8
            + self.fpu_x87
            + self.sse_xmm
            + self.avx_ymm
        )
        self.opcode_categories = self._initialize_opcode_categories()

        ## instructions
        self.instructions = []

    def is_register(self, register):
        register = register.upper()
        return register in self.global_registers

    def is_general_purpose_register(self, register):
        register = register.upper()
        return (
            register in self.gpr_64
            or register in self.gpr_32
            or register in self.gpr_16
            or register in self.gpr_8
        )

    def is_stack_register(self, register):
        register = register.upper()
        return register in self.stack_registers

    def is_xmm_register(self, register):
        register = register.upper()
        return register in self.sse_xmm

    def is_control_flow(self, instr_tokens):
        return False

    def is_control_flow_instruction(self, instr_tokens):
        """Check if an instruction is a control flow instruction (jump, call, return, loop)."""
        try:
            # Extract the mnemonic from the instruction tokens
            mnemonic = None
            for token in instr_tokens:
                if token.type == InstructionTextTokenType.InstructionToken:
                    mnemonic = token.text.upper()
                    break

            if not mnemonic:
                return False

            # Check if it's a jump, call, return, or loop instruction
            return (
                mnemonic.startswith("J")  # All jumps (JMP, JE, JNE, etc.)
                or mnemonic == "CALL"  # Function calls
                or mnemonic == "RET"  # Return
                or mnemonic == "RETN"  # Another form of return
                or mnemonic.startswith("LOOP")
            )  # Loop instructions

        except Exception as e:
            print(e)
            # If we can't determine, assume it's not a control flow instruction
            return False

    def is_control_flow_instruction_by_mnemonic(self, mnemonic):
        """Check if an instruction is a control flow instruction based on its mnemonic."""
        if not mnemonic:
            return False

        mnemonic = mnemonic.upper()
        return (
            mnemonic.startswith("J")  # All jumps (JMP, JE, JNE, etc.)
            or mnemonic == "CALL"  # Function calls
            or mnemonic == "RET"  # Return
            or mnemonic == "RETN"  # Another form of return
            or mnemonic.startswith("LOOP")
        )

    def _initialize_opcode_categories(self):
        """Initialize mapping of opcodes to categories similar to Ghidra's implementation."""
        opcode_categories = {}
        opcode_index = {}  # Add this to mimic Ghidra's opcodeIndex

        # Define common opcodes array similar to Ghidra's COMMON_OPCODES
        COMMON_OPCODES = [
            # Core instructions (tracked individually)
            "MOV",
            "PUSH",
            "POP",
            "LEA",
            "CALL",
            "RET",  # Data movement and control
            "ADD",
            "SUB",
            "MUL",
            "DIV",  # Basic arithmetic
            "AND",
            "OR",
            "XOR",
            "NOT",  # Logical operations
            "JMP",
            "JE",
            "JNE",  # Basic jumps
            "TEST",
            "CMP",  # Comparisons
            # Grouped categories (aggregated tracking)
            "SIMD_MOVE",  # MOVAPS, MOVDQA, MOVDQU, etc.
            "COND_JUMP_EXT",  # Other conditional jumps (JG, JL, JGE, etc.)
            "STRING_OP",  # MOVS, STOS, LODS, SCAS, CMPS
            "STACK_ADV",  # ENTER, LEAVE, PUSHA, POPA
            "ARITHMETIC_ADV",  # IMUL, IDIV, ADC, SBB
            "BIT_OP",  # SHL, SHR, SAR, ROL, ROR, etc.
            "FPU_OP",  # FLD, FST, FADD, etc.
            "SYSTEM_OP",  # SYSCALL, INT, SYSENTER
            "CRYPTO_OP",  # AES*, SHA* instructions
            "MISC_OP",  # Rare but interesting (CPUID, RDTSC, etc.)
        ]

        # Create index map like Ghidra
        for i, opcode in enumerate(COMMON_OPCODES):
            opcode_index[opcode] = i

        # Now categorize opcodes using if/elif/else structure like in Ghidra
        for opcode in COMMON_OPCODES:
            # String Operations (checking these first to avoid MOV confusion)
            if opcode.startswith("MOVS") or opcode in [
                "STOS",
                "LODS",
                "SCAS",
                "CMPS",
                "REP",
                "REPE",
                "REPNE",
            ]:
                opcode_categories[opcode] = "STRING_MANIPULATION"

            # Data Movement (after string ops to avoid MOVS confusion)
            elif opcode.startswith("MOV") or opcode in ["LEA", "XCHG"]:
                opcode_categories[opcode] = "DATA_MOVEMENT"

            # Stack Operations
            elif opcode in ["PUSH", "POP", "ENTER", "LEAVE", "PUSHA", "POPA"]:
                opcode_categories[opcode] = "STACK_MANAGEMENT"

            # Control Flow (non-conditional)
            elif opcode in ["JMP", "CALL", "RET"]:
                opcode_categories[opcode] = "CONTROL_FLOW"

            # Conditional Jumps and Loops
            elif opcode.startswith("J") or opcode.startswith("LOOP"):
                opcode_categories[opcode] = "CONDITIONAL_JUMP"

            # Arithmetic
            elif opcode in [
                "ADD",
                "SUB",
                "MUL",
                "DIV",
                "IMUL",
                "IDIV",
                "ADC",
                "SBB",
                "INC",
                "DEC",
                "NEG",
            ]:
                opcode_categories[opcode] = "ARITHMETIC"

            # Logical
            elif opcode in ["AND", "OR", "XOR", "NOT", "TEST", "CMP"]:
                opcode_categories[opcode] = "LOGICAL"

            # Shifts & Rotates
            elif opcode in ["SHL", "SHR", "SAR", "SAL", "ROL", "ROR", "RCL", "RCR"]:
                opcode_categories[opcode] = "SHIFT_ROTATE"

            # System & Interrupts
            elif opcode in [
                "SYSCALL",
                "INT",
                "SYSENTER",
                "SYSEXIT",
                "SGDT",
                "SIDT",
                "SLDT",
                "WRMSR",
                "RDMSR",
            ]:
                opcode_categories[opcode] = "SYSTEM_CALLS"

            # Floating Point
            elif opcode.startswith("F"):
                opcode_categories[opcode] = "FPU_ARITHMETIC"

            # System Information and Random Number Generation
            elif opcode in ["PUSHF", "POPF", "CPUID", "RDTSC", "RDRAND", "RDSEED"]:
                opcode_categories[opcode] = "CPU_FEATURES"

            # Cryptography
            elif opcode.startswith("AES") or opcode.startswith("SHA"):
                opcode_categories[opcode] = "CRYPTOGRAPHIC"

            # Miscellaneous (including flag operations)
            else:
                opcode_categories[opcode] = "MISC"

        # Additional categorization for opcodes not in COMMON_OPCODES
        # This can be used in the normalize_opcode method

        # Store both maps as instance variables
        # self.opcode_categories = opcode_categories
        self.opcode_index = opcode_index

        return opcode_categories

    def is_simd_register(self, register):
        return register in self.sse_xmm