GCC,nvptx,0,"Predict the next statement of this code snippet: ptx_dumpbase = concat ( dumppfx , , NULL ) ; if ( save_temps ) ptx_cfile_name = ptx_dumpbase ; else ptx_cfile_name = make_temp_file ( ) ; out = fopen ( ptx_cfile_name , ) ; if ( ! out ) fatal_error ( input_location , , ptx_cfile_name ) ; if ( offload_abi == OFFLOAD_ABI_LP64 ) { char * mko_dumpbase = concat ( dumppfx , , NULL ) ; if ( save_temps ) ptx_name = mko_dumpbase ; else ptx_name = make_temp_file ( ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , mko_dumpbase ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ptx_name ) ; obstack_ptr_grow ( & argv_obstack , NULL ) ; const char * * new_argv = XOBFINISH ( & argv_obstack , const char * * ) ; char * execpath = getenv ( ) ; char * cpath = getenv ( ) ; char * lpath = getenv ( ) ; unsetenv ( ) ; unsetenv ( ) ; unsetenv ( ) ; if ( save_temps ) omp_requires_file = concat ( dumppfx , , NULL ) ; else omp_requires_file = make_temp_file ( ) ; xputenv ( concat ( , omp_requires_file , NULL ) ) ; fork_execute ( new_argv [ ] , CONST_CAST ( char * * , new_argv ) , true , ) ; obstack_free ( & argv_obstack , NULL ) ; unsetenv ( ) ; xputenv ( concat ( , execpath , NULL ) ) ; xputenv ( concat ( , cpath , NULL ) ) ; xputenv ( concat ( , lpath , NULL ) ) ; in = fopen ( omp_requires_file , ) ; if ( ! in ) fatal_error ( input_location , , omp_requires_file ) ; uint32_t omp_requires ; if ( fread ( & omp_requires , sizeof ( omp_requires ) , , in ) != ) fatal_error ( input_location , , omp_requires_file ) ; fclose ( in ) ; in = fopen ( ptx_name , ) ; if ( ! in ) fatal_error ( input_location , ) ; process ( in , out , omp_requires ) ;" GCC,nvptx,1,"Predict the next statement of this code snippet: if ( output_fn_ptr && ( omp_requires & GOMP_REQUIRES_REVERSE_OFFLOAD ) != ) { if ( sm_ver && sm_ver [ ] == '3' && sm_ver [ ] == '0' && sm_ver [ ] == '\n' ) { warning_at ( input_location , , ) ; fflush ( out ) ; ftruncate ( fileno ( out ) , ) ; return ; } sm_ver2 = sm_ver ; version2 = version ; } } if ( func_ids && ( omp_requires & GOMP_REQUIRES_REVERSE_OFFLOAD ) != ) { const char needle [ ] = ; fprintf ( out , , obj_count ++ ) ; fprintf ( out , ) ; for ( size_t i = ; version2 [ i ] != '\0' && version2 [ i ] != '\n' ; i ++ ) fputc ( version2 [ i ] , out ) ; fprintf ( out , ) ; for ( size_t i = ; version2 [ i ] != '\0' && sm_ver2 [ i ] != '\n' ; i ++ ) fputc ( sm_ver2 [ i ] , out ) ; fprintf ( out , ) ; size_t fidx = ; for ( id = func_ids ; id ; id = id -> next ) { if ( ! endswith ( id -> ptx_name , ) && ! strstr ( id -> ptx_name , ) ) continue ; fprintf ( out , ) ; const char * p = input + file_idx [ fidx ] ; while ( true ) { p = strstr ( p , needle ) ; if ( ! p ) { fidx ++ ; if ( fidx >= file_cnt ) break ; p = input + file_idx [ fidx ] ; continue ; } p += strlen ( needle ) ; if ( ! startswith ( p , id -> ptx_name ) ) continue ; p += strlen ( id -> ptx_name ) ; if ( * p != '\n' ) continue ; p ++ ;" GCC,nvptx,2,"Predict the next statement of this code snippet: if ( ptx_name ) maybe_unlink ( ptx_name ) ;" GCC,nvptx,3,"Predict the next statement of this code snippet: if ( ptx_name ) maybe_unlink ( ptx_name ) ; if ( omp_requires_file ) maybe_unlink ( omp_requires_file ) ;" GCC,nvptx,4,"Predict the next statement of this code snippet: static unsigned alloc = ; static Stmt * heap = ; if ( ! alloc ) { alloc = ; heap = XNEWVEC ( Stmt , alloc ) ; } Stmt * stmt = heap ++ ;" GCC,nvptx,5,"Predict the next statement of this code snippet: static unsigned alloc = ; static Stmt * heap = ; if ( ! alloc ) { alloc = ; heap = XNEWVEC ( Stmt , alloc ) ; } Stmt * stmt = heap ++ ; alloc -- ; tokens -> space = ; stmt -> next = ; stmt -> vis = vis ; stmt -> tokens = tokens ; stmt -> len = end - tokens ;" GCC,nvptx,6,"Predict the next statement of this code snippet: const char * collect_gcc_options = getenv ( ) ; if ( ! collect_gcc_options ) fatal_error ( input_location , ) ; struct obstack argv_obstack ; obstack_init ( & argv_obstack ) ; obstack_ptr_grow ( & argv_obstack , compiler ) ; obstack_ptr_grow ( & argv_obstack , infile ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , outfile ) ; obstack_ptr_grow ( & argv_obstack , NULL ) ; const char * * new_argv = XOBFINISH ( & argv_obstack , const char * * ) ; fork_execute ( new_argv [ ] , CONST_CAST ( char * * , new_argv ) , true ) ; obstack_free ( & argv_obstack , NULL ) ;" GCC,nvptx,7,"Predict the next statement of this code snippet: if ( ! collect_gcc_options ) fatal_error ( input_location , ) ; struct obstack argv_obstack ; obstack_init ( & argv_obstack ) ; obstack_ptr_grow ( & argv_obstack , compiler ) ; obstack_ptr_grow ( & argv_obstack , infile ) ; obstack_ptr_grow ( & argv_obstack , ) ;" GCC,nvptx,8,"Predict the next statement of this code snippet: size_t len = ( strlen ( gcc_path ) + + strlen ( GCC_INSTALL_NAME ) + ) ; char * driver = XALLOCAVEC ( char , len ) ; if ( strcmp ( gcc_exec , collect_gcc ) == ) gcc_path = NULL ; int driver_used = ; if ( gcc_path != NULL ) driver_used = sprintf ( driver , , gcc_path ) ; sprintf ( driver + driver_used , , GCC_INSTALL_NAME ) ; bool found = false ; if ( gcc_path == NULL ) found = true ; else if ( access_check ( driver , X_OK ) == ) found = true ; else { driver = NULL ; char * * paths = NULL ; unsigned n_paths ; n_paths = parse_env_var ( getenv ( ) , & paths ) ; for ( unsigned i = ; i < n_paths ; i ++ ) { len = strlen ( paths [ i ] ) + + strlen ( GCC_INSTALL_NAME ) + ; driver = XRESIZEVEC ( char , driver , len ) ; sprintf ( driver , , paths [ i ] , GCC_INSTALL_NAME ) ; if ( access_check ( driver , X_OK ) == ) { found = true ; break ; } }" GCC,nvptx,9,"Predict the next statement of this code snippet: tok ++ ; } comment = alloc_comment ( start , tok ) ; comment -> vis |= V_prefix_comment ; } if ( tok -> kind == K_dotted ) { if ( is_keyword ( tok , ) || is_keyword ( tok , ) || is_keyword ( tok , ) ) { if ( comment ) append_stmt ( & decls , comment ) ; tok = parse_list_nosemi ( tok ) ; } else { unsigned vis = ; const Token * def = ; unsigned is_decl = ; Token * start ; for ( start = tok ; tok -> kind && tok -> kind != '=' && tok -> kind != K_comment && tok -> kind != '{' && tok -> kind != ';' ; tok ++ ) { if ( is_keyword ( tok , ) || is_keyword ( tok , ) ) vis |= V_var ; else if ( is_keyword ( tok , ) || is_keyword ( tok , ) ) vis |= V_func ; else if ( is_keyword ( tok , ) ) vis |= V_global ; else if ( is_keyword ( tok , ) ) is_decl = ; else if ( is_keyword ( tok , ) ) vis |= V_weak ; if ( tok -> kind == '(' ) { tok [ ] . space = ; tok [ ] . space = ; } else if ( tok -> kind == ')' && tok [ ] . kind != ';' ) tok [ ] . space = ; if ( tok -> kind == K_symbol ) def = tok ;" GCC,nvptx,10,"Predict the next statement of this code snippet: tok [ ] . space = ; tok [ ] . space = ; } else if ( tok -> kind == ')' && tok [ ] . kind != ';' ) tok [ ] . space = ; if ( tok -> kind == K_symbol ) def = tok ; } if ( ! tok -> kind ) { if ( comment ) append_stmt ( & fns , comment ) ; } else if ( tok -> kind == '{' || tok -> kind == K_comment ) { Stmt * stmt = alloc_stmt ( vis , start , tok , def ) ; if ( comment ) { append_stmt ( & fns , comment ) ; stmt -> vis |= V_prefix_comment ; } append_stmt ( & fns , stmt ) ; tok = parse_insn ( tok ) ; } else { int assign = tok -> kind == '=' ; tok ++ -> end = ; if ( ( vis & V_mask ) == V_var && ! is_decl ) { Stmt * stmt = alloc_stmt ( vis , start , tok , def ) ; if ( comment ) { append_stmt ( & vars , comment ) ; stmt -> vis |= V_prefix_comment ; } append_stmt ( & vars , stmt ) ; if ( assign ) tok = parse_init ( tok ) ; } else { Stmt * stmt = alloc_stmt ( vis , start , tok , ) ; if ( comment ) { append_stmt ( & decls , comment ) ; stmt -> vis |= V_prefix_comment ; } append_stmt ( & decls , stmt ) ; }" GCC,nvptx,11,"Predict the next statement of this code snippet: if ( tok [ - ] . ptr [ ] != '$' ) sym = tok - ; tok [ - ] . end = ; s = V_label ; break ; case '@' : tok -> space = ; if ( tok -> kind == '!' ) tok ++ ; if ( tok -> kind == K_symbol ) sym = tok ; tok ++ ; s = V_pred ; break ; default : for ( ; tok -> kind != ';' ; tok ++ ) { if ( tok -> kind == ',' ) tok [ ] . space = ; else if ( tok -> kind == K_symbol ) sym = tok ; } tok ++ -> end = ; break ; } stmt = alloc_stmt ( s , start , tok , sym ) ; append_stmt ( & fns , stmt ) ; if ( ! tok [ - ] . end && tok [ ] . kind == K_comment ) { stmt -> vis |= V_no_eol ; stmt = alloc_comment ( tok , tok + ) ; append_stmt ( & fns , stmt ) ; tok ++ ; }" GCC,nvptx,12,"Predict the next statement of this code snippet: while ( ( ++ tok ) -> kind == ',' ) ; tok [ - ] . end = ; Stmt * stmt = alloc_stmt ( V_dot , start , tok , ) ;" GCC,nvptx,13,"Predict the next statement of this code snippet: write_stmts ( out , rev_stmts ( fns ) ) ; fprintf ( out , ) ; fprintf ( out , ) ; for ( id_map * id = var_ids ; id ; id = id -> next , nvars ++ ) fprintf ( out , , id -> ptx_name , id -> next ? : ) ; fprintf ( out , ) ; fprintf ( out , ) ; for ( id_map * id = func_ids ; id ; id = id -> next , nfuncs ++ ) fprintf ( out , , id -> ptx_name , id -> next ? : ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , , nvars , nfuncs ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , , GOMP_DEVICE_NVIDIA_PTX ) ; fprintf ( out , ) ; fprintf ( out , ) ;" GCC,nvptx,14,"Predict the next statement of this code snippet: unsigned int nvars = , nfuncs = ; do tok = parse_file ( tok ) ; while ( tok -> kind ) ; fprintf ( out , ) ; write_stmts ( out , rev_stmts ( decls ) ) ; write_stmts ( out , rev_stmts ( vars ) ) ; write_stmts ( out , rev_stmts ( fns ) ) ; fprintf ( out , ) ; fprintf ( out , ) ; for ( id_map * id = var_ids ; id ; id = id -> next , nvars ++ ) fprintf ( out , , id -> ptx_name , id -> next ? : ) ; fprintf ( out , ) ; fprintf ( out , ) ; for ( id_map * id = func_ids ; id ; id = id -> next , nfuncs ++ ) fprintf ( out , , id -> ptx_name , id -> next ? : ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , , nvars , nfuncs ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , ) ; fprintf ( out , , GOMP_DEVICE_NVIDIA_PTX ) ; fprintf ( out , ) ;" GCC,nvptx,15,"Predict the next statement of this code snippet: char * buffer ; if ( ! fseek ( stream , , SEEK_END ) ) { long s = ftell ( stream ) ; if ( s >= ) alloc = s + ; fseek ( stream , , SEEK_SET ) ; } buffer = XNEWVEC ( char , alloc ) ; for ( ; ; ) { size_t n = fread ( buffer + base , , alloc - base - , stream ) ; if ( ! n ) break ; base += n ; if ( base + == alloc ) { alloc *= ; buffer = XRESIZEVEC ( char , buffer , alloc ) ; }" GCC,nvptx,16,"Predict the next statement of this code snippet: Stmt * prev = ; Stmt * next ; while ( stmt ) { next = stmt -> next ; stmt -> next = prev ; prev = stmt ; stmt = next ; }" GCC,nvptx,17,"Predict the next statement of this code snippet: else break ; } break ; case '""' : kind = K_string ; while ( * ptr ) if ( * ptr == '""' ) { ptr ++ ; break ; } else if ( * ptr ++ == '\\' ) ptr ++ ; break ; case '.' : if ( * ptr < '0' || * ptr > '9' ) { kind = K_dotted ; ws = not_comment ; goto ident ; } case '0' ... '9' : kind = K_number ; goto ident ; break ; case '$' : case '%' : kind = K_ident ; goto ident ; case 'a' ... 'z' : case 'A' ... 'Z' : case '_' : kind = K_symbol ; ident : for ( ; * ptr ; ptr ++ ) { if ( * ptr >= 'A' && * ptr <= 'Z' ) continue ; if ( * ptr >= 'a' && * ptr <= 'z' ) continue ; if ( * ptr >= '0' && * ptr <= '9' ) continue ; if ( * ptr == '_' || * ptr == '$' ) continue ; if ( * ptr == '.' && kind != K_dotted ) continue ; if ( ( * ptr == '+' || * ptr == '-' ) && kind == K_number && ( ptr [ - ] == 'e' || ptr [ - ] == 'E' || ptr [ - ] == 'p' || ptr [ - ] == 'P' ) ) continue ; break ; } if ( * ptr == ':' ) { ptr ++ ; kind = K_label ; } break ; } if ( alloc == num ) { alloc *= ; toks = XRESIZEVEC ( Token , toks , alloc ) ; } Token * tok = toks + num ; tok -> kind = kind ; tok -> space = ws ; tok -> end = ; tok -> ptr = base ; tok -> len = ptr - base - in_comment ; in_comment &= ; not_comment = kind != K_comment ; if ( eol && num ) tok [ - ] . end = ; if ( ! kind ) break ;" GCC,nvptx,18,"Predict the next statement of this code snippet: eol = in_comment ; in_comment = ; for ( ; * ptr ; ptr ++ ) { if ( * ptr == '\n' ) { ptr ++ ; break ; } if ( ptr [ ] == '*' && ptr [ ] == '/' ) { in_comment = ; ptr += ; break ; } } kind = K_comment ; } else break ; } break ; case '""' : kind = K_string ; while ( * ptr ) if ( * ptr == '""' ) { ptr ++ ; break ; } else if ( * ptr ++ == '\\' ) ptr ++ ; break ; case '.' : if ( * ptr < '0' || * ptr > '9' ) { kind = K_dotted ; ws = not_comment ; goto ident ; } case '0' ... '9' : kind = K_number ; goto ident ; break ; case '$' : case '%' : kind = K_ident ; goto ident ; case 'a' ... 'z' : case 'A' ... 'Z' : case '_' : kind = K_symbol ; ident : for ( ; * ptr ; ptr ++ ) { if ( * ptr >= 'A' && * ptr <= 'Z' ) continue ; if ( * ptr >= 'a' && * ptr <= 'z' ) continue ; if ( * ptr >= '0' && * ptr <= '9' ) continue ; if ( * ptr == '_' || * ptr == '$' ) continue ; if ( * ptr == '.' && kind != K_dotted ) continue ; if ( ( * ptr == '+' || * ptr == '-' ) && kind == K_number && ( ptr [ - ] == 'e' || ptr [ - ] == 'E' || ptr [ - ] == 'p' || ptr [ - ] == 'P' ) ) continue ; break ; } if ( * ptr == ':' ) { ptr ++ ; kind = K_label ; } break ; } if ( alloc == num ) { alloc *= ; toks = XRESIZEVEC ( Token , toks , alloc ) ; } Token * tok = toks + num ; tok -> kind = kind ; tok -> space = ws ; tok -> end = ;" GCC,nvptx,19,"Predict the next statement of this code snippet: void tool_cleanup ( bool ) {" GCC,nvptx,20,"Predict the next statement of this code snippet: void tool_cleanup ( bool ) {" GCC,nvptx,21,"Predict the next statement of this code snippet: static void write_stmt ( FILE * out , const Stmt * stmt ) { if ( ( stmt -> vis & V_mask ) != V_comment ) { write_tokens ( out , stmt -> tokens , stmt -> len , ( stmt -> vis & V_mask ) == V_pred ) ;" GCC,nvptx,22,"Predict the next statement of this code snippet: if ( tok -> space ) fputc ( ' ' , out ) ; switch ( tok -> kind ) { case K_string : { const char * c = tok -> ptr + ; size_t len = tok -> len - ; fputs ( , out ) ; while ( len ) { const char * bs = ( const char * ) memchr ( c , '\\' , len ) ; size_t l = bs ? bs - c : len ; fprintf ( out , , ( int ) l , c ) ; len -= l ;" GCC,nvptx,23,"Predict the next statement of this code snippet: fputs ( , out ) ; for ( ; len -- ; toks ++ ) write_token ( out , toks ) ;" GCC,nvptx,24,"Predict the next statement of this code snippet: for ( ; len -- ; toks ++ ) write_token ( out , toks ) ; if ( spc ) fputs ( , out ) ;" GCC,nvptx,25,"Predict the next statement of this code snippet: const char * gcc_path = dirname ( ASTRDUP ( collect_gcc ) ) ; const char * gcc_exec = basename ( ASTRDUP ( collect_gcc ) ) ; size_t len = ( strlen ( gcc_path ) + + strlen ( GCC_INSTALL_NAME ) + ) ; char * driver = XALLOCAVEC ( char , len ) ; if ( strcmp ( gcc_exec , collect_gcc ) == ) gcc_path = NULL ; int driver_used = ; if ( gcc_path != NULL ) driver_used = sprintf ( driver , , gcc_path ) ; sprintf ( driver + driver_used , , GCC_INSTALL_NAME ) ; bool found = false ; if ( gcc_path == NULL ) found = true ; else if ( access_check ( driver , X_OK ) == ) found = true ; else { driver = NULL ; char * * paths = NULL ; unsigned n_paths ; n_paths = parse_env_var ( getenv ( ) , & paths ) ; for ( unsigned i = ; i < n_paths ; i ++ ) { len = strlen ( paths [ i ] ) + + strlen ( GCC_INSTALL_NAME ) + ; driver = XRESIZEVEC ( char , driver , len ) ; sprintf ( driver , , paths [ i ] , GCC_INSTALL_NAME ) ; if ( access_check ( driver , X_OK ) == ) { found = true ; break ; } } free_array_of_ptrs ( ( void * * ) paths , n_paths ) ; } if ( ! found ) fatal_error ( input_location , , GCC_INSTALL_NAME ) ; expandargv ( & argc , & argv ) ; bool fopenmp = false ; for ( int i = ; i < argc ; i ++ ) { if ( strncmp ( argv [ i ] , STR , strlen ( STR ) ) == ) { if ( strcmp ( argv [ i ] + strlen ( STR ) , ) == ) offload_abi = OFFLOAD_ABI_LP64 ; else if ( strcmp ( argv [ i ] + strlen ( STR ) , ) == ) offload_abi = OFFLOAD_ABI_ILP32 ; else fatal_error ( input_location , STR ) ; } else if ( strcmp ( argv [ i ] , ) == ) fopenmp = true ; else if ( strcmp ( argv [ i ] , ) == ) save_temps = true ; else if ( strcmp ( argv [ i ] , ) == ) verbose = true ; } struct obstack argv_obstack ; obstack_init ( & argv_obstack ) ; obstack_ptr_grow ( & argv_obstack , driver ) ; if ( save_temps ) obstack_ptr_grow ( & argv_obstack , ) ;" GCC,nvptx,26,"Predict the next statement of this code snippet: case '\n' : fprintf ( out , ) ; while ( strncmp ( input + i , , ) == ) { i += ; if ( strncmp ( input + i , , ) == ) record_id ( input + i + , & vars_tail ) ; else if ( strncmp ( input + i , , ) == ) record_id ( input + i + , & funcs_tail ) ; else abort ( ) ; while ( input [ i ++ ] != '\n' ) continue ; } continue ; case '""' : case '\\' : putc ( '\\' , out ) ; break ; default : break ; } putc ( c , out ) ; } fprintf ( out , ) ; } fprintf ( out , ) ; for ( comma = , ix = ; ix != obj_count ; comma = , ix ++ ) fprintf ( out , , comma , ix , ix ) ; fprintf ( out , ) ; fprintf ( out , ) ; for ( comma = , id = var_ids ; id ; comma = , id = id -> next ) fprintf ( out , , comma , id -> ptx_name ) ;" GCC,nvptx,27,"Predict the next statement of this code snippet: struct stat st ; if ( stat ( name , & st ) < || S_ISDIR ( st . st_mode ) ) return - ; } return access ( name , mode ) ;" GCC,nvptx,28,"Predict the next statement of this code snippet: obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ) ; switch ( offload_abi ) { case OFFLOAD_ABI_LP64 : obstack_ptr_grow ( & argv_obstack , ) ; break ; case OFFLOAD_ABI_ILP32 : obstack_ptr_grow ( & argv_obstack , ) ; break ; default : gcc_unreachable ( ) ; } obstack_ptr_grow ( & argv_obstack , infile ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , ) ; obstack_ptr_grow ( & argv_obstack , outfile ) ; obstack_ptr_grow ( & argv_obstack , NULL ) ; const char * * new_argv = XOBFINISH ( & argv_obstack , const char * * ) ; fork_execute ( new_argv [ ] , CONST_CAST ( char * * , new_argv ) , true , ) ;" GCC,nvptx,29,"Predict the next statement of this code snippet: for ( i = ; i < n ; i ++ ) { if ( ! ptr [ i ] ) break ; free ( ptr [ i ] ) ; } free ( ptr ) ; return ;" GCC,nvptx,30,"Predict the next statement of this code snippet: void maybe_unlink ( const char * file ) { if ( ! save_temps ) {" GCC,nvptx,31,"Predict the next statement of this code snippet: tool_cleanup ( false ) ;" GCC,nvptx,32,"Predict the next statement of this code snippet: char * * values ; unsigned num = , i ; curval = strchr ( str , ':' ) ; while ( curval ) { num ++ ; curval = strchr ( curval + , ':' ) ; } values = ( char * * ) xmalloc ( num * sizeof ( char * ) ) ; curval = str ; nextval = strchr ( curval , ':' ) ; if ( nextval == NULL ) nextval = strchr ( curval , '\0' ) ; for ( i = ; i < num ; i ++ ) {" GCC,nvptx,33,"Predict the next statement of this code snippet: while ( input [ i ++ ] != '\n' ) continue ; } continue ; case '""' : case '\\' : putc ( '\\' , out ) ; break ; default : break ; } putc ( c , out ) ; } fprintf ( out , ) ; } fprintf ( out , ) ; for ( comma = , ix = ; ix != obj_count ; comma = , ix ++ ) fprintf ( out , , comma , ix , ix ) ; fprintf ( out , ) ; fprintf ( out , ) ; for ( comma = , id = var_ids ; id ; comma = , id = id -> next ) fprintf ( out , , comma , id -> ptx_name ) ; fprintf ( out , ) ; fprintf ( out , , GOMP_DIM_MAX ) ; for ( comma = , id = func_ids ; id ; comma = , id = id -> next ) fprintf ( out , , comma , id -> ptx_name ) ; fprintf ( out , ) ; fprintf ( out , ) ;" GCC,nvptx,34,"Predict the next statement of this code snippet: if ( ! fseek ( stream , , SEEK_END ) ) { long s = ftell ( stream ) ; if ( s >= ) alloc = s + ; fseek ( stream , , SEEK_SET ) ; } buffer = XNEWVEC ( char , alloc ) ; for ( ; ; ) { size_t n = fread ( buffer + base , , alloc - base - , stream ) ; if ( ! n ) break ; base += n ; if ( base + == alloc ) { alloc *= ;" GCC,nvptx,35,"Predict the next statement of this code snippet: } buffer = XNEWVEC ( char , alloc ) ; for ( ; ; ) { size_t n = fread ( buffer + base , , alloc - base - , stream ) ; if ( ! n ) break ; base += n ; if ( base + == alloc ) { alloc *= ; buffer = XRESIZEVEC ( char , buffer , alloc ) ; } } buffer [ base ] = ; * plen = base ;" GCC,nvptx,36,"Predict the next statement of this code snippet: if ( ptx_name ) maybe_unlink ( ptx_name ) ;" GCC,nvptx,37,"Predict the next statement of this code snippet: if ( ptx_name ) maybe_unlink ( ptx_name ) ;" GCC,nvptx,38,"Predict the next statement of this code snippet: if ( verbose ) fprintf ( stderr , , string ) ; putenv ( CONST_CAST ( char * , string ) ) ;" GCC,nvptx,39,"Predict the next statement of this code snippet: putenv ( CONST_CAST ( char * , string ) ) ;" GCC,nvptx,40,"Predict the next statement of this code snippet: if ( TARGET_UNIFORM_SIMT ) cpp_define ( parse_in , ) ; const char * ptx_sm = NULL ; { \ if ( TARGET_SM ## XX ) \ ptx_sm = # XX ; \ } cpp_define ( parse_in , ptx_sm ) ; { unsigned major = ptx_version_to_number ( ( ptx_version ) ptx_version_option , true ) ; unsigned minor = ptx_version_to_number ( ( ptx_version ) ptx_version_option , false ) ; cpp_define_formatted ( parse_in , , major ) ;" GCC,nvptx,41,"Predict the next statement of this code snippet: if ( TARGET_UNIFORM_SIMT ) cpp_define ( parse_in , ) ; const char * ptx_sm = NULL ; { \ if ( TARGET_SM ## XX ) \ ptx_sm = # XX ; \ } cpp_define ( parse_in , ptx_sm ) ; { unsigned major = ptx_version_to_number ( ( ptx_version ) ptx_version_option , true ) ; unsigned minor = ptx_version_to_number ( ( ptx_version ) ptx_version_option , false ) ;" GCC,nvptx,42,"Predict the next statement of this code snippet: argno = write_arg_type ( s , , argno , type , prototyped ) ; } if ( stdarg_p ( fntype ) ) argno = write_arg_type ( s , ARG_POINTER_REGNUM , argno , ptr_type_node , true ) ; if ( DECL_STATIC_CHAIN ( decl ) || cfun -> machine -> has_chain ) write_arg_type ( s , STATIC_CHAIN_REGNUM , DECL_STATIC_CHAIN ( decl ) ? argno : - , ptr_type_node , true ) ; fprintf ( file , , s . str ( ) . c_str ( ) ) ; if ( ! crtl -> is_leaf ) crtl -> is_leaf = leaf_function_p ( ) ; HOST_WIDE_INT sz = get_frame_size ( ) ; bool need_frameptr = sz || cfun -> machine -> has_chain ; int alignment = crtl -> stack_alignment_needed / BITS_PER_UNIT ; if ( ! TARGET_SOFT_STACK ) { if ( cfun -> machine -> has_varadic ) init_frame ( file , STACK_POINTER_REGNUM , UNITS_PER_WORD , crtl -> outgoing_args_size ) ; if ( need_frameptr ) init_frame ( file , FRAME_POINTER_REGNUM , alignment , ROUND_UP ( sz , GET_MODE_SIZE ( DImode ) ) ) ; } else if ( need_frameptr || cfun -> machine -> has_varadic || cfun -> calls_alloca || ( cfun -> machine -> has_simtreg && ! crtl -> is_leaf ) ) init_softstack_frame ( file , alignment , sz ) ; if ( cfun -> machine -> has_simtreg ) { unsigned HOST_WIDE_INT & simtsz = cfun -> machine -> simt_stack_size ; unsigned HOST_WIDE_INT & align = cfun -> machine -> simt_stack_align ; align = MAX ( align , GET_MODE_SIZE ( DImode ) ) ; if ( ! crtl -> is_leaf || cfun -> calls_alloca ) simtsz = HOST_WIDE_INT_M1U ; if ( simtsz == HOST_WIDE_INT_M1U ) simtsz = nvptx_softstack_size ; if ( cfun -> machine -> has_softstack ) simtsz += POINTER_SIZE / ; simtsz = ROUND_UP ( simtsz , GET_MODE_SIZE ( DImode ) ) ; if ( align > GET_MODE_SIZE ( DImode ) ) simtsz += align - GET_MODE_SIZE ( DImode ) ; if ( simtsz ) fprintf ( file , HOST_WIDE_INT_PRINT_DEC , simtsz ) ; } if ( cfun -> machine -> red_partition ) regno_reg_rtx [ REGNO ( cfun -> machine -> red_partition ) ] = cfun -> machine -> red_partition ; int maxregs = max_reg_num ( ) ; for ( int i = LAST_VIRTUAL_REGISTER + ; i < maxregs ; i ++ ) { if ( regno_reg_rtx [ i ] != const0_rtx ) { machine_mode mode = PSEUDO_REGNO_MODE ( i ) ; machine_mode split = maybe_split_mode ( mode ) ;" GCC,nvptx,43,"Predict the next statement of this code snippet: if ( ! TARGET_SOFT_STACK ) { if ( cfun -> machine -> has_varadic ) init_frame ( file , STACK_POINTER_REGNUM , UNITS_PER_WORD , crtl -> outgoing_args_size ) ; if ( need_frameptr ) init_frame ( file , FRAME_POINTER_REGNUM , alignment , ROUND_UP ( sz , GET_MODE_SIZE ( DImode ) ) ) ; } else if ( need_frameptr || cfun -> machine -> has_varadic || cfun -> calls_alloca || ( cfun -> machine -> has_simtreg && ! crtl -> is_leaf ) ) init_softstack_frame ( file , alignment , sz ) ; if ( cfun -> machine -> has_simtreg ) { unsigned HOST_WIDE_INT & simtsz = cfun -> machine -> simt_stack_size ; unsigned HOST_WIDE_INT & align = cfun -> machine -> simt_stack_align ; align = MAX ( align , GET_MODE_SIZE ( DImode ) ) ; if ( ! crtl -> is_leaf || cfun -> calls_alloca ) simtsz = HOST_WIDE_INT_M1U ; if ( simtsz == HOST_WIDE_INT_M1U ) simtsz = nvptx_softstack_size ; if ( cfun -> machine -> has_softstack ) simtsz += POINTER_SIZE / ; simtsz = ROUND_UP ( simtsz , GET_MODE_SIZE ( DImode ) ) ; if ( align > GET_MODE_SIZE ( DImode ) ) simtsz += align - GET_MODE_SIZE ( DImode ) ; if ( simtsz ) fprintf ( file , HOST_WIDE_INT_PRINT_DEC , simtsz ) ; } if ( cfun -> machine -> red_partition ) regno_reg_rtx [ REGNO ( cfun -> machine -> red_partition ) ] = cfun -> machine -> red_partition ; int maxregs = max_reg_num ( ) ; for ( int i = LAST_VIRTUAL_REGISTER + ; i < maxregs ; i ++ ) { if ( regno_reg_rtx [ i ] != const0_rtx ) { machine_mode mode = PSEUDO_REGNO_MODE ( i ) ; machine_mode split = maybe_split_mode ( mode ) ; if ( split_mode_p ( mode ) ) mode = split ; fprintf ( file , , nvptx_ptx_type_from_mode ( mode , true ) ) ; output_reg ( file , i , split , - ) ; fprintf ( file , ) ; } }" GCC,nvptx,44,"Predict the next statement of this code snippet: if ( ! CONST_INT_P ( cpl ) ) { error_at ( EXPR_LOCATION ( exp ) , ) ; return const0_rtx ; } pred = gen_reg_rtx ( BImode ) ; if ( ! REG_P ( redop ) ) redop = copy_to_mode_reg ( SImode , redop ) ; emit_insn ( gen_rtx_SET ( pred , gen_rtx_NE ( BImode , redop , GEN_INT ( ) ) ) ) ; redop = pred ; rtx pat ; switch ( code ) { case NVPTX_BUILTIN_BAR_RED_AND : dst = gen_reg_rtx ( BImode ) ; pat = gen_nvptx_barred_and ( dst , bar , nthr , cpl , redop ) ; break ; case NVPTX_BUILTIN_BAR_RED_OR : dst = gen_reg_rtx ( BImode ) ; pat = gen_nvptx_barred_or ( dst , bar , nthr , cpl , redop ) ; break ; case NVPTX_BUILTIN_BAR_RED_POPC : dst = gen_reg_rtx ( SImode ) ; pat = gen_nvptx_barred_popc ( dst , bar , nthr , cpl , redop ) ; break ; default : gcc_unreachable ( ) ; } emit_insn ( pat ) ; if ( GET_MODE ( dst ) == BImode ) { rtx tmp = gen_reg_rtx ( mode ) ; emit_insn ( gen_rtx_SET ( tmp , gen_rtx_NE ( mode , dst , GEN_INT ( ) ) ) ) ;" GCC,nvptx,45,"Predict the next statement of this code snippet: case NVPTX_BUILTIN_SHUFFLE : case NVPTX_BUILTIN_SHUFFLELL : return nvptx_expand_shuffle ( exp , target , mode , ignore ) ; case NVPTX_BUILTIN_WORKER_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , false ) ; case NVPTX_BUILTIN_VECTOR_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , true ) ; case NVPTX_BUILTIN_CMP_SWAP : case NVPTX_BUILTIN_CMP_SWAPLL : return nvptx_expand_cmp_swap ( exp , target , mode , ignore ) ;" GCC,nvptx,46,"Predict the next statement of this code snippet: tree lhs = gimple_call_lhs ( call ) ; tree ref_to_res = gimple_call_arg ( call , ) ; tree var = gimple_call_arg ( call , ) ; int level = TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; enum tree_code op = ( enum tree_code ) TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; gimple_seq seq = NULL ; tree r = NULL_TREE ; push_gimplify_context ( true ) ; if ( level == GOMP_DIM_VECTOR && oa -> vector_length == PTX_WARP_SIZE ) { for ( int shfl = PTX_WARP_SIZE / ; shfl > ; shfl = shfl >> ) { tree other_var = make_ssa_name ( TREE_TYPE ( var ) ) ; nvptx_generate_vector_shuffle ( gimple_location ( call ) , other_var , var , shfl , & seq ) ; r = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( r , fold_build2 ( op , TREE_TYPE ( var ) , var , other_var ) , & seq ) ; var = r ;" GCC,nvptx,47,"Predict the next statement of this code snippet: DEF ( MEMBAR_CTA , , ( VOID , VOID , NULL_TREE ) ) ; DEF ( BAR_RED_AND , , ( UINT , UINT , UINT , UINT , UINT , NULL_TREE ) ) ; DEF ( BAR_RED_OR , , ( UINT , UINT , UINT , UINT , UINT , NULL_TREE ) ) ; DEF ( BAR_RED_POPC , , ( UINT , UINT , UINT , UINT , UINT , NULL_TREE ) ) ;" GCC,nvptx,48,"Predict the next statement of this code snippet: flag_var_tracking = ; if ( nvptx_optimize < ) nvptx_optimize = optimize > ; declared_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; needed_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; declared_libfuncs_htab = hash_table < declared_libfunc_hasher > :: create_ggc ( ) ; oacc_bcast_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( oacc_bcast_sym , DATA_AREA_SHARED ) ; oacc_bcast_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; oacc_bcast_partition = ; worker_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_red_sym , DATA_AREA_SHARED ) ; worker_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; vector_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( vector_red_sym , DATA_AREA_SHARED ) ; vector_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ;" GCC,nvptx,49,"Predict the next statement of this code snippet: declared_libfuncs_htab = hash_table < declared_libfunc_hasher > :: create_ggc ( ) ; oacc_bcast_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( oacc_bcast_sym , DATA_AREA_SHARED ) ; oacc_bcast_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; oacc_bcast_partition = ; worker_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_red_sym , DATA_AREA_SHARED ) ; worker_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; vector_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( vector_red_sym , DATA_AREA_SHARED ) ; vector_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; vector_red_partition = ; gang_private_shared_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( gang_private_shared_sym , DATA_AREA_SHARED ) ; gang_private_shared_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; diagnose_openacc_conflict ( TARGET_GOMP , ) ; diagnose_openacc_conflict ( TARGET_SOFT_STACK , ) ; diagnose_openacc_conflict ( TARGET_UNIFORM_SIMT , ) ;" GCC,nvptx,50,"Predict the next statement of this code snippet: if ( is_defn ) write_fn_proto_1 ( s , false , name , decl , force_public ) ; write_fn_proto_1 ( s , is_defn , name , decl , force_public ) ; if ( replaced_dots ) XDELETE ( replaced_dots ) ;" GCC,nvptx,51,"Predict the next statement of this code snippet: s << ( write_as_kernel ( DECL_ATTRIBUTES ( decl ) ) ? : ) ; tree fntype = TREE_TYPE ( decl ) ; tree result_type = TREE_TYPE ( fntype ) ; int not_atomic_weak_arg = - ; if ( DECL_BUILT_IN_CLASS ( decl ) == BUILT_IN_NORMAL ) switch ( DECL_FUNCTION_CODE ( decl ) ) { case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1 : case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2 : case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4 : case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8 : case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16 : not_atomic_weak_arg = ; break ; default : break ; } bool return_in_mem = write_return_type ( s , true , result_type ) ; s << name ; int argno = ; if ( return_in_mem ) argno = write_arg_type ( s , - , argno , ptr_type_node , true ) ; tree args = TYPE_ARG_TYPES ( fntype ) ; bool prototyped = true ; if ( ! args ) { args = DECL_ARGUMENTS ( decl ) ; prototyped = false ; } for ( ; args ; args = TREE_CHAIN ( args ) , not_atomic_weak_arg -- ) {" GCC,nvptx,52,"Predict the next statement of this code snippet: static void begin_decl_field ( void ) { if ( decl_offset == decl_chunk_size ) fprintf ( asm_out_file , ) ; else fprintf ( asm_out_file , ) ;" GCC,nvptx,53,"Predict the next statement of this code snippet: static void begin_decl_field ( void ) { if ( decl_offset == decl_chunk_size ) fprintf ( asm_out_file , ) ; else fprintf ( asm_out_file , ) ;" GCC,nvptx,54,"Predict the next statement of this code snippet: fprintf ( file , , is_public ? : ) ; assemble_name_raw ( file , name ) ; fputc ( '\n' , file ) ; if ( TREE_CODE ( type ) == ARRAY_TYPE ) type = TREE_TYPE ( type ) ;" GCC,nvptx,55,"Predict the next statement of this code snippet: else if ( mode == TImode ) { * pmode = DImode ; return ; } return ;" GCC,nvptx,56,"Predict the next statement of this code snippet: addr_space_t nvptx_addr_space_from_address ( rtx addr ) { while ( GET_CODE ( addr ) == PLUS || GET_CODE ( addr ) == CONST ) addr = XEXP ( addr , ) ; if ( GET_CODE ( addr ) != SYMBOL_REF ) return ADDR_SPACE_GENERIC ; tree decl = SYMBOL_REF_DECL ( addr ) ; if ( decl == NULL_TREE || TREE_CODE ( decl ) == FUNCTION_DECL ) return ADDR_SPACE_GENERIC ; bool is_const = ( CONSTANT_CLASS_P ( decl ) || TREE_CODE ( decl ) == CONST_DECL || TREE_READONLY ( decl ) ) ; if ( is_const ) return ADDR_SPACE_CONST ; return ADDR_SPACE_GLOBAL ;" GCC,nvptx,57,"Predict the next statement of this code snippet: bool is_const = ( CONSTANT_CLASS_P ( decl ) || TREE_CODE ( decl ) == CONST_DECL || TREE_READONLY ( decl ) ) ; if ( is_const ) return ADDR_SPACE_CONST ;" GCC,nvptx,58,"Predict the next statement of this code snippet: tree type = TREE_TYPE ( exp ) ; init_output_initializer ( file , name , type , false ) ; fprintf ( file , , TYPE_ALIGN ( TREE_TYPE ( exp ) ) / BITS_PER_UNIT , decl_chunk_size * BITS_PER_UNIT ) ;" GCC,nvptx,59,"Predict the next statement of this code snippet: if ( decl_offset != ) { if ( ! object_finished && decl_offset % decl_chunk_size != ) nvptx_assemble_value ( , decl_chunk_size ) ; fprintf ( asm_out_file , ) ; }" GCC,nvptx,60,"Predict the next statement of this code snippet: output_address ( x ) ; fprintf ( asm_out_file , ) ; } if ( off != ) fprintf ( asm_out_file , HOST_WIDE_INT_PRINT_DEC , off ) ; return true ; } HOST_WIDE_INT val ; switch ( GET_CODE ( x ) ) { case CONST_INT : val = INTVAL ( x ) ; break ; case CONST_DOUBLE : gcc_unreachable ( ) ; break ; default : gcc_unreachable ( ) ; } nvptx_assemble_value ( val , size ) ; return true ;" GCC,nvptx,61,"Predict the next statement of this code snippet: } if ( off != ) fprintf ( asm_out_file , HOST_WIDE_INT_PRINT_DEC , off ) ; return true ; } HOST_WIDE_INT val ; switch ( GET_CODE ( x ) ) { case CONST_INT : val = INTVAL ( x ) ; break ; case CONST_DOUBLE : gcc_unreachable ( ) ; break ; default : gcc_unreachable ( ) ; } nvptx_assemble_value ( val , size ) ; return true ;" GCC,nvptx,62,"Predict the next statement of this code snippet: assemble_name_raw ( file , name ) ; fputs ( , file ) ; HOST_WIDE_INT size = int_size_in_bytes ( TREE_TYPE ( decl ) ) ; fprintf ( file , , section ) ; assemble_name_raw ( file , name ) ; if ( size > ) fprintf ( file , HOST_WIDE_INT_PRINT_DEC , size ) ; fprintf ( file , ) ;" GCC,nvptx,63,"Predict the next statement of this code snippet: HOST_WIDE_INT mask = ; mask <<= this_part * BITS_PER_UNIT - ; val_part = val & ( mask - ) ; init_part |= val_part << ( BITS_PER_UNIT * chunk_offset ) ; val >>= BITS_PER_UNIT * this_part ;" GCC,nvptx,64,"Predict the next statement of this code snippet: if ( arg == pc_rtx ) return ; rtx_expr_list * args_so_far = cfun -> machine -> call_args ;" GCC,nvptx,65,"Predict the next statement of this code snippet: void nvptx_declare_object_name ( FILE * file , const char * name , const_tree decl ) { if ( decl && DECL_SIZE ( decl ) ) { tree type = TREE_TYPE ( decl ) ; unsigned HOST_WIDE_INT size ; init_output_initializer ( file , name , type , TREE_PUBLIC ( decl ) ) ; size = tree_to_uhwi ( DECL_SIZE_UNIT ( decl ) ) ; const char * section = nvptx_section_for_decl ( decl ) ; fprintf ( file , , TREE_PUBLIC ( decl ) ? : , section , DECL_ALIGN ( decl ) / BITS_PER_UNIT , decl_chunk_size * BITS_PER_UNIT ) ; assemble_name ( file , name ) ;" GCC,nvptx,66,"Predict the next statement of this code snippet: static void nvptx_end_call_args ( void ) {" GCC,nvptx,67,"Predict the next statement of this code snippet: } } if ( cfun -> machine -> funtype && ( TREE_CODE ( cfun -> machine -> funtype ) == FUNCTION_TYPE || TREE_CODE ( cfun -> machine -> funtype ) == METHOD_TYPE ) && stdarg_p ( cfun -> machine -> funtype ) ) { has_varargs = true ; cfun -> machine -> has_call_with_varargs = true ; } vec = rtvec_alloc ( nargs + + ( has_varargs ? : ) ) ; pat = gen_rtx_PARALLEL ( VOIDmode , vec ) ; if ( has_varargs ) { rtx this_arg = gen_reg_rtx ( Pmode ) ; if ( Pmode == DImode ) emit_move_insn ( this_arg , stack_pointer_rtx ) ; else emit_move_insn ( this_arg , stack_pointer_rtx ) ; XVECEXP ( pat , , nargs + ) = gen_rtx_USE ( VOIDmode , this_arg ) ; } int i ; rtx arg ; for ( i = , arg = cfun -> machine -> call_args ; arg ; arg = XEXP ( arg , ) , i ++ ) { rtx this_arg = XEXP ( arg , ) ; XVECEXP ( pat , , i ) = gen_rtx_USE ( VOIDmode , this_arg ) ; } rtx tmp_retval = retval ; t = gen_rtx_CALL ( VOIDmode , address , const0_rtx ) ; if ( retval != NULL_RTX ) { if ( ! nvptx_register_operand ( retval , GET_MODE ( retval ) ) ) tmp_retval = gen_reg_rtx ( GET_MODE ( retval ) ) ; t = gen_rtx_SET ( VOIDmode , tmp_retval , t ) ; } XVECEXP ( pat , , ) = t ; if ( ! REG_P ( callee ) && ( decl_type == NULL_TREE || ( external_decl && TYPE_ARG_TYPES ( decl_type ) == NULL_TREE ) ) ) { rtx * slot = declared_libfuncs_htab -> find_slot ( callee , INSERT ) ; if ( * slot == NULL ) { * slot = callee ;" GCC,nvptx,68,"Predict the next statement of this code snippet: if ( cfun -> machine -> funtype && ( TREE_CODE ( cfun -> machine -> funtype ) == FUNCTION_TYPE || TREE_CODE ( cfun -> machine -> funtype ) == METHOD_TYPE ) && stdarg_p ( cfun -> machine -> funtype ) ) { has_varargs = true ; cfun -> machine -> has_call_with_varargs = true ; } vec = rtvec_alloc ( nargs + + ( has_varargs ? : ) ) ; pat = gen_rtx_PARALLEL ( VOIDmode , vec ) ; if ( has_varargs ) { rtx this_arg = gen_reg_rtx ( Pmode ) ; if ( Pmode == DImode ) emit_move_insn ( this_arg , stack_pointer_rtx ) ; else emit_move_insn ( this_arg , stack_pointer_rtx ) ; XVECEXP ( pat , , nargs + ) = gen_rtx_USE ( VOIDmode , this_arg ) ; } int i ; rtx arg ; for ( i = , arg = cfun -> machine -> call_args ; arg ; arg = XEXP ( arg , ) , i ++ ) { rtx this_arg = XEXP ( arg , ) ; XVECEXP ( pat , , i ) = gen_rtx_USE ( VOIDmode , this_arg ) ; } rtx tmp_retval = retval ; t = gen_rtx_CALL ( VOIDmode , address , const0_rtx ) ; if ( retval != NULL_RTX ) { if ( ! nvptx_register_operand ( retval , GET_MODE ( retval ) ) ) tmp_retval = gen_reg_rtx ( GET_MODE ( retval ) ) ; t = gen_rtx_SET ( VOIDmode , tmp_retval , t ) ; } XVECEXP ( pat , , ) = t ; if ( ! REG_P ( callee ) && ( decl_type == NULL_TREE || ( external_decl && TYPE_ARG_TYPES ( decl_type ) == NULL_TREE ) ) ) { rtx * slot = declared_libfuncs_htab -> find_slot ( callee , INSERT ) ; if ( * slot == NULL ) { * slot = callee ;" GCC,nvptx,69,"Predict the next statement of this code snippet: fputs ( func_decls . str ( ) . c_str ( ) , asm_out_file ) ;" GCC,nvptx,70,"Predict the next statement of this code snippet: FOR_EACH_HASH_TABLE_ELEMENT ( * needed_fndecls_htab , decl , tree , iter ) nvptx_record_fndecl ( decl , true ) ;" GCC,nvptx,71,"Predict the next statement of this code snippet: fputs ( , asm_out_file ) ; fputs ( , asm_out_file ) ;" GCC,nvptx,72,"Predict the next statement of this code snippet: fputs ( , asm_out_file ) ; fputs ( , asm_out_file ) ; fprintf ( asm_out_file , , GET_MODE_BITSIZE ( Pmode ) ) ;" GCC,nvptx,73,"Predict the next statement of this code snippet: if ( named ) return gen_reg_rtx ( mode ) ;" GCC,nvptx,74,"Predict the next statement of this code snippet: static rtx nvptx_function_arg ( cumulative_args_t , machine_mode mode , const_tree , bool named ) { if ( mode == VOIDmode ) return NULL_RTX ; if ( named ) return gen_reg_rtx ( mode ) ;" GCC,nvptx,75,"Predict the next statement of this code snippet: if ( mode == TImode ) cum -> count += ; else cum -> count ++ ;" GCC,nvptx,76,"Predict the next statement of this code snippet: if ( boundary < BITS_PER_WORD ) { if ( size >= ) return BITS_PER_WORD ; if ( size >= ) return * BITS_PER_UNIT ; } }" GCC,nvptx,77,"Predict the next statement of this code snippet: fprintf ( file , ) ;" GCC,nvptx,78,"Predict the next statement of this code snippet: if ( ! named ) return NULL_RTX ; return gen_rtx_UNSPEC ( mode , gen_rtvec ( , GEN_INT ( + cum -> count ) ) , UNSPEC_ARG_REG ) ;" GCC,nvptx,79,"Predict the next statement of this code snippet: static rtx nvptx_function_value ( const_tree type , const_tree func ATTRIBUTE_UNUSED , bool outgoing ) { int unsignedp = TYPE_UNSIGNED ( type ) ; machine_mode orig_mode = TYPE_MODE ( type ) ; machine_mode mode = promote_function_mode ( type , orig_mode , & unsignedp , NULL_TREE , ) ;" GCC,nvptx,80,"Predict the next statement of this code snippet: machine_mode mode = promote_function_mode ( type , orig_mode , & unsignedp , NULL_TREE , ) ; if ( outgoing ) return gen_rtx_REG ( mode , NVPTX_RETURN_REGNUM ) ; if ( cfun -> machine -> start_call == NULL_RTX ) return gen_rtx_REG ( mode , NVPTX_RETURN_REGNUM ) ;" GCC,nvptx,81,"Predict the next statement of this code snippet: } else if ( TREE_TYPE ( TREE_TYPE ( decl ) ) != void_type_node ) { error ( , name ) ; * no_add_attrs = true ;" GCC,nvptx,82,"Predict the next statement of this code snippet: bool nvptx_hard_regno_mode_ok ( int regno , machine_mode mode ) { if ( regno != NVPTX_RETURN_REGNUM || cfun == NULL || cfun -> machine -> ret_reg_mode == VOIDmode ) return true ; return mode == cfun -> machine -> ret_reg_mode ;" GCC,nvptx,83,"Predict the next statement of this code snippet: if ( regno != NVPTX_RETURN_REGNUM || cfun == NULL || cfun -> machine -> ret_reg_mode == VOIDmode ) return true ; return mode == cfun -> machine -> ret_reg_mode ;" GCC,nvptx,84,"Predict the next statement of this code snippet: struct machine_function * p = ggc_cleared_alloc < machine_function > ( ) ; p -> ret_reg_mode = VOIDmode ;" GCC,nvptx,85,"Predict the next statement of this code snippet: static rtx nvptx_libcall_value ( machine_mode mode , const_rtx ) {" GCC,nvptx,86,"Predict the next statement of this code snippet: nvptx_record_needed_fndecl ( decl ) ; return orig_op ; } addr_space_t as = nvptx_addr_space_from_address ( op ) ; if ( as == ADDR_SPACE_GENERIC ) return orig_op ; enum unspec code ; code = ( as == ADDR_SPACE_GLOBAL ? UNSPEC_FROM_GLOBAL : as == ADDR_SPACE_LOCAL ? UNSPEC_FROM_LOCAL : as == ADDR_SPACE_SHARED ? UNSPEC_FROM_SHARED : as == ADDR_SPACE_CONST ? UNSPEC_FROM_CONST : UNSPEC_FROM_PARAM ) ;" GCC,nvptx,87,"Predict the next statement of this code snippet: rtx nvptx_maybe_convert_symbolic_operand ( rtx orig_op ) { if ( GET_MODE ( orig_op ) != Pmode ) return orig_op ; rtx op = orig_op ; while ( GET_CODE ( op ) == PLUS || GET_CODE ( op ) == CONST ) op = XEXP ( op , ) ; if ( GET_CODE ( op ) != SYMBOL_REF ) return orig_op ; tree decl = SYMBOL_REF_DECL ( op ) ; if ( decl && TREE_CODE ( decl ) == FUNCTION_DECL ) { nvptx_record_needed_fndecl ( decl ) ; return orig_op ; } addr_space_t as = nvptx_addr_space_from_address ( op ) ; if ( as == ADDR_SPACE_GENERIC ) return orig_op ;" GCC,nvptx,88,"Predict the next statement of this code snippet: init_machine_status = nvptx_init_machine_status ; flag_toplevel_reorder = ; flag_var_tracking = ; write_symbols = NO_DEBUG ;" GCC,nvptx,89,"Predict the next statement of this code snippet: } for ( int i = , argno = ; i < nargs ; i ++ ) { rtx t = XEXP ( XVECEXP ( pat , , i + ) , ) ; gcc_assert ( REG_P ( t ) ) ; machine_mode mode = GET_MODE ( t ) ; int count = maybe_split_mode ( & mode ) ; if ( count == ) fprintf ( asm_out_file , , nvptx_ptx_type_from_mode ( mode , false ) , argno ++ , REGNO ( t ) ) ; else { int n = ; while ( count -- > ) fprintf ( asm_out_file , , nvptx_ptx_type_from_mode ( mode , false ) , argno ++ , REGNO ( t ) , n ++ ) ; } } fprintf ( asm_out_file , ) ; if ( result != NULL_RTX ) fprintf ( asm_out_file , ) ; if ( decl ) { const char * name = get_fnname_from_decl ( decl ) ; name = nvptx_name_replacement ( name ) ; assemble_name ( asm_out_file , name ) ; } else output_address ( callee ) ; if ( nargs > || ( decl && DECL_STATIC_CHAIN ( decl ) ) ) { fprintf ( asm_out_file , ) ; int i , argno ; for ( i = , argno = ; i < nargs ; i ++ ) { rtx t = XEXP ( XVECEXP ( pat , , i + ) , ) ; machine_mode mode = GET_MODE ( t ) ; int count = maybe_split_mode ( & mode ) ; while ( count -- > ) { fprintf ( asm_out_file , , argno ++ ) ; if ( i + < nargs || count > ) fprintf ( asm_out_file , ) ; } } if ( decl && DECL_STATIC_CHAIN ( decl ) ) { if ( i > ) fprintf ( asm_out_file , ) ; fprintf ( asm_out_file , , reg_names [ OUTGOING_STATIC_CHAIN_REGNUM ] ) ; } fprintf ( asm_out_file , ) ; } if ( needs_tgt ) { fprintf ( asm_out_file , ) ; assemble_name ( asm_out_file , buf ) ; } fprintf ( asm_out_file , ) ; if ( result != NULL_RTX ) return ;" GCC,nvptx,90,"Predict the next statement of this code snippet: tree fntype = TREE_TYPE ( current_function_decl ) ; tree result_type = TREE_TYPE ( fntype ) ;" GCC,nvptx,91,"Predict the next statement of this code snippet: if ( RETURN_IN_REG_P ( mode ) ) { mode = arg_promotion ( mode ) ;" GCC,nvptx,92,"Predict the next statement of this code snippet: if ( decl_offset % decl_chunk_size != ) nvptx_assemble_value ( , decl_chunk_size ) ; object_finished = true ; return ; } while ( size > decl_chunk_size ) { nvptx_assemble_value ( , decl_chunk_size ) ; size -= decl_chunk_size ; } while ( size -- > ) nvptx_assemble_value ( , ) ;" GCC,nvptx,93,"Predict the next statement of this code snippet: return ! PASS_IN_REG_P ( mode , type ) ;" GCC,nvptx,94,"Predict the next statement of this code snippet: static void nvptx_print_address_operand ( FILE * file , rtx x , machine_mode ) { rtx off ; if ( GET_CODE ( x ) == CONST ) x = XEXP ( x , ) ; switch ( GET_CODE ( x ) ) {" GCC,nvptx,95,"Predict the next statement of this code snippet: rtx off ; if ( GET_CODE ( x ) == CONST ) x = XEXP ( x , ) ; switch ( GET_CODE ( x ) ) { case PLUS : off = XEXP ( x , ) ; output_address ( XEXP ( x , ) ) ; fprintf ( file , ) ; output_address ( off ) ; break ; case SYMBOL_REF : case LABEL_REF : output_addr_const ( file , x ) ; break ; default : gcc_assert ( GET_CODE ( x ) != MEM ) ; nvptx_print_operand ( file , x , ) ; break ; }" GCC,nvptx,96,"Predict the next statement of this code snippet: fputs ( , file ) ; if ( GET_CODE ( x ) == EQ ) fputs ( , file ) ; fputs ( reg_names [ regno ] , file ) ; fputs ( , file ) ; } return ; } else if ( code == '#' ) { fputs ( , file ) ; return ; } enum rtx_code x_code = GET_CODE ( x ) ; switch ( code ) { case 'A' : { addr_space_t as = nvptx_addr_space_from_address ( XEXP ( x , ) ) ; fputs ( nvptx_section_from_addr_space ( as ) , file ) ; } break ; case 'd' : gcc_assert ( x_code == CONST_INT ) ; if ( INTVAL ( x ) == ) fputs ( , file ) ; else if ( INTVAL ( x ) == ) fputs ( , file ) ; else if ( INTVAL ( x ) == ) fputs ( , file ) ; else gcc_unreachable ( ) ; break ; case 't' : op_mode = nvptx_underlying_object_mode ( x ) ; fprintf ( file , , nvptx_ptx_type_from_mode ( op_mode , true ) ) ; break ; case 'u' : op_mode = nvptx_underlying_object_mode ( x ) ; fprintf ( file , , nvptx_ptx_type_from_mode ( op_mode , false ) ) ; break ; case 'T' : fprintf ( file , , GET_MODE_BITSIZE ( GET_MODE ( x ) ) ) ; break ; case 'j' : fprintf ( file , ) ; goto common ; case 'J' : fprintf ( file , ) ; goto common ; case 'c' : op_mode = GET_MODE ( XEXP ( x , ) ) ; switch ( x_code ) { case EQ : fputs ( , file ) ; break ; case NE : if ( FLOAT_MODE_P ( op_mode ) ) fputs ( , file ) ; else fputs ( , file ) ; break ; case LE : fputs ( , file ) ; break ; case GE : fputs ( , file ) ; break ; case LT : fputs ( , file ) ; break ; case GT : fputs ( , file ) ; break ; case LEU : fputs ( , file ) ; break ; case GEU : fputs ( , file ) ; break ; case LTU : fputs ( , file ) ; break ; case GTU : fputs ( , file ) ; break ; case LTGT : fputs ( , file ) ; break ; case UNEQ : fputs ( , file ) ; break ;" GCC,nvptx,97,"Predict the next statement of this code snippet: nvptx_print_address_operand ( file , addr , VOIDmode ) ;" GCC,nvptx,98,"Predict the next statement of this code snippet: if ( TYPE_ARG_TYPES ( funtype ) == NULL_TREE && type != NULL_TREE && ! AGGREGATE_TYPE_P ( type ) ) { if ( mode == SFmode ) mode = DFmode ; mode = arg_promotion ( mode ) ;" GCC,nvptx,99,"Predict the next statement of this code snippet: if ( TYPE_ARG_TYPES ( funtype ) == NULL_TREE && type != NULL_TREE && ! AGGREGATE_TYPE_P ( type ) ) { if ( mode == SFmode ) mode = DFmode ; mode = arg_promotion ( mode ) ; }" GCC,nvptx,100,"Predict the next statement of this code snippet: if ( promote ) return ; else return ; case HImode : return ; case SImode : return ; case DImode : return ; case SFmode :" GCC,nvptx,101,"Predict the next statement of this code snippet: static bool nvptx_record_fndecl ( tree decl , bool force = false ) {" GCC,nvptx,102,"Predict the next statement of this code snippet: tree * slot = declared_fndecls_htab -> find_slot ( decl , INSERT ) ; if ( * slot == NULL ) { * slot = decl ; const char * name = get_fnname_from_decl ( decl ) ;" GCC,nvptx,103,"Predict the next statement of this code snippet: void nvptx_record_needed_fndecl ( tree decl ) {" GCC,nvptx,104,"Predict the next statement of this code snippet: if ( nvptx_record_fndecl ( decl ) ) return ;" GCC,nvptx,105,"Predict the next statement of this code snippet: fprintf ( asm_out_file , , TREE_CODE ( decl ) == VAR_DECL ? : , IDENTIFIER_POINTER ( DECL_ASSEMBLER_NAME ( decl ) ) ) ;" GCC,nvptx,106,"Predict the next statement of this code snippet: fprintf ( asm_out_file , , TREE_CODE ( decl ) == VAR_DECL ? : , IDENTIFIER_POINTER ( DECL_ASSEMBLER_NAME ( decl ) ) ) ;" GCC,nvptx,107,"Predict the next statement of this code snippet: compute_bb_for_insn ( ) ; df_clear_flags ( DF_LR_RUN_DCE ) ; df_analyze ( ) ; thread_prologue_and_epilogue_insns ( ) ; qiregs . n_allocated = ; hiregs . n_allocated = ; siregs . n_allocated = ; diregs . n_allocated = ; qiregs . mode = QImode ; hiregs . mode = HImode ; siregs . mode = SImode ; diregs . mode = DImode ; for ( insn = get_insns ( ) ; insn ; insn = next ) { next = NEXT_INSN ( insn ) ; if ( ! NONDEBUG_INSN_P ( insn ) || asm_noperands ( insn ) >= || GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) continue ; qiregs . n_in_use = ; hiregs . n_in_use = ; siregs . n_in_use = ; diregs . n_in_use = ; extract_insn ( insn ) ; enum attr_subregs_ok s_ok = get_attr_subregs_ok ( insn ) ; for ( int i = ; i < recog_data . n_operands ; i ++ ) { rtx op = recog_data . operand [ i ] ; if ( GET_CODE ( op ) != SUBREG ) continue ; rtx inner = SUBREG_REG ( op ) ; machine_mode outer_mode = GET_MODE ( op ) ; machine_mode inner_mode = GET_MODE ( inner ) ; gcc_assert ( s_ok ) ; if ( s_ok && ( GET_MODE_PRECISION ( inner_mode ) >= GET_MODE_PRECISION ( outer_mode ) ) ) continue ; gcc_assert ( SCALAR_INT_MODE_P ( outer_mode ) ) ; struct reg_replace * r = ( outer_mode == QImode ? & qiregs : outer_mode == HImode ? & hiregs : outer_mode == SImode ? & siregs : & diregs ) ; rtx new_reg = get_replacement ( r ) ; if ( recog_data . operand_type [ i ] != OP_OUT ) {" GCC,nvptx,108,"Predict the next statement of this code snippet: struct reg_replace qiregs , hiregs , siregs , diregs ; rtx_insn * insn , * next ; compute_bb_for_insn ( ) ; df_clear_flags ( DF_LR_RUN_DCE ) ; df_analyze ( ) ; thread_prologue_and_epilogue_insns ( ) ; qiregs . n_allocated = ; hiregs . n_allocated = ; siregs . n_allocated = ; diregs . n_allocated = ; qiregs . mode = QImode ; hiregs . mode = HImode ; siregs . mode = SImode ; diregs . mode = DImode ; for ( insn = get_insns ( ) ; insn ; insn = next ) { next = NEXT_INSN ( insn ) ; if ( ! NONDEBUG_INSN_P ( insn ) || asm_noperands ( insn ) >= || GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) continue ; qiregs . n_in_use = ; hiregs . n_in_use = ; siregs . n_in_use = ; diregs . n_in_use = ; extract_insn ( insn ) ; enum attr_subregs_ok s_ok = get_attr_subregs_ok ( insn ) ; for ( int i = ; i < recog_data . n_operands ; i ++ ) { rtx op = recog_data . operand [ i ] ; if ( GET_CODE ( op ) != SUBREG ) continue ; rtx inner = SUBREG_REG ( op ) ; machine_mode outer_mode = GET_MODE ( op ) ; machine_mode inner_mode = GET_MODE ( inner ) ; gcc_assert ( s_ok ) ; if ( s_ok && ( GET_MODE_PRECISION ( inner_mode ) >= GET_MODE_PRECISION ( outer_mode ) ) ) continue ; gcc_assert ( SCALAR_INT_MODE_P ( outer_mode ) ) ; struct reg_replace * r = ( outer_mode == QImode ? & qiregs : outer_mode == HImode ? & hiregs : outer_mode == SImode ? & siregs : & diregs ) ; rtx new_reg = get_replacement ( r ) ; if ( recog_data . operand_type [ i ] != OP_OUT ) { enum rtx_code code ; if ( GET_MODE_PRECISION ( inner_mode ) < GET_MODE_PRECISION ( outer_mode ) ) code = ZERO_EXTEND ; else code = TRUNCATE ; rtx pat = gen_rtx_SET ( VOIDmode , new_reg , gen_rtx_fmt_e ( code , outer_mode , inner ) ) ; emit_insn_before ( pat , insn ) ; } if ( recog_data . operand_type [ i ] != OP_IN ) { enum rtx_code code ; if ( GET_MODE_PRECISION ( inner_mode ) < GET_MODE_PRECISION ( outer_mode ) ) code = TRUNCATE ; else code = ZERO_EXTEND ; rtx pat = gen_rtx_SET ( VOIDmode , inner , gen_rtx_fmt_e ( code , inner_mode , new_reg ) ) ; emit_insn_after ( pat , insn ) ; } validate_change ( insn , recog_data . operand_loc [ i ] , new_reg , false ) ; } } int maxregs = max_reg_num ( ) ; regstat_init_n_sets_and_refs ( ) ;" GCC,nvptx,109,"Predict the next statement of this code snippet: if ( ! RETURN_IN_REG_P ( mode ) ) return true ; return false ;" GCC,nvptx,110,"Predict the next statement of this code snippet: static bool nvptx_return_in_memory ( const_tree type , const_tree ) { machine_mode mode = TYPE_MODE ( type ) ; if ( ! RETURN_IN_REG_P ( mode ) ) return true ;" GCC,nvptx,111,"Predict the next statement of this code snippet: const char * nvptx_section_for_decl ( const_tree decl ) { bool is_const = ( CONSTANT_CLASS_P ( decl ) || TREE_CODE ( decl ) == CONST_DECL || TREE_READONLY ( decl ) ) ; if ( is_const ) return ; return ;" GCC,nvptx,112,"Predict the next statement of this code snippet: bool is_const = ( CONSTANT_CLASS_P ( decl ) || TREE_CODE ( decl ) == CONST_DECL || TREE_READONLY ( decl ) ) ; if ( is_const ) return ; return ;" GCC,nvptx,113,"Predict the next statement of this code snippet: return ; case ADDR_SPACE_SHARED : return ; case ADDR_SPACE_GENERIC :" GCC,nvptx,114,"Predict the next statement of this code snippet: if ( mode == TImode ) return true ;" GCC,nvptx,115,"Predict the next statement of this code snippet: if ( ! DECL_STATIC_CHAIN ( fndecl ) ) return NULL ; if ( incoming_p ) return gen_rtx_REG ( Pmode , STATIC_CHAIN_REGNUM ) ; else return gen_rtx_REG ( Pmode , OUTGOING_STATIC_CHAIN_REGNUM ) ;" GCC,nvptx,116,"Predict the next statement of this code snippet: if ( ! DECL_STATIC_CHAIN ( fndecl ) ) return NULL ;" GCC,nvptx,117,"Predict the next statement of this code snippet: if ( GET_CODE ( obj ) == SUBREG ) obj = SUBREG_REG ( obj ) ; machine_mode mode = GET_MODE ( obj ) ;" GCC,nvptx,118,"Predict the next statement of this code snippet: machine_mode mode = GET_MODE ( obj ) ; if ( mode == TImode ) return DImode ; if ( COMPLEX_MODE_P ( mode ) ) return GET_MODE_INNER ( mode ) ; return mode ;" GCC,nvptx,119,"Predict the next statement of this code snippet: tree result_type = TREE_TYPE ( fntype ) ; tree args = TYPE_ARG_TYPES ( fntype ) ; tree attrs = DECL_ATTRIBUTES ( decl ) ; bool kernel = write_as_kernel ( attrs ) ; bool is_main = strcmp ( name , ) == ; bool args_from_decl = false ; if ( args == ) { args = DECL_ARGUMENTS ( decl ) ; args_from_decl = true ; } if ( DECL_EXTERNAL ( decl ) ) s << ; else if ( TREE_PUBLIC ( decl ) ) s << ; if ( kernel ) s << ; else s << ; bool return_in_mem = false ; if ( TYPE_MODE ( result_type ) != VOIDmode ) { machine_mode mode = TYPE_MODE ( result_type ) ; if ( ! RETURN_IN_REG_P ( mode ) ) return_in_mem = true ; else { mode = arg_promotion ( mode ) ; s << << nvptx_ptx_type_from_mode ( mode , false ) << ; } } if ( name [ ] == '*' ) s << ( name + ) ; else s << name ; if ( ( args != NULL_TREE && ! ( TREE_CODE ( args ) == TREE_LIST && TREE_VALUE ( args ) == void_type_node ) ) || is_main || return_in_mem || DECL_STATIC_CHAIN ( decl ) ) { s << ; int i = ; bool any_args = false ; if ( return_in_mem ) { s << << GET_MODE_BITSIZE ( Pmode ) << ; i ++ ; } while ( args != NULL_TREE ) { tree type = args_from_decl ? TREE_TYPE ( args ) : TREE_VALUE ( args ) ; machine_mode mode = TYPE_MODE ( type ) ; if ( mode != VOIDmode ) { i = write_one_arg ( s , type , i , mode , TYPE_ARG_TYPES ( fntype ) == ) ; any_args = true ; i ++ ; } args = TREE_CHAIN ( args ) ; } if ( stdarg_p ( fntype ) ) {" GCC,nvptx,120,"Predict the next statement of this code snippet: begin_decl_field ( ) ;" GCC,nvptx,121,"Predict the next statement of this code snippet: if ( argtypes == ) args_from_decl = true ; else args = argtypes ; for ( i = return_in_mem ? : ; args != NULL_TREE ; args = TREE_CHAIN ( args ) ) { tree type = args_from_decl ? TREE_TYPE ( args ) : TREE_VALUE ( args ) ; machine_mode mode = TYPE_MODE ( type ) ; if ( mode == VOIDmode ) break ; if ( ! PASS_IN_REG_P ( mode , type ) ) mode = Pmode ; int count = maybe_split_mode ( & mode ) ; if ( count == ) { if ( argtypes == NULL && ! AGGREGATE_TYPE_P ( type ) ) {" GCC,nvptx,122,"Predict the next statement of this code snippet: static bool write_as_kernel ( tree attrs ) { return ( lookup_attribute ( , attrs ) != NULL_TREE || lookup_attribute ( , attrs ) != NULL_TREE ) ;" GCC,nvptx,123,"Predict the next statement of this code snippet: static void write_function_decl_and_comment ( std :: stringstream & s , const char * name , const_tree decl ) { s << ; if ( TREE_PUBLIC ( decl ) ) s << ;" GCC,nvptx,124,"Predict the next statement of this code snippet: static void write_function_decl_and_comment ( std :: stringstream & s , const char * name , const_tree decl ) { s << ;" GCC,nvptx,125,"Predict the next statement of this code snippet: name = nvptx_name_replacement ( name ) ; s << << name << ; } s << ( callprototype ? : ) ; if ( result != NULL_RTX ) { s << ; s << nvptx_ptx_type_from_mode ( arg_promotion ( GET_MODE ( result ) ) , false ) ; s << ; if ( callprototype ) s << ; else s << ; s << ; } s << name ; int nargs = XVECLEN ( pat , ) - ; if ( nargs > ) { s << ; for ( int i = ; i < nargs ; i ++ ) { rtx t = XEXP ( XVECEXP ( pat , , i + ) , ) ; machine_mode mode = GET_MODE ( t ) ; int count = maybe_split_mode ( & mode ) ; while ( count -- > ) { s << ; s << nvptx_ptx_type_from_mode ( mode , false ) ; s << ; if ( callprototype ) s << ; else s << << i ; if ( mode == QImode || mode == HImode ) s << ; if ( i + < nargs || count > ) s << ; } } s << ;" GCC,nvptx,126,"Predict the next statement of this code snippet: if ( callprototype ) s << ; else s << ; s << ; } s << name ; int nargs = XVECLEN ( pat , ) - ; if ( nargs > ) { s << ; for ( int i = ; i < nargs ; i ++ ) { rtx t = XEXP ( XVECEXP ( pat , , i + ) , ) ; machine_mode mode = GET_MODE ( t ) ; int count = maybe_split_mode ( & mode ) ; while ( count -- > ) { s << ; s << nvptx_ptx_type_from_mode ( mode , false ) ; s << ; if ( callprototype ) s << ;" GCC,nvptx,127,"Predict the next statement of this code snippet: int count = maybe_split_mode ( & mode ) ; if ( count == ) { write_one_arg ( s , NULL_TREE , i , mode , false ) ; write_one_arg ( s , NULL_TREE , i + , mode , false ) ; return i + ; } if ( no_arg_types && ! AGGREGATE_TYPE_P ( type ) ) { if ( mode == SFmode ) mode = DFmode ; mode = arg_promotion ( mode ) ;" GCC,nvptx,128,"Predict the next statement of this code snippet: write_one_arg ( s , NULL_TREE , i + , mode , false ) ; return i + ; } if ( no_arg_types && ! AGGREGATE_TYPE_P ( type ) ) { if ( mode == SFmode ) mode = DFmode ; mode = arg_promotion ( mode ) ; } if ( i > ) s << ; s << << nvptx_ptx_type_from_mode ( mode , false ) << << ( i + ) << ( mode == QImode || mode == HImode ? : ) ;" GCC,nvptx,129,"Predict the next statement of this code snippet: block -> flags &= ~ BB_VISITED ;" GCC,nvptx,130,"Predict the next statement of this code snippet: elt_size |= GET_MODE_SIZE ( elt_mode ) ; elt_size &= - elt_size ; init_frag . size = elt_size ; init_frag . mask = ( ( unsigned HOST_WIDE_INT ) << ( elt_size * BITS_PER_UNIT - ) ) - ; init_frag . val = ; init_frag . offset = ; init_frag . started = false ; init_frag . remaining = ( size + elt_size - ) / elt_size ; fprintf ( file , , section , align / BITS_PER_UNIT , elt_size * BITS_PER_UNIT ) ; assemble_name ( file , name ) ;" GCC,nvptx,131,"Predict the next statement of this code snippet: static void nvptx_assemble_decl_begin ( FILE * file , const char * name , const char * section , const_tree type , HOST_WIDE_INT size , unsigned align ) { while ( TREE_CODE ( type ) == ARRAY_TYPE ) type = TREE_TYPE ( type ) ; if ( TREE_CODE ( type ) == VECTOR_TYPE || TREE_CODE ( type ) == COMPLEX_TYPE ) type = TREE_TYPE ( type ) ; unsigned elt_size = int_size_in_bytes ( type ) ; machine_mode elt_mode = TYPE_MODE ( type ) == BLKmode ? Pmode : DImode ; elt_size |= GET_MODE_SIZE ( elt_mode ) ; elt_size &= - elt_size ; init_frag . size = elt_size ; init_frag . mask = ( ( unsigned HOST_WIDE_INT ) << ( elt_size * BITS_PER_UNIT - ) ) - ; init_frag . val = ; init_frag . offset = ; init_frag . started = false ; init_frag . remaining = ( size + elt_size - ) / elt_size ; fprintf ( file , , section , align / BITS_PER_UNIT , elt_size * BITS_PER_UNIT ) ;" GCC,nvptx,132,"Predict the next statement of this code snippet: if ( DECL_IN_CONSTANT_POOL ( decl ) ) return ; write_var_marker ( file , false , TREE_PUBLIC ( decl ) , name ) ; fprintf ( file , ) ; tree size = DECL_SIZE_UNIT ( decl ) ;" GCC,nvptx,133,"Predict the next statement of this code snippet: fprintf ( file , ) ; tree size = DECL_SIZE_UNIT ( decl ) ;" GCC,nvptx,134,"Predict the next statement of this code snippet: val >>= part * BITS_PER_UNIT ; part = init_frag . size - init_frag . offset ; if ( part > size ) part = size ; unsigned HOST_WIDE_INT partial = val << ( init_frag . offset * BITS_PER_UNIT ) ; init_frag . val |= partial & init_frag . mask ; init_frag . offset += part ; if ( init_frag . offset == init_frag . size ) output_init_frag ( NULL ) ;" GCC,nvptx,135,"Predict the next statement of this code snippet: tree result_type = TREE_TYPE ( fntype ) ; int argno = ; std :: stringstream s ; write_fn_proto ( s , true , name , decl ) ; s << ; bool return_in_mem = write_return_type ( s , false , result_type ) ; if ( return_in_mem ) argno = write_arg_type ( s , , argno , ptr_type_node , true ) ; tree args = TYPE_ARG_TYPES ( fntype ) ; bool prototyped = true ; if ( ! args ) { args = DECL_ARGUMENTS ( decl ) ; prototyped = false ; } for ( ; args != NULL_TREE ; args = TREE_CHAIN ( args ) ) { tree type = prototyped ? TREE_VALUE ( args ) : TREE_TYPE ( args ) ; argno = write_arg_type ( s , , argno , type , prototyped ) ; } if ( stdarg_p ( fntype ) ) argno = write_arg_type ( s , ARG_POINTER_REGNUM , argno , ptr_type_node , true ) ; if ( DECL_STATIC_CHAIN ( decl ) || cfun -> machine -> has_chain ) write_arg_type ( s , STATIC_CHAIN_REGNUM , DECL_STATIC_CHAIN ( decl ) ? argno : - , ptr_type_node , true ) ; fprintf ( file , , s . str ( ) . c_str ( ) ) ; if ( cfun -> machine -> has_varadic ) init_frame ( file , STACK_POINTER_REGNUM , UNITS_PER_WORD , crtl -> outgoing_args_size ) ; HOST_WIDE_INT sz = get_frame_size ( ) ; if ( sz || cfun -> machine -> has_chain ) init_frame ( file , FRAME_POINTER_REGNUM , crtl -> stack_alignment_needed / BITS_PER_UNIT , sz ) ; int maxregs = max_reg_num ( ) ;" GCC,nvptx,136,"Predict the next statement of this code snippet: args = DECL_ARGUMENTS ( decl ) ; prototyped = false ; } for ( ; args != NULL_TREE ; args = TREE_CHAIN ( args ) ) { tree type = prototyped ? TREE_VALUE ( args ) : TREE_TYPE ( args ) ; argno = write_arg_type ( s , , argno , type , prototyped ) ; } if ( stdarg_p ( fntype ) ) argno = write_arg_type ( s , ARG_POINTER_REGNUM , argno , ptr_type_node , true ) ; if ( DECL_STATIC_CHAIN ( decl ) || cfun -> machine -> has_chain ) write_arg_type ( s , STATIC_CHAIN_REGNUM , DECL_STATIC_CHAIN ( decl ) ? argno : - , ptr_type_node , true ) ; fprintf ( file , , s . str ( ) . c_str ( ) ) ; if ( cfun -> machine -> has_varadic ) init_frame ( file , STACK_POINTER_REGNUM , UNITS_PER_WORD , crtl -> outgoing_args_size ) ; HOST_WIDE_INT sz = get_frame_size ( ) ; if ( sz || cfun -> machine -> has_chain ) init_frame ( file , FRAME_POINTER_REGNUM , crtl -> stack_alignment_needed / BITS_PER_UNIT , sz ) ; int maxregs = max_reg_num ( ) ; for ( int i = LAST_VIRTUAL_REGISTER + ; i < maxregs ; i ++ ) { if ( regno_reg_rtx [ i ] != const0_rtx ) { machine_mode mode = PSEUDO_REGNO_MODE ( i ) ; machine_mode split = maybe_split_mode ( mode ) ; if ( split != VOIDmode ) mode = split ; fprintf ( file , , nvptx_ptx_type_from_mode ( mode , true ) ) ; output_reg ( file , i , split , - ) ; fprintf ( file , ) ;" GCC,nvptx,137,"Predict the next statement of this code snippet: switch ( axis ) { case GOMP_DIM_WORKER : return PTX_WORKER_LENGTH ; case GOMP_DIM_VECTOR : return PTX_VECTOR_LENGTH ; default : break ;" GCC,nvptx,138,"Predict the next statement of this code snippet: case GOMP_DIM_VECTOR : return PTX_VECTOR_LENGTH ; default : break ;" GCC,nvptx,139,"Predict the next statement of this code snippet: rtx op = GEN_INT ( mask | ( is_call << GOMP_DIM_MAX ) ) ;" GCC,nvptx,140,"Predict the next statement of this code snippet: if ( ! is_call ) emit_insn ( gen_nvptx_joining ( op ) ) ;" GCC,nvptx,141,"Predict the next statement of this code snippet: default_encode_section_info ( decl , rtl , first ) ; if ( first && MEM_P ( rtl ) ) { nvptx_data_area area = DATA_AREA_GENERIC ; if ( TREE_CONSTANT ( decl ) ) area = DATA_AREA_CONST ; else if ( TREE_CODE ( decl ) == VAR_DECL ) area = TREE_READONLY ( decl ) ? DATA_AREA_CONST : DATA_AREA_GLOBAL ; SET_SYMBOL_DATA_AREA ( XEXP ( rtl , ) , area ) ;" GCC,nvptx,142,"Predict the next statement of this code snippet: tree fndecl = TREE_OPERAND ( CALL_EXPR_FN ( exp ) , ) ; switch ( DECL_FUNCTION_CODE ( fndecl ) ) { case NVPTX_BUILTIN_SHUFFLE : case NVPTX_BUILTIN_SHUFFLELL : return nvptx_expand_shuffle ( exp , target , mode , ignore ) ;" GCC,nvptx,143,"Predict the next statement of this code snippet: } if ( GET_CODE ( callee ) == SYMBOL_REF ) { tree decl = SYMBOL_REF_DECL ( callee ) ; if ( decl != NULL_TREE ) { if ( DECL_STATIC_CHAIN ( decl ) ) cfun -> machine -> has_chain = true ; tree attr = get_oacc_fn_attrib ( decl ) ; if ( attr ) { tree dims = TREE_VALUE ( attr ) ; parallel = GOMP_DIM_MASK ( GOMP_DIM_MAX ) - ; for ( int ix = ; ix != GOMP_DIM_MAX ; ix ++ ) { if ( TREE_PURPOSE ( dims ) && ! integer_zerop ( TREE_PURPOSE ( dims ) ) ) break ; parallel ^= GOMP_DIM_MASK ( ix ) ; dims = TREE_CHAIN ( dims ) ; } } } } unsigned nargs = cfun -> machine -> num_args ; if ( cfun -> machine -> is_varadic ) { varargs = gen_reg_rtx ( Pmode ) ; emit_move_insn ( varargs , stack_pointer_rtx ) ; } rtvec vec = rtvec_alloc ( nargs + ) ; rtx pat = gen_rtx_PARALLEL ( VOIDmode , vec ) ; int vec_pos = ; rtx call = gen_rtx_CALL ( VOIDmode , address , const0_rtx ) ; rtx tmp_retval = retval ; if ( retval ) { if ( ! nvptx_register_operand ( retval , GET_MODE ( retval ) ) ) tmp_retval = gen_reg_rtx ( GET_MODE ( retval ) ) ; call = gen_rtx_SET ( tmp_retval , call ) ;" GCC,nvptx,144,"Predict the next statement of this code snippet: if ( align > worker_red_align ) worker_red_align = align ; unsigned offset = TREE_INT_CST_LOW ( CALL_EXPR_ARG ( exp , ) ) ; unsigned size = TREE_INT_CST_LOW ( CALL_EXPR_ARG ( exp , ) ) ; if ( size + offset > worker_red_size ) worker_red_size = size + offset ; rtx addr = worker_red_sym ; if ( offset ) { addr = gen_rtx_PLUS ( Pmode , addr , GEN_INT ( offset ) ) ; addr = gen_rtx_CONST ( Pmode , addr ) ;" GCC,nvptx,145,"Predict the next statement of this code snippet: unsigned offset = TREE_INT_CST_LOW ( CALL_EXPR_ARG ( exp , ) ) ; unsigned size = TREE_INT_CST_LOW ( CALL_EXPR_ARG ( exp , ) ) ; if ( size + offset > worker_red_size ) worker_red_size = size + offset ; rtx addr = worker_red_sym ; if ( offset ) { addr = gen_rtx_PLUS ( Pmode , addr , GEN_INT ( offset ) ) ; addr = gen_rtx_CONST ( Pmode , addr ) ;" GCC,nvptx,146,"Predict the next statement of this code snippet: if ( worker_bcast_size ) write_worker_buffer ( asm_out_file , worker_bcast_sym , worker_bcast_align , worker_bcast_size ) ;" GCC,nvptx,147,"Predict the next statement of this code snippet: static void nvptx_file_end ( void ) { hash_table < tree_hasher > :: iterator iter ; tree decl ; FOR_EACH_HASH_TABLE_ELEMENT ( * needed_fndecls_htab , decl , tree , iter ) nvptx_record_fndecl ( decl ) ; fputs ( func_decls . str ( ) . c_str ( ) , asm_out_file ) ; if ( worker_bcast_size ) write_worker_buffer ( asm_out_file , worker_bcast_sym , worker_bcast_align , worker_bcast_size ) ; if ( worker_red_size ) write_worker_buffer ( asm_out_file , worker_red_sym , worker_red_align , worker_red_size ) ;" GCC,nvptx,148,"Predict the next statement of this code snippet: case CODE_FOR_nvptx_forked : { unsigned mask = UINTVAL ( XVECEXP ( PATTERN ( end ) , , ) ) ; gcc_assert ( mask ) ; par = new parallel ( par , mask ) ; par -> forked_block = block ; par -> forked_insn = end ; if ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_MAX ) ) && ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) ) par -> fork_insn = nvptx_discover_pre ( block , CODE_FOR_nvptx_fork ) ; } break ; case CODE_FOR_nvptx_join : { unsigned mask = UINTVAL ( XVECEXP ( PATTERN ( end ) , , ) ) ; gcc_assert ( par -> mask == mask ) ; par -> join_block = block ; par -> join_insn = end ; if ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_MAX ) ) && ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) ) par -> joining_insn = nvptx_discover_pre ( block , CODE_FOR_nvptx_joining ) ; par = par -> parent ; } break ; default : gcc_unreachable ( ) ; } }" GCC,nvptx,149,"Predict the next statement of this code snippet: static rtx nvptx_function_arg ( cumulative_args_t ARG_UNUSED ( cum_v ) , machine_mode mode , const_tree , bool named ) {" GCC,nvptx,150,"Predict the next statement of this code snippet: CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; cum -> count ++ ;" GCC,nvptx,151,"Predict the next statement of this code snippet: static rtx nvptx_function_value ( const_tree type , const_tree ARG_UNUSED ( func ) , bool outgoing ) {" GCC,nvptx,152,"Predict the next statement of this code snippet: return gen_rtx_REG ( mode , NVPTX_RETURN_REGNUM ) ; } return nvptx_libcall_value ( mode , NULL_RTX ) ;" GCC,nvptx,153,"Predict the next statement of this code snippet: static rtx nvptx_gen_pack ( rtx dst , rtx src0 , rtx src1 ) { rtx res ; switch ( GET_MODE ( dst ) ) { case DImode : res = gen_packsidi2 ( dst , src0 , src1 ) ; break ; case DFmode : res = gen_packsidf2 ( dst , src0 , src1 ) ; break ;" GCC,nvptx,154,"Predict the next statement of this code snippet: static rtx nvptx_gen_pack ( rtx dst , rtx src0 , rtx src1 ) { rtx res ; switch ( GET_MODE ( dst ) ) { case DImode :" GCC,nvptx,155,"Predict the next statement of this code snippet: rtx tmp0 = gen_reg_rtx ( SImode ) ; rtx tmp1 = gen_reg_rtx ( SImode ) ; start_sequence ( ) ; emit_insn ( nvptx_gen_unpack ( tmp0 , tmp1 , src ) ) ; emit_insn ( nvptx_gen_shuffle ( tmp0 , tmp0 , idx , kind ) ) ; emit_insn ( nvptx_gen_shuffle ( tmp1 , tmp1 , idx , kind ) ) ; emit_insn ( nvptx_gen_pack ( dst , tmp0 , tmp1 ) ) ; res = get_insns ( ) ; end_sequence ( ) ; } break ; case BImode : { rtx tmp = gen_reg_rtx ( SImode ) ; start_sequence ( ) ; emit_insn ( gen_sel_truesi ( tmp , src , GEN_INT ( ) , const0_rtx ) ) ; emit_insn ( nvptx_gen_shuffle ( tmp , tmp , idx , kind ) ) ; emit_insn ( gen_rtx_SET ( dst , gen_rtx_NE ( BImode , tmp , const0_rtx ) ) ) ; res = get_insns ( ) ; end_sequence ( ) ;" GCC,nvptx,156,"Predict the next statement of this code snippet: case DFmode : res = gen_unpackdfsi2 ( dst0 , dst1 , src ) ; break ; default : gcc_unreachable ( ) ; }" GCC,nvptx,157,"Predict the next statement of this code snippet: return nvptx_gen_shuffle ( reg , reg , const0_rtx , SHUFFLE_IDX ) ;" GCC,nvptx,158,"Predict the next statement of this code snippet: } break ; default : { rtx addr = data -> ptr ; if ( ! addr ) { unsigned align = GET_MODE_ALIGNMENT ( mode ) / BITS_PER_UNIT ; if ( align > worker_bcast_align ) worker_bcast_align = align ; data -> offset = ( data -> offset + align - ) & ~ ( align - ) ; addr = data -> base ; if ( data -> offset ) addr = gen_rtx_PLUS ( Pmode , addr , GEN_INT ( data -> offset ) ) ; } addr = gen_rtx_MEM ( mode , addr ) ; if ( pm == PM_read ) res = gen_rtx_SET ( addr , reg ) ; else if ( pm == PM_write ) res = gen_rtx_SET ( reg , addr ) ; else gcc_unreachable ( ) ; if ( data -> ptr ) { start_sequence ( ) ;" GCC,nvptx,159,"Predict the next statement of this code snippet: static tree nvptx_get_worker_red_addr ( tree type , tree offset ) { machine_mode mode = TYPE_MODE ( type ) ; tree fndecl = nvptx_builtin_decl ( NVPTX_BUILTIN_WORKER_ADDR , true ) ; tree size = build_int_cst ( unsigned_type_node , GET_MODE_SIZE ( mode ) ) ; tree align = build_int_cst ( unsigned_type_node , GET_MODE_ALIGNMENT ( mode ) / BITS_PER_UNIT ) ;" GCC,nvptx,160,"Predict the next statement of this code snippet: break ; case IFN_GOACC_REDUCTION_FINI : nvptx_goacc_reduction_fini ( call ) ; break ; case IFN_GOACC_REDUCTION_TEARDOWN : nvptx_goacc_reduction_teardown ( call ) ; break ; default : gcc_unreachable ( ) ; }" GCC,nvptx,161,"Predict the next statement of this code snippet: case IFN_GOACC_REDUCTION_INIT : nvptx_goacc_reduction_init ( call ) ; break ; case IFN_GOACC_REDUCTION_FINI : nvptx_goacc_reduction_fini ( call ) ; break ; case IFN_GOACC_REDUCTION_TEARDOWN : nvptx_goacc_reduction_teardown ( call ) ; break ; default :" GCC,nvptx,162,"Predict the next statement of this code snippet: enum tree_code op = ( enum tree_code ) TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; gimple_seq seq = NULL ; tree r = NULL_TREE ; ; push_gimplify_context ( true ) ; if ( level == GOMP_DIM_VECTOR ) { for ( int shfl = PTX_VECTOR_LENGTH / ; shfl > ; shfl = shfl >> ) { tree other_var = make_ssa_name ( TREE_TYPE ( var ) ) ; nvptx_generate_vector_shuffle ( gimple_location ( call ) , other_var , var , shfl , & seq ) ; r = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( r , fold_build2 ( op , TREE_TYPE ( var ) , var , other_var ) , & seq ) ; var = r ; } } else { tree accum = NULL_TREE ; if ( level == GOMP_DIM_WORKER ) { tree offset = gimple_call_arg ( call , ) ; tree call = nvptx_get_worker_red_addr ( TREE_TYPE ( var ) , offset ) ; tree ptr = make_ssa_name ( TREE_TYPE ( call ) ) ; gimplify_assign ( ptr , call , & seq ) ; accum = ptr ; } else if ( integer_zerop ( ref_to_res ) ) r = var ; else accum = ref_to_res ; if ( accum ) { gsi_insert_seq_before ( & gsi , seq , GSI_SAME_STMT ) ;" GCC,nvptx,163,"Predict the next statement of this code snippet: gimple * cond_stmt = gimple_build_cond ( NE_EXPR , tid , integer_zero_node , NULL_TREE , NULL_TREE ) ; gimple_call_set_lhs ( tid_call , tid ) ; gimple_seq_add_stmt ( & seq , tid_call ) ; gimple_seq_add_stmt ( & seq , cond_stmt ) ; edge init_edge = split_block ( gsi_bb ( gsi ) , call ) ; basic_block init_bb = init_edge -> dest ; basic_block call_bb = init_edge -> src ; init_edge -> flags ^= EDGE_FALLTHRU | EDGE_TRUE_VALUE ; gimple_seq init_seq = NULL ; tree init_var = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( init_var , init , & init_seq ) ; gsi = gsi_start_bb ( init_bb ) ; gsi_insert_seq_before ( & gsi , init_seq , GSI_SAME_STMT ) ; gsi_prev ( & gsi ) ;" GCC,nvptx,164,"Predict the next statement of this code snippet: static void nvptx_goacc_reduction_setup ( gcall * call ) { gimple_stmt_iterator gsi = gsi_for_stmt ( call ) ; tree lhs = gimple_call_lhs ( call ) ; tree var = gimple_call_arg ( call , ) ; int level = TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; gimple_seq seq = NULL ; push_gimplify_context ( true ) ; if ( level != GOMP_DIM_GANG ) { tree ref_to_res = gimple_call_arg ( call , ) ; if ( ! integer_zerop ( ref_to_res ) ) var = build_simple_mem_ref ( ref_to_res ) ; } if ( level == GOMP_DIM_WORKER ) { tree offset = gimple_call_arg ( call , ) ; tree call = nvptx_get_worker_red_addr ( TREE_TYPE ( var ) , offset ) ; tree ptr = make_ssa_name ( TREE_TYPE ( call ) ) ; gimplify_assign ( ptr , call , & seq ) ; tree ref = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( ref ) = ; gimplify_assign ( ref , var , & seq ) ; } if ( lhs ) gimplify_assign ( lhs , var , & seq ) ; pop_gimplify_context ( NULL ) ; gsi_replace_with_seq ( & gsi , seq , true ) ;" GCC,nvptx,165,"Predict the next statement of this code snippet: tree call = nvptx_get_worker_red_addr ( TREE_TYPE ( var ) , offset ) ; tree ptr = make_ssa_name ( TREE_TYPE ( call ) ) ; gimplify_assign ( ptr , call , & seq ) ; tree ref = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( ref ) = ; gimplify_assign ( ref , var , & seq ) ; } if ( lhs ) gimplify_assign ( lhs , var , & seq ) ; pop_gimplify_context ( NULL ) ; gsi_replace_with_seq ( & gsi , seq , true ) ;" GCC,nvptx,166,"Predict the next statement of this code snippet: gimplify_assign ( ptr , call , & seq ) ; var = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( var ) = ; } if ( level != GOMP_DIM_GANG ) { tree ref_to_res = gimple_call_arg ( call , ) ; if ( ! integer_zerop ( ref_to_res ) ) gimplify_assign ( build_simple_mem_ref ( ref_to_res ) , var , & seq ) ; }" GCC,nvptx,167,"Predict the next statement of this code snippet: static bool nvptx_goacc_validate_dims ( tree decl , int dims [ ] , int fn_level ) { bool changed = false ; if ( fn_level <= GOMP_DIM_VECTOR && fn_level >= - && dims [ GOMP_DIM_VECTOR ] >= && dims [ GOMP_DIM_VECTOR ] != PTX_VECTOR_LENGTH ) { if ( fn_level < && dims [ GOMP_DIM_VECTOR ] >= ) warning_at ( decl ? DECL_SOURCE_LOCATION ( decl ) : UNKNOWN_LOCATION , , dims [ GOMP_DIM_VECTOR ] ? : , PTX_VECTOR_LENGTH , dims [ GOMP_DIM_VECTOR ] ) ; dims [ GOMP_DIM_VECTOR ] = PTX_VECTOR_LENGTH ; changed = true ; } if ( dims [ GOMP_DIM_WORKER ] > PTX_WORKER_LENGTH ) { warning_at ( decl ? DECL_SOURCE_LOCATION ( decl ) : UNKNOWN_LOCATION , , , PTX_WORKER_LENGTH , dims [ GOMP_DIM_WORKER ] ) ; dims [ GOMP_DIM_WORKER ] = PTX_WORKER_LENGTH ;" GCC,nvptx,168,"Predict the next statement of this code snippet: static void nvptx_init_axis_predicate ( FILE * file , int regno , const char * name ) { fprintf ( file , ) ; fprintf ( file , , name ) ; fprintf ( file , , name , name ) ; fprintf ( file , , regno , name ) ; fprintf ( file , ) ;" GCC,nvptx,169,"Predict the next statement of this code snippet: DEF ( SHUFFLELL , , ( LLUINT , LLUINT , UINT , UINT , NULL_TREE ) ) ; DEF ( WORKER_ADDR , , ( PTRVOID , ST , UINT , UINT , NULL_TREE ) ) ; DEF ( CMP_SWAP , , ( UINT , PTRVOID , UINT , UINT , NULL_TREE ) ) ; DEF ( CMP_SWAPLL , , ( LLUINT , PTRVOID , LLUINT , LLUINT , NULL_TREE ) ) ;" GCC,nvptx,170,"Predict the next statement of this code snippet: DEF ( WORKER_ADDR , , ( PTRVOID , ST , UINT , UINT , NULL_TREE ) ) ; DEF ( CMP_SWAP , , ( UINT , PTRVOID , UINT , UINT , NULL_TREE ) ) ; DEF ( CMP_SWAPLL , , ( LLUINT , PTRVOID , LLUINT , LLUINT , NULL_TREE ) ) ;" GCC,nvptx,171,"Predict the next statement of this code snippet: if ( ! cfun -> machine -> doing_call ) return gen_rtx_REG ( mode , NVPTX_RETURN_REGNUM ) ;" GCC,nvptx,172,"Predict the next statement of this code snippet: if ( ! cfun -> machine -> doing_call ) return gen_rtx_REG ( mode , NVPTX_RETURN_REGNUM ) ; return gen_reg_rtx ( mode ) ;" GCC,nvptx,173,"Predict the next statement of this code snippet: locked_edge -> flags ^= EDGE_TRUE_VALUE | EDGE_FALLTHRU ; make_edge ( lock_bb , lock_bb , EDGE_FALSE_VALUE ) ; set_immediate_dominator ( CDI_DOMINATORS , lock_bb , entry_bb ) ; set_immediate_dominator ( CDI_DOMINATORS , update_bb , lock_bb ) ; loop * lock_loop = alloc_loop ( ) ; lock_loop -> header = lock_bb ; lock_loop -> latch = lock_bb ; lock_loop -> nb_iterations_estimate = ; lock_loop -> any_estimate = true ; add_loop ( lock_loop , entry_bb -> loop_father ) ; gimple_seq red_seq = NULL ; tree acc_in = make_ssa_name ( var_type ) ; tree ref_in = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( ref_in ) = ; gimplify_assign ( acc_in , ref_in , & red_seq ) ; tree acc_out = make_ssa_name ( var_type ) ; tree update_expr = fold_build2 ( op , var_type , ref_in , var ) ; gimplify_assign ( acc_out , update_expr , & red_seq ) ; tree ref_out = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( ref_out ) = ; gimplify_assign ( ref_out , acc_out , & red_seq ) ; gsi_insert_seq_before ( gsi , red_seq , GSI_SAME_STMT ) ;" GCC,nvptx,174,"Predict the next statement of this code snippet: basic_block pre_bb = gsi_bb ( * gsi ) ; edge pre_edge = split_block ( pre_bb , init_end ) ; basic_block loop_bb = pre_edge -> dest ; pre_bb = pre_edge -> src ; * gsi = gsi_for_stmt ( gsi_stmt ( * gsi ) ) ; tree expect_var = make_ssa_name ( arg_type ) ; tree actual_var = make_ssa_name ( arg_type ) ; tree write_var = make_ssa_name ( arg_type ) ; gimple_seq red_seq = NULL ; tree write_expr = fold_build1 ( code , var_type , expect_var ) ; write_expr = fold_build2 ( op , var_type , write_expr , var ) ; write_expr = fold_build1 ( code , arg_type , write_expr ) ; gimplify_assign ( write_var , write_expr , & red_seq ) ; gsi_insert_seq_before ( gsi , red_seq , GSI_SAME_STMT ) ; gimple_seq latch_seq = NULL ; tree swap_expr = build_call_expr_loc ( loc , swap_fn , , ptr , expect_var , write_var ) ; gimplify_assign ( actual_var , swap_expr , & latch_seq ) ; gcond * cond = gimple_build_cond ( EQ_EXPR , actual_var , expect_var , NULL_TREE , NULL_TREE ) ; gimple_seq_add_stmt ( & latch_seq , cond ) ; gimple * latch_end = gimple_seq_last ( latch_seq ) ; gsi_insert_seq_before ( gsi , latch_seq , GSI_SAME_STMT ) ; edge post_edge = split_block ( loop_bb , latch_end ) ; basic_block post_bb = post_edge -> dest ; loop_bb = post_edge -> src ; * gsi = gsi_for_stmt ( gsi_stmt ( * gsi ) ) ; post_edge -> flags ^= EDGE_TRUE_VALUE | EDGE_FALLTHRU ; edge loop_edge = make_edge ( loop_bb , loop_bb , EDGE_FALSE_VALUE ) ; set_immediate_dominator ( CDI_DOMINATORS , loop_bb , pre_bb ) ; set_immediate_dominator ( CDI_DOMINATORS , post_bb , loop_bb ) ; gphi * phi = create_phi_node ( expect_var , loop_bb ) ; add_phi_arg ( phi , init_var , pre_edge , loc ) ;" GCC,nvptx,175,"Predict the next statement of this code snippet: worker_bcast_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_bcast_sym , DATA_AREA_SHARED ) ; worker_bcast_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; worker_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_red_sym , DATA_AREA_SHARED ) ; worker_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ;" GCC,nvptx,176,"Predict the next statement of this code snippet: static int labelno ; bool needs_tgt = register_operand ( callee , Pmode ) ; rtx pat = PATTERN ( insn ) ; int arg_end = XVECLEN ( pat , ) ; tree decl = NULL_TREE ; fprintf ( asm_out_file , ) ; if ( result != NULL ) fprintf ( asm_out_file , , nvptx_ptx_type_from_mode ( GET_MODE ( result ) , false ) , reg_names [ NVPTX_RETURN_REGNUM ] ) ; if ( GET_CODE ( callee ) == SYMBOL_REF ) { decl = SYMBOL_REF_DECL ( callee ) ; if ( ! decl || ( DECL_EXTERNAL ( decl ) && ! TYPE_ARG_TYPES ( TREE_TYPE ( decl ) ) ) ) nvptx_record_libfunc ( callee , result , pat ) ; else if ( DECL_EXTERNAL ( decl ) ) nvptx_record_fndecl ( decl ) ; } if ( needs_tgt ) { ASM_GENERATE_INTERNAL_LABEL ( buf , , labelno ) ; labelno ++ ; ASM_OUTPUT_LABEL ( asm_out_file , buf ) ; std :: stringstream s ; write_fn_proto_from_insn ( s , NULL , result , pat ) ; fputs ( s . str ( ) . c_str ( ) , asm_out_file ) ; } for ( int argno = ; argno < arg_end ; argno ++ ) { rtx t = XEXP ( XVECEXP ( pat , , argno ) , ) ; machine_mode mode = GET_MODE ( t ) ; const char * ptx_type = nvptx_ptx_type_from_mode ( mode , false ) ; fprintf ( asm_out_file , , ptx_type , argno , ptx_type , argno ) ; output_reg ( asm_out_file , REGNO ( t ) , VOIDmode ) ; fprintf ( asm_out_file , ) ; } fprintf ( asm_out_file , ) ; if ( result != NULL_RTX ) fprintf ( asm_out_file , , reg_names [ NVPTX_RETURN_REGNUM ] ) ; if ( decl ) { const char * name = get_fnname_from_decl ( decl ) ; name = nvptx_name_replacement ( name ) ; assemble_name ( asm_out_file , name ) ; } else output_address ( VOIDmode , callee ) ; const char * open = ; for ( int argno = ; argno < arg_end ; argno ++ ) { fprintf ( asm_out_file , , open , argno ) ; open = ; } if ( decl && DECL_STATIC_CHAIN ( decl ) ) { fprintf ( asm_out_file , , open , reg_names [ STATIC_CHAIN_REGNUM ] ) ; open = ; }" GCC,nvptx,177,"Predict the next statement of this code snippet: machine_mode dst_inner = ( GET_CODE ( dst ) == SUBREG ? GET_MODE ( XEXP ( dst , ) ) : dst_mode ) ; machine_mode src_inner = ( GET_CODE ( src ) == SUBREG ? GET_MODE ( XEXP ( src , ) ) : dst_mode ) ; rtx sym = src ; if ( GET_CODE ( sym ) == CONST ) sym = XEXP ( XEXP ( sym , ) , ) ; if ( SYMBOL_REF_P ( sym ) ) { if ( SYMBOL_DATA_AREA ( sym ) != DATA_AREA_GENERIC ) return ; nvptx_maybe_record_fnsym ( sym ) ; } if ( src_inner == dst_inner ) return ; if ( CONSTANT_P ( src ) ) return ( GET_MODE_CLASS ( dst_inner ) == MODE_INT && GET_MODE_CLASS ( src_inner ) != MODE_FLOAT ? : ) ; if ( GET_MODE_SIZE ( dst_inner ) == GET_MODE_SIZE ( src_inner ) ) return ;" GCC,nvptx,178,"Predict the next statement of this code snippet: return pass_in_memory ( mode , type , false ) ;" GCC,nvptx,179,"Predict the next statement of this code snippet: unsigned inner_mask = par -> mask ; if ( par -> inner ) { par -> inner_mask = nvptx_process_pars ( par -> inner ) ; inner_mask |= par -> inner_mask ; } if ( par -> mask & GOMP_DIM_MASK ( GOMP_DIM_MAX ) ) ; else if ( par -> mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) { nvptx_wpropagate ( false , par -> forked_block , par -> forked_insn ) ;" GCC,nvptx,180,"Predict the next statement of this code snippet: par -> inner_mask = nvptx_process_pars ( par -> inner ) ; inner_mask |= par -> inner_mask ; } if ( par -> mask & GOMP_DIM_MASK ( GOMP_DIM_MAX ) ) ; else if ( par -> mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) { nvptx_wpropagate ( false , par -> forked_block , par -> forked_insn ) ; nvptx_wpropagate ( true , par -> forked_block , par -> fork_insn ) ; emit_insn_after ( nvptx_wsync ( false ) , par -> forked_insn ) ; emit_insn_before ( nvptx_wsync ( true ) , par -> joining_insn ) ; } else if ( par -> mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) nvptx_vpropagate ( par -> forked_block , par -> forked_insn ) ;" GCC,nvptx,181,"Predict the next statement of this code snippet: bitmap live = DF_LIVE_IN ( block ) ; bitmap_iterator iterator ; unsigned ix ; HOST_WIDE_INT fs = get_frame_size ( ) ; if ( fs ) { rtx tmp = gen_reg_rtx ( DImode ) ; rtx idx = NULL_RTX ; rtx ptr = gen_reg_rtx ( Pmode ) ; rtx pred = NULL_RTX ; rtx_code_label * label = NULL ; gcc_assert ( ! ( fs & ( GET_MODE_SIZE ( DImode ) - ) ) ) ; fs /= GET_MODE_SIZE ( DImode ) ; if ( fs == ) fs = ; start_sequence ( ) ; emit_insn ( gen_rtx_SET ( ptr , frame_pointer_rtx ) ) ; if ( fs ) { idx = gen_reg_rtx ( SImode ) ; pred = gen_reg_rtx ( BImode ) ; label = gen_label_rtx ( ) ; emit_insn ( gen_rtx_SET ( idx , GEN_INT ( fs ) ) ) ; rtx init = fn ( tmp , PM_loop_begin , fs , data ) ; if ( init ) emit_insn ( init ) ; emit_label ( label ) ; LABEL_NUSES ( label ) ++ ; emit_insn ( gen_addsi3 ( idx , idx , GEN_INT ( - ) ) ) ;" GCC,nvptx,182,"Predict the next statement of this code snippet: if ( fs ) { idx = gen_reg_rtx ( SImode ) ; pred = gen_reg_rtx ( BImode ) ; label = gen_label_rtx ( ) ; emit_insn ( gen_rtx_SET ( idx , GEN_INT ( fs ) ) ) ; rtx init = fn ( tmp , PM_loop_begin , fs , data ) ; if ( init ) emit_insn ( init ) ; emit_label ( label ) ; LABEL_NUSES ( label ) ++ ; emit_insn ( gen_addsi3 ( idx , idx , GEN_INT ( - ) ) ) ; } if ( rw & PM_read ) emit_insn ( gen_rtx_SET ( tmp , gen_rtx_MEM ( DImode , ptr ) ) ) ; emit_insn ( fn ( tmp , rw , fs , data ) ) ; if ( rw & PM_write ) emit_insn ( gen_rtx_SET ( gen_rtx_MEM ( DImode , ptr ) , tmp ) ) ; if ( fs ) { emit_insn ( gen_rtx_SET ( pred , gen_rtx_NE ( BImode , idx , const0_rtx ) ) ) ; emit_insn ( gen_adddi3 ( ptr , ptr , GEN_INT ( GET_MODE_SIZE ( DImode ) ) ) ) ; emit_insn ( gen_br_true_uni ( pred , label ) ) ; rtx fini = fn ( tmp , PM_loop_end , fs , data ) ; if ( fini ) emit_insn ( fini ) ; emit_insn ( gen_rtx_CLOBBER ( GET_MODE ( idx ) , idx ) ) ; } emit_insn ( gen_rtx_CLOBBER ( GET_MODE ( tmp ) , tmp ) ) ; emit_insn ( gen_rtx_CLOBBER ( GET_MODE ( ptr ) , ptr ) ) ; rtx cpy = get_insns ( ) ; end_sequence ( ) ; insn = emit_insn_after ( cpy , insn ) ; }" GCC,nvptx,183,"Predict the next statement of this code snippet: tree dims = TREE_VALUE ( attr ) ; unsigned ix ; fprintf ( asm_out_file , , IDENTIFIER_POINTER ( DECL_ASSEMBLER_NAME ( decl ) ) ) ; for ( ix = ; ix != GOMP_DIM_MAX ; ix ++ , dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; gcc_assert ( ! TREE_PURPOSE ( dims ) ) ; fprintf ( asm_out_file , , size ) ; }" GCC,nvptx,184,"Predict the next statement of this code snippet: for ( int i = LAST_VIRTUAL_REGISTER + ; i < max_regs ; i ++ ) if ( REG_N_SETS ( i ) == && REG_N_REFS ( i ) == ) regno_reg_rtx [ i ] = const0_rtx ; tree attr = get_oacc_fn_attrib ( current_function_decl ) ; if ( attr ) { unsigned mask = ; tree dims = TREE_VALUE ( attr ) ; unsigned ix ; for ( ix = ; ix != GOMP_DIM_MAX ; ix ++ , dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; tree allowed = TREE_PURPOSE ( dims ) ; if ( size != && ! ( allowed && integer_zerop ( allowed ) ) ) mask |= GOMP_DIM_MASK ( ix ) ; } gcc_assert ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) || ( mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) ; parallel * pars = nvptx_discover_pars ( & bb_insn_map ) ; nvptx_process_pars ( pars ) ; nvptx_neuter_pars ( pars , mask , ) ; delete pars ; } nvptx_reorg_subreg ( ) ;" GCC,nvptx,185,"Predict the next statement of this code snippet: compute_bb_for_insn ( ) ; thread_prologue_and_epilogue_insns ( ) ; bb_insn_map_t bb_insn_map ; nvptx_split_blocks ( & bb_insn_map ) ; df_clear_flags ( DF_LR_RUN_DCE ) ; df_set_flags ( DF_NO_INSN_RESCAN | DF_NO_HARD_REGS ) ; df_live_add_problem ( ) ; df_live_set_all_dirty ( ) ; df_analyze ( ) ; regstat_init_n_sets_and_refs ( ) ; if ( dump_file ) df_dump ( dump_file ) ; int max_regs = max_reg_num ( ) ; for ( int i = LAST_VIRTUAL_REGISTER + ; i < max_regs ; i ++ ) if ( REG_N_SETS ( i ) == && REG_N_REFS ( i ) == ) regno_reg_rtx [ i ] = const0_rtx ; tree attr = get_oacc_fn_attrib ( current_function_decl ) ; if ( attr ) { unsigned mask = ; tree dims = TREE_VALUE ( attr ) ; unsigned ix ; for ( ix = ; ix != GOMP_DIM_MAX ; ix ++ , dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; tree allowed = TREE_PURPOSE ( dims ) ; if ( size != && ! ( allowed && integer_zerop ( allowed ) ) ) mask |= GOMP_DIM_MASK ( ix ) ;" GCC,nvptx,186,"Predict the next statement of this code snippet: for ( unsigned ix = ; ix ; ix -- ) { vec < edge , va_gc > * edges = dir > ? b -> succs : b -> preds ; size_t offset = ( dir > ? offsetof ( edge_def , dest ) : offsetof ( edge_def , src ) ) ; edge e ; edge_iterator ( ei ) ; FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( target -> flags & BB_VISITED ) n = nvptx_sese_number ( n , p , dir , target , list ) ;" GCC,nvptx,187,"Predict the next statement of this code snippet: edge e ; edge_iterator ( ei ) ; FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( target -> flags & BB_VISITED ) n = nvptx_sese_number ( n , p , dir , target , list ) ; } dir = - dir ; } return n ;" GCC,nvptx,188,"Predict the next statement of this code snippet: sese -> remove ( pseudo_node_t ( me , dir ) ) ; FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( bb_sese * t_sese = BB_GET_SESE ( target ) ) { if ( t_sese -> node < sese -> node + dir && ! ( dir < && sese -> parent == t_sese -> node ) ) sese -> push ( pseudo_node_t ( target , usd * t_sese -> dir ) ) ; } else { sese -> push ( pseudo_node_t ( , ) ) ; } } if ( ! sese -> brackets . length ( ) || ! edges || ! edges -> length ( ) ) { hi_back = ; node_back = pseudo_node_t ( , ) ; sese -> push ( node_back ) ; } sese -> high = hi_back < hi_child ? node_back : node_child ; if ( num_children > ) { hi_child = depth ; if ( dir < && child ) { node_child = sese -> high ; hi_child = node_child . second ; if ( node_child . first ) hi_child += BB_GET_SESE ( node_child . first ) -> node ; } FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( target == child ) continue ; bb_sese * t_sese = BB_GET_SESE ( target ) ; if ( ! t_sese ) continue ; if ( t_sese -> parent != sese -> node ) continue ; int t_hi = t_sese -> high . second ; if ( basic_block child_hi_block = t_sese -> high . first ) t_hi += BB_GET_SESE ( child_hi_block ) -> node ; if ( hi_child > t_hi ) { hi_child = t_hi ; node_child = t_sese -> high ; } } sese -> push ( node_child ) ;" GCC,nvptx,189,"Predict the next statement of this code snippet: node_back = pseudo_node_t ( , ) ; } } sese -> remove ( pseudo_node_t ( me , dir ) ) ; FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( bb_sese * t_sese = BB_GET_SESE ( target ) ) { if ( t_sese -> node < sese -> node + dir && ! ( dir < && sese -> parent == t_sese -> node ) ) sese -> push ( pseudo_node_t ( target , usd * t_sese -> dir ) ) ; } else { sese -> push ( pseudo_node_t ( , ) ) ; } } if ( ! sese -> brackets . length ( ) || ! edges || ! edges -> length ( ) ) { hi_back = ; node_back = pseudo_node_t ( , ) ; sese -> push ( node_back ) ; } sese -> high = hi_back < hi_child ? node_back : node_child ; if ( num_children > ) { hi_child = depth ; if ( dir < && child ) { node_child = sese -> high ; hi_child = node_child . second ; if ( node_child . first ) hi_child += BB_GET_SESE ( node_child . first ) -> node ; } FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( target == child ) continue ; bb_sese * t_sese = BB_GET_SESE ( target ) ; if ( ! t_sese ) continue ; if ( t_sese -> parent != sese -> node ) continue ; int t_hi = t_sese -> high . second ; if ( basic_block child_hi_block = t_sese -> high . first ) t_hi += BB_GET_SESE ( child_hi_block ) -> node ; if ( hi_child > t_hi ) { hi_child = t_hi ; node_child = t_sese -> high ;" GCC,nvptx,190,"Predict the next statement of this code snippet: else { cond_branch = SET_SRC ( tail_branch ) ; if ( GET_CODE ( cond_branch ) != IF_THEN_ELSE ) cond_branch = NULL_RTX ; } } if ( tail == head ) { if ( ! head || ! INSN_P ( head ) ) return ; switch ( recog_memoized ( head ) ) { default : break ; case CODE_FOR_nvptx_fork : case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_joining : case CODE_FOR_nvptx_join : return ; } if ( cond_branch ) { if ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) skip_mask = ; } else if ( tail_branch ) return ; } unsigned mode ; rtx_insn * before = tail ; for ( mode = GOMP_DIM_WORKER ; mode <= GOMP_DIM_VECTOR ; mode ++ ) if ( GOMP_DIM_MASK ( mode ) & skip_mask ) { rtx_code_label * label = gen_label_rtx ( ) ; rtx pred = cfun -> machine -> axis_predicate [ mode - GOMP_DIM_WORKER ] ; if ( ! pred ) { pred = gen_reg_rtx ( BImode ) ; cfun -> machine -> axis_predicate [ mode - GOMP_DIM_WORKER ] = pred ; } rtx br ; if ( mode == GOMP_DIM_VECTOR ) br = gen_br_true ( pred , label ) ; else br = gen_br_true_uni ( pred , label ) ; emit_insn_before ( br , head ) ; LABEL_NUSES ( label ) ++ ; if ( tail_branch ) before = emit_label_before ( label , before ) ; else emit_label_after ( label , tail ) ; } if ( cond_branch ) { rtx pvar = XEXP ( XEXP ( cond_branch , ) , ) ; if ( GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) == mask ) { emit_insn_before ( nvptx_gen_vcast ( pvar ) , tail ) ; } else { wcast_data_t data ; data . base = worker_bcast_sym ; data . ptr = ; if ( worker_bcast_size < GET_MODE_SIZE ( SImode ) ) worker_bcast_size = GET_MODE_SIZE ( SImode ) ; data . offset = ; emit_insn_before ( nvptx_gen_wcast ( pvar , PM_read , , & data ) , before ) ; emit_insn_before ( nvptx_wsync ( false ) , tail ) ;" GCC,nvptx,191,"Predict the next statement of this code snippet: } if ( tail == head ) { if ( ! head || ! INSN_P ( head ) ) return ; switch ( recog_memoized ( head ) ) { default : break ; case CODE_FOR_nvptx_fork : case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_joining : case CODE_FOR_nvptx_join : return ; } if ( cond_branch ) { if ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) skip_mask = ; } else if ( tail_branch ) return ; } unsigned mode ; rtx_insn * before = tail ; for ( mode = GOMP_DIM_WORKER ; mode <= GOMP_DIM_VECTOR ; mode ++ ) if ( GOMP_DIM_MASK ( mode ) & skip_mask ) { rtx_code_label * label = gen_label_rtx ( ) ; rtx pred = cfun -> machine -> axis_predicate [ mode - GOMP_DIM_WORKER ] ; if ( ! pred ) { pred = gen_reg_rtx ( BImode ) ; cfun -> machine -> axis_predicate [ mode - GOMP_DIM_WORKER ] = pred ; } rtx br ; if ( mode == GOMP_DIM_VECTOR ) br = gen_br_true ( pred , label ) ; else br = gen_br_true_uni ( pred , label ) ; emit_insn_before ( br , head ) ; LABEL_NUSES ( label ) ++ ; if ( tail_branch ) before = emit_label_before ( label , before ) ; else emit_label_after ( label , tail ) ; } if ( cond_branch ) { rtx pvar = XEXP ( XEXP ( cond_branch , ) , ) ; if ( GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) == mask ) { emit_insn_before ( nvptx_gen_vcast ( pvar ) , tail ) ; } else { wcast_data_t data ; data . base = worker_bcast_sym ; data . ptr = ; if ( worker_bcast_size < GET_MODE_SIZE ( SImode ) ) worker_bcast_size = GET_MODE_SIZE ( SImode ) ; data . offset = ; emit_insn_before ( nvptx_gen_wcast ( pvar , PM_read , , & data ) , before ) ; emit_insn_before ( nvptx_wsync ( false ) , tail ) ; data . offset = ; emit_insn_before ( nvptx_gen_wcast ( pvar , PM_write , , & data ) , tail ) ; emit_insn_before ( nvptx_wsync ( true ) , tail ) ;" GCC,nvptx,192,"Predict the next statement of this code snippet: static void nvptx_vpropagate ( basic_block block , rtx_insn * insn ) { nvptx_propagate ( block , insn , PM_read_write , vprop_gen , ) ;" GCC,nvptx,193,"Predict the next statement of this code snippet: rtx init = gen_rtx_SET ( data . base , worker_bcast_sym ) ; emit_insn_after ( init , insn ) ; if ( worker_bcast_size < data . offset ) worker_bcast_size = data . offset ; }" GCC,nvptx,194,"Predict the next statement of this code snippet: data . ptr = NULL_RTX ; nvptx_propagate ( block , insn , pre_p ? PM_read : PM_write , wprop_gen , & data ) ; if ( data . offset ) {" GCC,nvptx,195,"Predict the next statement of this code snippet: return gen_nvptx_barsync ( GEN_INT ( after ) ) ;" GCC,nvptx,196,"Predict the next statement of this code snippet: if ( sym ) { fprintf ( asm_out_file , ) ; output_address ( VOIDmode , sym ) ; fprintf ( asm_out_file , val ? : ) ;" GCC,nvptx,197,"Predict the next statement of this code snippet: if ( ! ( pm & PM_read_write ) ) return ; return nvptx_gen_vcast ( reg ) ;" GCC,nvptx,198,"Predict the next statement of this code snippet: static rtx wprop_gen ( rtx reg , propagate_mask pm , unsigned rep , void * data_ ) { wcast_data_t * data = ( wcast_data_t * ) data_ ; if ( pm & PM_loop_begin ) { unsigned align = GET_MODE_ALIGNMENT ( GET_MODE ( reg ) ) / BITS_PER_UNIT ; if ( align > worker_bcast_align ) worker_bcast_align = align ; data -> offset = ( data -> offset + align - ) & ~ ( align - ) ; data -> ptr = gen_reg_rtx ( Pmode ) ;" GCC,nvptx,199,"Predict the next statement of this code snippet: if ( flag_openacc && optval ) error ( , optname ) ;" GCC,nvptx,200,"Predict the next statement of this code snippet: if ( flag_openacc && optval ) error ( , optname ) ;" GCC,nvptx,201,"Predict the next statement of this code snippet: write_var_marker ( file , false , TREE_PUBLIC ( decl ) , name ) ; fprintf ( file , ) ; tree size = DECL_SIZE_UNIT ( decl ) ; nvptx_assemble_decl_begin ( file , name , section_for_decl ( decl ) , TREE_TYPE ( decl ) , size ? tree_to_shwi ( size ) : , DECL_ALIGN ( decl ) ) ; nvptx_assemble_decl_end ( ) ;" GCC,nvptx,202,"Predict the next statement of this code snippet: if ( DECL_WEAK ( decl ) ) error_at ( DECL_SOURCE_LOCATION ( decl ) , ) ; write_var_marker ( file , false , TREE_PUBLIC ( decl ) , name ) ; fprintf ( file , ) ; tree size = DECL_SIZE_UNIT ( decl ) ;" GCC,nvptx,203,"Predict the next statement of this code snippet: if ( DECL_STATIC_CHAIN ( decl ) || cfun -> machine -> has_chain ) write_arg_type ( s , STATIC_CHAIN_REGNUM , DECL_STATIC_CHAIN ( decl ) ? argno : - , ptr_type_node , true ) ; fprintf ( file , , s . str ( ) . c_str ( ) ) ; if ( ! crtl -> is_leaf ) crtl -> is_leaf = leaf_function_p ( ) ; HOST_WIDE_INT sz = get_frame_size ( ) ; bool need_frameptr = sz || cfun -> machine -> has_chain ; int alignment = crtl -> stack_alignment_needed / BITS_PER_UNIT ; if ( ! TARGET_SOFT_STACK ) { if ( cfun -> machine -> has_varadic ) init_frame ( file , STACK_POINTER_REGNUM , UNITS_PER_WORD , crtl -> outgoing_args_size ) ; if ( need_frameptr ) init_frame ( file , FRAME_POINTER_REGNUM , alignment , ROUND_UP ( sz , GET_MODE_SIZE ( DImode ) ) ) ; } else if ( need_frameptr || cfun -> machine -> has_varadic || cfun -> calls_alloca || ( cfun -> machine -> has_simtreg && ! crtl -> is_leaf ) ) init_softstack_frame ( file , alignment , sz ) ; if ( cfun -> machine -> has_simtreg ) { unsigned HOST_WIDE_INT & simtsz = cfun -> machine -> simt_stack_size ; unsigned HOST_WIDE_INT & align = cfun -> machine -> simt_stack_align ; align = MAX ( align , GET_MODE_SIZE ( DImode ) ) ; if ( ! crtl -> is_leaf || cfun -> calls_alloca ) simtsz = HOST_WIDE_INT_M1U ; if ( simtsz == HOST_WIDE_INT_M1U ) simtsz = nvptx_softstack_size ; if ( cfun -> machine -> has_softstack ) simtsz += POINTER_SIZE / ; simtsz = ROUND_UP ( simtsz , GET_MODE_SIZE ( DImode ) ) ; if ( align > GET_MODE_SIZE ( DImode ) ) simtsz += align - GET_MODE_SIZE ( DImode ) ; if ( simtsz ) fprintf ( file , HOST_WIDE_INT_PRINT_DEC , simtsz ) ; } int maxregs = max_reg_num ( ) ; for ( int i = LAST_VIRTUAL_REGISTER + ; i < maxregs ; i ++ ) { if ( regno_reg_rtx [ i ] != const0_rtx ) { machine_mode mode = PSEUDO_REGNO_MODE ( i ) ; machine_mode split = maybe_split_mode ( mode ) ;" GCC,nvptx,204,"Predict the next statement of this code snippet: if ( worker_red_size ) write_worker_buffer ( asm_out_file , worker_red_sym , worker_red_align , worker_red_size ) ; if ( need_softstack_decl ) { write_var_marker ( asm_out_file , false , true , ) ; fprintf ( asm_out_file , , POINTER_SIZE ) ; } if ( need_unisimt_decl ) { write_var_marker ( asm_out_file , false , true , ) ; fprintf ( asm_out_file , ) ;" GCC,nvptx,205,"Predict the next statement of this code snippet: nvptx_function_end ( STREAM ) { \ , , , , , , , , \ , , , , , , , \ }" GCC,nvptx,206,"Predict the next statement of this code snippet: nvptx_function_end ( STREAM ) { \ , , , , , , , , \ , , , , , , , \ }" GCC,nvptx,207,"Predict the next statement of this code snippet: case DImode : case DFmode : { rtx tmp0 = gen_reg_rtx ( SImode ) ; rtx tmp1 = gen_reg_rtx ( SImode ) ; start_sequence ( ) ; emit_insn ( nvptx_gen_unpack ( tmp0 , tmp1 , src ) ) ; emit_insn ( nvptx_gen_shuffle ( tmp0 , tmp0 , idx , kind ) ) ; emit_insn ( nvptx_gen_shuffle ( tmp1 , tmp1 , idx , kind ) ) ; emit_insn ( nvptx_gen_pack ( dst , tmp0 , tmp1 ) ) ; res = get_insns ( ) ; end_sequence ( ) ; } break ; case BImode : { rtx tmp = gen_reg_rtx ( SImode ) ; start_sequence ( ) ; emit_insn ( gen_sel_truesi ( tmp , src , GEN_INT ( ) , const0_rtx ) ) ; emit_insn ( nvptx_gen_shuffle ( tmp , tmp , idx , kind ) ) ; emit_insn ( gen_rtx_SET ( dst , gen_rtx_NE ( BImode , tmp , const0_rtx ) ) ) ; res = get_insns ( ) ; end_sequence ( ) ; } break ;" GCC,nvptx,208,"Predict the next statement of this code snippet: bool changed = false ; if ( fn_level <= GOMP_DIM_VECTOR && fn_level >= - && dims [ GOMP_DIM_VECTOR ] >= && dims [ GOMP_DIM_VECTOR ] != PTX_VECTOR_LENGTH ) { if ( fn_level < && dims [ GOMP_DIM_VECTOR ] >= ) warning_at ( decl ? DECL_SOURCE_LOCATION ( decl ) : UNKNOWN_LOCATION , , dims [ GOMP_DIM_VECTOR ] ? G_ ( ) : G_ ( ) , PTX_VECTOR_LENGTH , dims [ GOMP_DIM_VECTOR ] ) ; dims [ GOMP_DIM_VECTOR ] = PTX_VECTOR_LENGTH ; changed = true ; } if ( dims [ GOMP_DIM_WORKER ] > PTX_WORKER_LENGTH ) { warning_at ( decl ? DECL_SOURCE_LOCATION ( decl ) : UNKNOWN_LOCATION , , , PTX_WORKER_LENGTH , dims [ GOMP_DIM_WORKER ] ) ; dims [ GOMP_DIM_WORKER ] = PTX_WORKER_LENGTH ; changed = true ; } if ( ! decl ) {" GCC,nvptx,209,"Predict the next statement of this code snippet: if ( fn_level <= GOMP_DIM_VECTOR && fn_level >= - && dims [ GOMP_DIM_VECTOR ] >= && dims [ GOMP_DIM_VECTOR ] != PTX_VECTOR_LENGTH ) { if ( fn_level < && dims [ GOMP_DIM_VECTOR ] >= ) warning_at ( decl ? DECL_SOURCE_LOCATION ( decl ) : UNKNOWN_LOCATION , , dims [ GOMP_DIM_VECTOR ] ? G_ ( ) : G_ ( ) , PTX_VECTOR_LENGTH , dims [ GOMP_DIM_VECTOR ] ) ; dims [ GOMP_DIM_VECTOR ] = PTX_VECTOR_LENGTH ; changed = true ; } if ( dims [ GOMP_DIM_WORKER ] > PTX_WORKER_LENGTH ) {" GCC,nvptx,210,"Predict the next statement of this code snippet: if ( ! global_options_set . x_flag_no_common ) flag_no_common = ; flag_var_tracking = ; if ( nvptx_optimize < ) nvptx_optimize = optimize > ; declared_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; needed_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; declared_libfuncs_htab = hash_table < declared_libfunc_hasher > :: create_ggc ( ) ; worker_bcast_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_bcast_sym , DATA_AREA_SHARED ) ; worker_bcast_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; worker_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_red_sym , DATA_AREA_SHARED ) ; worker_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; diagnose_openacc_conflict ( TARGET_GOMP , ) ; diagnose_openacc_conflict ( TARGET_SOFT_STACK , ) ;" GCC,nvptx,211,"Predict the next statement of this code snippet: } else output_address ( VOIDmode , callee ) ; const char * open = ; for ( int argno = ; argno < arg_end ; argno ++ ) { fprintf ( asm_out_file , , open , argno ) ; open = ; } if ( decl && DECL_STATIC_CHAIN ( decl ) ) { fprintf ( asm_out_file , , open , reg_names [ STATIC_CHAIN_REGNUM ] ) ; open = ; } if ( ! open [ ] ) fprintf ( asm_out_file , ) ; if ( needs_tgt ) { fprintf ( asm_out_file , ) ; assemble_name ( asm_out_file , buf ) ; } fprintf ( asm_out_file , ) ; if ( find_reg_note ( insn , REG_NORETURN , NULL ) ) fprintf ( asm_out_file , ) ; if ( result ) { static char rval [ sizeof ( ) + ] ; if ( ! rval [ ] ) sprintf ( rval , , reg_names [ NVPTX_RETURN_REGNUM ] ) ; return rval ; } return ;" GCC,nvptx,212,"Predict the next statement of this code snippet: fprintf ( file , , bits , regno , regno ) ; if ( CONST_INT_P ( size ) ) fprintf ( file , HOST_WIDE_INT_PRINT_DEC , ROUND_UP ( UINTVAL ( size ) , GET_MODE_SIZE ( DImode ) ) ) ; else output_reg ( file , REGNO ( size ) , VOIDmode ) ; fputs ( , file ) ; if ( ! CONST_INT_P ( size ) || UINTVAL ( align ) > GET_MODE_SIZE ( DImode ) ) fprintf ( file , HOST_WIDE_INT_PRINT_DEC , bits , regno , regno , UINTVAL ( align ) ) ; } if ( cfun -> machine -> has_softstack ) { const char * reg_stack = reg_names [ STACK_POINTER_REGNUM ] ; if ( entering ) { fprintf ( file , , bits , regno , bits / , reg_stack ) ; fprintf ( file , , bits , reg_stack , regno , bits / ) ;" GCC,nvptx,213,"Predict the next statement of this code snippet: if ( rw & PM_write ) emit_insn ( gen_rtx_SET ( gen_rtx_MEM ( DImode , ptr ) , tmp ) ) ; if ( fs ) { emit_insn ( gen_rtx_SET ( pred , gen_rtx_NE ( BImode , idx , const0_rtx ) ) ) ; emit_insn ( gen_adddi3 ( ptr , ptr , GEN_INT ( GET_MODE_SIZE ( DImode ) ) ) ) ; emit_insn ( gen_br_true_uni ( pred , label ) ) ; rtx fini = fn ( tmp , PM_loop_end , fs , data ) ; if ( fini ) emit_insn ( fini ) ; emit_insn ( gen_rtx_CLOBBER ( GET_MODE ( idx ) , idx ) ) ; } emit_insn ( gen_rtx_CLOBBER ( GET_MODE ( tmp ) , tmp ) ) ; emit_insn ( gen_rtx_CLOBBER ( GET_MODE ( ptr ) , ptr ) ) ; rtx cpy = get_insns ( ) ; end_sequence ( ) ; insn = emit_insn_after ( cpy , insn ) ; } EXECUTE_IF_SET_IN_BITMAP ( live , , ix , iterator ) {" GCC,nvptx,214,"Predict the next statement of this code snippet: tree attr = oacc_get_fn_attrib ( current_function_decl ) ; if ( attr ) { unsigned mask = ; tree dims = TREE_VALUE ( attr ) ; unsigned ix ; for ( ix = ; ix != GOMP_DIM_MAX ; ix ++ , dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; tree allowed = TREE_PURPOSE ( dims ) ; if ( size != && ! ( allowed && integer_zerop ( allowed ) ) ) mask |= GOMP_DIM_MASK ( ix ) ; } gcc_assert ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) || ( mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) ; parallel * pars = nvptx_discover_pars ( & bb_insn_map ) ;" GCC,nvptx,215,"Predict the next statement of this code snippet: unsigned ix ; for ( ix = ; ix != GOMP_DIM_MAX ; ix ++ , dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; tree allowed = TREE_PURPOSE ( dims ) ; if ( size != && ! ( allowed && integer_zerop ( allowed ) ) ) mask |= GOMP_DIM_MASK ( ix ) ; } gcc_assert ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) || ( mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) ; parallel * pars = nvptx_discover_pars ( & bb_insn_map ) ; nvptx_process_pars ( pars ) ; nvptx_neuter_pars ( pars , mask , ) ; delete pars ; } nvptx_reorg_subreg ( ) ; if ( TARGET_UNIFORM_SIMT ) nvptx_reorg_uniform_simt ( ) ; regstat_free_n_sets_and_refs ( ) ;" GCC,nvptx,216,"Predict the next statement of this code snippet: static int nvptx_simt_vf ( ) { return PTX_VECTOR_LENGTH ;" GCC,nvptx,217,"Predict the next statement of this code snippet: static int nvptx_simt_vf ( ) {" GCC,nvptx,218,"Predict the next statement of this code snippet: if ( DECL_STATIC_CHAIN ( decl ) || cfun -> machine -> has_chain ) write_arg_type ( s , STATIC_CHAIN_REGNUM , DECL_STATIC_CHAIN ( decl ) ? argno : - , ptr_type_node , true ) ; fprintf ( file , , s . str ( ) . c_str ( ) ) ; if ( ! crtl -> is_leaf ) crtl -> is_leaf = leaf_function_p ( ) ; HOST_WIDE_INT sz = get_frame_size ( ) ; bool need_frameptr = sz || cfun -> machine -> has_chain ; int alignment = crtl -> stack_alignment_needed / BITS_PER_UNIT ; if ( ! TARGET_SOFT_STACK ) { if ( cfun -> machine -> has_varadic ) init_frame ( file , STACK_POINTER_REGNUM , UNITS_PER_WORD , crtl -> outgoing_args_size ) ; if ( need_frameptr ) init_frame ( file , FRAME_POINTER_REGNUM , alignment , ROUND_UP ( sz , GET_MODE_SIZE ( DImode ) ) ) ; } else if ( need_frameptr || cfun -> machine -> has_varadic || cfun -> calls_alloca || ( cfun -> machine -> has_simtreg && ! crtl -> is_leaf ) ) init_softstack_frame ( file , alignment , sz ) ; if ( cfun -> machine -> has_simtreg ) { unsigned HOST_WIDE_INT & simtsz = cfun -> machine -> simt_stack_size ; unsigned HOST_WIDE_INT & align = cfun -> machine -> simt_stack_align ; align = MAX ( align , GET_MODE_SIZE ( DImode ) ) ; if ( ! crtl -> is_leaf || cfun -> calls_alloca ) simtsz = HOST_WIDE_INT_M1U ;" GCC,nvptx,219,"Predict the next statement of this code snippet: write_omp_entry ( file , name , buf ) ; name = buf ; } std :: stringstream s ; write_fn_proto ( s , true , name , decl ) ; s << ; bool return_in_mem = write_return_type ( s , false , result_type ) ; if ( return_in_mem ) argno = write_arg_type ( s , , argno , ptr_type_node , true ) ; tree args = TYPE_ARG_TYPES ( fntype ) ; bool prototyped = true ; if ( ! args ) { args = DECL_ARGUMENTS ( decl ) ; prototyped = false ; } for ( ; args != NULL_TREE ; args = TREE_CHAIN ( args ) ) { tree type = prototyped ? TREE_VALUE ( args ) : TREE_TYPE ( args ) ; argno = write_arg_type ( s , , argno , type , prototyped ) ; } if ( stdarg_p ( fntype ) ) argno = write_arg_type ( s , ARG_POINTER_REGNUM , argno , ptr_type_node , true ) ; if ( DECL_STATIC_CHAIN ( decl ) || cfun -> machine -> has_chain ) write_arg_type ( s , STATIC_CHAIN_REGNUM , DECL_STATIC_CHAIN ( decl ) ? argno : - , ptr_type_node , true ) ; fprintf ( file , , s . str ( ) . c_str ( ) ) ; if ( ! crtl -> is_leaf ) crtl -> is_leaf = leaf_function_p ( ) ; HOST_WIDE_INT sz = get_frame_size ( ) ; bool need_frameptr = sz || cfun -> machine -> has_chain ; int alignment = crtl -> stack_alignment_needed / BITS_PER_UNIT ; if ( ! TARGET_SOFT_STACK ) { if ( cfun -> machine -> has_varadic ) init_frame ( file , STACK_POINTER_REGNUM , UNITS_PER_WORD , crtl -> outgoing_args_size ) ; if ( need_frameptr ) init_frame ( file , FRAME_POINTER_REGNUM , alignment , ROUND_UP ( sz , GET_MODE_SIZE ( DImode ) ) ) ; } else if ( need_frameptr || cfun -> machine -> has_varadic || cfun -> calls_alloca || ( cfun -> machine -> has_simtreg && ! crtl -> is_leaf ) ) init_softstack_frame ( file , alignment , sz ) ; if ( cfun -> machine -> has_simtreg ) { unsigned HOST_WIDE_INT & simtsz = cfun -> machine -> simt_stack_size ; unsigned HOST_WIDE_INT & align = cfun -> machine -> simt_stack_align ; align = MAX ( align , GET_MODE_SIZE ( DImode ) ) ; if ( ! crtl -> is_leaf || cfun -> calls_alloca ) simtsz = HOST_WIDE_INT_M1U ; if ( simtsz == HOST_WIDE_INT_M1U ) simtsz = nvptx_softstack_size ; if ( cfun -> machine -> has_softstack ) simtsz += POINTER_SIZE / ; simtsz = ROUND_UP ( simtsz , GET_MODE_SIZE ( DImode ) ) ; if ( align > GET_MODE_SIZE ( DImode ) ) simtsz += align - GET_MODE_SIZE ( DImode ) ; if ( simtsz ) fprintf ( file , HOST_WIDE_INT_PRINT_DEC , simtsz ) ;" GCC,nvptx,220,"Predict the next statement of this code snippet: return par ; case CODE_FOR_nvptx_forked : { unsigned mask = UINTVAL ( XVECEXP ( PATTERN ( end ) , , ) ) ; gcc_assert ( mask ) ; par = new parallel ( par , mask ) ; par -> forked_block = block ; par -> forked_insn = end ; if ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) par -> fork_insn = nvptx_discover_pre ( block , CODE_FOR_nvptx_fork ) ; } break ; case CODE_FOR_nvptx_join : { unsigned mask = UINTVAL ( XVECEXP ( PATTERN ( end ) , , ) ) ; gcc_assert ( par -> mask == mask ) ; par -> join_block = block ; par -> join_insn = end ; if ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) par -> joining_insn = nvptx_discover_pre ( block , CODE_FOR_nvptx_joining ) ; par = par -> parent ; } break ; default : gcc_unreachable ( ) ; } }" GCC,nvptx,221,"Predict the next statement of this code snippet: break ; default : { rtx addr = data -> ptr ; if ( ! addr ) { unsigned align = GET_MODE_ALIGNMENT ( mode ) / BITS_PER_UNIT ; if ( align > worker_bcast_align ) worker_bcast_align = align ; data -> offset = ( data -> offset + align - ) & ~ ( align - ) ; addr = data -> base ; if ( data -> offset ) addr = gen_rtx_PLUS ( Pmode , addr , GEN_INT ( data -> offset ) ) ; } addr = gen_rtx_MEM ( mode , addr ) ; if ( pm == PM_read ) res = gen_rtx_SET ( addr , reg ) ; else if ( pm == PM_write ) res = gen_rtx_SET ( reg , addr ) ; else gcc_unreachable ( ) ; if ( data -> ptr ) { start_sequence ( ) ; emit_insn ( res ) ;" GCC,nvptx,222,"Predict the next statement of this code snippet: { rtx tmp = gen_reg_rtx ( SImode ) ; start_sequence ( ) ; if ( pm & PM_read ) emit_insn ( gen_sel_truesi ( tmp , reg , GEN_INT ( ) , const0_rtx ) ) ; emit_insn ( nvptx_gen_wcast ( tmp , pm , rep , data ) ) ; if ( pm & PM_write ) emit_insn ( gen_rtx_SET ( reg , gen_rtx_NE ( BImode , tmp , const0_rtx ) ) ) ; res = get_insns ( ) ; end_sequence ( ) ; } break ; default : { rtx addr = data -> ptr ; if ( ! addr ) { unsigned align = GET_MODE_ALIGNMENT ( mode ) / BITS_PER_UNIT ; if ( align > worker_bcast_align ) worker_bcast_align = align ; data -> offset = ( data -> offset + align - ) & ~ ( align - ) ; addr = data -> base ; if ( data -> offset ) addr = gen_rtx_PLUS ( Pmode , addr , GEN_INT ( data -> offset ) ) ; }" GCC,nvptx,223,"Predict the next statement of this code snippet: gimple * cond_stmt = gimple_build_cond ( NE_EXPR , tid , integer_zero_node , NULL_TREE , NULL_TREE ) ; gimple_call_set_lhs ( tid_call , tid ) ; gimple_seq_add_stmt ( & seq , tid_call ) ; gimple_seq_add_stmt ( & seq , cond_stmt ) ; edge init_edge = split_block ( gsi_bb ( gsi ) , call ) ; basic_block init_bb = init_edge -> dest ; basic_block call_bb = init_edge -> src ; init_edge -> flags ^= EDGE_FALLTHRU | EDGE_TRUE_VALUE ; init_edge -> probability = profile_probability :: even ( ) ; gimple_seq init_seq = NULL ; tree init_var = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( init_var , init , & init_seq ) ; gsi = gsi_start_bb ( init_bb ) ; gsi_insert_seq_before ( & gsi , init_seq , GSI_SAME_STMT ) ; gsi_prev ( & gsi ) ; edge inited_edge = split_block ( gsi_bb ( gsi ) , gsi_stmt ( gsi ) ) ; basic_block dst_bb = inited_edge -> dest ; edge nop_edge = make_edge ( call_bb , dst_bb , EDGE_FALSE_VALUE ) ; nop_edge -> probability = profile_probability :: even ( ) ; gphi * phi = create_phi_node ( lhs , dst_bb ) ; add_phi_arg ( phi , init_var , inited_edge , gimple_location ( call ) ) ; add_phi_arg ( phi , var , nop_edge , gimple_location ( call ) ) ; set_immediate_dominator ( CDI_DOMINATORS , dst_bb , call_bb ) ; gsi = gsi_for_stmt ( call ) ; } else {" GCC,nvptx,224,"Predict the next statement of this code snippet: tree lhs = gimple_call_lhs ( call ) ; tree var = gimple_call_arg ( call , ) ; int level = TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; enum tree_code rcode = ( enum tree_code ) TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; tree init = omp_reduction_init_op ( gimple_location ( call ) , rcode , TREE_TYPE ( var ) ) ; gimple_seq seq = NULL ; push_gimplify_context ( true ) ; if ( level == GOMP_DIM_VECTOR ) { tree tid = make_ssa_name ( integer_type_node ) ; tree dim_vector = gimple_call_arg ( call , ) ; gimple * tid_call = gimple_build_call_internal ( IFN_GOACC_DIM_POS , , dim_vector ) ; gimple * cond_stmt = gimple_build_cond ( NE_EXPR , tid , integer_zero_node , NULL_TREE , NULL_TREE ) ; gimple_call_set_lhs ( tid_call , tid ) ; gimple_seq_add_stmt ( & seq , tid_call ) ; gimple_seq_add_stmt ( & seq , cond_stmt ) ; edge init_edge = split_block ( gsi_bb ( gsi ) , call ) ; basic_block init_bb = init_edge -> dest ; basic_block call_bb = init_edge -> src ; init_edge -> flags ^= EDGE_FALLTHRU | EDGE_TRUE_VALUE ; init_edge -> probability = profile_probability :: even ( ) ; gimple_seq init_seq = NULL ; tree init_var = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( init_var , init , & init_seq ) ; gsi = gsi_start_bb ( init_bb ) ; gsi_insert_seq_before ( & gsi , init_seq , GSI_SAME_STMT ) ; gsi_prev ( & gsi ) ; edge inited_edge = split_block ( gsi_bb ( gsi ) , gsi_stmt ( gsi ) ) ; basic_block dst_bb = inited_edge -> dest ;" GCC,nvptx,225,"Predict the next statement of this code snippet: static void nvptx_option_override ( void ) { init_machine_status = nvptx_init_machine_status ; if ( ! global_options_set . x_flag_toplevel_reorder ) flag_toplevel_reorder = ; debug_nonbind_markers_p = ; if ( ! global_options_set . x_flag_no_common ) flag_no_common = ; if ( function_entry_patch_area_size > ) sorry ( ) ; flag_var_tracking = ; if ( nvptx_optimize < ) nvptx_optimize = optimize > ; declared_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; needed_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; declared_libfuncs_htab = hash_table < declared_libfunc_hasher > :: create_ggc ( ) ; worker_bcast_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_bcast_sym , DATA_AREA_SHARED ) ; worker_bcast_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; worker_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_red_sym , DATA_AREA_SHARED ) ; worker_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ;" GCC,nvptx,226,"Predict the next statement of this code snippet: if ( par -> mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) { nvptx_wpropagate ( false , is_call , par -> forked_block , par -> forked_insn ) ; bool empty = nvptx_wpropagate ( true , is_call , par -> forked_block , par -> fork_insn ) ; if ( ! empty || ! is_call ) { emit_insn_before ( nvptx_wsync ( false ) , par -> forked_insn ) ; emit_insn_before ( nvptx_wsync ( true ) , par -> join_insn ) ; } }" GCC,nvptx,227,"Predict the next statement of this code snippet: start_sequence ( ) ; emit_insn ( gen_rtx_SET ( ptr , frame_pointer_rtx ) ) ; if ( fs ) { idx = gen_reg_rtx ( SImode ) ; pred = gen_reg_rtx ( BImode ) ; label = gen_label_rtx ( ) ; emit_insn ( gen_rtx_SET ( idx , GEN_INT ( fs ) ) ) ; rtx init = fn ( tmp , PM_loop_begin , fs , data ) ; if ( init ) emit_insn ( init ) ; emit_label ( label ) ; LABEL_NUSES ( label ) ++ ; emit_insn ( gen_addsi3 ( idx , idx , GEN_INT ( - ) ) ) ; } if ( rw & PM_read ) emit_insn ( gen_rtx_SET ( tmp , gen_rtx_MEM ( DImode , ptr ) ) ) ; emit_insn ( fn ( tmp , rw , fs , data ) ) ; if ( rw & PM_write ) emit_insn ( gen_rtx_SET ( gen_rtx_MEM ( DImode , ptr ) , tmp ) ) ; if ( fs ) { emit_insn ( gen_rtx_SET ( pred , gen_rtx_NE ( BImode , idx , const0_rtx ) ) ) ; emit_insn ( gen_adddi3 ( ptr , ptr , GEN_INT ( GET_MODE_SIZE ( DImode ) ) ) ) ; emit_insn ( gen_br_true_uni ( pred , label ) ) ;" GCC,nvptx,228,"Predict the next statement of this code snippet: emit_insn ( gen_rtx_SET ( ptr , frame_pointer_rtx ) ) ; if ( fs ) { idx = gen_reg_rtx ( SImode ) ; pred = gen_reg_rtx ( BImode ) ; label = gen_label_rtx ( ) ; emit_insn ( gen_rtx_SET ( idx , GEN_INT ( fs ) ) ) ; rtx init = fn ( tmp , PM_loop_begin , fs , data ) ; if ( init ) emit_insn ( init ) ; emit_label ( label ) ; LABEL_NUSES ( label ) ++ ; emit_insn ( gen_addsi3 ( idx , idx , GEN_INT ( - ) ) ) ; } if ( rw & PM_read ) emit_insn ( gen_rtx_SET ( tmp , gen_rtx_MEM ( DImode , ptr ) ) ) ; emit_insn ( fn ( tmp , rw , fs , data ) ) ; if ( rw & PM_write ) emit_insn ( gen_rtx_SET ( gen_rtx_MEM ( DImode , ptr ) , tmp ) ) ; if ( fs ) { emit_insn ( gen_rtx_SET ( pred , gen_rtx_NE ( BImode , idx , const0_rtx ) ) ) ; emit_insn ( gen_adddi3 ( ptr , ptr , GEN_INT ( GET_MODE_SIZE ( DImode ) ) ) ) ; emit_insn ( gen_br_true_uni ( pred , label ) ) ; rtx fini = fn ( tmp , PM_loop_end , fs , data ) ;" GCC,nvptx,229,"Predict the next statement of this code snippet: unsigned mask = ; tree dims = TREE_VALUE ( attr ) ; unsigned ix ; for ( ix = ; ix != GOMP_DIM_MAX ; ix ++ , dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; tree allowed = TREE_PURPOSE ( dims ) ; if ( size != && ! ( allowed && integer_zerop ( allowed ) ) ) mask |= GOMP_DIM_MASK ( ix ) ; } gcc_assert ( ! ( mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) || ( mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) ; parallel * pars = nvptx_discover_pars ( & bb_insn_map ) ; nvptx_process_pars ( pars ) ; nvptx_neuter_pars ( pars , mask , ) ; delete pars ; }" GCC,nvptx,230,"Predict the next statement of this code snippet: df_live_set_all_dirty ( ) ; df_analyze ( ) ; regstat_init_n_sets_and_refs ( ) ; if ( dump_file ) df_dump ( dump_file ) ; int max_regs = max_reg_num ( ) ; for ( int i = LAST_VIRTUAL_REGISTER + ; i < max_regs ; i ++ ) if ( REG_N_SETS ( i ) == && REG_N_REFS ( i ) == ) regno_reg_rtx [ i ] = const0_rtx ; tree attr = oacc_get_fn_attrib ( current_function_decl ) ; if ( attr ) {" GCC,nvptx,231,"Predict the next statement of this code snippet: static bool nvptx_vpropagate ( bool is_call , basic_block block , rtx_insn * insn ) { return nvptx_propagate ( is_call , block , insn , PM_read_write , vprop_gen , ) ;" GCC,nvptx,232,"Predict the next statement of this code snippet: static bool nvptx_wpropagate ( bool pre_p , bool is_call , basic_block block , rtx_insn * insn ) { wcast_data_t data ; data . base = gen_reg_rtx ( Pmode ) ; data . offset = ; data . ptr = NULL_RTX ; bool empty = nvptx_propagate ( is_call , block , insn , pre_p ? PM_read : PM_write , wprop_gen , & data ) ; gcc_assert ( empty == ! data . offset ) ; if ( data . offset ) { rtx init = gen_rtx_SET ( data . base , worker_bcast_sym ) ; emit_insn_after ( init , insn ) ; if ( worker_bcast_size < data . offset ) worker_bcast_size = data . offset ; }" GCC,nvptx,233,"Predict the next statement of this code snippet: switch ( DECL_FUNCTION_CODE ( fndecl ) ) { case NVPTX_BUILTIN_SHUFFLE : case NVPTX_BUILTIN_SHUFFLELL : return nvptx_expand_shuffle ( exp , target , mode , ignore ) ; case NVPTX_BUILTIN_WORKER_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , false ) ; case NVPTX_BUILTIN_VECTOR_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , true ) ; case NVPTX_BUILTIN_CMP_SWAP : case NVPTX_BUILTIN_CMP_SWAPLL : return nvptx_expand_cmp_swap ( exp , target , mode , ignore ) ; default : gcc_unreachable ( ) ;" GCC,nvptx,234,"Predict the next statement of this code snippet: case NVPTX_BUILTIN_SHUFFLE : case NVPTX_BUILTIN_SHUFFLELL : return nvptx_expand_shuffle ( exp , target , mode , ignore ) ; case NVPTX_BUILTIN_WORKER_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , false ) ; case NVPTX_BUILTIN_VECTOR_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , true ) ; case NVPTX_BUILTIN_CMP_SWAP : case NVPTX_BUILTIN_CMP_SWAPLL : return nvptx_expand_cmp_swap ( exp , target , mode , ignore ) ; default : gcc_unreachable ( ) ; }" GCC,nvptx,235,"Predict the next statement of this code snippet: int ix ; if ( dump_file ) { for ( ix = ; ix < len ; ix ++ ) { const pseudo_node_t & pseudo = child -> brackets [ ix ] . back ; fprintf ( dump_file , , child -> node , pseudo . first ? pseudo . first -> index : , pseudo . second ) ; } } if ( ! brackets . length ( ) ) std :: swap ( brackets , child -> brackets ) ; else { brackets . reserve ( len ) ; for ( ix = ; ix < len ; ix ++ ) brackets . quick_push ( child -> brackets [ ix ] ) ; }" GCC,nvptx,236,"Predict the next statement of this code snippet: rtx_insn * insn ;" GCC,nvptx,237,"Predict the next statement of this code snippet: rtx_insn * insn ; FOR_BB_INSNS ( bb , insn ) if ( INSN_P ( insn ) ) return insn ;" GCC,nvptx,238,"Predict the next statement of this code snippet: bb_sese ( unsigned node_ , unsigned p , int dir_ ) : node ( node_ ) , parent ( p ) , dir ( dir_ ) {" GCC,nvptx,239,"Predict the next statement of this code snippet: bb_sese ( unsigned node_ , unsigned p , int dir_ ) : node ( node_ ) , parent ( p ) , dir ( dir_ ) {" GCC,nvptx,240,"Predict the next statement of this code snippet: bracket ( pseudo_node_t back_ ) : back ( back_ ) , color ( ~ ) , size ( ~ ) {" GCC,nvptx,241,"Predict the next statement of this code snippet: bracket ( pseudo_node_t back_ ) : back ( back_ ) , color ( ~ ) , size ( ~ ) {" GCC,nvptx,242,"Predict the next statement of this code snippet: static enum ptx_version default_ptx_version_option ( void ) { enum ptx_version first = first_ptx_version_supporting_sm ( ( enum ptx_isa ) ptx_isa_option ) ; enum ptx_version res = first ;" GCC,nvptx,243,"Predict the next statement of this code snippet: res = MAX ( res , PTX_VERSION_3_1 ) ; res = MAX ( res , PTX_VERSION_6_0 ) ; gcc_assert ( first <= res ) ;" GCC,nvptx,244,"Predict the next statement of this code snippet: switch ( sm ) { case PTX_ISA_SM30 : return PTX_VERSION_3_0 ; case PTX_ISA_SM35 : return PTX_VERSION_3_1 ; case PTX_ISA_SM53 : return PTX_VERSION_4_2 ; case PTX_ISA_SM70 : return PTX_VERSION_6_0 ; case PTX_ISA_SM75 : return PTX_VERSION_6_3 ; case PTX_ISA_SM80 : return PTX_VERSION_7_0 ; default :" GCC,nvptx,245,"Predict the next statement of this code snippet: case PTX_ISA_SM70 : return PTX_VERSION_6_0 ; case PTX_ISA_SM75 : return PTX_VERSION_6_3 ; case PTX_ISA_SM80 : return PTX_VERSION_7_0 ; default : gcc_unreachable ( ) ; }" GCC,nvptx,246,"Predict the next statement of this code snippet: if ( TREE_CODE ( type ) != RECORD_TYPE ) return false ; const_tree last_field = NULL_TREE ; for ( const_tree f = TYPE_FIELDS ( type ) ; f ; f = TREE_CHAIN ( f ) ) last_field = f ; if ( ! last_field ) return false ; const_tree last_field_type = TREE_TYPE ( last_field ) ; if ( TREE_CODE ( last_field_type ) != ARRAY_TYPE ) return false ;" GCC,nvptx,247,"Predict the next statement of this code snippet: if ( TREE_CODE ( last_field_type ) != ARRAY_TYPE ) return false ;" GCC,nvptx,248,"Predict the next statement of this code snippet: FOR_ALL_BB_FN ( block , cfun ) {" GCC,nvptx,249,"Predict the next statement of this code snippet: FOR_ALL_BB_FN ( block , cfun ) { block -> flags &= ~ BB_VISITED ; BB_SET_SESE ( block , ) ;" GCC,nvptx,250,"Predict the next statement of this code snippet: case CODE_FOR_return : break ; } if ( seen_insn ) worklist . safe_push ( insn_bb_t ( insn , block ) ) ; else map -> get_or_insert ( block ) = insn ; seen_insn = true ;" GCC,nvptx,251,"Predict the next statement of this code snippet: } if ( seen_insn ) worklist . safe_push ( insn_bb_t ( insn , block ) ) ; else map -> get_or_insert ( block ) = insn ; seen_insn = true ;" GCC,nvptx,252,"Predict the next statement of this code snippet: else have_false = true ; } if ( have_false ^ have_true ) continue ; FOR_EACH_EDGE ( e , ei , bb -> preds ) { if ( bitmap_bit_p ( DF_LIVE_OUT ( e -> src ) , ix ) ) continue ; rtx reg = regno_reg_rtx [ ix ] ; gcc_assert ( CONST0_RTX ( GET_MODE ( reg ) ) ) ; start_sequence ( ) ; emit_move_insn ( reg , CONST0_RTX ( GET_MODE ( reg ) ) ) ; rtx_insn * inits = get_insns ( ) ; end_sequence ( ) ; if ( dump_file && ( dump_flags & TDF_DETAILS ) ) for ( rtx_insn * init = inits ; init != NULL ; init = NEXT_INSN ( init ) ) fprintf ( dump_file , , ix , e -> src -> index , e -> dest -> index , INSN_UID ( init ) ) ; insert_insn_on_edge ( inits , e ) ;" GCC,nvptx,253,"Predict the next statement of this code snippet: edge e ; edge_iterator ei ; FOR_EACH_EDGE ( e , ei , bb -> preds ) { if ( bitmap_bit_p ( DF_LIVE_OUT ( e -> src ) , ix ) ) have_true = true ; else have_false = true ; } if ( have_false ^ have_true ) continue ; FOR_EACH_EDGE ( e , ei , bb -> preds ) { if ( bitmap_bit_p ( DF_LIVE_OUT ( e -> src ) , ix ) ) continue ; rtx reg = regno_reg_rtx [ ix ] ; gcc_assert ( CONST0_RTX ( GET_MODE ( reg ) ) ) ; start_sequence ( ) ; emit_move_insn ( reg , CONST0_RTX ( GET_MODE ( reg ) ) ) ; rtx_insn * inits = get_insns ( ) ;" GCC,nvptx,254,"Predict the next statement of this code snippet: FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( bb_sese * t_sese = BB_GET_SESE ( target ) ) { if ( t_sese -> node < sese -> node + dir && ! ( dir < && sese -> parent == t_sese -> node ) ) sese -> push ( pseudo_node_t ( target , usd * t_sese -> dir ) ) ; } else {" GCC,nvptx,255,"Predict the next statement of this code snippet: const char * sep = ;" GCC,nvptx,256,"Predict the next statement of this code snippet: static rtx gen_comment ( const char * s ) { const char * sep = ; size_t len = strlen ( ASM_COMMENT_START ) + strlen ( sep ) + strlen ( s ) + ; char * comment = ( char * ) alloca ( len ) ; snprintf ( comment , len , , ASM_COMMENT_START , sep , s ) ;" GCC,nvptx,257,"Predict the next statement of this code snippet: color = color_counts . length ( ) ; color_counts . quick_push ( ) ; }" GCC,nvptx,258,"Predict the next statement of this code snippet: unsigned get_color ( auto_vec < unsigned > & color_counts , unsigned length ) { if ( length != size ) { size = length ; color = color_counts . length ( ) ; color_counts . quick_push ( ) ;" GCC,nvptx,259,"Predict the next statement of this code snippet: if ( r -> n_allocated == r -> n_in_use ) r -> replacement [ r -> n_allocated ++ ] = gen_reg_rtx ( r -> mode ) ;" GCC,nvptx,260,"Predict the next statement of this code snippet: } enum ptx_version first = first_ptx_version_supporting_sm ( ( enum ptx_isa ) ptx_isa_option ) ; if ( ptx_version_option < first ) error ( , ptx_version_to_string ( first ) , sm_version_to_string ( ( enum ptx_isa ) ptx_isa_option ) ) ;" GCC,nvptx,261,"Predict the next statement of this code snippet: static hashval_t hash ( tree t ) { return htab_hash_pointer ( t ) ;" GCC,nvptx,262,"Predict the next statement of this code snippet: gimple * stmt = gsi_stmt ( i ) ; if ( gimple_code ( stmt ) != GIMPLE_CALL ) continue ; tree callee = gimple_call_fndecl ( stmt ) ; if ( ! callee ) continue ; tree attrs = oacc_get_fn_attrib ( callee ) ; if ( attrs == NULL_TREE ) return false ; int partition_level = oacc_fn_attrib_level ( attrs ) ;" GCC,nvptx,263,"Predict the next statement of this code snippet: else max_workers = oa . num_workers ; cfun -> machine -> axis_dim [ MACH_VECTOR_LENGTH ] = oa . vector_length ;" GCC,nvptx,264,"Predict the next statement of this code snippet: static void init_axis_dim ( void ) { offload_attrs oa ; int max_workers ; populate_offload_attrs ( & oa ) ; if ( oa . num_workers == ) max_workers = PTX_CTA_SIZE / oa . vector_length ;" GCC,nvptx,265,"Predict the next statement of this code snippet: if ( size ) fprintf ( file , , align , reg_names [ regno ] , size ) ; fprintf ( file , , POINTER_SIZE , reg_names [ regno ] ) ;" GCC,nvptx,266,"Predict the next statement of this code snippet: fprintf ( file , ( size ? : ) , POINTER_SIZE , reg_names [ regno ] , reg_names [ regno ] ) ;" GCC,nvptx,267,"Predict the next statement of this code snippet: const char * reg_frame = reg_names [ FRAME_POINTER_REGNUM ] ; const char * reg_sspslot = reg_names [ SOFTSTACK_SLOT_REGNUM ] ; const char * reg_sspprev = reg_names [ SOFTSTACK_PREV_REGNUM ] ; fprintf ( file , , bits , reg_stack ) ; fprintf ( file , , bits , reg_frame ) ; fprintf ( file , , bits , reg_sspslot ) ; fprintf ( file , , bits , reg_sspprev ) ; fprintf ( file , ) ; fprintf ( file , ) ; fprintf ( file , , bits ) ; fprintf ( file , , bits ) ; fprintf ( file , ) ; fprintf ( file , , bits == ? : , bits / ) ; fprintf ( file , , bits ) ; fprintf ( file , , bits , reg_sspslot ) ; fprintf ( file , , bits , reg_sspprev , reg_sspslot ) ; fprintf ( file , HOST_WIDE_INT_PRINT_DEC , bits , reg_frame , reg_sspprev , size ) ; if ( alignment > keep_align ) fprintf ( file , , bits , reg_frame , reg_frame , - alignment ) ; size = crtl -> outgoing_args_size ; gcc_assert ( size % keep_align == ) ; fprintf ( file , HOST_WIDE_INT_PRINT_DEC , bits , reg_stack , reg_frame , size ) ; if ( ! crtl -> is_leaf ) fprintf ( file , , bits , reg_sspslot , reg_stack ) ;" GCC,nvptx,268,"Predict the next statement of this code snippet: static machine_mode maybe_split_mode ( machine_mode mode ) {" GCC,nvptx,269,"Predict the next statement of this code snippet: if ( COMPLEX_MODE_P ( mode ) ) return GET_MODE_INNER ( mode ) ;" GCC,nvptx,270,"Predict the next statement of this code snippet: if ( ! INSN_P ( insn ) ) return false ; switch ( recog_memoized ( insn ) ) { case CODE_FOR_nvptx_fork : case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_joining : case CODE_FOR_nvptx_join : case CODE_FOR_nvptx_barsync : return false ; default : return true ;" GCC,nvptx,271,"Predict the next statement of this code snippet: if ( dims [ GOMP_DIM_WORKER ] > && dims [ GOMP_DIM_VECTOR ] > && dims [ GOMP_DIM_WORKER ] * dims [ GOMP_DIM_VECTOR ] > PTX_CTA_SIZE ) dims [ GOMP_DIM_VECTOR ] = PTX_WARP_SIZE ;" GCC,nvptx,272,"Predict the next statement of this code snippet: static void nvptx_asm_declare_constant_name ( FILE * file , const char * name , const_tree exp , HOST_WIDE_INT obj_size ) { write_var_marker ( file , true , false , name ) ; fprintf ( file , ) ; tree type = TREE_TYPE ( exp ) ;" GCC,nvptx,273,"Predict the next statement of this code snippet: fprintf ( file , ) ; tree type = TREE_TYPE ( exp ) ; nvptx_assemble_decl_begin ( file , name , , type , obj_size , TYPE_ALIGN ( type ) ) ;" GCC,nvptx,274,"Predict the next statement of this code snippet: error_at ( DECL_SOURCE_LOCATION ( name ) , ) ; TREE_ASM_WRITTEN ( name ) = ; return ; } if ( lookup_attribute ( , DECL_ATTRIBUTES ( name ) ) ) { error_at ( DECL_SOURCE_LOCATION ( name ) , ) ; TREE_ASM_WRITTEN ( name ) = ; return ; } if ( TREE_CODE ( name ) != FUNCTION_DECL ) { error_at ( DECL_SOURCE_LOCATION ( name ) , ) ;" GCC,nvptx,275,"Predict the next statement of this code snippet: TREE_ASM_WRITTEN ( name ) = ; return ; } if ( TREE_CODE ( name ) != FUNCTION_DECL ) { error_at ( DECL_SOURCE_LOCATION ( name ) , ) ; TREE_ASM_WRITTEN ( name ) = ; return ; } if ( ! cgraph_node :: get ( name ) -> referred_to_p ( ) ) return ; std :: stringstream s ; write_fn_proto ( s , false , get_fnname_from_decl ( name ) , name ) ; fputs ( s . str ( ) . c_str ( ) , stream ) ; tree id = DECL_ASSEMBLER_NAME ( name ) ; NVPTX_ASM_OUTPUT_DEF ( stream , IDENTIFIER_POINTER ( id ) , IDENTIFIER_POINTER ( value ) ) ;" GCC,nvptx,276,"Predict the next statement of this code snippet: if ( TREE_CODE ( type ) == VECTOR_TYPE || TREE_CODE ( type ) == COMPLEX_TYPE ) type = TREE_TYPE ( type ) ; unsigned HOST_WIDE_INT elt_size = int_size_in_bytes ( type ) ; machine_mode elt_mode = TYPE_MODE ( type ) == BLKmode ? Pmode : DImode ; elt_size |= GET_MODE_SIZE ( elt_mode ) ; elt_size &= - elt_size ; init_frag . size = elt_size ; init_frag . mask = ( ( unsigned HOST_WIDE_INT ) << ( elt_size * BITS_PER_UNIT - ) ) - ; init_frag . val = ; init_frag . offset = ; init_frag . started = false ;" GCC,nvptx,277,"Predict the next statement of this code snippet: } while ( TREE_CODE ( type ) == ARRAY_TYPE ) type = TREE_TYPE ( type ) ; if ( TREE_CODE ( type ) == VECTOR_TYPE || TREE_CODE ( type ) == COMPLEX_TYPE ) type = TREE_TYPE ( type ) ; unsigned HOST_WIDE_INT elt_size = int_size_in_bytes ( type ) ; machine_mode elt_mode = TYPE_MODE ( type ) == BLKmode ? Pmode : DImode ; elt_size |= GET_MODE_SIZE ( elt_mode ) ; elt_size &= - elt_size ; init_frag . size = elt_size ; init_frag . mask = ( ( unsigned HOST_WIDE_INT ) << ( elt_size * BITS_PER_UNIT - ) ) - ;" GCC,nvptx,278,"Predict the next statement of this code snippet: static void nvptx_assemble_decl_end ( void ) { if ( init_frag . offset ) nvptx_assemble_value ( , init_frag . size - init_frag . offset ) ; fprintf ( asm_out_file , init_frag . started ? : ) ;" GCC,nvptx,279,"Predict the next statement of this code snippet: nvptx_assemble_value ( INTVAL ( x ) , size ) ; break ; case CONST : x = XEXP ( x , ) ; gcc_assert ( GET_CODE ( x ) == PLUS ) ; val = INTVAL ( XEXP ( x , ) ) ; x = XEXP ( x , ) ; gcc_assert ( GET_CODE ( x ) == SYMBOL_REF ) ; gcc_fallthrough ( ) ; case SYMBOL_REF : gcc_assert ( size == init_frag . size ) ; if ( init_frag . offset ) sorry ( ) ; nvptx_maybe_record_fnsym ( x ) ; init_frag . val = val ; output_init_frag ( x ) ; break ; }" GCC,nvptx,280,"Predict the next statement of this code snippet: fprintf ( file , ) ; tree size = DECL_SIZE_UNIT ( decl ) ;" GCC,nvptx,281,"Predict the next statement of this code snippet: part = MIN ( part , size ) ; unsigned HOST_WIDE_INT partial = val << ( init_frag . offset * BITS_PER_UNIT ) ; init_frag . val |= partial & init_frag . mask ; init_frag . offset += part ;" GCC,nvptx,282,"Predict the next statement of this code snippet: static void nvptx_assemble_value ( unsigned HOST_WIDE_INT val , unsigned size ) { bool negative_p = val & ( HOST_WIDE_INT_1U << ( HOST_BITS_PER_WIDE_INT - ) ) ; if ( size * BITS_PER_UNIT < HOST_BITS_PER_WIDE_INT ) val &= ( HOST_WIDE_INT_1U << ( size * BITS_PER_UNIT ) ) - ; for ( unsigned part = ; size ; size -= part ) { if ( part * BITS_PER_UNIT == HOST_BITS_PER_WIDE_INT ) val = negative_p ? - : ; else val >>= ( part * BITS_PER_UNIT ) ; part = init_frag . size - init_frag . offset ; part = MIN ( part , size ) ;" GCC,nvptx,283,"Predict the next statement of this code snippet: static tree nvptx_builtin_decl ( unsigned code , bool ARG_UNUSED ( initialize_p ) ) { if ( code >= NVPTX_BUILTIN_MAX ) return error_mark_node ; return nvptx_builtin_decls [ code ] ;" GCC,nvptx,284,"Predict the next statement of this code snippet: if ( fntype && stdarg_p ( fntype ) ) { cfun -> machine -> is_varadic = true ; cfun -> machine -> has_varadic = true ; cfun -> machine -> num_args ++ ; } } if ( REG_P ( arg ) && arg != pc_rtx ) {" GCC,nvptx,285,"Predict the next statement of this code snippet: static bool nvptx_call_insn_is_syscall_p ( rtx_insn * insn ) { rtx pat = PATTERN ( insn ) ; gcc_checking_assert ( GET_CODE ( pat ) == PARALLEL ) ; pat = XVECEXP ( pat , , ) ; if ( GET_CODE ( pat ) == SET ) pat = SET_SRC ( pat ) ; gcc_checking_assert ( GET_CODE ( pat ) == CALL && GET_CODE ( XEXP ( pat , ) ) == MEM ) ; rtx addr = XEXP ( XEXP ( pat , ) , ) ;" GCC,nvptx,286,"Predict the next statement of this code snippet: case CODE_FOR_nvptx_fork : case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_joining : case CODE_FOR_nvptx_join : return true ; default : return false ;" GCC,nvptx,287,"Predict the next statement of this code snippet: case CODE_FOR_nvptx_shufflesf : case CODE_FOR_nvptx_barsync : case CODE_FOR_nvptx_fork : case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_joining : case CODE_FOR_nvptx_join : return true ;" GCC,nvptx,288,"Predict the next statement of this code snippet: static bool nvptx_can_change_mode_class ( machine_mode , machine_mode , reg_class_t ) { return false ;" GCC,nvptx,289,"Predict the next statement of this code snippet: if ( ! x ) return NULL_RTX ; x = SET_SRC ( x ) ; if ( GET_CODE ( x ) == LABEL_REF ) return x ; if ( GET_CODE ( x ) != IF_THEN_ELSE ) return NULL_RTX ; if ( XEXP ( x , ) == pc_rtx && GET_CODE ( XEXP ( x , ) ) == LABEL_REF ) return XEXP ( x , ) ; if ( XEXP ( x , ) == pc_rtx && GET_CODE ( XEXP ( x , ) ) == LABEL_REF ) return XEXP ( x , ) ; return NULL_RTX ;" GCC,nvptx,290,"Predict the next statement of this code snippet: unsigned HOST_WIDE_INT size = tree_to_uhwi ( TYPE_SIZE_UNIT ( type ) ) ; if ( size == GET_MODE_SIZE ( TImode ) ) return GET_MODE_BITSIZE ( maybe_split_mode ( TImode ) ) ; } return basic_align ;" GCC,nvptx,291,"Predict the next statement of this code snippet: write_var_marker ( file , true , TREE_PUBLIC ( decl ) , name ) ; fprintf ( file , , ( ! TREE_PUBLIC ( decl ) ? : DECL_WEAK ( decl ) ? : ) ) ; tree type = TREE_TYPE ( decl ) ; HOST_WIDE_INT obj_size = tree_to_shwi ( DECL_SIZE_UNIT ( decl ) ) ;" GCC,nvptx,292,"Predict the next statement of this code snippet: write_var_marker ( file , true , TREE_PUBLIC ( decl ) , name ) ; fprintf ( file , , ( ! TREE_PUBLIC ( decl ) ? : DECL_WEAK ( decl ) ? : ) ) ; tree type = TREE_TYPE ( decl ) ;" GCC,nvptx,293,"Predict the next statement of this code snippet: case GOMP_DIM_VECTOR : return PTX_MAX_VECTOR_LENGTH ; default : break ;" GCC,nvptx,294,"Predict the next statement of this code snippet: if ( dump_file ) { fprintf ( dump_file , ) ; nvptx_dump_pars ( par , ) ; fprintf ( dump_file , ) ;" GCC,nvptx,295,"Predict the next statement of this code snippet: gcc_assert ( block -> preds -> length ( ) == ) ;" GCC,nvptx,296,"Predict the next statement of this code snippet: gcc_assert ( block -> preds -> length ( ) == ) ; basic_block pre_block = ( * block -> preds ) [ ] -> src ; rtx_insn * pre_insn ; for ( pre_insn = BB_END ( pre_block ) ; ! INSN_P ( pre_insn ) ; pre_insn = PREV_INSN ( pre_insn ) ) gcc_assert ( pre_insn != BB_HEAD ( pre_block ) ) ; gcc_assert ( recog_memoized ( pre_insn ) == expected ) ; return pre_insn ;" GCC,nvptx,297,"Predict the next statement of this code snippet: fprintf ( dump_file , , depth , par -> mask , par -> forked_block ? par -> forked_block -> index : - , par -> join_block ? par -> join_block -> index : - ) ; fprintf ( dump_file , ) ; basic_block block ; for ( unsigned ix = ; par -> blocks . iterate ( ix , & block ) ; ix ++ ) fprintf ( dump_file , , block -> index ) ; fprintf ( dump_file , ) ; if ( par -> inner ) nvptx_dump_pars ( par -> inner , depth + ) ;" GCC,nvptx,298,"Predict the next statement of this code snippet: rtx op = GEN_INT ( mask | ( is_call << GOMP_DIM_MAX ) ) ; emit_insn ( gen_nvptx_fork ( op ) ) ;" GCC,nvptx,299,"Predict the next statement of this code snippet: if ( mask ) { rtx op = GEN_INT ( mask | ( is_call << GOMP_DIM_MAX ) ) ;" GCC,nvptx,300,"Predict the next statement of this code snippet: mask &= ( GOMP_DIM_MASK ( GOMP_DIM_WORKER ) | GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ;" GCC,nvptx,301,"Predict the next statement of this code snippet: area = DATA_AREA_SHARED ; if ( DECL_INITIAL ( decl ) ) error ( , decl ) ; } else area = TREE_READONLY ( decl ) ? DATA_AREA_CONST : DATA_AREA_GLOBAL ; } SET_SYMBOL_DATA_AREA ( XEXP ( rtl , ) , area ) ;" GCC,nvptx,302,"Predict the next statement of this code snippet: cfun -> machine -> doing_call = false ;" GCC,nvptx,303,"Predict the next statement of this code snippet: free_EXPR_LIST_list ( & cfun -> machine -> call_args ) ;" GCC,nvptx,304,"Predict the next statement of this code snippet: return nvptx_expand_cmp_swap ( exp , target , mode , ignore ) ; case NVPTX_BUILTIN_MEMBAR_GL : emit_insn ( gen_nvptx_membar_gl ( ) ) ; return NULL_RTX ; case NVPTX_BUILTIN_MEMBAR_CTA : emit_insn ( gen_nvptx_membar_cta ( ) ) ; return NULL_RTX ; default : gcc_unreachable ( ) ; }" GCC,nvptx,305,"Predict the next statement of this code snippet: static rtx nvptx_expand_builtin ( tree exp , rtx target , rtx ARG_UNUSED ( subtarget ) , machine_mode mode , int ignore ) { tree fndecl = TREE_OPERAND ( CALL_EXPR_FN ( exp ) , ) ; switch ( DECL_MD_FUNCTION_CODE ( fndecl ) ) { case NVPTX_BUILTIN_SHUFFLE : case NVPTX_BUILTIN_SHUFFLELL : return nvptx_expand_shuffle ( exp , target , mode , ignore ) ; case NVPTX_BUILTIN_WORKER_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , false ) ; case NVPTX_BUILTIN_VECTOR_ADDR : return nvptx_expand_shared_addr ( exp , target , mode , ignore , true ) ;" GCC,nvptx,306,"Predict the next statement of this code snippet: int vec_pos = ; rtx call = gen_rtx_CALL ( VOIDmode , address , const0_rtx ) ; rtx tmp_retval = retval ; if ( retval ) { if ( ! nvptx_register_operand ( retval , GET_MODE ( retval ) ) ) tmp_retval = gen_reg_rtx ( GET_MODE ( retval ) ) ; call = gen_rtx_SET ( tmp_retval , call ) ; } XVECEXP ( pat , , vec_pos ++ ) = call ; for ( rtx arg = cfun -> machine -> call_args ; arg ; arg = XEXP ( arg , ) ) XVECEXP ( pat , , vec_pos ++ ) = gen_rtx_USE ( VOIDmode , XEXP ( arg , ) ) ; if ( varargs ) XVECEXP ( pat , , vec_pos ++ ) = gen_rtx_USE ( VOIDmode , varargs ) ; gcc_assert ( vec_pos = XVECLEN ( pat , ) ) ; nvptx_emit_forking ( parallel , true ) ; emit_call_insn ( pat ) ;" GCC,nvptx,307,"Predict the next statement of this code snippet: rtx mem = expand_expr ( CALL_EXPR_ARG ( exp , ) , NULL_RTX , Pmode , EXPAND_NORMAL ) ; rtx cmp = expand_expr ( CALL_EXPR_ARG ( exp , ) , NULL_RTX , mode , EXPAND_NORMAL ) ; rtx src = expand_expr ( CALL_EXPR_ARG ( exp , ) , NULL_RTX , mode , EXPAND_NORMAL ) ; rtx pat ;" GCC,nvptx,308,"Predict the next statement of this code snippet: rtx nvptx_expand_compare ( rtx compare ) { rtx pred = gen_reg_rtx ( BImode ) ; rtx cmp = gen_rtx_fmt_ee ( GET_CODE ( compare ) , BImode , XEXP ( compare , ) , XEXP ( compare , ) ) ;" GCC,nvptx,309,"Predict the next statement of this code snippet: rtx pred = gen_reg_rtx ( BImode ) ; rtx cmp = gen_rtx_fmt_ee ( GET_CODE ( compare ) , BImode , XEXP ( compare , ) , XEXP ( compare , ) ) ; emit_insn ( gen_rtx_SET ( pred , cmp ) ) ;" GCC,nvptx,310,"Predict the next statement of this code snippet: nvptx_emit_forking ( GOMP_DIM_MASK ( mode ) , false ) ;" GCC,nvptx,311,"Predict the next statement of this code snippet: void nvptx_expand_oacc_join ( unsigned mode ) { nvptx_emit_joining ( GOMP_DIM_MASK ( mode ) , false ) ;" GCC,nvptx,312,"Predict the next statement of this code snippet: nvptx_emit_joining ( GOMP_DIM_MASK ( mode ) , false ) ;" GCC,nvptx,313,"Predict the next statement of this code snippet: static rtx nvptx_expand_shuffle ( tree exp , rtx target , machine_mode mode , int ignore ) { if ( ignore ) return target ; rtx src = expand_expr ( CALL_EXPR_ARG ( exp , ) , NULL_RTX , mode , EXPAND_NORMAL ) ; if ( ! REG_P ( src ) ) src = copy_to_mode_reg ( mode , src ) ;" GCC,nvptx,314,"Predict the next statement of this code snippet: if ( ! REG_P ( src ) ) src = copy_to_mode_reg ( mode , src ) ; rtx idx = expand_expr ( CALL_EXPR_ARG ( exp , ) , NULL_RTX , SImode , EXPAND_NORMAL ) ; rtx op = expand_expr ( CALL_EXPR_ARG ( exp , ) , NULL_RTX , SImode , EXPAND_NORMAL ) ; if ( ! REG_P ( idx ) && GET_CODE ( idx ) != CONST_INT ) idx = copy_to_mode_reg ( SImode , idx ) ;" GCC,nvptx,315,"Predict the next statement of this code snippet: fputs ( ptx_version_to_string ( ( enum ptx_version ) ptx_version_option ) , asm_out_file ) ; fputs ( , asm_out_file ) ; fputs ( , asm_out_file ) ; fputs ( sm_version_to_string ( ( enum ptx_isa ) ptx_isa_option ) , asm_out_file ) ; fputs ( , asm_out_file ) ; fprintf ( asm_out_file , , GET_MODE_BITSIZE ( Pmode ) ) ; fputs ( , asm_out_file ) ;" GCC,nvptx,316,"Predict the next statement of this code snippet: fputs ( , asm_out_file ) ; fputs ( sm_version_to_string ( ( enum ptx_isa ) ptx_isa_option ) , asm_out_file ) ; fputs ( , asm_out_file ) ; fprintf ( asm_out_file , , GET_MODE_BITSIZE ( Pmode ) ) ;" GCC,nvptx,317,"Predict the next statement of this code snippet: par -> forked_block = block ; par -> forked_insn = end ; if ( nvptx_needs_shared_bcast ( mask ) ) par -> fork_insn = nvptx_discover_pre ( block , CODE_FOR_nvptx_fork ) ; } break ; case CODE_FOR_nvptx_join : { unsigned mask = UINTVAL ( XVECEXP ( PATTERN ( end ) , , ) ) ; gcc_assert ( par -> mask == mask ) ; gcc_assert ( par -> join_block == NULL ) ; par -> join_block = block ; par -> join_insn = end ; if ( nvptx_needs_shared_bcast ( mask ) ) par -> joining_insn = nvptx_discover_pre ( block , CODE_FOR_nvptx_joining ) ; par = par -> parent ; } break ; default : gcc_unreachable ( ) ;" GCC,nvptx,318,"Predict the next statement of this code snippet: auto_vec < basic_block > spanlist ; spanlist . reserve ( blocks . length ( ) ) ; for ( ix = ; blocks . iterate ( ix , & block ) ; ix ++ ) { if ( BB_GET_SESE ( block ) ) continue ; if ( dump_file ) fprintf ( dump_file , , block -> index ) ; int depth = nvptx_sese_number ( , , + , block , & spanlist ) ; while ( spanlist . length ( ) ) { block = spanlist . pop ( ) ; bb_sese * sese = BB_GET_SESE ( block ) ; nvptx_sese_pseudo ( block , sese , depth , + , sese -> dir > ? block -> succs : block -> preds , ( sese -> dir > ? offsetof ( edge_def , dest ) : offsetof ( edge_def , src ) ) ) ; sese -> set_color ( color_counts ) ; nvptx_sese_pseudo ( block , sese , depth , - , sese -> dir < ? block -> succs : block -> preds , ( sese -> dir < ? offsetof ( edge_def , dest ) : offsetof ( edge_def , src ) ) ) ; } if ( dump_file ) fprintf ( dump_file , ) ; } if ( dump_file ) { unsigned count ; const char * comma = ; fprintf ( dump_file , , color_counts . length ( ) ) ; for ( ix = ; color_counts . iterate ( ix , & count ) ; ix ++ ) { fprintf ( dump_file , , comma , ix , count ) ; comma = ; for ( unsigned jx = ; blocks . iterate ( jx , & block ) ; jx ++ ) if ( BB_GET_SESE ( block ) -> color == ix ) { block -> flags |= BB_VISITED ; fprintf ( dump_file , , comma , block -> index ) ; comma = ; }" GCC,nvptx,319,"Predict the next statement of this code snippet: static rtx nvptx_function_arg ( cumulative_args_t , const function_arg_info & arg ) {" GCC,nvptx,320,"Predict the next statement of this code snippet: CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ;" GCC,nvptx,321,"Predict the next statement of this code snippet: static void nvptx_function_arg_advance ( cumulative_args_t cum_v , const function_arg_info & ) {" GCC,nvptx,322,"Predict the next statement of this code snippet: static unsigned nvptx_function_arg_boundary ( machine_mode mode , const_tree ARG_UNUSED ( type ) ) { return GET_MODE_ALIGNMENT ( mode ) ;" GCC,nvptx,323,"Predict the next statement of this code snippet: static unsigned nvptx_function_arg_boundary ( machine_mode mode , const_tree ARG_UNUSED ( type ) ) { return GET_MODE_ALIGNMENT ( mode ) ;" GCC,nvptx,324,"Predict the next statement of this code snippet: fprintf ( file , ) ;" GCC,nvptx,325,"Predict the next statement of this code snippet: CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; if ( arg . end_marker_p ( ) || ! arg . named ) return NULL_RTX ;" GCC,nvptx,326,"Predict the next statement of this code snippet: if ( arg . end_marker_p ( ) || ! arg . named ) return NULL_RTX ;" GCC,nvptx,327,"Predict the next statement of this code snippet: return false ;" GCC,nvptx,328,"Predict the next statement of this code snippet: static bool nvptx_function_ok_for_sibcall ( tree , tree ) {" GCC,nvptx,329,"Predict the next statement of this code snippet: gcc_assert ( cfun ) ; cfun -> machine -> return_mode = mode ; return gen_rtx_REG ( mode , NVPTX_RETURN_REGNUM ) ;" GCC,nvptx,330,"Predict the next statement of this code snippet: return regno == NVPTX_RETURN_REGNUM ;" GCC,nvptx,331,"Predict the next statement of this code snippet: static bool nvptx_function_value_regno_p ( const unsigned int regno ) { return regno == NVPTX_RETURN_REGNUM ;" GCC,nvptx,332,"Predict the next statement of this code snippet: tree bits = build_int_cst ( unsigned_type_node , shift ) ; tree kind = build_int_cst ( unsigned_type_node , SHUFFLE_DOWN ) ; tree expr ; if ( var_type != dest_type ) { tree real = fold_build1 ( REALPART_EXPR , var_type , var ) ; real = fold_build1 ( code , arg_type , real ) ; real = build_call_expr_loc ( loc , call , , real , bits , kind ) ; real = fold_build1 ( code , var_type , real ) ; tree imag = fold_build1 ( IMAGPART_EXPR , var_type , var ) ; imag = fold_build1 ( code , arg_type , imag ) ; imag = build_call_expr_loc ( loc , call , , imag , bits , kind ) ; imag = fold_build1 ( code , var_type , imag ) ; expr = fold_build2 ( COMPLEX_EXPR , dest_type , real , imag ) ; } else { expr = fold_build1 ( code , arg_type , var ) ; expr = build_call_expr_loc ( loc , call , , expr , bits , kind ) ; expr = fold_build1 ( code , dest_type , expr ) ; } gimplify_assign ( dest_var , expr , seq ) ;" GCC,nvptx,333,"Predict the next statement of this code snippet: static rtx nvptx_gen_pack ( rtx dst , rtx src0 , rtx src1 ) { rtx res ; switch ( GET_MODE ( dst ) ) {" GCC,nvptx,334,"Predict the next statement of this code snippet: data -> offset = ROUND_UP ( data -> offset , align ) ; addr = data -> base ; gcc_assert ( data -> base != NULL ) ; if ( data -> offset ) addr = gen_rtx_PLUS ( Pmode , addr , GEN_INT ( data -> offset ) ) ; } addr = gen_rtx_MEM ( mode , addr ) ; if ( pm == PM_read ) res = gen_rtx_SET ( addr , reg ) ; else if ( pm == PM_write ) res = gen_rtx_SET ( reg , addr ) ; else gcc_unreachable ( ) ; if ( data -> ptr ) { start_sequence ( ) ; emit_insn ( res ) ; emit_insn ( gen_adddi3 ( data -> ptr , data -> ptr , GEN_INT ( GET_MODE_SIZE ( GET_MODE ( reg ) ) ) ) ) ; res = get_insns ( ) ; end_sequence ( ) ; } else rep = ; data -> offset += rep * GET_MODE_SIZE ( GET_MODE ( reg ) ) ; } break ;" GCC,nvptx,335,"Predict the next statement of this code snippet: static rtx nvptx_gen_unpack ( rtx dst0 , rtx dst1 , rtx src ) { rtx res ; switch ( GET_MODE ( src ) ) { case E_DImode : res = gen_unpackdisi2 ( dst0 , dst1 , src ) ; break ; case E_DFmode : res = gen_unpackdfsi2 ( dst0 , dst1 , src ) ; break ; default : gcc_unreachable ( ) ; }" GCC,nvptx,336,"Predict the next statement of this code snippet: static rtx nvptx_get_drap_rtx ( void ) { if ( TARGET_SOFT_STACK && stack_realign_drap ) return arg_pointer_rtx ;" GCC,nvptx,337,"Predict the next statement of this code snippet: static rtx nvptx_get_drap_rtx ( void ) { if ( TARGET_SOFT_STACK && stack_realign_drap ) return arg_pointer_rtx ; return NULL_RTX ;" GCC,nvptx,338,"Predict the next statement of this code snippet: tree align = build_int_cst ( unsigned_type_node , GET_MODE_ALIGNMENT ( mode ) / BITS_PER_UNIT ) ;" GCC,nvptx,339,"Predict the next statement of this code snippet: return master ? master : master = gen_reg_rtx ( SImode ) ;" GCC,nvptx,340,"Predict the next statement of this code snippet: return master ? master : master = gen_reg_rtx ( SImode ) ;" GCC,nvptx,341,"Predict the next statement of this code snippet: return pred ? pred : pred = gen_reg_rtx ( BImode ) ;" GCC,nvptx,342,"Predict the next statement of this code snippet: static void nvptx_globalize_label ( FILE * , const char * ) {" GCC,nvptx,343,"Predict the next statement of this code snippet: static void nvptx_globalize_label ( FILE * , const char * ) {" GCC,nvptx,344,"Predict the next statement of this code snippet: tree type = build_qualified_type ( unsigned_type_node , TYPE_QUAL_VOLATILE ) ; v = build_decl ( BUILTINS_LOCATION , VAR_DECL , name , type ) ; global_lock_var = v ; DECL_ARTIFICIAL ( v ) = ; DECL_EXTERNAL ( v ) = ; TREE_STATIC ( v ) = ; TREE_PUBLIC ( v ) = ; TREE_USED ( v ) = ; mark_addressable ( v ) ; mark_decl_referenced ( v ) ; }" GCC,nvptx,345,"Predict the next statement of this code snippet: gcc_checking_assert ( ! lookup_attribute ( , DECL_ATTRIBUTES ( decl ) ) ) ; if ( level == GOMP_DIM_GANG ) { tree id = get_identifier ( ) ; tree loc_tree = build_empty_stmt ( loc ) ; DECL_ATTRIBUTES ( decl ) = tree_cons ( id , loc_tree , DECL_ATTRIBUTES ( decl ) ) ; } return decl ;" GCC,nvptx,346,"Predict the next statement of this code snippet: static tree nvptx_goacc_adjust_private_decl ( location_t loc , tree decl , int level ) { gcc_checking_assert ( ! lookup_attribute ( , DECL_ATTRIBUTES ( decl ) ) ) ; if ( level == GOMP_DIM_GANG ) { tree id = get_identifier ( ) ; tree loc_tree = build_empty_stmt ( loc ) ; DECL_ATTRIBUTES ( decl ) = tree_cons ( id , loc_tree , DECL_ATTRIBUTES ( decl ) ) ; }" GCC,nvptx,347,"Predict the next statement of this code snippet: gang_private_shared_size = ( gang_private_shared_size + align - ) & ~ ( align - ) ; if ( gang_private_shared_align < align ) gang_private_shared_align = align ; offset = gang_private_shared_size ; bool existed = gang_private_shared_hmap . put ( var , offset ) ; gcc_checking_assert ( ! existed ) ; gang_private_shared_size += tree_to_uhwi ( DECL_SIZE_UNIT ( var ) ) ; location_t loc = EXPR_LOCATION ( TREE_VALUE ( attr ) ) ; if ( dump_enabled_p ( ) ) { dump_flags_t l_dump_flags = get_openacc_privatization_dump_flags ( ) ; const dump_user_location_t d_u_loc = dump_user_location_t :: from_location_t ( loc ) ; dump_printf_loc ( l_dump_flags , d_u_loc , , var , ) ; } if ( param_openacc_privatization != OPENACC_PRIVATIZATION_QUIET ) inform ( loc , , var , ) ; if ( dump_file && ( dump_flags & TDF_DETAILS ) ) { fprintf ( dump_file , , LOCATION_FILE ( loc ) , LOCATION_LINE ( loc ) , LOCATION_COLUMN ( loc ) ) ; fprintf ( dump_file , , ) ;" GCC,nvptx,348,"Predict the next statement of this code snippet: unsigned axis = TREE_INT_CST_LOW ( arg ) ; if ( axis < GOMP_DIM_WORKER ) return false ;" GCC,nvptx,349,"Predict the next statement of this code snippet: nvptx_goacc_reduction_init ( call , & oa ) ; break ; case IFN_GOACC_REDUCTION_FINI : nvptx_goacc_reduction_fini ( call , & oa ) ; break ; case IFN_GOACC_REDUCTION_TEARDOWN : nvptx_goacc_reduction_teardown ( call , & oa ) ; break ; default : gcc_unreachable ( ) ;" GCC,nvptx,350,"Predict the next statement of this code snippet: case IFN_GOACC_REDUCTION_INIT : nvptx_goacc_reduction_init ( call , & oa ) ; break ; case IFN_GOACC_REDUCTION_FINI : nvptx_goacc_reduction_fini ( call , & oa ) ; break ; case IFN_GOACC_REDUCTION_TEARDOWN : nvptx_goacc_reduction_teardown ( call , & oa ) ;" GCC,nvptx,351,"Predict the next statement of this code snippet: static void nvptx_goacc_reduction_fini ( gcall * call , offload_attrs * oa ) { gimple_stmt_iterator gsi = gsi_for_stmt ( call ) ; tree lhs = gimple_call_lhs ( call ) ; tree ref_to_res = gimple_call_arg ( call , ) ; tree var = gimple_call_arg ( call , ) ; int level = TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; enum tree_code op = ( enum tree_code ) TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; gimple_seq seq = NULL ; tree r = NULL_TREE ; ; push_gimplify_context ( true ) ; if ( level == GOMP_DIM_VECTOR && oa -> vector_length == PTX_WARP_SIZE ) { for ( int shfl = PTX_WARP_SIZE / ; shfl > ; shfl = shfl >> ) { tree other_var = make_ssa_name ( TREE_TYPE ( var ) ) ; nvptx_generate_vector_shuffle ( gimple_location ( call ) , other_var , var , shfl , & seq ) ; r = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( r , fold_build2 ( op , TREE_TYPE ( var ) , var , other_var ) , & seq ) ; var = r ; } } else { tree accum = NULL_TREE ; if ( level == GOMP_DIM_WORKER || level == GOMP_DIM_VECTOR ) { tree offset = gimple_call_arg ( call , ) ; tree call = nvptx_get_shared_red_addr ( TREE_TYPE ( var ) , offset , level == GOMP_DIM_VECTOR ) ; tree ptr = make_ssa_name ( TREE_TYPE ( call ) ) ; gimplify_assign ( ptr , call , & seq ) ; accum = ptr ; } else if ( integer_zerop ( ref_to_res ) ) r = var ; else accum = ref_to_res ;" GCC,nvptx,352,"Predict the next statement of this code snippet: push_gimplify_context ( true ) ; if ( level == GOMP_DIM_VECTOR && oa -> vector_length == PTX_WARP_SIZE ) { for ( int shfl = PTX_WARP_SIZE / ; shfl > ; shfl = shfl >> ) { tree other_var = make_ssa_name ( TREE_TYPE ( var ) ) ; nvptx_generate_vector_shuffle ( gimple_location ( call ) , other_var , var , shfl , & seq ) ; r = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( r , fold_build2 ( op , TREE_TYPE ( var ) , var , other_var ) , & seq ) ; var = r ; } } else { tree accum = NULL_TREE ; if ( level == GOMP_DIM_WORKER || level == GOMP_DIM_VECTOR ) { tree offset = gimple_call_arg ( call , ) ; tree call = nvptx_get_shared_red_addr ( TREE_TYPE ( var ) , offset , level == GOMP_DIM_VECTOR ) ; tree ptr = make_ssa_name ( TREE_TYPE ( call ) ) ; gimplify_assign ( ptr , call , & seq ) ; accum = ptr ; } else if ( integer_zerop ( ref_to_res ) ) r = var ; else accum = ref_to_res ; if ( accum ) {" GCC,nvptx,353,"Predict the next statement of this code snippet: init_edge -> probability = profile_probability :: even ( ) ; gimple_seq init_seq = NULL ; tree init_var = make_ssa_name ( TREE_TYPE ( var ) ) ; gimplify_assign ( init_var , init , & init_seq ) ; gsi = gsi_start_bb ( init_bb ) ; gsi_insert_seq_before ( & gsi , init_seq , GSI_SAME_STMT ) ; gsi_prev ( & gsi ) ; edge inited_edge = split_block ( gsi_bb ( gsi ) , gsi_stmt ( gsi ) ) ; basic_block dst_bb = inited_edge -> dest ; edge nop_edge = make_edge ( call_bb , dst_bb , EDGE_FALSE_VALUE ) ; nop_edge -> probability = profile_probability :: even ( ) ; gphi * phi = create_phi_node ( lhs , dst_bb ) ; add_phi_arg ( phi , init_var , inited_edge , gimple_location ( call ) ) ; add_phi_arg ( phi , var , nop_edge , gimple_location ( call ) ) ; set_immediate_dominator ( CDI_DOMINATORS , dst_bb , call_bb ) ; gsi = gsi_for_stmt ( call ) ; } else { if ( level == GOMP_DIM_GANG ) { tree ref_to_res = gimple_call_arg ( call , ) ; if ( integer_zerop ( ref_to_res ) ) init = var ; } if ( lhs != NULL_TREE ) gimplify_assign ( lhs , init , & seq ) ; }" GCC,nvptx,354,"Predict the next statement of this code snippet: tree lhs = gimple_call_lhs ( call ) ; tree var = gimple_call_arg ( call , ) ; int level = TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; enum tree_code rcode = ( enum tree_code ) TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; tree init = omp_reduction_init_op ( gimple_location ( call ) , rcode , TREE_TYPE ( var ) ) ; gimple_seq seq = NULL ; push_gimplify_context ( true ) ; if ( level == GOMP_DIM_VECTOR && oa -> vector_length == PTX_WARP_SIZE ) { tree tid = make_ssa_name ( integer_type_node ) ; tree dim_vector = gimple_call_arg ( call , ) ; gimple * tid_call = gimple_build_call_internal ( IFN_GOACC_DIM_POS , , dim_vector ) ; gimple * cond_stmt = gimple_build_cond ( NE_EXPR , tid , integer_zero_node , NULL_TREE , NULL_TREE ) ; gimple_call_set_lhs ( tid_call , tid ) ;" GCC,nvptx,355,"Predict the next statement of this code snippet: tree call = nvptx_get_shared_red_addr ( TREE_TYPE ( var ) , offset , level == GOMP_DIM_VECTOR ) ; tree ptr = make_ssa_name ( TREE_TYPE ( call ) ) ; gimplify_assign ( ptr , call , & seq ) ; tree ref = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( ref ) = ; gimplify_assign ( ref , var , & seq ) ; } if ( lhs ) gimplify_assign ( lhs , var , & seq ) ;" GCC,nvptx,356,"Predict the next statement of this code snippet: gimple_stmt_iterator gsi = gsi_for_stmt ( call ) ; tree lhs = gimple_call_lhs ( call ) ; tree var = gimple_call_arg ( call , ) ; int level = TREE_INT_CST_LOW ( gimple_call_arg ( call , ) ) ; gimple_seq seq = NULL ; push_gimplify_context ( true ) ; if ( level == GOMP_DIM_WORKER || ( level == GOMP_DIM_VECTOR && oa -> vector_length > PTX_WARP_SIZE ) ) { tree offset = gimple_call_arg ( call , ) ; tree call = nvptx_get_shared_red_addr ( TREE_TYPE ( var ) , offset , level == GOMP_DIM_VECTOR ) ; tree ptr = make_ssa_name ( TREE_TYPE ( call ) ) ; gimplify_assign ( ptr , call , & seq ) ; var = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( var ) = ; } if ( level != GOMP_DIM_GANG ) {" GCC,nvptx,357,"Predict the next statement of this code snippet: static bool nvptx_goacc_validate_dims ( tree decl , int dims [ ] , int fn_level , unsigned used ) { int old_dims [ GOMP_DIM_MAX ] ; unsigned int i ; for ( i = ; i < GOMP_DIM_MAX ; ++ i ) old_dims [ i ] = dims [ i ] ; nvptx_goacc_validate_dims_1 ( decl , dims , fn_level , used ) ; gcc_assert ( dims [ GOMP_DIM_VECTOR ] != ) ; if ( dims [ GOMP_DIM_WORKER ] > && dims [ GOMP_DIM_VECTOR ] > ) gcc_assert ( dims [ GOMP_DIM_WORKER ] * dims [ GOMP_DIM_VECTOR ] <= PTX_CTA_SIZE ) ; for ( i = ; i < GOMP_DIM_MAX ; ++ i ) if ( old_dims [ i ] != dims [ i ] ) return true ;" GCC,nvptx,358,"Predict the next statement of this code snippet: bool routine_seq_p = false ; int default_vector_length = - ; if ( decl == NULL_TREE ) { if ( fn_level == - ) oacc_default_dims_p = true ; else if ( fn_level == - ) oacc_min_dims_p = true ; else gcc_unreachable ( ) ; } else if ( fn_level == - ) offload_region_p = true ; else if ( <= fn_level && fn_level <= GOMP_DIM_MAX ) { routine_p = true ; routine_seq_p = fn_level == GOMP_DIM_MAX ; } else gcc_unreachable ( ) ; if ( oacc_min_dims_p ) { gcc_assert ( dims [ GOMP_DIM_VECTOR ] == ) ; gcc_assert ( dims [ GOMP_DIM_WORKER ] == ) ; gcc_assert ( dims [ GOMP_DIM_GANG ] == ) ; dims [ GOMP_DIM_VECTOR ] = PTX_WARP_SIZE ; return ; } if ( routine_p ) { if ( ! routine_seq_p ) dims [ GOMP_DIM_VECTOR ] = PTX_WARP_SIZE ; return ; } if ( oacc_default_dims_p ) { gcc_assert ( dims [ GOMP_DIM_VECTOR ] >= - ) ; gcc_assert ( dims [ GOMP_DIM_WORKER ] >= - ) ; gcc_assert ( dims [ GOMP_DIM_GANG ] >= - ) ; gcc_assert ( dims [ GOMP_DIM_VECTOR ] != ) ; gcc_assert ( dims [ GOMP_DIM_WORKER ] != ) ; gcc_assert ( dims [ GOMP_DIM_GANG ] != ) ; } if ( offload_region_p ) { gcc_assert ( dims [ GOMP_DIM_VECTOR ] >= - ) ; gcc_assert ( dims [ GOMP_DIM_WORKER ] >= - ) ; gcc_assert ( dims [ GOMP_DIM_GANG ] >= - ) ; } if ( offload_region_p ) default_vector_length = oacc_get_default_dim ( GOMP_DIM_VECTOR ) ; else default_vector_length = PTX_DEFAULT_VECTOR_LENGTH ; int old_dims [ GOMP_DIM_MAX ] ; unsigned int i ; for ( i = ; i < GOMP_DIM_MAX ; ++ i ) old_dims [ i ] = dims [ i ] ; const char * vector_reason = NULL ; if ( offload_region_p && has_vector_partitionable_routine_calls_p ( decl ) ) { default_vector_length = PTX_WARP_SIZE ; if ( dims [ GOMP_DIM_VECTOR ] > PTX_WARP_SIZE ) { vector_reason = G_ ( ) ; dims [ GOMP_DIM_VECTOR ] = PTX_WARP_SIZE ; }" GCC,nvptx,359,"Predict the next statement of this code snippet: * no_add_attrs = true ; } else if ( ! VOID_TYPE_P ( TREE_TYPE ( TREE_TYPE ( decl ) ) ) ) { error ( , name ) ; * no_add_attrs = true ;" GCC,nvptx,360,"Predict the next statement of this code snippet: tree decl = * node ; if ( TREE_CODE ( decl ) != VAR_DECL ) { error ( , name ) ; * no_add_attrs = true ; } else if ( ! ( TREE_PUBLIC ( decl ) || TREE_STATIC ( decl ) ) ) {" GCC,nvptx,361,"Predict the next statement of this code snippet: static unsigned int nvptx_hard_regno_nregs ( unsigned int , machine_mode ) {" GCC,nvptx,362,"Predict the next statement of this code snippet: static unsigned int nvptx_hard_regno_nregs ( unsigned int , machine_mode ) { return ;" GCC,nvptx,363,"Predict the next statement of this code snippet: if ( strcmp ( name , ) == && cfun -> machine -> red_partition ) { fprintf ( file , ) ; fprintf ( file , ) ; fprintf ( file , , REGNO ( cfun -> machine -> red_partition ) , vector_red_partition ) ; } gcc_assert ( vector_red_partition * nvptx_mach_max_workers ( ) <= vector_red_size ) ;" GCC,nvptx,364,"Predict the next statement of this code snippet: static void nvptx_init_builtins ( void ) { ( nvptx_builtin_decls [ NVPTX_BUILTIN_ ## ID ] \ = add_builtin_function ( NAME , \ build_function_type_list T , \ NVPTX_BUILTIN_ ## ID , BUILT_IN_MD , NULL , NULL ) ) DEF ( SHUFFLE , , ( UINT , UINT , UINT , UINT , NULL_TREE ) ) ; DEF ( SHUFFLELL , , ( LLUINT , LLUINT , UINT , UINT , NULL_TREE ) ) ; DEF ( WORKER_ADDR , , ( PTRVOID , ST , UINT , UINT , NULL_TREE ) ) ; DEF ( VECTOR_ADDR , , ( PTRVOID , ST , UINT , UINT , NULL_TREE ) ) ; DEF ( CMP_SWAP , , ( UINT , PTRVOID , UINT , UINT , NULL_TREE ) ) ; DEF ( CMP_SWAPLL , , ( LLUINT , PTRVOID , LLUINT , LLUINT , NULL_TREE ) ) ; DEF ( MEMBAR_GL , , ( VOID , VOID , NULL_TREE ) ) ;" GCC,nvptx,365,"Predict the next statement of this code snippet: DEF ( SHUFFLELL , , ( LLUINT , LLUINT , UINT , UINT , NULL_TREE ) ) ; DEF ( WORKER_ADDR , , ( PTRVOID , ST , UINT , UINT , NULL_TREE ) ) ; DEF ( VECTOR_ADDR , , ( PTRVOID , ST , UINT , UINT , NULL_TREE ) ) ; DEF ( CMP_SWAP , , ( UINT , PTRVOID , UINT , UINT , NULL_TREE ) ) ;" GCC,nvptx,366,"Predict the next statement of this code snippet: p -> return_mode = VOIDmode ; return p ;" GCC,nvptx,367,"Predict the next statement of this code snippet: p -> return_mode = VOIDmode ; return p ;" GCC,nvptx,368,"Predict the next statement of this code snippet: fprintf ( file , ) ; if ( cfun -> machine -> bcast_partition ) { fprintf ( file , ) ; fprintf ( file , ) ; fprintf ( file , ) ; fprintf ( file , , REGNO ( cfun -> machine -> bcast_partition ) , oacc_bcast_partition ) ; } gcc_assert ( oacc_bcast_partition * ( nvptx_mach_max_workers ( ) + ) <= oacc_bcast_size ) ; if ( cfun -> machine -> sync_bar ) fprintf ( file , , REGNO ( cfun -> machine -> sync_bar ) ) ; fprintf ( file , ) ;" GCC,nvptx,369,"Predict the next statement of this code snippet: fprintf ( file , ) ; fprintf ( file , , bits ) ; fprintf ( file , ) ; fprintf ( file , , bits == ? : ) ; fprintf ( file , , bits , loc ) ; fprintf ( file , , bits , loc , loc ) ; if ( cfun -> machine -> unisimt_predicate ) { int master = REGNO ( cfun -> machine -> unisimt_master ) ; int pred = REGNO ( cfun -> machine -> unisimt_predicate ) ; fprintf ( file , , master , loc ) ; if ( cfun -> machine -> unisimt_outside_simt_predicate ) { int pred_outside_simt = REGNO ( cfun -> machine -> unisimt_outside_simt_predicate ) ; fprintf ( file , , pred_outside_simt , master ) ; }" GCC,nvptx,370,"Predict the next statement of this code snippet: enum rtx_code code = GET_CODE ( x ) ; switch ( code ) { case REG : return true ; case PLUS : if ( REG_P ( XEXP ( x , ) ) && CONST_INT_P ( XEXP ( x , ) ) ) return true ; return false ; case CONST : case SYMBOL_REF :" GCC,nvptx,371,"Predict the next statement of this code snippet: case PLUS : if ( REG_P ( XEXP ( x , ) ) && CONST_INT_P ( XEXP ( x , ) ) ) return true ; return false ; case CONST : case SYMBOL_REF : case LABEL_REF : return true ; default : return false ;" GCC,nvptx,372,"Predict the next statement of this code snippet: static rtx nvptx_libcall_value ( machine_mode mode , const_rtx ) { if ( ! cfun || ! cfun -> machine -> doing_call ) return gen_rtx_REG ( mode , NVPTX_RETURN_REGNUM ) ;" GCC,nvptx,373,"Predict the next statement of this code snippet: if ( fn_class == function_sincos ) { if ( type != NULL_TREE ) return type == float_type_node || type == double_type_node ; else return true ; }" GCC,nvptx,374,"Predict the next statement of this code snippet: static bool nvptx_libgcc_floating_mode_supported_p ( scalar_float_mode mode ) { if ( nvptx_experimental && mode == HFmode && TARGET_SM53 ) return true ;" GCC,nvptx,375,"Predict the next statement of this code snippet: static bool nvptx_libgcc_floating_mode_supported_p ( scalar_float_mode mode ) { if ( nvptx_experimental && mode == HFmode && TARGET_SM53 ) return true ;" GCC,nvptx,376,"Predict the next statement of this code snippet: lock_expr = build_call_expr_loc ( loc , swap_fn , , lock_expr , uns_unlocked , uns_locked ) ; gimplify_assign ( lock_var , lock_expr , & lock_seq ) ; gcond * cond = gimple_build_cond ( EQ_EXPR , lock_var , uns_unlocked , NULL_TREE , NULL_TREE ) ; gimple_seq_add_stmt ( & lock_seq , cond ) ; gimple * lock_end = gimple_seq_last ( lock_seq ) ; gsi_insert_seq_before ( gsi , lock_seq , GSI_SAME_STMT ) ; edge locked_edge = split_block ( lock_bb , lock_end ) ; basic_block update_bb = locked_edge -> dest ; lock_bb = locked_edge -> src ; * gsi = gsi_for_stmt ( gsi_stmt ( * gsi ) ) ; locked_edge -> flags ^= EDGE_TRUE_VALUE | EDGE_FALLTHRU ; locked_edge -> probability = profile_probability :: even ( ) ; edge loop_edge = make_edge ( lock_bb , lock_bb , EDGE_FALSE_VALUE ) ; loop_edge -> probability = profile_probability :: even ( ) ; set_immediate_dominator ( CDI_DOMINATORS , lock_bb , entry_bb ) ; set_immediate_dominator ( CDI_DOMINATORS , update_bb , lock_bb ) ; loop * lock_loop = alloc_loop ( ) ; lock_loop -> header = lock_bb ;" GCC,nvptx,377,"Predict the next statement of this code snippet: gimple * lock_end = gimple_seq_last ( lock_seq ) ; gsi_insert_seq_before ( gsi , lock_seq , GSI_SAME_STMT ) ; edge locked_edge = split_block ( lock_bb , lock_end ) ; basic_block update_bb = locked_edge -> dest ; lock_bb = locked_edge -> src ; * gsi = gsi_for_stmt ( gsi_stmt ( * gsi ) ) ; locked_edge -> flags ^= EDGE_TRUE_VALUE | EDGE_FALLTHRU ; locked_edge -> probability = profile_probability :: even ( ) ; edge loop_edge = make_edge ( lock_bb , lock_bb , EDGE_FALSE_VALUE ) ; loop_edge -> probability = profile_probability :: even ( ) ; set_immediate_dominator ( CDI_DOMINATORS , lock_bb , entry_bb ) ; set_immediate_dominator ( CDI_DOMINATORS , update_bb , lock_bb ) ; loop * lock_loop = alloc_loop ( ) ; lock_loop -> header = lock_bb ; lock_loop -> latch = lock_bb ; lock_loop -> nb_iterations_estimate = ; lock_loop -> any_estimate = true ; add_loop ( lock_loop , entry_bb -> loop_father ) ; gimple_seq red_seq = NULL ; enum nvptx_builtins barrier_builtin = ( level == GOMP_DIM_GANG ? NVPTX_BUILTIN_MEMBAR_GL : NVPTX_BUILTIN_MEMBAR_CTA ) ; tree barrier_fn = nvptx_builtin_decl ( barrier_builtin , true ) ; tree barrier_expr = build_call_expr_loc ( loc , barrier_fn , ) ; gimplify_stmt ( & barrier_expr , & red_seq ) ; tree acc_in = make_ssa_name ( var_type ) ; tree ref_in = build_simple_mem_ref ( ptr ) ; TREE_THIS_VOLATILE ( ref_in ) = ; gimplify_assign ( acc_in , ref_in , & red_seq ) ;" GCC,nvptx,378,"Predict the next statement of this code snippet: pre_bb = pre_edge -> src ; * gsi = gsi_for_stmt ( gsi_stmt ( * gsi ) ) ; tree expect_var = make_ssa_name ( arg_type ) ; tree actual_var = make_ssa_name ( arg_type ) ; tree write_var = make_ssa_name ( arg_type ) ; gimple_seq red_seq = NULL ; tree write_expr = fold_build1 ( code , var_type , expect_var ) ; write_expr = fold_build2 ( op , var_type , write_expr , var ) ; write_expr = fold_build1 ( code , arg_type , write_expr ) ; gimplify_assign ( write_var , write_expr , & red_seq ) ; gsi_insert_seq_before ( gsi , red_seq , GSI_SAME_STMT ) ; gimple_seq latch_seq = NULL ; tree swap_expr = build_call_expr_loc ( loc , swap_fn , , ptr , expect_var , write_var ) ; gimplify_assign ( actual_var , swap_expr , & latch_seq ) ; gcond * cond = gimple_build_cond ( EQ_EXPR , actual_var , expect_var , NULL_TREE , NULL_TREE ) ; gimple_seq_add_stmt ( & latch_seq , cond ) ; gimple * latch_end = gimple_seq_last ( latch_seq ) ;" GCC,nvptx,379,"Predict the next statement of this code snippet: static int ATTRIBUTE_UNUSED nvptx_mach_max_workers ( ) {" GCC,nvptx,380,"Predict the next statement of this code snippet: return cfun -> machine -> axis_dim [ MACH_VECTOR_LENGTH ] ;" GCC,nvptx,381,"Predict the next statement of this code snippet: static int ATTRIBUTE_UNUSED nvptx_mach_vector_length ( ) { if ( ! cfun -> machine -> axis_dim_init_p ) init_axis_dim ( ) ;" GCC,nvptx,382,"Predict the next statement of this code snippet: if ( decl && TREE_CODE ( decl ) == FUNCTION_DECL && DECL_EXTERNAL ( decl ) ) nvptx_record_needed_fndecl ( decl ) ;" GCC,nvptx,383,"Predict the next statement of this code snippet: if ( decl && TREE_CODE ( decl ) == FUNCTION_DECL && DECL_EXTERNAL ( decl ) ) nvptx_record_needed_fndecl ( decl ) ;" GCC,nvptx,384,"Predict the next statement of this code snippet: gcc_assert ( GET_CODE ( x ) == MEM ) ; const_rtx addr = XEXP ( x , ) ; subrtx_iterator :: array_type array ;" GCC,nvptx,385,"Predict the next statement of this code snippet: static nvptx_data_area nvptx_mem_data_area ( const_rtx x ) { gcc_assert ( GET_CODE ( x ) == MEM ) ; const_rtx addr = XEXP ( x , ) ; subrtx_iterator :: array_type array ; FOR_EACH_SUBRTX ( iter , array , addr , ALL ) if ( SYMBOL_REF_P ( * iter ) ) return SYMBOL_DATA_AREA ( * iter ) ;" GCC,nvptx,386,"Predict the next statement of this code snippet: bool nvptx_mem_local_p ( rtx mem ) { gcc_assert ( GET_CODE ( mem ) == MEM ) ; struct address_info info ; decompose_mem_address ( & info , mem ) ; if ( info . base != NULL && REG_P ( * info . base ) && REGNO_PTR_FRAME_P ( REGNO ( * info . base ) ) ) { if ( TARGET_SOFT_STACK ) {" GCC,nvptx,387,"Predict the next statement of this code snippet: bool nvptx_mem_maybe_shared_p ( const_rtx x ) { nvptx_data_area area = nvptx_mem_data_area ( x ) ;" GCC,nvptx,388,"Predict the next statement of this code snippet: return area == DATA_AREA_SHARED || area == DATA_AREA_GENERIC ;" GCC,nvptx,389,"Predict the next statement of this code snippet: return false ;" GCC,nvptx,390,"Predict the next statement of this code snippet: if ( strcmp ( name , ) == ) return ; if ( strcmp ( name , ) == ) return ; if ( strcmp ( name , ) == ) return ; if ( strcmp ( name , ) == ) return ;" GCC,nvptx,391,"Predict the next statement of this code snippet: if ( strcmp ( name , ) == ) return ; if ( strcmp ( name , ) == ) return ;" GCC,nvptx,392,"Predict the next statement of this code snippet: bool worker = mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ;" GCC,nvptx,393,"Predict the next statement of this code snippet: bool worker = mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ; bool large_vector = ( mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) && nvptx_mach_vector_length ( ) != PTX_WARP_SIZE ;" GCC,nvptx,394,"Predict the next statement of this code snippet: else if ( ! ( modes & GOMP_DIM_MASK ( mode ) ) ) { } else if ( par -> inner_mask & GOMP_DIM_MASK ( mode ) || ! par -> forked_insn ) neuter_mask |= GOMP_DIM_MASK ( mode ) ; else if ( ! par -> parent || ! par -> parent -> forked_insn || par -> parent -> inner_mask & GOMP_DIM_MASK ( mode ) ) skip_mask |= GOMP_DIM_MASK ( mode ) ; else { } } if ( neuter_mask ) { int ix , len ; if ( nvptx_optimize ) { bb_pair_vec_t regions ; nvptx_find_sese ( par -> blocks , regions ) ;" GCC,nvptx,395,"Predict the next statement of this code snippet: gcc_checking_assert ( recog_memoized ( fork ) == CODE_FOR_nvptx_fork ) ; rtx_insn * joining = par -> joining_insn ; rtx_insn * join = inner -> join_insn ; if ( NEXT_INSN ( join ) != joining ) return ; if ( dump_file ) fprintf ( dump_file , , inner -> mask , inner -> forked_block -> index , inner -> join_block -> index , par -> mask , par -> forked_block -> index , par -> join_block -> index ) ;" GCC,nvptx,396,"Predict the next statement of this code snippet: rtx_insn * join = inner -> join_insn ; if ( NEXT_INSN ( join ) != joining ) return ; if ( dump_file ) fprintf ( dump_file , , inner -> mask , inner -> forked_block -> index , inner -> join_block -> index , par -> mask , par -> forked_block -> index , par -> join_block -> index ) ; par -> mask |= inner -> mask & ( GOMP_DIM_MASK ( GOMP_DIM_MAX ) - ) ; par -> blocks . reserve ( inner -> blocks . length ( ) ) ; while ( inner -> blocks . length ( ) ) par -> blocks . quick_push ( inner -> blocks . pop ( ) ) ; par -> inner = inner -> inner ; inner -> inner = NULL ; delete inner ;" GCC,nvptx,397,"Predict the next statement of this code snippet: if ( ! OPTION_SET_P ( flag_toplevel_reorder ) ) flag_toplevel_reorder = ; debug_nonbind_markers_p = ; if ( ! OPTION_SET_P ( flag_no_common ) ) flag_no_common = ; HOST_WIDE_INT patch_area_size , patch_area_entry ; parse_and_check_patch_area ( flag_patchable_function_entry , false , & patch_area_size , & patch_area_entry ) ; if ( patch_area_size > ) sorry ( ) ; flag_var_tracking = ; if ( nvptx_optimize < ) nvptx_optimize = optimize > ; declared_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; needed_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; declared_libfuncs_htab = hash_table < declared_libfunc_hasher > :: create_ggc ( ) ; oacc_bcast_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( oacc_bcast_sym , DATA_AREA_SHARED ) ; oacc_bcast_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; oacc_bcast_partition = ; worker_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_red_sym , DATA_AREA_SHARED ) ; worker_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; vector_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( vector_red_sym , DATA_AREA_SHARED ) ; vector_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; vector_red_partition = ; gang_private_shared_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( gang_private_shared_sym , DATA_AREA_SHARED ) ; gang_private_shared_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; diagnose_openacc_conflict ( TARGET_GOMP , ) ; diagnose_openacc_conflict ( TARGET_SOFT_STACK , ) ; diagnose_openacc_conflict ( TARGET_UNIFORM_SIMT , ) ; if ( TARGET_GOMP ) target_flags |= MASK_SOFT_STACK | MASK_UNIFORM_SIMT ;" GCC,nvptx,398,"Predict the next statement of this code snippet: flag_var_tracking = ; if ( nvptx_optimize < ) nvptx_optimize = optimize > ; declared_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; needed_fndecls_htab = hash_table < tree_hasher > :: create_ggc ( ) ; declared_libfuncs_htab = hash_table < declared_libfunc_hasher > :: create_ggc ( ) ; oacc_bcast_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( oacc_bcast_sym , DATA_AREA_SHARED ) ; oacc_bcast_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; oacc_bcast_partition = ; worker_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( worker_red_sym , DATA_AREA_SHARED ) ; worker_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; vector_red_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( vector_red_sym , DATA_AREA_SHARED ) ; vector_red_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; vector_red_partition = ; gang_private_shared_sym = gen_rtx_SYMBOL_REF ( Pmode , ) ; SET_SYMBOL_DATA_AREA ( gang_private_shared_sym , DATA_AREA_SHARED ) ; gang_private_shared_align = GET_MODE_ALIGNMENT ( SImode ) / BITS_PER_UNIT ; diagnose_openacc_conflict ( TARGET_GOMP , ) ; diagnose_openacc_conflict ( TARGET_SOFT_STACK , ) ; diagnose_openacc_conflict ( TARGET_UNIFORM_SIMT , ) ;" GCC,nvptx,399,"Predict the next statement of this code snippet: void nvptx_output_aligned_decl ( FILE * file , const char * name , const_tree decl , HOST_WIDE_INT size , unsigned align ) { write_var_marker ( file , true , TREE_PUBLIC ( decl ) , name ) ; fprintf ( file , , TREE_PUBLIC ( decl ) ? : ) ; nvptx_assemble_decl_begin ( file , name , section_for_decl ( decl ) , TREE_TYPE ( decl ) , size , align ) ; nvptx_assemble_decl_end ( ) ;" GCC,nvptx,400,"Predict the next statement of this code snippet: output_asm_insn ( asm_template , operands ) ; nvptx_output_barrier ( & operands [ mem_pos ] , INTVAL ( operands [ memmodel_pos ] ) , false ) ;" GCC,nvptx,401,"Predict the next statement of this code snippet: bool post_p = ! pre_p ; switch ( memmodel ) { case MEMMODEL_RELAXED : return ; case MEMMODEL_CONSUME : case MEMMODEL_ACQUIRE : case MEMMODEL_SYNC_ACQUIRE : if ( post_p ) break ; return ; case MEMMODEL_RELEASE : case MEMMODEL_SYNC_RELEASE : if ( pre_p ) break ; return ; case MEMMODEL_ACQ_REL : case MEMMODEL_SEQ_CST : case MEMMODEL_SYNC_SEQ_CST : if ( pre_p || post_p ) break ; return ; default : gcc_unreachable ( ) ;" GCC,nvptx,402,"Predict the next statement of this code snippet: if ( result != NULL ) fprintf ( asm_out_file , , nvptx_ptx_type_from_mode ( GET_MODE ( result ) , false ) , reg_names [ NVPTX_RETURN_REGNUM ] ) ; if ( GET_CODE ( callee ) == SYMBOL_REF ) { decl = SYMBOL_REF_DECL ( callee ) ; if ( ! decl || ( DECL_EXTERNAL ( decl ) && ! TYPE_ARG_TYPES ( TREE_TYPE ( decl ) ) ) ) nvptx_record_libfunc ( callee , result , pat ) ; else if ( DECL_EXTERNAL ( decl ) ) nvptx_record_fndecl ( decl ) ; } if ( needs_tgt ) { ASM_GENERATE_INTERNAL_LABEL ( buf , , labelno ) ; labelno ++ ; ASM_OUTPUT_LABEL ( asm_out_file , buf ) ; std :: stringstream s ; write_fn_proto_from_insn ( s , NULL , result , pat ) ; fputs ( s . str ( ) . c_str ( ) , asm_out_file ) ; } for ( int argno = ; argno < arg_end ; argno ++ ) { rtx t = XEXP ( XVECEXP ( pat , , argno ) , ) ; machine_mode mode = GET_MODE ( t ) ; const char * ptx_type = nvptx_ptx_type_from_mode ( mode , false ) ; fprintf ( asm_out_file , , ptx_type , argno , ptx_type , argno ) ; output_reg ( asm_out_file , REGNO ( t ) , VOIDmode ) ; fprintf ( asm_out_file , ) ; } nvptx_print_operand ( asm_out_file , NULL_RTX , '.' ) ; fprintf ( asm_out_file , ) ; if ( result != NULL_RTX ) fprintf ( asm_out_file , , reg_names [ NVPTX_RETURN_REGNUM ] ) ; if ( decl ) { char * replaced_dots = NULL ; const char * name = get_fnname_from_decl ( decl ) ; const char * replacement = nvptx_name_replacement ( name ) ; if ( replacement != name ) name = replacement ; else { replaced_dots = nvptx_replace_dot ( name ) ; if ( replaced_dots ) name = replaced_dots ; } assemble_name ( asm_out_file , name ) ; if ( replaced_dots ) XDELETE ( replaced_dots ) ; } else output_address ( VOIDmode , callee ) ; const char * open = ; for ( int argno = ; argno < arg_end ; argno ++ ) { fprintf ( asm_out_file , , open , argno ) ; open = ; } if ( decl && DECL_STATIC_CHAIN ( decl ) ) { fprintf ( asm_out_file , , open , reg_names [ STATIC_CHAIN_REGNUM ] ) ; open = ; } if ( ! open [ ] ) fprintf ( asm_out_file , ) ; if ( needs_tgt ) { fprintf ( asm_out_file , ) ;" GCC,nvptx,403,"Predict the next statement of this code snippet: bool needs_tgt = register_operand ( callee , Pmode ) ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) == COND_EXEC ) pat = COND_EXEC_CODE ( pat ) ; int arg_end = XVECLEN ( pat , ) ; tree decl = NULL_TREE ; fprintf ( asm_out_file , ) ; if ( result != NULL ) fprintf ( asm_out_file , , nvptx_ptx_type_from_mode ( GET_MODE ( result ) , false ) , reg_names [ NVPTX_RETURN_REGNUM ] ) ; if ( GET_CODE ( callee ) == SYMBOL_REF ) { decl = SYMBOL_REF_DECL ( callee ) ; if ( ! decl || ( DECL_EXTERNAL ( decl ) && ! TYPE_ARG_TYPES ( TREE_TYPE ( decl ) ) ) ) nvptx_record_libfunc ( callee , result , pat ) ; else if ( DECL_EXTERNAL ( decl ) ) nvptx_record_fndecl ( decl ) ; } if ( needs_tgt ) { ASM_GENERATE_INTERNAL_LABEL ( buf , , labelno ) ; labelno ++ ; ASM_OUTPUT_LABEL ( asm_out_file , buf ) ; std :: stringstream s ; write_fn_proto_from_insn ( s , NULL , result , pat ) ; fputs ( s . str ( ) . c_str ( ) , asm_out_file ) ; } for ( int argno = ; argno < arg_end ; argno ++ ) { rtx t = XEXP ( XVECEXP ( pat , , argno ) , ) ; machine_mode mode = GET_MODE ( t ) ; const char * ptx_type = nvptx_ptx_type_from_mode ( mode , false ) ; fprintf ( asm_out_file , , ptx_type , argno , ptx_type , argno ) ; output_reg ( asm_out_file , REGNO ( t ) , VOIDmode ) ; fprintf ( asm_out_file , ) ; } nvptx_print_operand ( asm_out_file , NULL_RTX , '.' ) ; fprintf ( asm_out_file , ) ; if ( result != NULL_RTX ) fprintf ( asm_out_file , , reg_names [ NVPTX_RETURN_REGNUM ] ) ; if ( decl ) { char * replaced_dots = NULL ; const char * name = get_fnname_from_decl ( decl ) ; const char * replacement = nvptx_name_replacement ( name ) ; if ( replacement != name ) name = replacement ; else { replaced_dots = nvptx_replace_dot ( name ) ; if ( replaced_dots ) name = replaced_dots ; } assemble_name ( asm_out_file , name ) ; if ( replaced_dots ) XDELETE ( replaced_dots ) ; } else output_address ( VOIDmode , callee ) ; const char * open = ; for ( int argno = ; argno < arg_end ; argno ++ ) { fprintf ( asm_out_file , , open , argno ) ; open = ;" GCC,nvptx,404,"Predict the next statement of this code snippet: machine_mode src_inner = ( GET_CODE ( src ) == SUBREG ? GET_MODE ( XEXP ( src , ) ) : dst_mode ) ; rtx sym = src ; if ( GET_CODE ( sym ) == CONST ) sym = XEXP ( XEXP ( sym , ) , ) ; if ( SYMBOL_REF_P ( sym ) ) { if ( SYMBOL_DATA_AREA ( sym ) != DATA_AREA_GENERIC ) return ; nvptx_maybe_record_fnsym ( sym ) ; } if ( src_inner == dst_inner ) return ; if ( CONSTANT_P ( src ) ) return ( GET_MODE_CLASS ( dst_inner ) == MODE_INT && GET_MODE_CLASS ( src_inner ) != MODE_FLOAT ? : ) ; if ( GET_MODE_SIZE ( dst_inner ) == GET_MODE_SIZE ( src_inner ) ) { if ( GET_MODE_BITSIZE ( dst_mode ) == && GET_MODE_BITSIZE ( src_mode ) == ) { if ( dst_inner == V2DImode && src_inner == TImode ) return ; else if ( dst_inner == TImode && src_inner == V2DImode ) return ; gcc_unreachable ( ) ; } return ; } if ( GET_MODE_BITSIZE ( src_inner ) == && GET_MODE_BITSIZE ( src_mode ) == ) return ;" GCC,nvptx,405,"Predict the next statement of this code snippet: else fprintf ( asm_out_file , with_offset , REGNO ( dst ) , REGNO ( cfun -> machine -> red_partition ) , UINTVAL ( offset ) ) ; return ;" GCC,nvptx,406,"Predict the next statement of this code snippet: const char * with_offset = ; if ( offset == const0_rtx ) fprintf ( asm_out_file , zero_offset , REGNO ( dst ) , REGNO ( cfun -> machine -> red_partition ) ) ; else fprintf ( asm_out_file , with_offset , REGNO ( dst ) , REGNO ( cfun -> machine -> red_partition ) , UINTVAL ( offset ) ) ; return ;" GCC,nvptx,407,"Predict the next statement of this code snippet: if ( mode != VOIDmode ) fprintf ( asm_out_file , , nvptx_ptx_type_from_mode ( mode , false ) , reg_names [ NVPTX_RETURN_REGNUM ] , reg_names [ NVPTX_RETURN_REGNUM ] ) ; return ;" GCC,nvptx,408,"Predict the next statement of this code snippet: const char * nvptx_output_set_softstack ( unsigned src_regno ) { if ( cfun -> machine -> has_softstack && ! crtl -> is_leaf ) {" GCC,nvptx,409,"Predict the next statement of this code snippet: nvptx_output_softstack_switch ( asm_out_file , true , dest , size , align ) ;" GCC,nvptx,410,"Predict the next statement of this code snippet: nvptx_output_unisimt_switch ( asm_out_file , false ) ; nvptx_output_softstack_switch ( asm_out_file , false , src , NULL_RTX , NULL_RTX ) ; return ;" GCC,nvptx,411,"Predict the next statement of this code snippet: nvptx_output_softstack_switch ( asm_out_file , false , src , NULL_RTX , NULL_RTX ) ;" GCC,nvptx,412,"Predict the next statement of this code snippet: } if ( size < init_frag . remaining * init_frag . size ) { while ( size >= init_frag . size ) { size -= init_frag . size ; output_init_frag ( NULL_RTX ) ;" GCC,nvptx,413,"Predict the next statement of this code snippet: } if ( cfun -> machine -> has_softstack ) { const char * reg_stack = reg_names [ STACK_POINTER_REGNUM ] ; if ( entering ) { fprintf ( file , , bits , regno , bits / , reg_stack ) ; fprintf ( file , , bits , reg_stack , regno , bits / ) ; } else { fprintf ( file , , bits , reg_stack , regno , bits / ) ; } nvptx_output_set_softstack ( REGNO ( stack_pointer_rtx ) ) ;" GCC,nvptx,414,"Predict the next statement of this code snippet: static bool nvptx_pass_by_reference ( cumulative_args_t , const function_arg_info & arg ) {" GCC,nvptx,415,"Predict the next statement of this code snippet: rtx pat ; if ( ( strict && ! JUMP_P ( insn ) ) || ( ! strict && ! INSN_P ( insn ) ) ) return NULL_RTX ; pat = PATTERN ( insn ) ;" GCC,nvptx,416,"Predict the next statement of this code snippet: if ( GET_CODE ( pat ) == PARALLEL ) pat = XVECEXP ( pat , , ) ; if ( GET_CODE ( pat ) == SET && GET_CODE ( SET_DEST ( pat ) ) == PC ) return pat ; return NULL_RTX ;" GCC,nvptx,417,"Predict the next statement of this code snippet: return V2DImode ; case E_SImode : return V2SImode ; default :" GCC,nvptx,418,"Predict the next statement of this code snippet: case SYMBOL_REF : case LABEL_REF : output_addr_const ( file , x ) ; break ; default : gcc_assert ( GET_CODE ( x ) != MEM ) ; nvptx_print_operand ( file , x , ) ; break ; }" GCC,nvptx,419,"Predict the next statement of this code snippet: x = XEXP ( x , ) ; gcc_fallthrough ( ) ; case 'D' : if ( GET_CODE ( x ) == CONST ) x = XEXP ( x , ) ; if ( GET_CODE ( x ) == PLUS ) x = XEXP ( x , ) ; if ( GET_CODE ( x ) == SYMBOL_REF ) fputs ( section_for_sym ( x ) , file ) ; break ; case 't' : case 'u' : if ( x_code == SUBREG ) { machine_mode inner_mode = GET_MODE ( SUBREG_REG ( x ) ) ; if ( VECTOR_MODE_P ( inner_mode ) && ( GET_MODE_SIZE ( mode ) <= GET_MODE_SIZE ( GET_MODE_INNER ( inner_mode ) ) ) ) mode = GET_MODE_INNER ( inner_mode ) ; else if ( split_mode_p ( inner_mode ) ) mode = maybe_split_mode ( inner_mode ) ; else mode = inner_mode ; } fprintf ( file , , nvptx_ptx_type_from_mode ( mode , code == 't' ) ) ; break ; case 'H' : case 'L' : { rtx inner_x = SUBREG_REG ( x ) ; machine_mode inner_mode = GET_MODE ( inner_x ) ; machine_mode split = maybe_split_mode ( inner_mode ) ; output_reg ( file , REGNO ( inner_x ) , split , ( code == 'H' ? GET_MODE_SIZE ( inner_mode ) / : ) ) ; } break ; case 'S' : { nvptx_shuffle_kind kind = ( nvptx_shuffle_kind ) UINTVAL ( x ) ; static const char * const kinds [ ] = { , , , } ; fputs ( kinds [ kind ] , file ) ; } break ; case 'T' : fprintf ( file , , GET_MODE_BITSIZE ( mode ) ) ; break ; case 'j' : fprintf ( file , ) ; goto common ; case 'J' : fprintf ( file , ) ; goto common ; case 'c' : mode = GET_MODE ( XEXP ( x , ) ) ; switch ( x_code ) { case EQ : fputs ( , file ) ; break ; case NE : if ( FLOAT_MODE_P ( mode ) ) fputs ( , file ) ; else fputs ( , file ) ; break ; case LE : case LEU : fputs ( , file ) ; break ; case GE : case GEU : fputs ( , file ) ; break ; case LT : case LTU : fputs ( , file ) ; break ; case GT : case GTU : fputs ( , file ) ; break ; case LTGT : fputs ( , file ) ; break ; case UNEQ : fputs ( , file ) ; break ; case UNLE : fputs ( , file ) ; break ; case UNGE : fputs ( , file ) ; break ; case UNLT : fputs ( , file ) ; break ; case UNGT : fputs ( , file ) ; break ;" GCC,nvptx,420,"Predict the next statement of this code snippet: break ; case 't' : case 'u' : if ( x_code == SUBREG ) { machine_mode inner_mode = GET_MODE ( SUBREG_REG ( x ) ) ; if ( VECTOR_MODE_P ( inner_mode ) && ( GET_MODE_SIZE ( mode ) <= GET_MODE_SIZE ( GET_MODE_INNER ( inner_mode ) ) ) ) mode = GET_MODE_INNER ( inner_mode ) ; else if ( split_mode_p ( inner_mode ) ) mode = maybe_split_mode ( inner_mode ) ; else mode = inner_mode ; } fprintf ( file , , nvptx_ptx_type_from_mode ( mode , code == 't' ) ) ; break ; case 'H' : case 'L' : { rtx inner_x = SUBREG_REG ( x ) ; machine_mode inner_mode = GET_MODE ( inner_x ) ; machine_mode split = maybe_split_mode ( inner_mode ) ; output_reg ( file , REGNO ( inner_x ) , split , ( code == 'H' ? GET_MODE_SIZE ( inner_mode ) / : ) ) ; } break ; case 'S' : { nvptx_shuffle_kind kind = ( nvptx_shuffle_kind ) UINTVAL ( x ) ; static const char * const kinds [ ] = { , , , } ; fputs ( kinds [ kind ] , file ) ; } break ; case 'T' : fprintf ( file , , GET_MODE_BITSIZE ( mode ) ) ; break ; case 'j' : fprintf ( file , ) ; goto common ; case 'J' : fprintf ( file , ) ; goto common ; case 'c' : mode = GET_MODE ( XEXP ( x , ) ) ; switch ( x_code ) { case EQ : fputs ( , file ) ; break ; case NE : if ( FLOAT_MODE_P ( mode ) ) fputs ( , file ) ; else fputs ( , file ) ; break ; case LE : case LEU : fputs ( , file ) ; break ; case GE : case GEU : fputs ( , file ) ; break ; case LT : case LTU : fputs ( , file ) ; break ; case GT : case GTU : fputs ( , file ) ; break ; case LTGT : fputs ( , file ) ; break ; case UNEQ : fputs ( , file ) ; break ; case UNLE : fputs ( , file ) ;" GCC,nvptx,421,"Predict the next statement of this code snippet: nvptx_print_address_operand ( file , addr , mode ) ;" GCC,nvptx,422,"Predict the next statement of this code snippet: nvptx_print_address_operand ( file , addr , mode ) ;" GCC,nvptx,423,"Predict the next statement of this code snippet: return c == '.' || c == '#' ;" GCC,nvptx,424,"Predict the next statement of this code snippet: return c == '.' || c == '#' ;" GCC,nvptx,425,"Predict the next statement of this code snippet: nvptx_shared_propagate ( false , is_call , par -> forked_block , par -> forked_insn , ! worker ) ; bool no_prop_p = nvptx_shared_propagate ( true , is_call , par -> forked_block , par -> fork_insn , ! worker ) ; bool empty_loop_p = ! is_call && ( NEXT_INSN ( par -> forked_insn ) && NEXT_INSN ( par -> forked_insn ) == par -> joining_insn ) ; rtx barrier = GEN_INT ( ) ; int threads = ; if ( ! worker && cfun -> machine -> sync_bar ) { barrier = cfun -> machine -> sync_bar ;" GCC,nvptx,426,"Predict the next statement of this code snippet: static machine_mode nvptx_promote_function_mode ( const_tree type , machine_mode mode , int * ARG_UNUSED ( punsignedp ) , const_tree funtype , int for_return ) {" GCC,nvptx,427,"Predict the next statement of this code snippet: return promote_arg ( mode , for_return || ! type || TYPE_ARG_TYPES ( funtype ) ) ;" GCC,nvptx,428,"Predict the next statement of this code snippet: static bool nvptx_propagate ( bool is_call , basic_block block , rtx_insn * insn , propagate_mask rw , propagator_fn fn , void * data , bool vector ) { bitmap live = DF_LIVE_IN ( block ) ; bitmap_iterator iterator ; unsigned ix ; bool empty = true ; HOST_WIDE_INT fs = get_frame_size ( ) ; if ( fs ) { rtx tmp = gen_reg_rtx ( DImode ) ; rtx idx = NULL_RTX ; rtx ptr = gen_reg_rtx ( Pmode ) ; rtx pred = NULL_RTX ; rtx_code_label * label = NULL ; empty = false ; fs = ( fs + GET_MODE_SIZE ( DImode ) - ) / GET_MODE_SIZE ( DImode ) ; if ( fs == ) fs = ; start_sequence ( ) ; emit_insn ( gen_rtx_SET ( ptr , frame_pointer_rtx ) ) ; if ( fs ) { idx = gen_reg_rtx ( SImode ) ; pred = gen_reg_rtx ( BImode ) ; label = gen_label_rtx ( ) ; emit_insn ( gen_rtx_SET ( idx , GEN_INT ( fs ) ) ) ; rtx init = fn ( tmp , PM_loop_begin , fs , data , vector ) ; if ( init ) emit_insn ( init ) ; emit_label ( label ) ; LABEL_NUSES ( label ) ++ ; emit_insn ( gen_addsi3 ( idx , idx , GEN_INT ( - ) ) ) ; }" GCC,nvptx,429,"Predict the next statement of this code snippet: switch ( mode ) { case E_BLKmode : return ; case E_BImode : return ; case E_QImode : if ( promote ) return ; else return ; case E_HImode : return ; case E_SImode : return ; case E_DImode : return ;" GCC,nvptx,430,"Predict the next statement of this code snippet: return ; case E_DImode : return ; case E_HFmode : return ; case E_SFmode : return ; case E_DFmode : return ; case E_V2SImode : return ; case E_V2DImode : return ; default : gcc_unreachable ( ) ;" GCC,nvptx,431,"Predict the next statement of this code snippet: tree * slot = declared_fndecls_htab -> find_slot ( decl , INSERT ) ; if ( * slot == NULL ) { * slot = decl ;" GCC,nvptx,432,"Predict the next statement of this code snippet: const char * name = get_fnname_from_decl ( decl ) ;" GCC,nvptx,433,"Predict the next statement of this code snippet: rtx * slot = declared_libfuncs_htab -> find_slot ( callee , INSERT ) ; if ( * slot == NULL ) { * slot = callee ; const char * name = XSTR ( callee , ) ;" GCC,nvptx,434,"Predict the next statement of this code snippet: if ( TYPE_ARG_TYPES ( TREE_TYPE ( decl ) ) == NULL_TREE ) { tree * slot = needed_fndecls_htab -> find_slot ( decl , INSERT ) ;" GCC,nvptx,435,"Predict the next statement of this code snippet: void nvptx_record_needed_fndecl ( tree decl ) { if ( TYPE_ARG_TYPES ( TREE_TYPE ( decl ) ) == NULL_TREE ) { tree * slot = needed_fndecls_htab -> find_slot ( decl , INSERT ) ; if ( * slot == NULL ) * slot = decl ; }" GCC,nvptx,436,"Predict the next statement of this code snippet: tree attr = oacc_get_fn_attrib ( decl ) ; tree dims = attr ? TREE_VALUE ( attr ) : NULL_TREE ; fprintf ( asm_out_file , , IDENTIFIER_POINTER ( DECL_ASSEMBLER_NAME ( decl ) ) ) ; for ( ; dims ; dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; gcc_assert ( ! TREE_PURPOSE ( dims ) ) ; fprintf ( asm_out_file , , size ) ; } fprintf ( asm_out_file , ) ; } break ;" GCC,nvptx,437,"Predict the next statement of this code snippet: tree dims = attr ? TREE_VALUE ( attr ) : NULL_TREE ; fprintf ( asm_out_file , , IDENTIFIER_POINTER ( DECL_ASSEMBLER_NAME ( decl ) ) ) ; for ( ; dims ; dims = TREE_CHAIN ( dims ) ) { int size = TREE_INT_CST_LOW ( TREE_VALUE ( dims ) ) ; gcc_assert ( ! TREE_PURPOSE ( dims ) ) ; fprintf ( asm_out_file , , size ) ; } fprintf ( asm_out_file , ) ; } break ; default :" GCC,nvptx,438,"Predict the next statement of this code snippet: tree type = TREE_TYPE ( var ) ; tree size = TYPE_SIZE ( type ) ; if ( size == TYPE_SIZE ( unsigned_type_node ) || size == TYPE_SIZE ( long_long_unsigned_type_node ) ) return nvptx_lockless_update ( loc , gsi , ptr , var , op ) ;" GCC,nvptx,439,"Predict the next statement of this code snippet: populate_offload_attrs ( & oa ) ; gcc_assert ( ! ( oa . mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) || ( oa . mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) ; parallel * pars = nvptx_discover_pars ( & bb_insn_map ) ; nvptx_process_pars ( pars ) ; nvptx_neuter_pars ( pars , oa . mask , ) ; delete pars ; } nvptx_reorg_subreg ( ) ; if ( TARGET_UNIFORM_SIMT ) nvptx_reorg_uniform_simt ( ) ; prevent_branch_around_nothing ( ) ; workaround_barsyncs ( ) ;" GCC,nvptx,440,"Predict the next statement of this code snippet: populate_offload_attrs ( & oa ) ; gcc_assert ( ! ( oa . mask & GOMP_DIM_MASK ( GOMP_DIM_WORKER ) ) || ( oa . mask & GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) ) ) ; parallel * pars = nvptx_discover_pars ( & bb_insn_map ) ; nvptx_process_pars ( pars ) ; nvptx_neuter_pars ( pars , oa . mask , ) ; delete pars ; } nvptx_reorg_subreg ( ) ;" GCC,nvptx,441,"Predict the next statement of this code snippet: static void nvptx_reorg_subreg ( void ) { struct reg_replace qiregs , hiregs , siregs , diregs ; rtx_insn * insn , * next ; qiregs . n_allocated = ; hiregs . n_allocated = ; siregs . n_allocated = ; diregs . n_allocated = ; qiregs . mode = QImode ; hiregs . mode = HImode ; siregs . mode = SImode ; diregs . mode = DImode ; for ( insn = get_insns ( ) ; insn ; insn = next ) { next = NEXT_INSN ( insn ) ; if ( ! NONDEBUG_INSN_P ( insn ) || asm_noperands ( PATTERN ( insn ) ) >= || GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) continue ; qiregs . n_in_use = ; hiregs . n_in_use = ; siregs . n_in_use = ; diregs . n_in_use = ;" GCC,nvptx,442,"Predict the next statement of this code snippet: gcc_unreachable ( ) ; } if ( shuffle_p && TARGET_PTX_6_0 ) { } else { if ( TARGET_PTX_6_0 ) { gcc_assert ( ! shuffle_p ) ; emit_insn_after ( gen_nvptx_warpsync ( ) , insn ) ; } else { emit_insn_after ( gen_nvptx_uniform_warp_check ( ) , insn ) ; } } rtx pred = nvptx_get_unisimt_predicate ( ) ; predicate_insn ( insn , pred ) ; pred = NULL_RTX ; for ( rtx_insn * post = NEXT_INSN ( insn ) ; post != next ; post = NEXT_INSN ( post ) ) { if ( pred == NULL_RTX ) pred = nvptx_get_unisimt_outside_simt_predicate ( ) ; predicate_insn ( post , pred ) ; }" GCC,nvptx,443,"Predict the next statement of this code snippet: for ( size_t i = ; i < strlen ( p ) ; ++ i ) if ( p [ i ] == '.' ) p [ i ] = '$' ; return p ;" GCC,nvptx,444,"Predict the next statement of this code snippet: static bool nvptx_return_in_memory ( const_tree type , const_tree ) {" GCC,nvptx,445,"Predict the next statement of this code snippet: if ( nvptx_experimental && mode == HFmode && TARGET_SM53 ) return true ; return default_scalar_mode_supported_p ( mode ) ;" GCC,nvptx,446,"Predict the next statement of this code snippet: } else sese -> color = coloring ; } else gcc_assert ( coloring < ) ; if ( block -> succs && block -> succs -> length ( ) ) { edge e ; edge_iterator ei ; FOR_EACH_EDGE ( e , ei , block -> succs ) nvptx_sese_color ( color_counts , regions , e -> dest , coloring ) ;" GCC,nvptx,447,"Predict the next statement of this code snippet: list -> quick_push ( b ) ; for ( unsigned ix = ; ix ; ix -- ) { vec < edge , va_gc > * edges = dir > ? b -> succs : b -> preds ;" GCC,nvptx,448,"Predict the next statement of this code snippet: list -> quick_push ( b ) ; for ( unsigned ix = ; ix ; ix -- ) { vec < edge , va_gc > * edges = dir > ? b -> succs : b -> preds ; size_t offset = ( dir > ? offsetof ( edge_def , dest ) : offsetof ( edge_def , src ) ) ; edge e ; edge_iterator ei ; FOR_EACH_EDGE ( e , ei , edges ) {" GCC,nvptx,449,"Predict the next statement of this code snippet: num_children ++ ; sese -> append ( t_sese ) ; int t_hi = t_sese -> high . second ; if ( basic_block child_hi_block = t_sese -> high . first ) t_hi += BB_GET_SESE ( child_hi_block ) -> node ; if ( hi_child > t_hi ) { hi_child = t_hi ; node_child = t_sese -> high ; child = target ; } } else if ( t_sese -> node < sese -> node + dir && ! ( dir < && sese -> parent == t_sese -> node ) ) { int d = usd * t_sese -> dir ; int back = t_sese -> node + d ; if ( hi_back > back ) { hi_back = back ; node_back = pseudo_node_t ( target , d ) ; } } } else { hi_back = ; node_back = pseudo_node_t ( nullptr , ) ; } } sese -> remove ( pseudo_node_t ( me , dir ) ) ; FOR_EACH_EDGE ( e , ei , edges ) { basic_block target = * ( basic_block * ) ( ( char * ) e + offset ) ; if ( bb_sese * t_sese = BB_GET_SESE ( target ) ) { if ( t_sese -> node < sese -> node + dir && ! ( dir < && sese -> parent == t_sese -> node ) ) sese -> push ( pseudo_node_t ( target , usd * t_sese -> dir ) ) ; } else { sese -> push ( pseudo_node_t ( nullptr , ) ) ; } } if ( ! sese -> brackets . length ( ) || ! edges || ! edges -> length ( ) ) { hi_back = ; node_back = pseudo_node_t ( nullptr , ) ; sese -> push ( node_back ) ; } sese -> high = hi_back < hi_child ? node_back : node_child ; if ( num_children > ) { hi_child = depth ; if ( dir < && child ) { node_child = sese -> high ;" GCC,nvptx,450,"Predict the next statement of this code snippet: nvptx_previous_fndecl = fndecl ; vector_red_partition = ;" GCC,nvptx,451,"Predict the next statement of this code snippet: if ( vector && nvptx_mach_max_workers ( ) > ) { if ( ! cfun -> machine -> bcast_partition ) { cfun -> machine -> bcast_partition = gen_reg_rtx ( DImode ) ; } if ( ! cfun -> machine -> sync_bar ) cfun -> machine -> sync_bar = gen_reg_rtx ( SImode ) ; bcast_sym = cfun -> machine -> bcast_partition ; } rtx init = gen_rtx_SET ( data . base , bcast_sym ) ; emit_insn_after ( init , insn ) ; unsigned int psize = ROUND_UP ( data . offset , oacc_bcast_align ) ; unsigned int pnum = ( nvptx_mach_vector_length ( ) > PTX_WARP_SIZE ? nvptx_mach_max_workers ( ) + : ) ; oacc_bcast_partition = MAX ( oacc_bcast_partition , psize ) ; oacc_bcast_size = MAX ( oacc_bcast_size , psize * pnum ) ;" GCC,nvptx,452,"Predict the next statement of this code snippet: broadcast_data_t data ; data . base = gen_reg_rtx ( Pmode ) ; data . offset = ; data . ptr = NULL_RTX ; bool empty = nvptx_propagate ( is_call , block , insn , pre_p ? PM_read : PM_write , shared_prop_gen , & data , vector ) ; gcc_assert ( empty == ! data . offset ) ; if ( data . offset ) { rtx bcast_sym = oacc_bcast_sym ; if ( vector && nvptx_mach_max_workers ( ) > ) { if ( ! cfun -> machine -> bcast_partition ) { cfun -> machine -> bcast_partition = gen_reg_rtx ( DImode ) ; } if ( ! cfun -> machine -> sync_bar ) cfun -> machine -> sync_bar = gen_reg_rtx ( SImode ) ; bcast_sym = cfun -> machine -> bcast_partition ; } rtx init = gen_rtx_SET ( data . base , bcast_sym ) ;" GCC,nvptx,453,"Predict the next statement of this code snippet: static int nvptx_simt_vf ( ) { return PTX_WARP_SIZE ;" GCC,nvptx,454,"Predict the next statement of this code snippet: static int nvptx_simt_vf ( ) { return PTX_WARP_SIZE ;" GCC,nvptx,455,"Predict the next statement of this code snippet: else warp_sync = emit_insn_after ( gen_nvptx_uniform_warp_check ( ) , label_insn ) ; } if ( ( mode == GOMP_DIM_VECTOR || mode == GOMP_DIM_WORKER ) && CALL_P ( tail ) && find_reg_note ( tail , REG_NORETURN , NULL ) ) emit_insn_after ( gen_exit ( ) , label_insn ) ; } * mode_label = label_insn ; } if ( cond_branch ) { rtx pvar = XEXP ( XEXP ( cond_branch , ) , ) ; if ( GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) == mask && nvptx_mach_vector_length ( ) == PTX_WARP_SIZE ) { rtx_insn * label = PREV_INSN ( tail ) ; if ( label == warp_sync ) label = PREV_INSN ( label ) ; gcc_assert ( label && LABEL_P ( label ) ) ; rtx tmp = gen_reg_rtx ( BImode ) ; emit_insn_before ( gen_movbi ( tmp , const0_rtx ) , bb_first_real_insn ( from ) ) ; emit_insn_before ( gen_rtx_SET ( tmp , pvar ) , label ) ; emit_insn_before ( gen_rtx_SET ( pvar , tmp ) , tail ) ; emit_insn_before ( nvptx_gen_warp_bcast ( pvar ) , tail ) ; } else { broadcast_data_t data ; unsigned size = GET_MODE_SIZE ( SImode ) ; bool vector = ( GOMP_DIM_MASK ( GOMP_DIM_VECTOR ) == mask ) != ; bool worker = ( GOMP_DIM_MASK ( GOMP_DIM_WORKER ) == mask ) != ; rtx barrier = GEN_INT ( ) ; int threads = ; data . base = oacc_bcast_sym ; data . ptr = ; bool use_partitioning_p = ( vector && ! worker && nvptx_mach_max_workers ( ) > && cfun -> machine -> bcast_partition ) ; if ( use_partitioning_p ) { data . base = cfun -> machine -> bcast_partition ; barrier = cfun -> machine -> sync_bar ; threads = nvptx_mach_vector_length ( ) ; } gcc_assert ( data . base != NULL ) ; gcc_assert ( barrier ) ; unsigned int psize = ROUND_UP ( size , oacc_bcast_align ) ; unsigned int pnum = ( nvptx_mach_vector_length ( ) > PTX_WARP_SIZE ? nvptx_mach_max_workers ( ) + : ) ; oacc_bcast_partition = MAX ( oacc_bcast_partition , psize ) ; oacc_bcast_size = MAX ( oacc_bcast_size , psize * pnum ) ; data . offset = ; emit_insn_before ( nvptx_gen_shared_bcast ( pvar , PM_read , , & data , vector ) , before ) ; emit_insn_before ( nvptx_cta_sync ( barrier , threads ) , tail ) ; data . offset = ; emit_insn_before ( nvptx_gen_shared_bcast ( pvar , PM_write , , & data , vector ) , tail ) ; emit_insn_before ( nvptx_cta_sync ( barrier , threads ) , tail ) ; } extract_insn ( tail ) ; rtx unsp = gen_rtx_UNSPEC ( BImode , gen_rtvec ( , pvar ) , UNSPEC_BR_UNIFIED ) ; validate_change ( tail , recog_data . operand_loc [ ] , unsp , false ) ; }" GCC,nvptx,456,"Predict the next statement of this code snippet: gcc_assert ( pre_tail -> succs -> length ( ) == ) ; nvptx_single ( mask , par -> forked_block , pre_tail ) ;" GCC,nvptx,457,"Predict the next statement of this code snippet: static void nvptx_skip_par ( unsigned mask , parallel * par ) { basic_block tail = par -> join_block ;" GCC,nvptx,458,"Predict the next statement of this code snippet: } if ( seen_insn ) worklist . safe_push ( insn_bb_t ( insn , block ) ) ; else map -> get_or_insert ( block ) = insn ; seen_insn = true ; } } unsigned ix ; insn_bb_t * elt ; basic_block remap = ; for ( ix = ; worklist . iterate ( ix , & elt ) ; ix ++ ) { if ( remap != elt -> second ) { block = elt -> second ; remap = block ; } edge e = split_block ( block , PREV_INSN ( elt -> first ) ) ; block = e -> dest ;" GCC,nvptx,459,"Predict the next statement of this code snippet: static void nvptx_split_blocks ( bb_insn_map_t * map ) { insn_bb_vec_t worklist ; basic_block block ; rtx_insn * insn ; FOR_ALL_BB_FN ( block , cfun ) { bool seen_insn = false ; block -> flags &= ~ BB_VISITED ; FOR_BB_INSNS ( block , insn ) { if ( ! INSN_P ( insn ) ) continue ; switch ( recog_memoized ( insn ) ) { default : seen_insn = true ; continue ; case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_join : break ; case CODE_FOR_return : break ; } if ( seen_insn ) worklist . safe_push ( insn_bb_t ( insn , block ) ) ; else map -> get_or_insert ( block ) = insn ; seen_insn = true ;" GCC,nvptx,460,"Predict the next statement of this code snippet: return cum -> fntype == NULL_TREE || stdarg_p ( cum -> fntype ) ;" GCC,nvptx,461,"Predict the next statement of this code snippet: static bool nvptx_truly_noop_truncation ( poly_uint64 , poly_uint64 ) { return false ;" GCC,nvptx,462,"Predict the next statement of this code snippet: static bool nvptx_truly_noop_truncation ( poly_uint64 , poly_uint64 ) {" GCC,nvptx,463,"Predict the next statement of this code snippet: emit_insn_after ( nvptx_gen_shuffle ( reg , reg , master , SHUFFLE_IDX ) , insn ) ; return true ; }" GCC,nvptx,464,"Predict the next statement of this code snippet: rtx reg ; if ( GET_CODE ( set ) == SET && REG_P ( reg = SET_DEST ( set ) ) && find_reg_note ( insn , REG_UNUSED , reg ) == NULL_RTX ) { emit_insn_after ( nvptx_gen_shuffle ( reg , reg , master , SHUFFLE_IDX ) , insn ) ;" GCC,nvptx,465,"Predict the next statement of this code snippet: static bool nvptx_use_anchors_for_symbol_p ( const_rtx ARG_UNUSED ( a ) ) { return false ;" GCC,nvptx,466,"Predict the next statement of this code snippet: static bool nvptx_use_anchors_for_symbol_p ( const_rtx ARG_UNUSED ( a ) ) {" GCC,nvptx,467,"Predict the next statement of this code snippet: } else align = BIGGEST_ALIGNMENT ; align = MAX ( align , GET_MODE_ALIGNMENT ( TYPE_MODE ( type ) ) ) ; return align ;" GCC,nvptx,468,"Predict the next statement of this code snippet: if ( tree_fits_uhwi_p ( size ) ) { align = tree_to_uhwi ( size ) ; align = MIN ( align , BIGGEST_ALIGNMENT ) ; } else align = BIGGEST_ALIGNMENT ; align = MAX ( align , GET_MODE_ALIGNMENT ( TYPE_MODE ( type ) ) ) ; return align ;" GCC,nvptx,469,"Predict the next statement of this code snippet: return nvptx_propagate ( is_call , block , insn , PM_read_write , warp_prop_gen , , false ) ;" GCC,nvptx,470,"Predict the next statement of this code snippet: return nvptx_propagate ( is_call , block , insn , PM_read_write , warp_prop_gen , , false ) ;" GCC,nvptx,471,"Predict the next statement of this code snippet: static bool nvptx_welformed_vector_length_p ( int l ) { gcc_assert ( l > ) ;" GCC,nvptx,472,"Predict the next statement of this code snippet: static bool nvptx_welformed_vector_length_p ( int l ) { gcc_assert ( l > ) ;" GCC,nvptx,473,"Predict the next statement of this code snippet: init_frag . remaining -- ; if ( sym ) { bool function = ( SYMBOL_REF_DECL ( sym ) && ( TREE_CODE ( SYMBOL_REF_DECL ( sym ) ) == FUNCTION_DECL ) ) ; if ( ! function ) fprintf ( asm_out_file , ) ; output_address ( VOIDmode , sym ) ; if ( ! function ) fprintf ( asm_out_file , ) ; if ( val ) fprintf ( asm_out_file , ) ; } if ( ! sym || val ) fprintf ( asm_out_file , HOST_WIDE_INT_PRINT_DEC , val ) ;" GCC,nvptx,474,"Predict the next statement of this code snippet: init_frag . offset = ; init_frag . remaining -- ; if ( sym ) { bool function = ( SYMBOL_REF_DECL ( sym ) && ( TREE_CODE ( SYMBOL_REF_DECL ( sym ) ) == FUNCTION_DECL ) ) ; if ( ! function ) fprintf ( asm_out_file , ) ; output_address ( VOIDmode , sym ) ; if ( ! function ) fprintf ( asm_out_file , ) ;" GCC,nvptx,475,"Predict the next statement of this code snippet: } else { if ( subreg_offset == - ) fprintf ( file , ) ; output_reg ( file , regno , inner_mode , GET_MODE_SIZE ( inner_mode ) ) ; fprintf ( file , ) ; output_reg ( file , regno , inner_mode , ) ; if ( subreg_offset == - ) fprintf ( file , ) ; }" GCC,nvptx,476,"Predict the next statement of this code snippet: fork_insn = joining_insn = ; if ( parent ) { next = parent -> inner ; parent -> inner = this ;" GCC,nvptx,477,"Predict the next statement of this code snippet: if ( ! for_return && COMPLEX_MODE_P ( mode ) ) mode = GET_MODE_INNER ( mode ) ; if ( GET_MODE_CLASS ( mode ) != MODE_INT && GET_MODE_CLASS ( mode ) != MODE_FLOAT ) return true ;" GCC,nvptx,478,"Predict the next statement of this code snippet: tree dims = TREE_VALUE ( attr ) ; unsigned ix ; oa -> mask = ; for ( ix = ; ix != GOMP_DIM_MAX ; ix ++ , dims = TREE_CHAIN ( dims ) ) { tree t = TREE_VALUE ( dims ) ; int size = ( t == NULL_TREE ) ? - : TREE_INT_CST_LOW ( t ) ; tree allowed = TREE_PURPOSE ( dims ) ; if ( size != && ! ( allowed && integer_zerop ( allowed ) ) ) oa -> mask |= GOMP_DIM_MASK ( ix ) ;" GCC,nvptx,479,"Predict the next statement of this code snippet: if ( INSN_P ( insn ) ) switch ( recog_memoized ( insn ) ) { case CODE_FOR_nvptx_fork : case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_joining : case CODE_FOR_nvptx_join : case CODE_FOR_nop : continue ; case - : if ( GET_CODE ( PATTERN ( insn ) ) == ASM_INPUT || GET_CODE ( PATTERN ( insn ) ) == ASM_OPERANDS || ( GET_CODE ( PATTERN ( insn ) ) == PARALLEL && asm_noperands ( PATTERN ( insn ) ) >= ) ) continue ; default : seen_label = NULL ; continue ;" GCC,nvptx,480,"Predict the next statement of this code snippet: if ( ! prototyped && mode == SFmode ) mode = DFmode ; else if ( GET_MODE_SIZE ( mode ) < GET_MODE_SIZE ( SImode ) ) mode = SImode ; return mode ;" GCC,nvptx,481,"Predict the next statement of this code snippet: static machine_mode promote_arg ( machine_mode mode , bool prototyped ) { if ( ! prototyped && mode == SFmode ) mode = DFmode ; else if ( GET_MODE_SIZE ( mode ) < GET_MODE_SIZE ( SImode ) ) mode = SImode ;" GCC,nvptx,482,"Predict the next statement of this code snippet: static machine_mode promote_return ( machine_mode mode ) {" GCC,nvptx,483,"Predict the next statement of this code snippet: static machine_mode promote_return ( machine_mode mode ) { return promote_arg ( mode , true ) ;" GCC,nvptx,484,"Predict the next statement of this code snippet: switch ( v ) { case PTX_VERSION_3_0 : return major_p ? : ; case PTX_VERSION_3_1 : return major_p ? : ; case PTX_VERSION_4_2 : return major_p ? : ; case PTX_VERSION_6_0 : return major_p ? : ;" GCC,nvptx,485,"Predict the next statement of this code snippet: case PTX_VERSION_6_3 : return ; case PTX_VERSION_7_0 : return ; default : gcc_unreachable ( ) ;" GCC,nvptx,486,"Predict the next statement of this code snippet: if ( dump_file ) fprintf ( dump_file , , back . first ? back . first -> index : , back . second ) ; brackets . safe_push ( bracket ( back ) ) ;" GCC,nvptx,487,"Predict the next statement of this code snippet: removed ++ ; } else if ( removed ) brackets [ ix - removed ] = brackets [ ix ] ; } while ( removed -- ) brackets . pop ( ) ;" GCC,nvptx,488,"Predict the next statement of this code snippet: for ( int ix = ; ix < len ; ix ++ ) { if ( brackets [ ix ] . back == pseudo ) {" GCC,nvptx,489,"Predict the next statement of this code snippet: return section_for_sym ( XEXP ( DECL_RTL ( CONST_CAST ( tree , decl ) ) , ) ) ;" GCC,nvptx,490,"Predict the next statement of this code snippet: void set_color ( auto_vec < unsigned > & color_counts ) {" GCC,nvptx,491,"Predict the next statement of this code snippet: return gen_adddi3 ( data -> ptr , data -> base , GEN_INT ( data -> offset ) ) ; } else if ( pm & PM_loop_end ) { rtx clobber = gen_rtx_CLOBBER ( GET_MODE ( data -> ptr ) , data -> ptr ) ; data -> ptr = NULL_RTX ; return clobber ;" GCC,nvptx,492,"Predict the next statement of this code snippet: case PTX_ISA_SM ## XX : \ return # XX ; default : gcc_unreachable ( ) ; }" GCC,nvptx,493,"Predict the next statement of this code snippet: static const char * sm_version_to_string ( enum ptx_isa sm ) {" GCC,nvptx,494,"Predict the next statement of this code snippet: return maybe_split_mode ( mode ) != VOIDmode ;" GCC,nvptx,495,"Predict the next statement of this code snippet: seen_vector_label = true ; gcc_assert ( vector_neutered ) ; vector_neutered = false ; } else if ( INSN_P ( insn ) ) switch ( recog_memoized ( insn ) ) { case CODE_FOR_nvptx_barsync : gcc_assert ( ! vector_neutered && ! worker_neutered ) ; break ; default : break ; } if ( insn != BB_END ( bb ) ) insn = NEXT_INSN ( insn ) ; else if ( JUMP_P ( insn ) && single_succ_p ( bb ) && ! seen_vector_jump && ! seen_worker_jump ) { bb = single_succ ( bb ) ; insn = BB_HEAD ( bb ) ; } else break ; } gcc_assert ( ! ( vector_jump && ! seen_vector_jump ) ) ; gcc_assert ( ! ( worker_jump && ! seen_worker_jump ) ) ;" GCC,nvptx,496,"Predict the next statement of this code snippet: seen_vector_jump = true ; vector_neutered = true ; } else if ( insn == worker_label ) { seen_worker_label = true ; gcc_assert ( worker_neutered ) ; worker_neutered = false ; } else if ( insn == vector_label ) { seen_vector_label = true ; gcc_assert ( vector_neutered ) ; vector_neutered = false ; } else if ( INSN_P ( insn ) ) switch ( recog_memoized ( insn ) ) { case CODE_FOR_nvptx_barsync : gcc_assert ( ! vector_neutered && ! worker_neutered ) ; break ; default : break ; } if ( insn != BB_END ( bb ) ) insn = NEXT_INSN ( insn ) ; else if ( JUMP_P ( insn ) && single_succ_p ( bb ) && ! seen_vector_jump && ! seen_worker_jump ) { bb = single_succ ( bb ) ; insn = BB_HEAD ( bb ) ; } else break ; } gcc_assert ( ! ( vector_jump && ! seen_vector_jump ) ) ; gcc_assert ( ! ( worker_jump && ! seen_worker_jump ) ) ; if ( seen_vector_label || seen_worker_label ) {" GCC,nvptx,497,"Predict the next statement of this code snippet: while ( true ) { if ( insn == worker_label ) { seen_worker_label = true ; gcc_assert ( ! seen_vector_label ) ; } else if ( insn == vector_label ) seen_vector_label = true ; else if ( INSN_P ( insn ) ) switch ( recog_memoized ( insn ) ) { case CODE_FOR_nvptx_barsync :" GCC,nvptx,498,"Predict the next statement of this code snippet: seen_worker_label = true ; gcc_assert ( ! seen_vector_label ) ; } else if ( insn == vector_label ) seen_vector_label = true ; else if ( INSN_P ( insn ) ) switch ( recog_memoized ( insn ) ) { case CODE_FOR_nvptx_barsync : gcc_assert ( ! seen_vector_label && ! seen_worker_label ) ; break ; } if ( insn != BB_HEAD ( bb ) ) insn = PREV_INSN ( insn ) ; else break ; } gcc_assert ( ! ( vector_label && ! seen_vector_label ) ) ; gcc_assert ( ! ( worker_label && ! seen_worker_label ) ) ;" GCC,nvptx,499,"Predict the next statement of this code snippet: static rtx warp_prop_gen ( rtx reg , propagate_mask pm , unsigned ARG_UNUSED ( count ) , void * ARG_UNUSED ( data ) , bool ARG_UNUSED ( vector ) ) { if ( ! ( pm & PM_read_write ) ) return ;" GCC,nvptx,500,"Predict the next statement of this code snippet: static rtx warp_prop_gen ( rtx reg , propagate_mask pm , unsigned ARG_UNUSED ( count ) , void * ARG_UNUSED ( data ) , bool ARG_UNUSED ( vector ) ) {" GCC,nvptx,501,"Predict the next statement of this code snippet: if ( seen_barsync ) { emit_insn_before ( gen_nvptx_membar_cta ( ) , insn ) ; emit_insn_before ( gen_nvptx_membar_cta ( ) , insn ) ; } seen_barsync = true ; continue ; } if ( ! seen_barsync ) continue ;" GCC,nvptx,502,"Predict the next statement of this code snippet: seen_barsync = true ; continue ; } if ( ! seen_barsync ) continue ; if ( NOTE_P ( insn ) || DEBUG_INSN_P ( insn ) ) continue ; else if ( INSN_P ( insn ) ) switch ( recog_memoized ( insn ) ) { case CODE_FOR_nvptx_fork : case CODE_FOR_nvptx_forked : case CODE_FOR_nvptx_joining : case CODE_FOR_nvptx_join : continue ; default : break ; }" GCC,nvptx,503,"Predict the next statement of this code snippet: case : workaround_uninit_method_2 ( ) ; break ; case : workaround_uninit_method_3 ( ) ; break ; default : gcc_unreachable ( ) ; }" GCC,nvptx,504,"Predict the next statement of this code snippet: workaround_uninit_method_2 ( ) ; break ; case : workaround_uninit_method_3 ( ) ; break ; default :" GCC,nvptx,505,"Predict the next statement of this code snippet: emit_move_insn ( reg , CONST0_RTX ( GET_MODE ( reg ) ) ) ; rtx_insn * inits = get_insns ( ) ; end_sequence ( ) ; if ( dump_file && ( dump_flags & TDF_DETAILS ) ) for ( rtx_insn * init = inits ; init != NULL ; init = NEXT_INSN ( init ) ) fprintf ( dump_file , , ix , INSN_UID ( init ) ) ; if ( first != NULL ) { insert_here = emit_insn_before ( inits , first ) ; first = NULL ;" GCC,nvptx,506,"Predict the next statement of this code snippet: rtx_insn * inits = get_insns ( ) ; end_sequence ( ) ; if ( dump_file && ( dump_flags & TDF_DETAILS ) ) for ( rtx_insn * init = inits ; init != NULL ; init = NEXT_INSN ( init ) ) fprintf ( dump_file , , ix , INSN_UID ( init ) ) ; if ( first != NULL ) { insert_here = emit_insn_before ( inits , first ) ; first = NULL ; } else insert_here = emit_insn_after ( inits , insert_here ) ;" GCC,nvptx,507,"Predict the next statement of this code snippet: bitmap entry_lr_in = DF_LR_IN ( ENTRY_BLOCK_PTR_FOR_FN ( cfun ) ) ; bitmap_and_compl ( entry_pseudo_uninit , entry_lr_in , not_pseudo ) ; } rtx_insn * first = get_insns ( ) ; rtx_insn * insert_here = NULL ; bitmap_iterator iterator ; unsigned ix ; EXECUTE_IF_SET_IN_BITMAP ( entry_pseudo_uninit , , ix , iterator ) { rtx reg = regno_reg_rtx [ ix ] ; gcc_assert ( CONST0_RTX ( GET_MODE ( reg ) ) ) ; start_sequence ( ) ;" GCC,nvptx,508,"Predict the next statement of this code snippet: gcc_assert ( CONST0_RTX ( GET_MODE ( reg ) ) ) ; start_sequence ( ) ; emit_move_insn ( reg , CONST0_RTX ( GET_MODE ( reg ) ) ) ; rtx_insn * inits = get_insns ( ) ; end_sequence ( ) ; if ( dump_file && ( dump_flags & TDF_DETAILS ) ) for ( rtx_insn * init = inits ; init != NULL ; init = NEXT_INSN ( init ) ) fprintf ( dump_file , , ix , e -> src -> index , e -> dest -> index , INSN_UID ( init ) ) ; insert_insn_on_edge ( inits , e ) ; } } } if ( nvptx_comment ) FOR_EACH_BB_FN ( bb , cfun ) { if ( single_pred_p ( bb ) ) continue ; edge e ; edge_iterator ei ;" GCC,nvptx,509,"Predict the next statement of this code snippet: basic_block bb ; FOR_EACH_BB_FN ( bb , cfun ) { if ( single_pred_p ( bb ) ) continue ; auto_bitmap bb_pseudo_uninit ; bitmap_and_compl ( bb_pseudo_uninit , DF_LIVE_IN ( bb ) , DF_MIR_IN ( bb ) ) ; bitmap_and_compl_into ( bb_pseudo_uninit , not_pseudo ) ; bitmap_iterator iterator ; unsigned ix ; EXECUTE_IF_SET_IN_BITMAP ( bb_pseudo_uninit , , ix , iterator ) { bool have_false = false ; bool have_true = false ; edge e ; edge_iterator ei ; FOR_EACH_EDGE ( e , ei , bb -> preds ) { if ( bitmap_bit_p ( DF_LIVE_OUT ( e -> src ) , ix ) ) have_true = true ; else have_false = true ; } if ( have_false ^ have_true ) continue ; FOR_EACH_EDGE ( e , ei , bb -> preds ) { if ( bitmap_bit_p ( DF_LIVE_OUT ( e -> src ) , ix ) ) continue ; rtx reg = regno_reg_rtx [ ix ] ; gcc_assert ( CONST0_RTX ( GET_MODE ( reg ) ) ) ; start_sequence ( ) ; emit_move_insn ( reg , CONST0_RTX ( GET_MODE ( reg ) ) ) ;" GCC,nvptx,510,"Predict the next statement of this code snippet: if ( pass_in_memory ( mode , type , false ) ) mode = Pmode ; else { bool split = TREE_CODE ( type ) == COMPLEX_TYPE ; if ( split ) { type = TREE_TYPE ( type ) ; mode = TYPE_MODE ( type ) ;" GCC,nvptx,511,"Predict the next statement of this code snippet: static bool write_as_kernel ( tree attrs ) { return ( lookup_attribute ( , attrs ) != NULL_TREE || ( lookup_attribute ( , attrs ) != NULL_TREE && lookup_attribute ( , attrs ) != NULL_TREE ) ) ;" GCC,nvptx,512,"Predict the next statement of this code snippet: static bool write_as_kernel ( tree attrs ) { return ( lookup_attribute ( , attrs ) != NULL_TREE || ( lookup_attribute ( , attrs ) != NULL_TREE && lookup_attribute ( , attrs ) != NULL_TREE ) ) ;" GCC,nvptx,513,"Predict the next statement of this code snippet: s << << ( is_defn ? : ) ; s << name << ;" GCC,nvptx,514,"Predict the next statement of this code snippet: if ( replaced_dots ) name = replaced_dots ; } if ( name [ ] == '*' ) name ++ ;" GCC,nvptx,515,"Predict the next statement of this code snippet: char * replaced_dots = NULL ; if ( replacement != name ) name = replacement ; else { replaced_dots = nvptx_replace_dot ( name ) ; if ( replaced_dots ) name = replaced_dots ; }" GCC,nvptx,516,"Predict the next statement of this code snippet: break ; default : break ; } bool return_in_mem = write_return_type ( s , true , result_type ) ; s << name ; int argno = ; if ( return_in_mem ) argno = write_arg_type ( s , - , argno , ptr_type_node , true ) ; tree args = TYPE_ARG_TYPES ( fntype ) ; bool prototyped = true ; if ( ! args ) { args = DECL_ARGUMENTS ( decl ) ; prototyped = false ; } for ( ; args ; args = TREE_CHAIN ( args ) , not_atomic_weak_arg -- ) { tree type = prototyped ? TREE_VALUE ( args ) : TREE_TYPE ( args ) ; if ( not_atomic_weak_arg ) argno = write_arg_type ( s , - , argno , type , prototyped ) ; else gcc_assert ( TREE_CODE ( type ) == BOOLEAN_TYPE ) ; }" GCC,nvptx,517,"Predict the next statement of this code snippet: } else { const char * replacement = nvptx_name_replacement ( name ) ; if ( replacement != name ) name = replacement ; else { replaced_dots = nvptx_replace_dot ( name ) ; if ( replaced_dots ) name = replaced_dots ; } write_fn_marker ( s , false , true , name ) ; s << ; } if ( result != NULL_RTX ) write_return_mode ( s , true , GET_MODE ( result ) ) ; s << name ; if ( replaced_dots ) XDELETE ( replaced_dots ) ; int arg_end = XVECLEN ( pat , ) ;" GCC,nvptx,518,"Predict the next statement of this code snippet: char * replaced_dots = NULL ; if ( ! name ) { s << ; name = ; } else { const char * replacement = nvptx_name_replacement ( name ) ; if ( replacement != name ) name = replacement ; else { replaced_dots = nvptx_replace_dot ( name ) ; if ( replaced_dots ) name = replaced_dots ; } write_fn_marker ( s , false , true , name ) ; s << ; }" GCC,nvptx,519,"Predict the next statement of this code snippet: if ( for_proto ) pfx = , sfx = ; s << pfx << ptx_type << << reg_names [ NVPTX_RETURN_REGNUM ] << sfx ;" GCC,nvptx,520,"Predict the next statement of this code snippet: const char * ptx_type = nvptx_ptx_type_from_mode ( mode , false ) ; const char * pfx = ; const char * sfx = ;" GCC,nvptx,521,"Predict the next statement of this code snippet: static bool write_return_type ( std :: stringstream & s , bool for_proto , tree type ) { machine_mode mode = TYPE_MODE ( type ) ; if ( mode == VOIDmode ) return false ; bool return_in_mem = pass_in_memory ( mode , type , true ) ; if ( return_in_mem ) { if ( for_proto ) return return_in_mem ; mode = ( machine_mode ) cfun -> machine -> return_mode ; if ( mode == VOIDmode ) return return_in_mem ; cfun -> machine -> return_mode = VOIDmode ;" GCC,nvptx,522,"Predict the next statement of this code snippet: const char * name = XSTR ( sym , ) ; write_var_marker ( file , true , false , name ) ; fprintf ( file , , align , name , size ) ;" GCC,nvptx,523,"Predict the next statement of this code snippet: const char * name = XSTR ( sym , ) ; write_var_marker ( file , true , false , name ) ; fprintf ( file , , align , name , size ) ;" GCC,nvptx,524,"Predict the next statement of this code snippet: fprintf ( file , , globalize ? : , is_defn ? : ) ; assemble_name_raw ( file , name ) ; fputs ( , file ) ;" GCC,nvptx,525,"Predict the next statement of this code snippet: bb_sese :: ~ bb_sese ( ) {" GCC,nvptx,526,"Predict the next statement of this code snippet: bb_sese :: ~ bb_sese ( ) {" GCC,riscv,527,"Predict the next statement of this code snippet: if ( ! valid_type ( sew , lmul_log2 , true ) ) return ; std :: stringstream mode ; mode << << sew << to_lmul ( lmul_log2 ) << ;" GCC,riscv,0,"Predict the next statement of this code snippet: std :: string inttype ( unsigned sew , int lmul_log2 , bool unsigned_p ) { if ( ! valid_type ( sew , lmul_log2 , false ) ) return ;" GCC,riscv,1,"Predict the next statement of this code snippet: else mlen = sew * ( << - lmul_log2 ) ; mode << << mlen << ;" GCC,riscv,2,"Predict the next statement of this code snippet: std :: stringstream mode ; int mlen ; if ( lmul_log2 >= ) mlen = sew / ( << lmul_log2 ) ; else mlen = sew * ( << - lmul_log2 ) ; mode << << mlen << ;" GCC,riscv,3,"Predict the next statement of this code snippet: else elmul_log2 = lmul_log2 + std :: log2 ( eew / sew ) ; if ( float_p ) return floattype ( eew , elmul_log2 ) ; else return inttype ( eew , elmul_log2 , unsigned_p ) ;" GCC,riscv,4,"Predict the next statement of this code snippet: int elmul_log2 ; if ( sew == eew ) elmul_log2 = lmul_log2 ; else if ( sew > eew ) elmul_log2 = lmul_log2 - std :: log2 ( sew / eew ) ; else elmul_log2 = lmul_log2 + std :: log2 ( eew / sew ) ;" GCC,riscv,5,"Predict the next statement of this code snippet: else { lmul_str << ; lmul_log2 = - lmul_log2 ; }" GCC,riscv,6,"Predict the next statement of this code snippet: case : return lmul_log2 >= - && ! float_p ; case : return lmul_log2 >= - && ! float_p ; case : return lmul_log2 >= - ; case : return lmul_log2 >= ; default : return false ;" GCC,riscv,7,"Predict the next statement of this code snippet: void riscv_atomic_assign_expand_fenv ( tree * hold , tree * clear , tree * update ) { if ( ! ( TARGET_HARD_FLOAT || TARGET_ZFINX ) ) return ; tree frflags = GET_BUILTIN_DECL ( CODE_FOR_riscv_frflags ) ; tree fsflags = GET_BUILTIN_DECL ( CODE_FOR_riscv_fsflags ) ; tree old_flags = create_tmp_var_raw ( RISCV_ATYPE_USI ) ;" GCC,riscv,8,"Predict the next statement of this code snippet: case RISCV_BUILTIN_GENERAL : if ( subcode >= ARRAY_SIZE ( riscv_builtins ) ) return error_mark_node ; return riscv_builtin_decls [ subcode ] ; case RISCV_BUILTIN_VECTOR :" GCC,riscv,9,"Predict the next statement of this code snippet: unsigned int fcode = DECL_MD_FUNCTION_CODE ( fndecl ) ; unsigned int subcode = fcode >> RISCV_BUILTIN_SHIFT ; switch ( fcode & RISCV_BUILTIN_CLASS ) { case RISCV_BUILTIN_VECTOR : return ( subcode , exp , target ) ; case RISCV_BUILTIN_GENERAL : { const struct riscv_builtin_description * d = & riscv_builtins [ subcode ] ; switch ( d -> builtin_type ) { case RISCV_BUILTIN_DIRECT : return riscv_expand_builtin_direct ( d -> icode , target , exp , true ) ;" GCC,riscv,10,"Predict the next statement of this code snippet: ( ) ; for ( size_t i = ; i < ARRAY_SIZE ( riscv_builtins ) ; i ++ ) {" GCC,riscv,11,"Predict the next statement of this code snippet: ( ) ; for ( size_t i = ; i < ARRAY_SIZE ( riscv_builtins ) ; i ++ ) { const struct riscv_builtin_description * d = & riscv_builtins [ i ] ; if ( d -> avail ( ) ) { tree type = riscv_build_function_type ( d -> prototype ) ; riscv_builtin_decls [ i ] = add_builtin_function ( d -> name , type , ( i << RISCV_BUILTIN_SHIFT ) + RISCV_BUILTIN_GENERAL , BUILT_IN_MD , NULL , NULL ) ; riscv_builtin_decl_index [ d -> icode ] = i ; } }" GCC,riscv,12,"Predict the next statement of this code snippet: static void riscv_init_builtin_types ( void ) { if ( ! float16_type_node ) { riscv_float16_type_node = make_node ( REAL_TYPE ) ;" GCC,riscv,13,"Predict the next statement of this code snippet: static void riscv_prepare_builtin_arg ( struct expand_operand * op , tree exp , unsigned argno ) { tree arg = CALL_EXPR_ARG ( exp , argno ) ; create_input_operand ( op , expand_normal ( arg ) , TYPE_MODE ( TREE_TYPE ( arg ) ) ) ; } static rtx riscv_expand_builtin_insn ( enum insn_code icode , unsigned int n_ops , struct expand_operand * ops , bool has_target_p ) { if ( ! maybe_expand_insn ( icode , n_ops , ops ) ) { error ( ) ; return has_target_p ? gen_reg_rtx ( ops [ ] . mode ) : const0_rtx ; } return has_target_p ? ops [ ] . value : const0_rtx ; } static rtx riscv_expand_builtin_direct ( enum insn_code icode , rtx target , tree exp , bool has_target_p ) { struct expand_operand ops [ MAX_RECOG_OPERANDS ] ; int opno = ; if ( has_target_p ) create_output_operand ( & ops [ opno ++ ] , target , TYPE_MODE ( TREE_TYPE ( exp ) ) ) ; gcc_assert ( opno + call_expr_nargs ( exp ) == insn_data [ icode ] . n_generator_args ) ; for ( int argno = ; argno < call_expr_nargs ( exp ) ; argno ++ ) riscv_prepare_builtin_arg ( & ops [ opno ++ ] , exp , argno ) ; return riscv_expand_builtin_insn ( icode , opno , ops , has_target_p ) ; } rtx riscv_expand_builtin ( tree exp , rtx target , rtx subtarget ATTRIBUTE_UNUSED , machine_mode mode ATTRIBUTE_UNUSED , int ignore ATTRIBUTE_UNUSED ) { tree fndecl = TREE_OPERAND ( CALL_EXPR_FN ( exp ) , ) ; unsigned int fcode = DECL_FUNCTION_CODE ( fndecl ) ; const struct riscv_builtin_description * d = & riscv_builtins [ fcode ] ; switch ( d -> builtin_type ) { case RISCV_BUILTIN_DIRECT : return riscv_expand_builtin_direct ( d -> icode , target , exp , true ) ; case RISCV_BUILTIN_DIRECT_NO_TARGET : return riscv_expand_builtin_direct ( d -> icode , target , exp , false ) ; } gcc_unreachable ( ) ; } void riscv_atomic_assign_expand_fenv ( tree * hold , tree * clear , tree * update ) { if ( ! TARGET_HARD_FLOAT ) return ;" GCC,riscv,14,"Predict the next statement of this code snippet: } return types [ ( int ) type ] ; } void riscv_init_builtins ( void ) { for ( size_t i = ; i < ARRAY_SIZE ( riscv_builtins ) ; i ++ ) { const struct riscv_builtin_description * d = & riscv_builtins [ i ] ; if ( d -> avail ( ) ) { tree type = riscv_build_function_type ( d -> prototype ) ; riscv_builtin_decls [ i ] = add_builtin_function ( d -> name , type , i , BUILT_IN_MD , NULL , NULL ) ; riscv_builtin_decl_index [ d -> icode ] = i ; } } } tree riscv_builtin_decl ( unsigned int code , bool initialize_p ATTRIBUTE_UNUSED ) { if ( code >= ARRAY_SIZE ( riscv_builtins ) ) return error_mark_node ; return riscv_builtin_decls [ code ] ; } static void riscv_prepare_builtin_arg ( struct expand_operand * op , tree exp , unsigned argno ) { tree arg = CALL_EXPR_ARG ( exp , argno ) ; create_input_operand ( op , expand_normal ( arg ) , TYPE_MODE ( TREE_TYPE ( arg ) ) ) ; } static rtx riscv_expand_builtin_insn ( enum insn_code icode , unsigned int n_ops , struct expand_operand * ops , bool has_target_p ) { if ( ! maybe_expand_insn ( icode , n_ops , ops ) ) { error ( ) ; return has_target_p ? gen_reg_rtx ( ops [ ] . mode ) : const0_rtx ; } return has_target_p ? ops [ ] . value : const0_rtx ; } static rtx riscv_expand_builtin_direct ( enum insn_code icode , rtx target , tree exp , bool has_target_p ) { struct expand_operand ops [ MAX_RECOG_OPERANDS ] ; int opno = ; if ( has_target_p ) create_output_operand ( & ops [ opno ++ ] , target , TYPE_MODE ( TREE_TYPE ( exp ) ) ) ; gcc_assert ( opno + call_expr_nargs ( exp ) == insn_data [ icode ] . n_generator_args ) ; for ( int argno = ; argno < call_expr_nargs ( exp ) ; argno ++ ) riscv_prepare_builtin_arg ( & ops [ opno ++ ] , exp , argno ) ; return riscv_expand_builtin_insn ( icode , opno , ops , has_target_p ) ; } rtx riscv_expand_builtin ( tree exp , rtx target , rtx subtarget ATTRIBUTE_UNUSED , machine_mode mode ATTRIBUTE_UNUSED , int ignore ATTRIBUTE_UNUSED ) { tree fndecl = TREE_OPERAND ( CALL_EXPR_FN ( exp ) , ) ; unsigned int fcode = DECL_FUNCTION_CODE ( fndecl ) ; const struct riscv_builtin_description * d = & riscv_builtins [ fcode ] ; switch ( d -> builtin_type ) {" GCC,riscv,15,"Predict the next statement of this code snippet: rtx riscv_expand_builtin ( tree exp , rtx target , rtx subtarget ATTRIBUTE_UNUSED , machine_mode mode ATTRIBUTE_UNUSED , int ignore ATTRIBUTE_UNUSED ) { tree fndecl = TREE_OPERAND ( CALL_EXPR_FN ( exp ) , ) ; unsigned int fcode = DECL_FUNCTION_CODE ( fndecl ) ; const struct riscv_builtin_description * d = & riscv_builtins [ fcode ] ;" GCC,riscv,16,"Predict the next statement of this code snippet: const struct riscv_builtin_description * d = & riscv_builtins [ fcode ] ; switch ( d -> builtin_type ) { case RISCV_BUILTIN_DIRECT : return riscv_expand_builtin_direct ( d -> icode , target , exp , true ) ; case RISCV_BUILTIN_DIRECT_NO_TARGET : return riscv_expand_builtin_direct ( d -> icode , target , exp , false ) ; }" GCC,riscv,17,"Predict the next statement of this code snippet: case RISCV_FTYPE_NAME ## NUM ARGS : \ types [ ( int ) type ] \ = build_function_type_list ( RISCV_FTYPE_ATYPES ## NUM ARGS , \ NULL_TREE ) ; \ break ; default : gcc_unreachable ( ) ; } return types [ ( int ) type ] ; } void riscv_init_builtins ( void ) { for ( size_t i = ; i < ARRAY_SIZE ( riscv_builtins ) ; i ++ ) { const struct riscv_builtin_description * d = & riscv_builtins [ i ] ; if ( d -> avail ( ) ) { tree type = riscv_build_function_type ( d -> prototype ) ; riscv_builtin_decls [ i ] = add_builtin_function ( d -> name , type , i , BUILT_IN_MD , NULL , NULL ) ; riscv_builtin_decl_index [ d -> icode ] = i ; } } } tree riscv_builtin_decl ( unsigned int code , bool initialize_p ATTRIBUTE_UNUSED ) { if ( code >= ARRAY_SIZE ( riscv_builtins ) ) return error_mark_node ; return riscv_builtin_decls [ code ] ; } static void riscv_prepare_builtin_arg ( struct expand_operand * op , tree exp , unsigned argno ) { tree arg = CALL_EXPR_ARG ( exp , argno ) ; create_input_operand ( op , expand_normal ( arg ) , TYPE_MODE ( TREE_TYPE ( arg ) ) ) ; } static rtx riscv_expand_builtin_insn ( enum insn_code icode , unsigned int n_ops , struct expand_operand * ops , bool has_target_p ) { if ( ! maybe_expand_insn ( icode , n_ops , ops ) ) { error ( ) ; return has_target_p ? gen_reg_rtx ( ops [ ] . mode ) : const0_rtx ; } return has_target_p ? ops [ ] . value : const0_rtx ; } static rtx riscv_expand_builtin_direct ( enum insn_code icode , rtx target , tree exp , bool has_target_p ) { struct expand_operand ops [ MAX_RECOG_OPERANDS ] ; int opno = ; if ( has_target_p ) create_output_operand ( & ops [ opno ++ ] , target , TYPE_MODE ( TREE_TYPE ( exp ) ) ) ; gcc_assert ( opno + call_expr_nargs ( exp ) == insn_data [ icode ] . n_generator_args ) ; for ( int argno = ; argno < call_expr_nargs ( exp ) ; argno ++ ) riscv_prepare_builtin_arg ( & ops [ opno ++ ] , exp , argno ) ; return riscv_expand_builtin_insn ( icode , opno , ops , has_target_p ) ; } rtx riscv_expand_builtin ( tree exp , rtx target , rtx subtarget ATTRIBUTE_UNUSED , machine_mode mode ATTRIBUTE_UNUSED , int ignore ATTRIBUTE_UNUSED ) { tree fndecl = TREE_OPERAND ( CALL_EXPR_FN ( exp ) , ) ; unsigned int fcode = DECL_MD_FUNCTION_CODE ( fndecl ) ; const struct riscv_builtin_description * d = & riscv_builtins [ fcode ] ;" GCC,riscv,18,"Predict the next statement of this code snippet: AVAIL ( hard_float , TARGET_HARD_FLOAT ) { CODE_FOR_riscv_ ## INSN , NAME , \ BUILTIN_TYPE , FUNCTION_TYPE , riscv_builtin_avail_ ## AVAIL } RISCV_BUILTIN ( INSN , # INSN , RISCV_BUILTIN_DIRECT , FUNCTION_TYPE , AVAIL ) RISCV_BUILTIN ( INSN , # INSN , RISCV_BUILTIN_DIRECT_NO_TARGET , \ FUNCTION_TYPE , AVAIL ) RISCV_ATYPE_ ## A RISCV_ATYPE_ ## A , RISCV_ATYPE_ ## B static const struct riscv_builtin_description riscv_builtins [ ] = { DIRECT_BUILTIN ( frflags , RISCV_USI_FTYPE , hard_float ) , DIRECT_NO_TARGET_BUILTIN ( fsflags , RISCV_VOID_FTYPE_USI , hard_float ) } ; static GTY ( ( ) ) tree riscv_builtin_decls [ ARRAY_SIZE ( riscv_builtins ) ] ; static GTY ( ( ) ) int riscv_builtin_decl_index [ NUM_INSN_CODES ] ; riscv_builtin_decls [ riscv_builtin_decl_index [ ( CODE ) ] ] static tree riscv_build_function_type ( enum riscv_function_type type ) { static tree types [ ( int ) RISCV_MAX_FTYPE_MAX ] ; if ( types [ ( int ) type ] == NULL_TREE ) switch ( type ) { case RISCV_FTYPE_NAME ## NUM ARGS : \ types [ ( int ) type ] \ = build_function_type_list ( RISCV_FTYPE_ATYPES ## NUM ARGS , \ NULL_TREE ) ; \ break ; default : gcc_unreachable ( ) ; } return types [ ( int ) type ] ; } void riscv_init_builtins ( void ) { for ( size_t i = ; i < ARRAY_SIZE ( riscv_builtins ) ; i ++ ) { const struct riscv_builtin_description * d = & riscv_builtins [ i ] ; if ( d -> avail ( ) ) { tree type = riscv_build_function_type ( d -> prototype ) ; riscv_builtin_decls [ i ] = add_builtin_function ( d -> name , type , i , BUILT_IN_MD , NULL , NULL ) ; riscv_builtin_decl_index [ d -> icode ] = i ; } } } tree riscv_builtin_decl ( unsigned int code , bool initialize_p ATTRIBUTE_UNUSED ) { if ( code >= ARRAY_SIZE ( riscv_builtins ) ) return error_mark_node ; return riscv_builtin_decls [ code ] ; } static void riscv_prepare_builtin_arg ( struct expand_operand * op , tree exp , unsigned argno ) { tree arg = CALL_EXPR_ARG ( exp , argno ) ; create_input_operand ( op , expand_normal ( arg ) , TYPE_MODE ( TREE_TYPE ( arg ) ) ) ; } static rtx riscv_expand_builtin_insn ( enum insn_code icode , unsigned int n_ops , struct expand_operand * ops , bool has_target_p ) { if ( ! maybe_expand_insn ( icode , n_ops , ops ) ) { error ( ) ; return has_target_p ? gen_reg_rtx ( ops [ ] . mode ) : const0_rtx ; }" GCC,riscv,19,"Predict the next statement of this code snippet: tree frflags = GET_BUILTIN_DECL ( CODE_FOR_riscv_frflags ) ; tree fsflags = GET_BUILTIN_DECL ( CODE_FOR_riscv_fsflags ) ; tree old_flags = create_tmp_var_raw ( RISCV_ATYPE_USI ) ; * hold = build4 ( TARGET_EXPR , RISCV_ATYPE_USI , old_flags , build_call_expr ( frflags , ) , NULL_TREE , NULL_TREE ) ; * clear = build_call_expr ( fsflags , , old_flags ) ;" GCC,riscv,20,"Predict the next statement of this code snippet: if ( ! TARGET_HARD_FLOAT ) return ; tree frflags = GET_BUILTIN_DECL ( CODE_FOR_riscv_frflags ) ; tree fsflags = GET_BUILTIN_DECL ( CODE_FOR_riscv_fsflags ) ; tree old_flags = create_tmp_var_raw ( RISCV_ATYPE_USI ) ; * hold = build4 ( TARGET_EXPR , RISCV_ATYPE_USI , old_flags , build_call_expr ( frflags , ) , NULL_TREE , NULL_TREE ) ; * clear = build_call_expr ( fsflags , , old_flags ) ; * update = NULL_TREE ;" GCC,riscv,21,"Predict the next statement of this code snippet: if ( types [ ( int ) type ] == NULL_TREE ) switch ( type ) { case RISCV_FTYPE_NAME ## NUM ARGS : \ types [ ( int ) type ] \ = build_function_type_list ( RISCV_FTYPE_ATYPES ## NUM ARGS , \ NULL_TREE ) ; \ break ;" GCC,riscv,22,"Predict the next statement of this code snippet: if ( types [ ( int ) type ] == NULL_TREE ) switch ( type ) { case RISCV_FTYPE_NAME ## NUM ARGS : \ types [ ( int ) type ] \ = build_function_type_list ( RISCV_FTYPE_ATYPES ## NUM ARGS , \ NULL_TREE ) ; \ break ; default : gcc_unreachable ( ) ;" GCC,riscv,23,"Predict the next statement of this code snippet: tree fndecl = TREE_OPERAND ( CALL_EXPR_FN ( exp ) , ) ; unsigned int fcode = DECL_MD_FUNCTION_CODE ( fndecl ) ; const struct riscv_builtin_description * d = & riscv_builtins [ fcode ] ; switch ( d -> builtin_type ) { case RISCV_BUILTIN_DIRECT : return riscv_expand_builtin_direct ( d -> icode , target , exp , true ) ;" GCC,riscv,24,"Predict the next statement of this code snippet: for ( int argno = ; argno < call_expr_nargs ( exp ) ; argno ++ ) riscv_prepare_builtin_arg ( & ops [ opno ++ ] , exp , argno ) ;" GCC,riscv,25,"Predict the next statement of this code snippet: error ( ) ; return has_target_p ? gen_reg_rtx ( ops [ ] . mode ) : const0_rtx ; }" GCC,riscv,26,"Predict the next statement of this code snippet: tree type = riscv_build_function_type ( d -> prototype ) ; riscv_builtin_decls [ i ] = add_builtin_function ( d -> name , type , i , BUILT_IN_MD , NULL , NULL ) ;" GCC,riscv,27,"Predict the next statement of this code snippet: riscv_builtin_decls [ i ] = add_builtin_function ( d -> name , type , i , BUILT_IN_MD , NULL , NULL ) ; riscv_builtin_decl_index [ d -> icode ] = i ; }" GCC,riscv,28,"Predict the next statement of this code snippet: switch ( code & RISCV_BUILTIN_CLASS ) { case RISCV_BUILTIN_GENERAL : return true ; case RISCV_BUILTIN_VECTOR : return ( loc , arg_loc , subcode , orig_fndecl , nargs , args ) ;" GCC,riscv,29,"Predict the next statement of this code snippet: if ( ( TARGET_HARD_FLOAT || TARGET_ZFINX ) && TARGET_FDIV ) { builtin_define ( ) ; builtin_define ( ) ; } switch ( riscv_abi ) { case ABI_ILP32E : builtin_define ( ) ; gcc_fallthrough ( ) ; case ABI_ILP32 : case ABI_LP64 : builtin_define ( ) ; break ; case ABI_ILP32F : case ABI_LP64F : builtin_define ( ) ; break ; case ABI_ILP32D : case ABI_LP64D : builtin_define ( ) ; break ; } switch ( riscv_cmodel ) { case CM_MEDLOW : builtin_define ( ) ; break ; case CM_PIC : case CM_MEDANY : builtin_define ( ) ; break ; } if ( TARGET_MIN_VLEN != ) builtin_define_with_int_value ( , TARGET_MIN_VLEN ) ; if ( TARGET_VECTOR_ELEN_64 ) builtin_define_with_int_value ( , ) ; else if ( TARGET_VECTOR_ELEN_32 ) builtin_define_with_int_value ( , ) ; if ( TARGET_VECTOR_ELEN_FP_64 ) builtin_define_with_int_value ( , ) ; else if ( TARGET_VECTOR_ELEN_FP_32 ) builtin_define_with_int_value ( , ) ; else if ( TARGET_MIN_VLEN != ) builtin_define_with_int_value ( , ) ; if ( TARGET_MIN_VLEN ) { builtin_define ( ) ; builtin_define_with_int_value ( , riscv_ext_version_value ( , ) ) ; } builtin_define_with_int_value ( , ) ; const riscv_subset_list * subset_list = riscv_current_subset_list ( ) ; if ( ! subset_list ) return ; size_t max_ext_len = ; for ( const riscv_subset_t * subset = subset_list -> begin ( ) ; subset != subset_list -> end ( ) ; subset = subset -> next ) max_ext_len = MAX ( max_ext_len , subset -> name . length ( ) ) ; char * buf = ( char * ) alloca ( max_ext_len + ) ; for ( const riscv_subset_t * subset = subset_list -> begin ( ) ; subset != subset_list -> end ( ) ; subset = subset -> next ) { int version_value = riscv_ext_version_value ( subset -> major_version , subset -> minor_version ) ; if ( ( subset -> name == || subset -> name == ) && version_value == ) version_value = riscv_ext_version_value ( , ) ; sprintf ( buf , , subset -> name . c_str ( ) ) ; builtin_define_with_int_value ( buf , version_value ) ;" GCC,riscv,30,"Predict the next statement of this code snippet: return ( major * ) + ( minor * ) ;" GCC,riscv,31,"Predict the next statement of this code snippet: if ( pragma_lex ( & x ) != CPP_STRING ) { error ( ) ; return ; } const char * name = TREE_STRING_POINTER ( x ) ; if ( strcmp ( name , ) == ) { if ( ! TARGET_VECTOR ) { error ( , name ) ; return ; } ( ) ;" GCC,riscv,32,"Predict the next statement of this code snippet: targetm . check_builtin_call = riscv_check_builtin_call ; c_register_pragma ( , , riscv_pragma_intrinsic ) ;" GCC,riscv,33,"Predict the next statement of this code snippet: if ( TARGET_HARD_FLOAT && TARGET_FDIV ) { builtin_define ( ) ; builtin_define ( ) ; } switch ( riscv_abi ) { case ABI_ILP32 : case ABI_LP64 : builtin_define ( ) ; break ; case ABI_ILP32F : case ABI_LP64F : builtin_define ( ) ; break ; case ABI_ILP32D : case ABI_LP64D : builtin_define ( ) ;" GCC,riscv,34,"Predict the next statement of this code snippet: builtin_define ( ) ; break ; case ABI_ILP32D : case ABI_LP64D : builtin_define ( ) ; break ; } switch ( riscv_cmodel ) { case CM_MEDLOW : builtin_define ( ) ; break ; case CM_PIC : builtin_define ( ) ; case CM_MEDANY : builtin_define ( ) ; break ; } if ( TARGET_MIN_VLEN != ) builtin_define_with_int_value ( , TARGET_MIN_VLEN ) ; if ( TARGET_VECTOR_ELEN_64 ) builtin_define_with_int_value ( , ) ; else if ( TARGET_VECTOR_ELEN_32 ) builtin_define_with_int_value ( , ) ; if ( TARGET_VECTOR_ELEN_FP_64 ) builtin_define_with_int_value ( , ) ; else if ( TARGET_VECTOR_ELEN_FP_32 ) builtin_define_with_int_value ( , ) ; else if ( TARGET_MIN_VLEN != ) builtin_define_with_int_value ( , ) ; if ( TARGET_MIN_VLEN ) builtin_define ( ) ; builtin_define_with_int_value ( , ) ; const riscv_subset_list * subset_list = riscv_current_subset_list ( ) ; if ( ! subset_list ) return ; size_t max_ext_len = ; for ( const riscv_subset_t * subset = subset_list -> begin ( ) ; subset != subset_list -> end ( ) ; subset = subset -> next ) max_ext_len = MAX ( max_ext_len , subset -> name . length ( ) ) ; char * buf = ( char * ) alloca ( max_ext_len + ) ; for ( const riscv_subset_t * subset = subset_list -> begin ( ) ; subset != subset_list -> end ( ) ; subset = subset -> next ) { int version_value = ( subset -> major_version * ) + ( subset -> minor_version * ) ; if ( ( subset -> name == || subset -> name == ) && version_value == ) version_value = ; sprintf ( buf , , subset -> name . c_str ( ) ) ; builtin_define_with_int_value ( buf , version_value ) ; }" GCC,riscv,35,"Predict the next statement of this code snippet: abi = ; break ; case ABI_ILP32D : case ABI_LP64D : abi = ; break ; default :" GCC,riscv,36,"Predict the next statement of this code snippet: void riscv_d_register_target_info ( void ) {" GCC,riscv,37,"Predict the next statement of this code snippet: else d_add_builtin_version ( ) ;" GCC,riscv,38,"Predict the next statement of this code snippet: void riscv_d_target_versions ( void ) { if ( TARGET_64BIT ) d_add_builtin_version ( ) ; else d_add_builtin_version ( ) ; if ( TARGET_HARD_FLOAT ) d_add_builtin_version ( ) ; else d_add_builtin_version ( ) ;" GCC,riscv,39,"Predict the next statement of this code snippet: gcc_assert ( REG_P ( dest ) ) ; rtx note = find_reg_equal_equiv_note ( insn ) ; unsigned regno = REGNO ( dest ) ; if ( note ) regno_to_rtx [ regno ] = XEXP ( note , ) ; else regno_to_rtx [ regno ] = SET_SRC ( pat ) ; } return eval_value ( reg , regno_to_rtx ) ;" GCC,riscv,40,"Predict the next statement of this code snippet: } if ( BINARY_P ( expr ) ) { op1_val = eval_value ( XEXP ( expr , ) , regno_to_rtx ) ; op2_val = eval_value ( XEXP ( expr , ) , regno_to_rtx ) ; } switch ( GET_CODE ( expr ) ) { case CONST_POLY_INT : return rtx_to_poly_int64 ( expr ) ; case CONST_INT : return INTVAL ( expr ) ; case MULT : if ( op1_val . is_constant ( ) ) return op1_val . to_constant ( ) * op2_val ;" GCC,riscv,41,"Predict the next statement of this code snippet: rtx_insn * insn = get_last_insn ( ) ; rtx src = XEXP ( SET_SRC ( PATTERN ( insn ) ) , ) ; ASSERT_TRUE ( rtx_equal_p ( src , CONSTM1_RTX ( mode ) ) ) ;" GCC,riscv,42,"Predict the next statement of this code snippet: run_poly_int_selftests ( ) ;" GCC,riscv,43,"Predict the next statement of this code snippet: riscv_selftest_arch_abi_setter ( const char * arch , enum riscv_abi_type abi ) : m_arch_backup ( riscv_arch_str ( ) ) , m_abi_backup ( riscv_abi ) { riscv_parse_arch_string ( arch , & global_options , UNKNOWN_LOCATION ) ; riscv_abi = abi ; riscv_reinit ( ) ;" GCC,riscv,44,"Predict the next statement of this code snippet: else ASSERT_TRUE ( rtx_equal_p ( src , gen_rtx_VEC_DUPLICATE ( mode , XEXP ( src , ) ) ) ) ; end_sequence ( ) ; } } } FOR_EACH_MODE_IN_CLASS ( mode , MODE_VECTOR_FLOAT ) { if ( riscv_v_ext_vector_mode_p ( mode ) ) { scalar_mode inner_mode = GET_MODE_INNER ( mode ) ; REAL_VALUE_TYPE f = REAL_VALUE_ATOF ( , inner_mode ) ; rtx ele = const_double_from_real_value ( f , inner_mode ) ; start_sequence ( ) ; rtx dest = gen_reg_rtx ( mode ) ; rtx dup = gen_const_vec_duplicate ( mode , ele ) ; emit_move_insn ( dest , dup ) ; rtx_insn * insn = get_last_insn ( ) ; rtx src = XEXP ( SET_SRC ( PATTERN ( insn ) ) , ) ; ASSERT_TRUE ( rtx_equal_p ( src , gen_rtx_VEC_DUPLICATE ( mode , XEXP ( src , ) ) ) ) ; end_sequence ( ) ; } } FOR_EACH_MODE_IN_CLASS ( mode , MODE_VECTOR_BOOL ) { if ( riscv_v_ext_vector_mode_p ( mode ) ) { start_sequence ( ) ; rtx dest = gen_reg_rtx ( mode ) ;" GCC,riscv,45,"Predict the next statement of this code snippet: if ( riscv_v_ext_vector_mode_p ( mode ) ) { scalar_mode inner_mode = GET_MODE_INNER ( mode ) ; REAL_VALUE_TYPE f = REAL_VALUE_ATOF ( , inner_mode ) ; rtx ele = const_double_from_real_value ( f , inner_mode ) ; start_sequence ( ) ; rtx dest = gen_reg_rtx ( mode ) ; rtx dup = gen_const_vec_duplicate ( mode , ele ) ; emit_move_insn ( dest , dup ) ; rtx_insn * insn = get_last_insn ( ) ; rtx src = XEXP ( SET_SRC ( PATTERN ( insn ) ) , ) ; ASSERT_TRUE ( rtx_equal_p ( src , gen_rtx_VEC_DUPLICATE ( mode , XEXP ( src , ) ) ) ) ; end_sequence ( ) ; } } FOR_EACH_MODE_IN_CLASS ( mode , MODE_VECTOR_BOOL ) { if ( riscv_v_ext_vector_mode_p ( mode ) ) { start_sequence ( ) ; rtx dest = gen_reg_rtx ( mode ) ; emit_move_insn ( dest , CONSTM1_RTX ( mode ) ) ;" GCC,riscv,46,"Predict the next statement of this code snippet: gcc_unreachable ( ) ; } for ( const poly_int64 & poly_val : worklist ) { start_sequence ( ) ; rtx dest = gen_reg_rtx ( mode ) ; emit_move_insn ( dest , gen_int_mode ( poly_val , mode ) ) ; ASSERT_TRUE ( known_eq ( calculate_x_in_sequence ( dest ) , poly_val ) ) ;" GCC,riscv,47,"Predict the next statement of this code snippet: static void run_poly_int_selftests ( void ) { std :: vector < poly_int64 > worklist = { BYTES_PER_RISCV_VECTOR , BYTES_PER_RISCV_VECTOR * , BYTES_PER_RISCV_VECTOR * , - BYTES_PER_RISCV_VECTOR * , - BYTES_PER_RISCV_VECTOR * , BYTES_PER_RISCV_VECTOR * , BYTES_PER_RISCV_VECTOR * , - BYTES_PER_RISCV_VECTOR * , - BYTES_PER_RISCV_VECTOR * , BYTES_PER_RISCV_VECTOR * , BYTES_PER_RISCV_VECTOR * , - BYTES_PER_RISCV_VECTOR * , - BYTES_PER_RISCV_VECTOR * , poly_int64 ( , ) , poly_int64 ( - , ) , poly_int64 ( , ) , poly_int64 ( , - ) , poly_int64 ( , ) , poly_int64 ( , ) , poly_int64 ( , ) , poly_int64 ( , ) , poly_int64 ( , ) , poly_int64 ( - , - ) , poly_int64 ( , - ) , poly_int64 ( - , - ) , poly_int64 ( - , ) , poly_int64 ( , - ) , poly_int64 ( , ) , poly_int64 ( , ) , poly_int64 ( - , ) , poly_int64 ( - , - ) , poly_int64 ( - , - ) , poly_int64 ( , - ) , poly_int64 ( - , ) , poly_int64 ( , - ) , poly_int64 ( , ) , poly_int64 ( , ) , poly_int64 ( - , ) , poly_int64 ( - , - ) , poly_int64 ( - , - ) , poly_int64 ( , - ) , poly_int64 ( - , ) , poly_int64 ( , - ) , poly_int64 ( , ) , poly_int64 ( , ) , poly_int64 ( - , ) , poly_int64 ( - , - ) , poly_int64 ( - , - ) , poly_int64 ( , - ) , poly_int64 ( , ) , poly_int64 ( , - ) } ;" GCC,riscv,48,"Predict the next statement of this code snippet: rtl_dump_test t ( SELFTEST_LOCATION , locate_file ( ) ) ; set_new_first_and_last_insn ( NULL , NULL ) ;" GCC,riscv,49,"Predict the next statement of this code snippet: static void simple_poly_selftest ( const char * arch , enum riscv_abi_type abi , const std :: vector < machine_mode > & modes ) { riscv_selftest_arch_abi_setter rv ( arch , abi ) ; rtl_dump_test t ( SELFTEST_LOCATION , locate_file ( ) ) ;" GCC,riscv,50,"Predict the next statement of this code snippet: ~ riscv_selftest_arch_abi_setter ( ) { riscv_parse_arch_string ( m_arch_backup . c_str ( ) , & global_options , UNKNOWN_LOCATION ) ;" GCC,riscv,51,"Predict the next statement of this code snippet: riscv_parse_arch_string ( m_arch_backup . c_str ( ) , & global_options , UNKNOWN_LOCATION ) ;" GCC,riscv,52,"Predict the next statement of this code snippet: rtx_insn * insn ; regstat_init_n_sets_and_refs ( ) ; FOR_BB_INSNS ( bb , insn ) { if ( ! NONJUMP_INSN_P ( insn ) ) continue ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) != SET ) continue ; for ( int i = ; i < ; i ++ ) { rtx mem = XEXP ( pat , i ) ; rtx addr ; bool extend = false ; if ( get_si_mem_base_reg ( mem , & addr , & extend ) ) { HOST_WIDE_INT regno = REGNO ( XEXP ( addr , ) ) ; if ( i == ) { if ( XEXP ( pat , ) == CONST0_RTX ( GET_MODE ( XEXP ( pat , ) ) ) ) continue ; } if ( REG_N_REFS ( regno ) < ) continue ;" GCC,riscv,53,"Predict the next statement of this code snippet: if ( get_si_mem_base_reg ( mem , & addr , & extend ) ) { HOST_WIDE_INT regno = REGNO ( XEXP ( addr , ) ) ; if ( i == ) { if ( XEXP ( pat , ) == CONST0_RTX ( GET_MODE ( XEXP ( pat , ) ) ) ) continue ; } if ( REG_N_REFS ( regno ) < ) continue ;" GCC,riscv,54,"Predict the next statement of this code snippet: unsigned int pass_shorten_memrefs :: execute ( function * fn ) { basic_block bb ; FOR_ALL_BB_FN ( bb , fn ) { regno_map * m ; if ( optimize_bb_for_speed_p ( bb ) ) continue ; m = analyze ( bb ) ;" GCC,riscv,55,"Predict the next statement of this code snippet: unsigned int pass_shorten_memrefs :: execute ( function * fn ) { basic_block bb ; FOR_ALL_BB_FN ( bb , fn ) { regno_map * m ; if ( optimize_bb_for_speed_p ( bb ) ) continue ; m = analyze ( bb ) ; transform ( m , bb ) ;" GCC,riscv,56,"Predict the next statement of this code snippet: FOR_ALL_BB_FN ( bb , fn ) {" GCC,riscv,57,"Predict the next statement of this code snippet: if ( optimize_bb_for_speed_p ( bb ) ) continue ;" GCC,riscv,58,"Predict the next statement of this code snippet: FOR_BB_INSNS ( bb , insn ) { if ( ! NONJUMP_INSN_P ( insn ) ) continue ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) != SET ) continue ; start_sequence ( ) ; for ( int i = ; i < ; i ++ ) { rtx mem = XEXP ( pat , i ) ; rtx addr ; bool extend = false ; if ( get_si_mem_base_reg ( mem , & addr , & extend ) ) { HOST_WIDE_INT regno = REGNO ( XEXP ( addr , ) ) ; if ( i == ) { if ( XEXP ( pat , ) == CONST0_RTX ( GET_MODE ( XEXP ( pat , ) ) ) ) continue ; } if ( m -> get_or_insert ( regno ) > ) { if ( extend ) { addr = targetm . legitimize_address ( addr , addr , GET_MODE ( XEXP ( mem , ) ) ) ; XEXP ( XEXP ( pat , i ) , ) = replace_equiv_address ( XEXP ( mem , ) , addr ) ; } else { addr = targetm . legitimize_address ( addr , addr , GET_MODE ( mem ) ) ;" GCC,riscv,59,"Predict the next statement of this code snippet: if ( GET_CODE ( pat ) != SET ) continue ; start_sequence ( ) ; for ( int i = ; i < ; i ++ ) { rtx mem = XEXP ( pat , i ) ; rtx addr ; bool extend = false ; if ( get_si_mem_base_reg ( mem , & addr , & extend ) ) { HOST_WIDE_INT regno = REGNO ( XEXP ( addr , ) ) ;" GCC,riscv,60,"Predict the next statement of this code snippet: virtual bool gate ( function * ) { return TARGET_RVC && riscv_mshorten_memrefs && optimize > ;" GCC,riscv,61,"Predict the next statement of this code snippet: return TARGET_RVC && riscv_mshorten_memrefs && optimize > ;" GCC,riscv,62,"Predict the next statement of this code snippet: * extend = true ; mem = XEXP ( mem , ) ; } if ( ! MEM_P ( mem ) || GET_MODE ( mem ) != SImode ) return false ;" GCC,riscv,63,"Predict the next statement of this code snippet: * addr = XEXP ( mem , ) ; return GET_CODE ( * addr ) == PLUS && REG_P ( XEXP ( * addr , ) ) ;" GCC,riscv,64,"Predict the next statement of this code snippet: rtl_opt_pass * make_pass_shorten_memrefs ( gcc :: context * ctxt ) {" GCC,riscv,65,"Predict the next statement of this code snippet: pass_shorten_memrefs ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_shorten_memrefs , ctxt ) {" GCC,riscv,66,"Predict the next statement of this code snippet: pass_shorten_memrefs ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_shorten_memrefs , ctxt ) {" GCC,riscv,67,"Predict the next statement of this code snippet: rtx_insn * insn ; FOR_BB_INSNS ( bb , insn ) { if ( ! NONJUMP_INSN_P ( insn ) ) continue ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) != SET ) continue ; start_sequence ( ) ; for ( int i = ; i < ; i ++ ) { rtx mem = XEXP ( pat , i ) ; rtx addr ; bool extend = false ; if ( get_si_mem_base_reg ( mem , & addr , & extend ) ) { HOST_WIDE_INT regno = REGNO ( XEXP ( addr , ) ) ; if ( i == ) { if ( XEXP ( pat , ) == CONST0_RTX ( GET_MODE ( XEXP ( pat , ) ) ) ) continue ; } if ( m -> get_or_insert ( regno ) > ) { if ( extend ) { addr = targetm . legitimize_address ( addr , addr , GET_MODE ( XEXP ( mem , ) ) ) ; XEXP ( XEXP ( pat , i ) , ) = replace_equiv_address ( XEXP ( mem , ) , addr ) ; }" GCC,riscv,68,"Predict the next statement of this code snippet: if ( dump_file ) fprintf ( dump_file , ) ; rtx_insn * tmp = NEXT_INSN ( prologue ) ; if ( ! NOTE_P ( tmp ) || NOTE_KIND ( tmp ) != NOTE_INSN_PROLOGUE_END ) return ; do { tmp = NEXT_INSN ( tmp ) ; } while ( tmp != NULL && NOTE_P ( tmp ) ) ; if ( tmp == NULL || ! INSN_P ( tmp ) ) return ;" GCC,riscv,69,"Predict the next statement of this code snippet: } if ( ! INSN_P ( insn ) ) continue ; if ( CALL_P ( insn ) ) ++ call_count ; else if ( insn == prologue_matched ) ; else { df_ref use ; FOR_EACH_INSN_USE ( use , insn ) { if ( ! call_used_regs [ DF_REF_REGNO ( use ) ] ) {" GCC,riscv,70,"Predict the next statement of this code snippet: if ( ! INSN_P ( insn ) ) continue ; if ( CALL_P ( insn ) ) ++ call_count ; else if ( insn == prologue_matched ) ; else { df_ref use ; FOR_EACH_INSN_USE ( use , insn ) { if ( ! call_used_regs [ DF_REF_REGNO ( use ) ] ) { if ( dump_file ) fprintf ( dump_file , , INSN_UID ( insn ) ) ; good_use = false ; break ; }" GCC,riscv,71,"Predict the next statement of this code snippet: break ; } if ( ! INSN_P ( insn ) ) continue ; if ( CALL_P ( insn ) ) ++ call_count ; else if ( insn == prologue_matched ) ; else { df_ref use ; FOR_EACH_INSN_USE ( use , insn ) { if ( ! call_used_regs [ DF_REF_REGNO ( use ) ] ) { if ( dump_file ) fprintf ( dump_file , , INSN_UID ( insn ) ) ; good_use = false ; break ; } }" GCC,riscv,72,"Predict the next statement of this code snippet: if ( dump_file ) fprintf ( dump_file , , INSN_UID ( insn ) ) ; good_use = false ; break ; }" GCC,riscv,73,"Predict the next statement of this code snippet: if ( dump_file ) fprintf ( dump_file , , INSN_UID ( insn ) ) ; good_use = false ;" GCC,riscv,74,"Predict the next statement of this code snippet: } if ( ! good_use ) return ; if ( epilogue_count != ) return ; if ( call_count > ) { if ( dump_file ) fprintf ( dump_file , ) ; return ; } rtx_insn * epilogue_begin_note = PREV_INSN ( epilogue_matched ) ; gcc_assert ( NOTE_P ( epilogue_begin_note ) && NOTE_KIND ( epilogue_begin_note ) == NOTE_INSN_EPILOGUE_BEG ) ; df_finish_pass ( false ) ; rtx_insn * insn_before_epilogue ; for ( insn_before_epilogue = PREV_INSN ( epilogue_begin_note ) ; NOTE_P ( insn_before_epilogue ) ; insn_before_epilogue = PREV_INSN ( insn_before_epilogue ) ) ; if ( GET_CODE ( insn_before_epilogue ) != CALL_INSN ) return ; rtx_insn * call = insn_before_epilogue ; rtx callpat = PATTERN ( call ) ; gcc_assert ( GET_CODE ( callpat ) == PARALLEL ) ; rtx target_call = NULL ; rtx tmp_rtx = XVECEXP ( callpat , , ) ; rtx set_target = NULL ; switch ( GET_CODE ( tmp_rtx ) ) { case CALL : target_call = tmp_rtx ; break ; case SET : { set_target = XEXP ( tmp_rtx , ) ; tmp_rtx = XEXP ( tmp_rtx , ) ; if ( GET_CODE ( tmp_rtx ) != CALL ) return ; target_call = tmp_rtx ; break ; } default : return ; } rtx target_mem = XEXP ( target_call , ) ; if ( GET_CODE ( target_mem ) != MEM ) return ; rtx target = XEXP ( target_mem , ) ; if ( GET_CODE ( target ) != SYMBOL_REF && GET_CODE ( target ) != REG ) return ;" GCC,riscv,75,"Predict the next statement of this code snippet: static rtx_insn * riscv_sr_match_epilogue ( void ) { rtx_insn * insn , * start ; for ( insn = get_insns ( ) ; insn != NULL ; insn = NEXT_INSN ( insn ) ) if ( NOTE_P ( insn ) && NOTE_KIND ( insn ) == NOTE_INSN_EPILOGUE_BEG ) { insn = NEXT_INSN ( insn ) ; break ; } if ( insn == NULL ) return NULL ; start = insn ; if ( INSN_CODE ( insn ) != CODE_FOR_stack_tiesi && INSN_CODE ( insn ) != CODE_FOR_stack_tiedi ) return NULL ; insn = NEXT_INSN ( insn ) ;" GCC,riscv,76,"Predict the next statement of this code snippet: if ( INSN_P ( insn ) && INSN_CODE ( insn ) == CODE_FOR_gpr_save && GET_CODE ( PATTERN ( insn ) ) == PARALLEL && GET_CODE ( XVECEXP ( PATTERN ( insn ) , , ) ) == UNSPEC_VOLATILE && ( GET_CODE ( XVECEXP ( XVECEXP ( PATTERN ( insn ) , , ) , , ) ) == CONST_INT ) && INTVAL ( XVECEXP ( XVECEXP ( PATTERN ( insn ) , , ) , , ) ) == ) return insn ; return NULL ;" GCC,riscv,77,"Predict the next statement of this code snippet: bool apply_mask_policy_p ( ) const override { return false ;" GCC,riscv,78,"Predict the next statement of this code snippet: bool apply_mask_policy_p ( ) const override {" GCC,riscv,79,"Predict the next statement of this code snippet: return false ;" GCC,riscv,80,"Predict the next statement of this code snippet: return CP_READ_MEMORY | CP_WRITE_CSR ;" GCC,riscv,81,"Predict the next statement of this code snippet: return CP_READ_MEMORY | CP_WRITE_CSR ;" GCC,riscv,82,"Predict the next statement of this code snippet: return pred == PRED_TYPE_tu || pred == PRED_TYPE_tum || pred == PRED_TYPE_tumu ;" GCC,riscv,83,"Predict the next statement of this code snippet: bool can_be_overloaded_p ( enum predication_type_index pred ) const override {" GCC,riscv,84,"Predict the next statement of this code snippet: machine_mode mode = GET_MODE ( e . target ) ;" GCC,riscv,85,"Predict the next statement of this code snippet: rtx expand ( function_expander & e ) const override { machine_mode mode = GET_MODE ( e . target ) ; rtx vlenb = gen_int_mode ( BYTES_PER_RISCV_VECTOR , mode ) ;" GCC,riscv,86,"Predict the next statement of this code snippet: gimple_call_set_lhs ( g , tmp_var ) ; tree indirect = fold_build2 ( MEM_REF , size_type_node , gimple_call_arg ( f . call , gimple_call_num_args ( f . call ) - ) , build_int_cst ( build_pointer_type ( size_type_node ) , ) ) ; gassign * assign = gimple_build_assign ( indirect , tmp_var ) ; gsi_insert_after ( f . gsi , assign , GSI_SAME_STMT ) ; gsi_insert_after ( f . gsi , g , GSI_SAME_STMT ) ;" GCC,riscv,87,"Predict the next statement of this code snippet: if ( integer_zerop ( new_vl ) ) { return repl ; } tree tmp_var = create_tmp_var ( size_type_node , ) ; tree decl = get_read_vl_decl ( ) ; gimple * g = gimple_build_call ( decl , ) ; gimple_call_set_lhs ( g , tmp_var ) ; tree indirect = fold_build2 ( MEM_REF , size_type_node , gimple_call_arg ( f . call , gimple_call_num_args ( f . call ) - ) , build_int_cst ( build_pointer_type ( size_type_node ) , ) ) ; gassign * assign = gimple_build_assign ( indirect , tmp_var ) ;" GCC,riscv,88,"Predict the next statement of this code snippet: if ( UNSPEC == UNSPEC_VSLIDEUP ) return false ; return true ;" GCC,riscv,89,"Predict the next statement of this code snippet: bool use_mask_predication_p ( ) const override { return false ;" GCC,riscv,90,"Predict the next statement of this code snippet: bool use_mask_predication_p ( ) const override { return false ;" GCC,riscv,91,"Predict the next statement of this code snippet: function_instance function_instance ( group . base_name , * group . base , * group . shape , group . ops_infos . types [ ] , group . preds [ ] , & group . ops_infos ) ; b . add_unique_function ( function_instance , ( * group . shape ) , long_unsigned_type_node , argument_types ) ;" GCC,riscv,92,"Predict the next statement of this code snippet: for ( unsigned int pred_idx = ; group . preds [ pred_idx ] != NUM_PRED_TYPES ;" GCC,riscv,93,"Predict the next statement of this code snippet: for ( unsigned int pred_idx = ; group . preds [ pred_idx ] != NUM_PRED_TYPES ;" GCC,riscv,94,"Predict the next statement of this code snippet: auto_vec < tree , > argument_types ; function_instance function_instance ( group . base_name , * group . base , * group . shape , group . ops_infos . types [ vec_type_idx ] , group . preds [ pred_idx ] , & group . ops_infos ) ; tree return_type = group . ops_infos . ret . get_tree_type ( group . ops_infos . types [ vec_type_idx ] . index ) ;" GCC,riscv,95,"Predict the next statement of this code snippet: auto_vec < tree , > argument_types ;" GCC,riscv,96,"Predict the next statement of this code snippet: bool check ( function_checker & c ) const override { poly_int64 outer_size = GET_MODE_SIZE ( c . arg_mode ( ) ) ; poly_int64 inner_size = GET_MODE_SIZE ( c . ret_mode ( ) ) ; unsigned int nvecs = exact_div ( outer_size , inner_size ) . to_constant ( ) ; return c . require_immediate ( , , nvecs - ) ;" GCC,riscv,97,"Predict the next statement of this code snippet: b . append_name ( ) ; if ( ! overloaded_p ) { b . append_name ( operand_suffixes [ instance . op_info -> op ] ) ; b . append_name ( type_suffixes [ instance . type . index ] . vector ) ; } if ( overloaded_p && instance . pred == PRED_TYPE_m ) return b . finish_name ( ) ; b . append_name ( predication_suffixes [ instance . pred ] ) ;" GCC,riscv,98,"Predict the next statement of this code snippet: add_input_operand ( mode , CONSTM1_RTX ( mode ) ) ;" GCC,riscv,99,"Predict the next statement of this code snippet: static tree add_attribute ( const char * name , tree attrs ) { return tree_cons ( get_identifier ( name ) , NULL_TREE , attrs ) ;" GCC,riscv,100,"Predict the next statement of this code snippet: return tree_cons ( get_identifier ( name ) , NULL_TREE , attrs ) ;" GCC,riscv,101,"Predict the next statement of this code snippet: create_fixed_operand ( & m_ops [ opno ++ ] , x ) ;" GCC,riscv,102,"Predict the next statement of this code snippet: registered_function & function_builder :: add_function ( const function_instance & instance , const char * name , tree fntype , tree attrs , bool placeholder_p ) { unsigned int code = vec_safe_length ( registered_functions ) ; code = ( code << RISCV_BUILTIN_SHIFT ) + RISCV_BUILTIN_VECTOR ; tree decl = placeholder_p ? integer_zero_node : simulate_builtin_function_decl ( input_location , name , fntype , code , NULL , attrs ) ; registered_function & rfn = * ggc_alloc < registered_function > ( ) ; rfn . instance = instance ; rfn . decl = decl ; vec_safe_push ( registered_functions , & rfn ) ; return rfn ;" GCC,riscv,103,"Predict the next statement of this code snippet: inline void function_expander :: add_input_operand ( machine_mode mode , rtx op ) {" GCC,riscv,104,"Predict the next statement of this code snippet: create_input_operand ( & m_ops [ opno ++ ] , op , mode ) ;" GCC,riscv,105,"Predict the next statement of this code snippet: inline void function_expander :: add_integer_operand ( rtx x ) { create_integer_operand ( & m_ops [ opno ++ ] , INTVAL ( x ) ) ;" GCC,riscv,106,"Predict the next statement of this code snippet: create_integer_operand ( & m_ops [ opno ++ ] , INTVAL ( x ) ) ;" GCC,riscv,107,"Predict the next statement of this code snippet: rtx mem = gen_rtx_MEM ( mode , memory_address ( mode , addr ) ) ;" GCC,riscv,108,"Predict the next statement of this code snippet: inline void function_expander :: add_output_operand ( machine_mode mode , rtx target ) { create_output_operand ( & m_ops [ opno ++ ] , target , mode ) ;" GCC,riscv,109,"Predict the next statement of this code snippet: inline void function_expander :: add_scalar_move_mask_operand ( machine_mode mode ) { add_input_operand ( mode , gen_scalar_move_mask ( mode ) ) ;" GCC,riscv,110,"Predict the next statement of this code snippet: static void add_vector_type_attribute ( tree type , const char * mangled_name ) { tree mangled_name_tree = get_identifier ( mangled_name ) ; tree value = tree_cons ( NULL_TREE , mangled_name_tree , NULL_TREE ) ; TYPE_ATTRIBUTES ( type ) = tree_cons ( get_identifier ( ) , value , TYPE_ATTRIBUTES ( type ) ) ;" GCC,riscv,111,"Predict the next statement of this code snippet: tree value = tree_cons ( NULL_TREE , mangled_name_tree , NULL_TREE ) ; TYPE_ATTRIBUTES ( type ) = tree_cons ( get_identifier ( ) , value , TYPE_ATTRIBUTES ( type ) ) ;" GCC,riscv,112,"Predict the next statement of this code snippet: void function_expander :: add_vundef_operand ( machine_mode mode ) {" GCC,riscv,113,"Predict the next statement of this code snippet: for ( unsigned int i = ;" GCC,riscv,114,"Predict the next statement of this code snippet: void function_builder :: allocate_argument_types ( const function_instance & instance , vec < tree > & argument_types ) const {" GCC,riscv,115,"Predict the next statement of this code snippet: for ( int i = ; op_info -> args [ i ] . base_type != NUM_BASE_TYPES ; ++ i ) if ( FLOAT_MODE_P ( TYPE_MODE ( get_arg_type ( i ) ) ) ) return true ;" GCC,riscv,116,"Predict the next statement of this code snippet: append_name ( ) ; append_name ( name ) ;" GCC,riscv,117,"Predict the next statement of this code snippet: void function_builder :: append_base_name ( const char * name ) { append_name ( ) ;" GCC,riscv,118,"Predict the next statement of this code snippet: obstack_grow ( & m_string_obstack , name , strlen ( name ) ) ;" GCC,riscv,119,"Predict the next statement of this code snippet: obstack_grow ( & m_string_obstack , name , strlen ( name ) ) ;" GCC,riscv,120,"Predict the next statement of this code snippet: break ; case : append_name ( ) ; break ; default : gcc_unreachable ( ) ; }" GCC,riscv,121,"Predict the next statement of this code snippet: inline bool function_base :: apply_mask_policy_p ( ) const { return true ;" GCC,riscv,122,"Predict the next statement of this code snippet: inline bool function_base :: apply_mask_policy_p ( ) const { return true ;" GCC,riscv,123,"Predict the next statement of this code snippet: void function_builder :: apply_predication ( const function_instance & instance , tree return_type , vec < tree > & argument_types ) const { if ( instance . base -> has_merge_operand_p ( ) ) if ( instance . pred == PRED_TYPE_tu || instance . pred == PRED_TYPE_tum || instance . pred == PRED_TYPE_tumu || instance . pred == PRED_TYPE_mu ) argument_types . quick_insert ( , return_type ) ; vector_type_index mask_type_index = function_types [ instance . type . index ] . type_indexes [ RVV_BASE_mask ] ; tree mask_type = builtin_types [ mask_type_index ] . vector ; if ( instance . pred == PRED_TYPE_m || instance . pred == PRED_TYPE_tum || instance . pred == PRED_TYPE_tumu || instance . pred == PRED_TYPE_mu ) argument_types . quick_insert ( , mask_type ) ;" GCC,riscv,124,"Predict the next statement of this code snippet: return true ;" GCC,riscv,125,"Predict the next statement of this code snippet: inline bool function_base :: apply_vl_p ( ) const { return true ;" GCC,riscv,126,"Predict the next statement of this code snippet: return TYPE_MODE ( TREE_TYPE ( m_args [ argno ] ) ) ;" GCC,riscv,127,"Predict the next statement of this code snippet: static tree build_const_pointer ( tree t ) { return build_pointer_type ( build_qualified_type ( t , TYPE_QUAL_CONST ) ) ;" GCC,riscv,128,"Predict the next statement of this code snippet: return build_pointer_type ( build_qualified_type ( t , TYPE_QUAL_CONST ) ) ;" GCC,riscv,129,"Predict the next statement of this code snippet: inline unsigned int function_base :: call_properties ( const function_instance & instance ) const {" GCC,riscv,130,"Predict the next statement of this code snippet: if ( instance . any_type_float_p ( ) ) return flags | CP_READ_FPCR | CP_RAISE_FP_EXCEPTIONS ;" GCC,riscv,131,"Predict the next statement of this code snippet: inline bool function_base :: can_be_overloaded_p ( enum predication_type_index ) const { return true ;" GCC,riscv,132,"Predict the next statement of this code snippet: inline bool function_base :: can_be_overloaded_p ( enum predication_type_index ) const { return true ;" GCC,riscv,133,"Predict the next statement of this code snippet: return true ;" GCC,riscv,134,"Predict the next statement of this code snippet: bool check_builtin_call ( location_t location , vec < location_t > , unsigned int code , tree fndecl , unsigned int nargs , tree * args ) { const registered_function & rfn = * ( * registered_functions ) [ code ] ;" GCC,riscv,135,"Predict the next statement of this code snippet: if ( required_extensions_p ( op_info -> ret . base_type ) ) { enum vector_type_index ret_type_idx = op_info -> ret . get_function_type_index ( type_info . index ) ; if ( ret_type_idx == NUM_VECTOR_TYPES ) return false ; required_extensions |= get_required_extensions ( ret_type_idx ) ; } for ( unsigned i = ; op_info -> args [ i ] . base_type != NUM_BASE_TYPES ; ++ i ) { if ( ! required_extensions_p ( op_info -> args [ i ] . base_type ) ) continue ; enum vector_type_index vector_type = op_info -> args [ i ] . get_function_type_index ( type_info . index ) ; if ( vector_type == NUM_VECTOR_TYPES ) return false ; required_extensions |= get_required_extensions ( vector_type ) ; if ( op_info -> args [ i ] . base_type == RVV_BASE_eew64_index ) required_extensions |= RVV_REQUIRE_RV64BIT ; } uint64_t riscv_isa_flags = ; if ( TARGET_VECTOR_ELEN_FP_32 ) riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_32 ; if ( TARGET_VECTOR_ELEN_FP_64 ) riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_64 ; if ( TARGET_VECTOR_ELEN_64 ) riscv_isa_flags |= RVV_REQUIRE_ELEN_64 ;" GCC,riscv,136,"Predict the next statement of this code snippet: if ( flags & CP_RAISE_FP_EXCEPTIONS ) return true ; if ( flags & ( CP_READ_MEMORY | CP_WRITE_MEMORY ) ) return true ; return false ;" GCC,riscv,137,"Predict the next statement of this code snippet: bool function_instance :: could_trap_p ( ) const { unsigned int flags = call_properties ( ) ;" GCC,riscv,138,"Predict the next statement of this code snippet: inline bool registered_function_hasher :: equal ( value_type value , const compare_type & key ) {" GCC,riscv,139,"Predict the next statement of this code snippet: inline rtx function_expander :: expand ( ) { return base -> expand ( * this ) ;" GCC,riscv,140,"Predict the next statement of this code snippet: return base -> expand ( * this ) ;" GCC,riscv,141,"Predict the next statement of this code snippet: rtx expand_builtin ( unsigned int code , tree exp , rtx target ) {" GCC,riscv,142,"Predict the next statement of this code snippet: rtx expand_builtin ( unsigned int code , tree exp , rtx target ) { registered_function & rfn = * ( * registered_functions ) [ code ] ; return function_expander ( rfn . instance , rfn . decl , exp , target ) . expand ( ) ;" GCC,riscv,143,"Predict the next statement of this code snippet: return ( char * ) obstack_finish ( & m_string_obstack ) ;" GCC,riscv,144,"Predict the next statement of this code snippet: char * function_builder :: finish_name ( ) { obstack_1grow ( & m_string_obstack , ) ;" GCC,riscv,145,"Predict the next statement of this code snippet: m_direct_overloads = lang_GNU_CXX ( ) ; gcc_obstack_init ( & m_string_obstack ) ;" GCC,riscv,146,"Predict the next statement of this code snippet: function_builder :: function_builder ( ) { m_direct_overloads = lang_GNU_CXX ( ) ;" GCC,riscv,147,"Predict the next statement of this code snippet: function_call_info :: function_call_info ( location_t location_in , const function_instance & instance_in , tree fndecl_in ) : function_instance ( instance_in ) , location ( location_in ) , fndecl ( fndecl_in ) {" GCC,riscv,148,"Predict the next statement of this code snippet: function_call_info :: function_call_info ( location_t location_in , const function_instance & instance_in , tree fndecl_in ) : function_instance ( instance_in ) , location ( location_in ) , fndecl ( fndecl_in ) {" GCC,riscv,149,"Predict the next statement of this code snippet: function_checker :: function_checker ( location_t location , const function_instance & instance , tree fndecl , tree fntype , unsigned int nargs , tree * args ) : function_call_info ( location , instance , fndecl ) , m_fntype ( fntype ) , m_nargs ( nargs ) , m_args ( args ) {" GCC,riscv,150,"Predict the next statement of this code snippet: function_checker :: function_checker ( location_t location , const function_instance & instance , tree fndecl , tree fntype , unsigned int nargs , tree * args ) : function_call_info ( location , instance , fndecl ) , m_fntype ( fntype ) , m_nargs ( nargs ) , m_args ( args ) {" GCC,riscv,151,"Predict the next statement of this code snippet: function_expander :: function_expander ( const function_instance & instance , tree fndecl_in , tree exp_in , rtx target_in ) : function_call_info ( EXPR_LOCATION ( exp_in ) , instance , fndecl_in ) , exp ( exp_in ) , target ( target_in ) , opno ( ) { if ( ! function_returns_void_p ( ) ) create_output_operand ( & m_ops [ opno ++ ] , target , TYPE_MODE ( TREE_TYPE ( exp ) ) ) ;" GCC,riscv,152,"Predict the next statement of this code snippet: function_instance :: function_instance ( const char * base_name_in , const function_base * base_in , const function_shape * shape_in , rvv_type_info type_in , predication_type_index pred_in , const rvv_op_info * op_info_in ) : base_name ( base_name_in ) , base ( base_in ) , shape ( shape_in ) , type ( type_in ) , pred ( pred_in ) , op_info ( op_info_in ) {" GCC,riscv,153,"Predict the next statement of this code snippet: function_instance :: function_instance ( const char * base_name_in , const function_base * base_in , const function_shape * shape_in , rvv_type_info type_in , predication_type_index pred_in , const rvv_op_info * op_info_in ) : base_name ( base_name_in ) , base ( base_in ) , shape ( shape_in ) , type ( type_in ) , pred ( pred_in ) , op_info ( op_info_in ) {" GCC,riscv,154,"Predict the next statement of this code snippet: inline bool function_call_info :: function_returns_void_p ( ) {" GCC,riscv,155,"Predict the next statement of this code snippet: rtx function_expander :: generate_insn ( insn_code icode ) { gcc_assert ( opno == insn_data [ icode ] . n_generator_args ) ; if ( ! maybe_expand_insn ( icode , opno , m_ops ) ) {" GCC,riscv,156,"Predict the next statement of this code snippet: if ( ! maybe_expand_insn ( icode , opno , m_ops ) ) { error ( ) ; return NULL_RTX ; }" GCC,riscv,157,"Predict the next statement of this code snippet: return op_info -> args [ opno ] . get_tree_type ( type . index ) ;" GCC,riscv,158,"Predict the next statement of this code snippet: tree function_builder :: get_attributes ( const function_instance & instance ) { tree attrs = NULL_TREE ; if ( ! instance . modifies_global_state_p ( ) ) { if ( instance . reads_global_state_p ( ) ) attrs = add_attribute ( , attrs ) ; else attrs = add_attribute ( , attrs ) ;" GCC,riscv,159,"Predict the next statement of this code snippet: tree type = builtin_types [ function_types [ type_idx ] . type_indexes [ base_type ] ] . vector ; return type ? function_types [ type_idx ] . type_indexes [ base_type ] : NUM_VECTOR_TYPES ;" GCC,riscv,160,"Predict the next statement of this code snippet: vector_type_index ( vector_type_index type_idx ) const { tree type = builtin_types [ function_types [ type_idx ] . type_indexes [ base_type ] ] . vector ; return type ? function_types [ type_idx ] . type_indexes [ base_type ] : NUM_VECTOR_TYPES ;" GCC,riscv,161,"Predict the next statement of this code snippet: if ( pred == PRED_TYPE_tumu || pred == PRED_TYPE_mu ) return gen_int_mode ( MASK_UNDISTURBED , Pmode ) ; return gen_int_mode ( get_prefer_mask_policy ( ) , Pmode ) ;" GCC,riscv,162,"Predict the next statement of this code snippet: if ( pred == PRED_TYPE_tumu || pred == PRED_TYPE_mu ) return gen_int_mode ( MASK_UNDISTURBED , Pmode ) ; return gen_int_mode ( get_prefer_mask_policy ( ) , Pmode ) ;" GCC,riscv,163,"Predict the next statement of this code snippet: function_instance instance = get_read_vl_instance ( ) ; hashval_t hash = instance . hash ( ) ;" GCC,riscv,164,"Predict the next statement of this code snippet: return function_instance ( , bases :: read_vl , shapes :: read_vl , none_ops [ ] , PRED_TYPE_none , & p_none_void_ops ) ;" GCC,riscv,165,"Predict the next statement of this code snippet: for ( unsigned int i = ; all_ops [ i ] . index != NUM_VECTOR_TYPES ; i ++ ) if ( type_idx == all_ops [ i ] . index ) return all_ops [ i ] . required_extensions ; for ( unsigned int i = ; b_ops [ i ] . index != NUM_VECTOR_TYPES ; i ++ ) if ( type_idx == b_ops [ i ] . index ) return b_ops [ i ] . required_extensions ;" GCC,riscv,166,"Predict the next statement of this code snippet: tree ( vector_type_index type_idx ) const { if ( type_idx >= VECTOR_TYPE_vbool64_t && type_idx <= VECTOR_TYPE_vbool1_t ) return builtin_types [ VECTOR_TYPE_vuint8mf8_t ] . scalar_ptr ; else return builtin_types [ type_idx ] . scalar_ptr ;" GCC,riscv,167,"Predict the next statement of this code snippet: if ( type_idx >= VECTOR_TYPE_vbool64_t && type_idx <= VECTOR_TYPE_vbool1_t ) return builtin_types [ VECTOR_TYPE_vuint8mf8_t ] . scalar_ptr ;" GCC,riscv,168,"Predict the next statement of this code snippet: return get_function_type_index ( type_idx ) == VECTOR_TYPE_INVALID ? NULL_TREE : builtin_types [ get_function_type_index ( type_idx ) ] . scalar ;" GCC,riscv,169,"Predict the next statement of this code snippet: inline tree ( vector_type_index type_idx ) const { return get_function_type_index ( type_idx ) == VECTOR_TYPE_INVALID ? NULL_TREE : builtin_types [ get_function_type_index ( type_idx ) ] . scalar ;" GCC,riscv,170,"Predict the next statement of this code snippet: if ( pred == PRED_TYPE_tu || pred == PRED_TYPE_tum || pred == PRED_TYPE_tumu ) return gen_int_mode ( TAIL_UNDISTURBED , Pmode ) ;" GCC,riscv,171,"Predict the next statement of this code snippet: if ( pred == PRED_TYPE_tu || pred == PRED_TYPE_tum || pred == PRED_TYPE_tumu ) return gen_int_mode ( TAIL_UNDISTURBED , Pmode ) ;" GCC,riscv,172,"Predict the next statement of this code snippet: case RVV_BASE_ ## NAME : \ return TYPE ; default : gcc_unreachable ( ) ; } gcc_unreachable ( ) ;" GCC,riscv,173,"Predict the next statement of this code snippet: return get_function_type_index ( type_idx ) == VECTOR_TYPE_INVALID ? NULL_TREE : builtin_types [ get_function_type_index ( type_idx ) ] . vector ;" GCC,riscv,174,"Predict the next statement of this code snippet: return get_function_type_index ( type_idx ) == VECTOR_TYPE_INVALID ? NULL_TREE : builtin_types [ get_function_type_index ( type_idx ) ] . vector ;" GCC,riscv,175,"Predict the next statement of this code snippet: gimple_folder :: gimple_folder ( const function_instance & instance , tree fndecl , gimple_stmt_iterator * gsi_in , gcall * call_in ) : function_call_info ( gimple_location ( call_in ) , instance , fndecl ) , gsi ( gsi_in ) , call ( call_in ) , lhs ( gimple_call_lhs ( call_in ) ) {" GCC,riscv,176,"Predict the next statement of this code snippet: gimple_folder :: gimple_folder ( const function_instance & instance , tree fndecl , gimple_stmt_iterator * gsi_in , gcall * call_in ) : function_call_info ( gimple_location ( call_in ) , instance , fndecl ) , gsi ( gsi_in ) , call ( call_in ) , lhs ( gimple_call_lhs ( call_in ) ) {" GCC,riscv,177,"Predict the next statement of this code snippet: gimple * gimple_fold_builtin ( unsigned int code , gimple_stmt_iterator * gsi , gcall * stmt ) {" GCC,riscv,178,"Predict the next statement of this code snippet: gimple * gimple_fold_builtin ( unsigned int code , gimple_stmt_iterator * gsi , gcall * stmt ) { registered_function & rfn = * ( * registered_functions ) [ code ] ;" GCC,riscv,179,"Predict the next statement of this code snippet: inline void gt_ggc_mx ( function_instance * ) {" GCC,riscv,180,"Predict the next statement of this code snippet: inline void gt_ggc_mx ( function_instance * ) {" GCC,riscv,181,"Predict the next statement of this code snippet: inline void gt_pch_nx ( function_instance * , gt_pointer_operator , void * ) {" GCC,riscv,182,"Predict the next statement of this code snippet: inline void gt_pch_nx ( function_instance * , gt_pointer_operator , void * ) {" GCC,riscv,183,"Predict the next statement of this code snippet: function_table = new hash_table < registered_function_hasher > ( ) ; function_builder builder ;" GCC,riscv,184,"Predict the next statement of this code snippet: for ( unsigned int type_i = ; type_i < NUM_VECTOR_TYPES ; ++ type_i ) register_vector_type ( ( enum vector_type_index ) type_i ) ; function_table = new hash_table < registered_function_hasher > ( ) ;" GCC,riscv,185,"Predict the next statement of this code snippet: return value -> instance . hash ( ) ;" GCC,riscv,186,"Predict the next statement of this code snippet: return true ;" GCC,riscv,187,"Predict the next statement of this code snippet: return true ;" GCC,riscv,188,"Predict the next statement of this code snippet: rvv_switcher rvv ; if ( ! TARGET_VECTOR ) return ;" GCC,riscv,189,"Predict the next statement of this code snippet: rvv_switcher rvv ; if ( ! TARGET_VECTOR ) return ; register_builtin_types ( ) ; if ( in_lto_p ) handle_pragma_vector ( ) ;" GCC,riscv,190,"Predict the next statement of this code snippet: static void make_type_sizeless ( tree type ) { TYPE_ATTRIBUTES ( type ) = tree_cons ( get_identifier ( ) , NULL_TREE , TYPE_ATTRIBUTES ( type ) ) ;" GCC,riscv,191,"Predict the next statement of this code snippet: const char * mangle_builtin_type ( const_tree type ) {" GCC,riscv,192,"Predict the next statement of this code snippet: if ( TYPE_NAME ( type ) && TREE_CODE ( TYPE_NAME ( type ) ) == TYPE_DECL ) type = TREE_TYPE ( TYPE_NAME ( type ) ) ; if ( tree attr = lookup_vector_type_attribute ( type ) ) if ( tree id = TREE_VALUE ( chain_index ( , TREE_VALUE ( attr ) ) ) ) return IDENTIFIER_POINTER ( id ) ;" GCC,riscv,193,"Predict the next statement of this code snippet: return TYPE_MODE ( builtin_types [ mask_type_index ] . vector ) ;" GCC,riscv,194,"Predict the next statement of this code snippet: if ( flags & CP_RAISE_FP_EXCEPTIONS ) return true ; return flags & ( CP_WRITE_MEMORY | CP_WRITE_CSR ) ;" GCC,riscv,195,"Predict the next statement of this code snippet: unsigned int flags = call_properties ( ) ; if ( flags & CP_RAISE_FP_EXCEPTIONS ) return true ; return flags & ( CP_WRITE_MEMORY | CP_WRITE_CSR ) ;" GCC,riscv,196,"Predict the next statement of this code snippet: bool function_instance :: reads_global_state_p ( ) const { unsigned int flags = call_properties ( ) ; if ( flags & CP_READ_FPCR ) return true ;" GCC,riscv,197,"Predict the next statement of this code snippet: bool function_instance :: reads_global_state_p ( ) const { unsigned int flags = call_properties ( ) ;" GCC,riscv,198,"Predict the next statement of this code snippet: builtin_types [ type ] . scalar_ptr = build_pointer_type ( eltype ) ; builtin_types [ type ] . scalar_const_ptr = build_const_pointer ( eltype ) ; if ( ! riscv_v_ext_vector_mode_p ( mode ) ) return ; tree vectype = build_vector_type_for_mode ( eltype , mode ) ; gcc_assert ( VECTOR_MODE_P ( TYPE_MODE ( vectype ) ) && TYPE_MODE ( vectype ) == mode && TYPE_MODE_RAW ( vectype ) == mode && TYPE_ALIGN ( vectype ) <= && known_eq ( tree_to_poly_uint64 ( TYPE_SIZE ( vectype ) ) , GET_MODE_BITSIZE ( mode ) ) ) ; vectype = build_distinct_type_copy ( vectype ) ; gcc_assert ( vectype == TYPE_MAIN_VARIANT ( vectype ) ) ; SET_TYPE_STRUCTURAL_EQUALITY ( vectype ) ; TYPE_ARTIFICIAL ( vectype ) = ; TYPE_INDIVISIBLE_P ( vectype ) = ; add_vector_type_attribute ( vectype , vector_types [ type ] . mangled_name ) ; make_type_sizeless ( vectype ) ;" GCC,riscv,199,"Predict the next statement of this code snippet: gcc_assert ( vectype == TYPE_MAIN_VARIANT ( vectype ) ) ; SET_TYPE_STRUCTURAL_EQUALITY ( vectype ) ; TYPE_ARTIFICIAL ( vectype ) = ; TYPE_INDIVISIBLE_P ( vectype ) = ; add_vector_type_attribute ( vectype , vector_types [ type ] . mangled_name ) ; make_type_sizeless ( vectype ) ; abi_vector_types [ type ] = vectype ; lang_hooks . types . register_builtin_type ( vectype , vector_types [ type ] . abi_name ) ;" GCC,riscv,200,"Predict the next statement of this code snippet: static void register_builtin_types ( ) { tree int8_type_node = get_typenode_from_name ( INT8_TYPE ) ; tree uint8_type_node = get_typenode_from_name ( UINT8_TYPE ) ; tree int16_type_node = get_typenode_from_name ( INT16_TYPE ) ;" GCC,riscv,201,"Predict the next statement of this code snippet: ( * group . shape ) -> build ( * this , group ) ;" GCC,riscv,202,"Predict the next statement of this code snippet: tree id = get_identifier ( vector_types [ type ] . name ) ; tree decl = build_decl ( input_location , TYPE_DECL , id , vectype ) ; decl = lang_hooks . decls . pushdecl ( decl ) ;" GCC,riscv,203,"Predict the next statement of this code snippet: error_at ( location , , argno + , fndecl ) ;" GCC,riscv,204,"Predict the next statement of this code snippet: void function_checker :: report_non_ice ( unsigned int argno ) const { error_at ( location , , argno + , fndecl ) ;" GCC,riscv,205,"Predict the next statement of this code snippet: void function_checker :: report_out_of_range ( unsigned int argno , HOST_WIDE_INT actual , HOST_WIDE_INT min , HOST_WIDE_INT max ) const { error_at ( location , , actual , argno + , fndecl , min , max ) ;" GCC,riscv,206,"Predict the next statement of this code snippet: static bool required_extensions_p ( enum rvv_base_type type ) { return type == RVV_BASE_eew8_index || type == RVV_BASE_eew16_index || type == RVV_BASE_eew32_index || type == RVV_BASE_eew64_index || type == RVV_BASE_float_vector || type == RVV_BASE_double_trunc_float_vector || type == RVV_BASE_double_trunc_vector || type == RVV_BASE_widen_lmul1_vector || type == RVV_BASE_eew8_interpret || type == RVV_BASE_eew16_interpret || type == RVV_BASE_eew32_interpret || type == RVV_BASE_eew64_interpret || type == RVV_BASE_vlmul_ext_x2 || type == RVV_BASE_vlmul_ext_x4 || type == RVV_BASE_vlmul_ext_x8 || type == RVV_BASE_vlmul_ext_x16 || type == RVV_BASE_vlmul_ext_x32 || type == RVV_BASE_vlmul_ext_x64 ;" GCC,riscv,207,"Predict the next statement of this code snippet: bool function_checker :: require_immediate ( unsigned int argno , HOST_WIDE_INT min , HOST_WIDE_INT max ) const { gcc_assert ( argno < m_nargs ) ; tree arg = m_args [ argno ] ; if ( ! tree_fits_uhwi_p ( arg ) ) { report_non_ice ( argno ) ; return false ;" GCC,riscv,208,"Predict the next statement of this code snippet: bool function_checker :: require_immediate ( unsigned int argno , HOST_WIDE_INT min , HOST_WIDE_INT max ) const { gcc_assert ( argno < m_nargs ) ; tree arg = m_args [ argno ] ; if ( ! tree_fits_uhwi_p ( arg ) ) { report_non_ice ( argno ) ; return false ; }" GCC,riscv,209,"Predict the next statement of this code snippet: HOST_WIDE_INT actual = tree_to_uhwi ( arg ) ; if ( ! IN_RANGE ( actual , min , max ) ) { report_out_of_range ( argno , actual , min , max ) ; return false ;" GCC,riscv,210,"Predict the next statement of this code snippet: gcc_assert ( argno < m_nargs ) ; tree arg = m_args [ argno ] ; HOST_WIDE_INT actual = tree_to_uhwi ( arg ) ; if ( ! IN_RANGE ( actual , min , max ) ) { report_out_of_range ( argno , actual , min , max ) ; return false ; }" GCC,riscv,211,"Predict the next statement of this code snippet: inline machine_mode function_checker :: ret_mode ( ) const {" GCC,riscv,212,"Predict the next statement of this code snippet: return TYPE_MODE ( TREE_TYPE ( TREE_TYPE ( fndecl ) ) ) ;" GCC,riscv,213,"Predict the next statement of this code snippet: CONSTEXPR rvv_arg_type_info ( rvv_base_type base_type_in ) : base_type ( base_type_in ) {" GCC,riscv,214,"Predict the next statement of this code snippet: CONSTEXPR rvv_arg_type_info ( rvv_base_type base_type_in ) : base_type ( base_type_in ) {" GCC,riscv,215,"Predict the next statement of this code snippet: memcpy ( m_old_have_regs_of_mode , have_regs_of_mode , sizeof ( have_regs_of_mode ) ) ;" GCC,riscv,216,"Predict the next statement of this code snippet: if ( type == error_mark_node ) return NULL_TREE ;" GCC,riscv,217,"Predict the next statement of this code snippet: else add_vundef_operand ( mask_mode ) ; rtx op1 = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; rtx op2 = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; if ( ! insn_operand_matches ( icode , opno + , op1 ) ) op1 = force_reg ( mode , op1 ) ; if ( ! insn_operand_matches ( icode , opno + , op2 ) ) { if ( VECTOR_MODE_P ( GET_MODE ( op2 ) ) ) op2 = force_reg ( mode , op2 ) ; else op2 = force_reg ( GET_MODE_INNER ( mode ) , op2 ) ; } rtx comparison = gen_rtx_fmt_ee ( rcode , mask_mode , op1 , op2 ) ;" GCC,riscv,218,"Predict the next statement of this code snippet: int arg_offset = ; add_mem_operand ( mode , use_real_mask_p ( pred ) ? : ) ;" GCC,riscv,219,"Predict the next statement of this code snippet: int arg_offset = ; if ( base -> use_mask_predication_p ( ) ) { if ( use_real_mask_p ( pred ) ) add_input_operand ( arg_offset ++ ) ; else add_all_one_mask_operand ( mask_mode ( ) ) ; } if ( ! function_returns_void_p ( ) && base -> has_merge_operand_p ( ) ) { if ( use_real_merge_p ( pred ) ) add_input_operand ( arg_offset ++ ) ; else add_vundef_operand ( mode ) ; } for ( int argno = arg_offset ; argno < call_expr_nargs ( exp ) ; argno ++ ) add_input_operand ( argno ) ; if ( base -> apply_tail_policy_p ( ) ) add_input_operand ( Pmode , get_tail_policy_for_pred ( pred ) ) ;" GCC,riscv,220,"Predict the next statement of this code snippet: } for ( int argno = arg_offset ; argno < call_expr_nargs ( exp ) ; argno ++ ) add_input_operand ( argno ) ; if ( base -> apply_tail_policy_p ( ) ) add_input_operand ( Pmode , get_tail_policy_for_pred ( pred ) ) ; if ( base -> apply_mask_policy_p ( ) ) add_input_operand ( Pmode , get_mask_policy_for_pred ( pred ) ) ;" GCC,riscv,221,"Predict the next statement of this code snippet: return true ;" GCC,riscv,222,"Predict the next statement of this code snippet: return pred == PRED_TYPE_tu || pred == PRED_TYPE_tum || pred == PRED_TYPE_tumu || pred == PRED_TYPE_mu ;" GCC,riscv,223,"Predict the next statement of this code snippet: rtx vd = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; rtx vs1 = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; rtx vs2 = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; if ( VECTOR_MODE_P ( GET_MODE ( vs1 ) ) ) { if ( ! vd_accum_p ) add_input_operand ( mode , vd ) ; add_input_operand ( mode , vs1 ) ; add_input_operand ( mode , vs2 ) ; if ( vd_accum_p ) add_input_operand ( mode , vd ) ; add_input_operand ( mode , vd ) ; } else { add_input_operand ( GET_MODE_INNER ( mode ) , vs1 ) ; if ( vd_accum_p ) { add_input_operand ( mode , vs2 ) ; add_input_operand ( mode , vd ) ; } else { add_input_operand ( mode , vd ) ; add_input_operand ( mode , vs2 ) ; } add_input_operand ( mode , vd ) ;" GCC,riscv,224,"Predict the next statement of this code snippet: else add_all_one_mask_operand ( mask_mode ( ) ) ; rtx vd = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; rtx vs1 = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; rtx vs2 = expand_normal ( CALL_EXPR_ARG ( exp , arg_offset ++ ) ) ; if ( VECTOR_MODE_P ( GET_MODE ( vs1 ) ) ) { if ( ! vd_accum_p ) add_input_operand ( mode , vd ) ; add_input_operand ( mode , vs1 ) ; add_input_operand ( mode , vs2 ) ; if ( vd_accum_p ) add_input_operand ( mode , vd ) ;" GCC,riscv,225,"Predict the next statement of this code snippet: add_input_operand ( Pmode , get_mask_policy_for_pred ( pred ) ) ; add_input_operand ( Pmode , get_avl_type_rtx ( avl_type :: NONVLMAX ) ) ; return generate_insn ( icode ) ;" GCC,riscv,226,"Predict the next statement of this code snippet: return TYPE_MODE ( builtin_types [ type . index ] . vector ) ;" GCC,riscv,227,"Predict the next statement of this code snippet: inline machine_mode function_expander :: vector_mode ( void ) const { return TYPE_MODE ( builtin_types [ type . index ] . vector ) ;" GCC,riscv,228,"Predict the next statement of this code snippet: function_builder :: ~ function_builder ( ) { obstack_free ( & m_string_obstack , NULL ) ;" GCC,riscv,229,"Predict the next statement of this code snippet: rvv_switcher ( ) {" GCC,riscv,230,"Predict the next statement of this code snippet: gcc_assert ( ! JUMP_P ( rinsn ) ) ; add_reg_note ( rinsn , REG_LABEL_OPERAND , label_ref_label ( x ) ) ; if ( LABEL_P ( label_ref_label ( x ) ) ) LABEL_NUSES ( label_ref_label ( x ) ) ++ ; return ; } for ( i = GET_RTX_LENGTH ( code ) - , fmt = GET_RTX_FORMAT ( code ) ; i >= ; i -- ) { if ( fmt [ i ] == 'e' ) add_label_notes ( XEXP ( x , i ) , rinsn ) ; else if ( fmt [ i ] == 'E' ) for ( j = XVECLEN ( x , i ) - ; j >= ; j -- ) add_label_notes ( XVECEXP ( x , i , j ) , rinsn ) ; }" GCC,riscv,231,"Predict the next statement of this code snippet: if ( bitmap_empty_p ( bitdata ) ) return false ; const auto & block_info = vector_block_infos [ cfg_bb -> index ] ; if ( ! block_info . local_dem . demand_p ( DEMAND_AVL ) ) return true ; avl_info avl = block_info . local_dem . get_avl_info ( ) ; unsigned int bb_index ; sbitmap_iterator sbi ; EXECUTE_IF_SET_IN_BITMAP ( bitdata , , bb_index , sbi ) { if ( vector_exprs [ bb_index ] -> get_avl_info ( ) != avl ) return false ; } return true ;" GCC,riscv,232,"Predict the next statement of this code snippet: if ( bitmap_empty_p ( bitdata ) ) return false ; int ratio = - ; unsigned int bb_index ; sbitmap_iterator sbi ; EXECUTE_IF_SET_IN_BITMAP ( bitdata , , bb_index , sbi ) {" GCC,riscv,233,"Predict the next statement of this code snippet: } } if ( vsetvl_insn_p ( insn -> rtl ( ) ) ) { rtx dest = get_vl ( insn -> rtl ( ) ) ; for ( insn_info * i = insn -> prev_nondebug_insn ( ) ; real_insn_and_same_bb_p ( i , bb ) ; i = i -> prev_nondebug_insn ( ) ) { if ( find_access ( i -> uses ( ) , REGNO ( dest ) ) ) return false ; if ( find_access ( i -> defs ( ) , REGNO ( dest ) ) ) return false ; } }" GCC,riscv,234,"Predict the next statement of this code snippet: for ( const set_info * set : sets ) if ( set -> bb ( ) -> index ( ) == bb -> index ( ) ) return true ;" GCC,riscv,235,"Predict the next statement of this code snippet: static bool any_set_in_bb_p ( hash_set < set_info * > sets , const bb_info * bb ) {" GCC,riscv,236,"Predict the next statement of this code snippet: static bool available_occurrence_p ( const bb_info * bb , const vector_insn_info dem ) { insn_info * insn = dem . get_insn ( ) ; if ( dem . has_avl_reg ( ) ) { if ( ! vlmax_avl_p ( dem . get_avl ( ) ) ) { rtx dest = NULL_RTX ; if ( vsetvl_insn_p ( insn -> rtl ( ) ) ) dest = get_vl ( insn -> rtl ( ) ) ; for ( const insn_info * i = insn ; real_insn_and_same_bb_p ( i , bb ) ; i = i -> next_nondebug_insn ( ) ) { if ( read_vl_insn_p ( i -> rtl ( ) ) ) continue ;" GCC,riscv,237,"Predict the next statement of this code snippet: if ( read_vl_insn_p ( i -> rtl ( ) ) ) continue ; if ( find_access ( i -> defs ( ) , REGNO ( dem . get_avl ( ) ) ) ) return false ; if ( dest && find_access ( i -> defs ( ) , REGNO ( dest ) ) ) return false ;" GCC,riscv,238,"Predict the next statement of this code snippet: bool vector_insn_info :: available_p ( const vector_insn_info & other ) const {" GCC,riscv,239,"Predict the next statement of this code snippet: avl_info ( ) : m_value ( NULL_RTX ) , m_source ( nullptr ) {" GCC,riscv,240,"Predict the next statement of this code snippet: avl_info ( ) : m_value ( NULL_RTX ) , m_source ( nullptr ) {" GCC,riscv,241,"Predict the next statement of this code snippet: if ( e -> src -> index == ENTRY_BLOCK_PTR_FOR_FN ( cfun ) -> index ) continue ; if ( vsetvl_insn_p ( prop . get_insn ( ) -> rtl ( ) ) && propagate_avl_across_demands_p ( prop , block_info . reaching_out ) ) continue ; if ( block_info . reaching_out . unknown_p ( ) ) continue ; else if ( block_info . reaching_out . hard_empty_p ( ) ) continue ; else if ( block_info . reaching_out . empty_p ( ) ) { enum fusion_type type = get_backward_fusion_type ( crtl -> ssa -> bb ( e -> src ) , prop ) ; if ( type == INVALID_FUSION ) continue ; block_info . reaching_out = prop ; block_info . reaching_out . set_dirty ( type ) ; if ( prop . has_avl_reg ( ) && ! vlmax_avl_p ( prop . get_avl ( ) ) ) { hash_set < set_info * > sets = get_all_sets ( prop . get_avl_source ( ) , true , true , true ) ; set_info * set = get_same_bb_set ( sets , e -> src ) ; if ( set ) block_info . reaching_out . set_avl_info ( avl_info ( prop . get_avl ( ) , set ) ) ; } block_info . local_dem = block_info . reaching_out ; block_info . probability = curr_block_info . probability ; changed_p = true ; } else if ( block_info . reaching_out . dirty_p ( ) ) { vector_insn_info new_info ; if ( block_info . reaching_out . compatible_p ( prop ) ) { if ( block_info . reaching_out . available_p ( prop ) ) continue ; new_info = block_info . reaching_out . merge ( prop , GLOBAL_MERGE ) ; new_info . set_dirty ( block_info . reaching_out . dirty_with_killed_avl_p ( ) ) ; block_info . probability += curr_block_info . probability ; } else { if ( curr_block_info . probability > block_info . probability ) { enum fusion_type type = get_backward_fusion_type ( crtl -> ssa -> bb ( e -> src ) , prop ) ; if ( type == INVALID_FUSION ) continue ; new_info = prop ; new_info . set_dirty ( type ) ; block_info . probability = curr_block_info . probability ; } else continue ; } if ( propagate_avl_across_demands_p ( prop , block_info . reaching_out ) ) { rtx reg = new_info . get_avl_reg_rtx ( ) ; if ( find_reg_killed_by ( crtl -> ssa -> bb ( e -> src ) , reg ) ) new_info . set_dirty ( true ) ; }" GCC,riscv,242,"Predict the next statement of this code snippet: if ( prop . has_avl_reg ( ) && ! vlmax_avl_p ( prop . get_avl ( ) ) ) { hash_set < set_info * > sets = get_all_sets ( prop . get_avl_source ( ) , true , true , true ) ; set_info * set = get_same_bb_set ( sets , e -> src ) ; if ( set ) block_info . reaching_out . set_avl_info ( avl_info ( prop . get_avl ( ) , set ) ) ; } block_info . local_dem = block_info . reaching_out ; block_info . probability = curr_block_info . probability ; changed_p = true ; } else if ( block_info . reaching_out . dirty_p ( ) ) { vector_insn_info new_info ; if ( block_info . reaching_out . compatible_p ( prop ) ) { if ( block_info . reaching_out . available_p ( prop ) ) continue ; new_info = block_info . reaching_out . merge ( prop , GLOBAL_MERGE ) ; new_info . set_dirty ( block_info . reaching_out . dirty_with_killed_avl_p ( ) ) ; block_info . probability += curr_block_info . probability ; } else { if ( curr_block_info . probability > block_info . probability ) { enum fusion_type type = get_backward_fusion_type ( crtl -> ssa -> bb ( e -> src ) , prop ) ; if ( type == INVALID_FUSION ) continue ; new_info = prop ; new_info . set_dirty ( type ) ; block_info . probability = curr_block_info . probability ; } else continue ; } if ( propagate_avl_across_demands_p ( prop , block_info . reaching_out ) ) { rtx reg = new_info . get_avl_reg_rtx ( ) ; if ( find_reg_killed_by ( crtl -> ssa -> bb ( e -> src ) , reg ) ) new_info . set_dirty ( true ) ; } block_info . local_dem = new_info ; block_info . reaching_out = new_info ; changed_p = true ; } else { gcc_assert ( block_info . reaching_out . valid_p ( ) ) ;" GCC,riscv,243,"Predict the next statement of this code snippet: else { if ( support_relaxed_compatible_p ( block_info . reaching_out , block_info . local_dem ) ) return true ; return false ; } } else { gcc_assert ( block_info . reaching_out . unknown_p ( ) ) ; return false ;" GCC,riscv,244,"Predict the next statement of this code snippet: static bool before_p ( const insn_info * insn1 , const insn_info * insn2 ) { return insn1 -> compare_with ( insn2 ) < ;" GCC,riscv,245,"Predict the next statement of this code snippet: static vlmul_type calculate_vlmul ( unsigned int sew , unsigned int ratio ) { for ( const vlmul_type vlmul : ALL_LMUL ) if ( calculate_ratio ( sew , vlmul ) == ratio ) return vlmul ; return LMUL_RESERVED ;" GCC,riscv,246,"Predict the next statement of this code snippet: static vlmul_type calculate_vlmul ( unsigned int sew , unsigned int ratio ) {" GCC,riscv,247,"Predict the next statement of this code snippet: if ( ! m_vector_manager -> all_same_ratio_p ( m_vector_manager -> vector_avin [ cfg_bb -> index ] ) ) return false ; if ( ! m_vector_manager -> all_same_avl_p ( cfg_bb , m_vector_manager -> vector_avin [ cfg_bb -> index ] ) ) return false ; size_t expr_id = bitmap_first_set_bit ( m_vector_manager -> vector_avin [ cfg_bb -> index ] ) ; if ( ! m_vector_manager -> vector_exprs [ expr_id ] -> same_vlmax_p ( info ) ) return false ; if ( ! m_vector_manager -> vector_exprs [ expr_id ] -> compatible_avl_p ( info ) ) return false ; edge e ; edge_iterator ei ; bool all_valid_p = true ; FOR_EACH_EDGE ( e , ei , cfg_bb -> preds ) { if ( bitmap_empty_p ( m_vector_manager -> vector_avout [ e -> src -> index ] ) ) { all_valid_p = false ; break ; }" GCC,riscv,248,"Predict the next statement of this code snippet: bool pass_vsetvl :: can_refine_vsetvl_p ( const basic_block cfg_bb , const vector_insn_info & info ) const { if ( ! m_vector_manager -> all_same_ratio_p ( m_vector_manager -> vector_avin [ cfg_bb -> index ] ) ) return false ; if ( ! m_vector_manager -> all_same_avl_p ( cfg_bb , m_vector_manager -> vector_avin [ cfg_bb -> index ] ) ) return false ; size_t expr_id = bitmap_first_set_bit ( m_vector_manager -> vector_avin [ cfg_bb -> index ] ) ; if ( ! m_vector_manager -> vector_exprs [ expr_id ] -> same_vlmax_p ( info ) ) return false ; if ( ! m_vector_manager -> vector_exprs [ expr_id ] -> compatible_avl_p ( info ) ) return false ; edge e ; edge_iterator ei ; bool all_valid_p = true ;" GCC,riscv,249,"Predict the next statement of this code snippet: } insn_change_watermark watermark ; validate_change ( rinsn , & PATTERN ( rinsn ) , new_pat , true ) ; if ( ! recog ( attempt , change ) || ! change_is_worthwhile ( change , false ) ) return false ; remove_reg_equal_equiv_notes ( rinsn ) ; confirm_change_group ( ) ;" GCC,riscv,250,"Predict the next statement of this code snippet: rtx_insn * rinsn ; if ( vector_config_insn_p ( insn -> rtl ( ) ) ) { rinsn = insn -> rtl ( ) ; gcc_assert ( vsetvl_insn_p ( rinsn ) && ) ; } else { gcc_assert ( has_vtype_op ( insn -> rtl ( ) ) ) ;" GCC,riscv,251,"Predict the next statement of this code snippet: const auto & prop = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . reaching_out ; if ( ! prop . valid_or_dirty_p ( ) ) continue ; if ( hard_empty_block_p ( bb , prop ) ) { m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . local_dem = vector_insn_info :: get_hard_empty ( ) ; m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . reaching_out = vector_insn_info :: get_hard_empty ( ) ; changed_p = true ; continue ; } } return changed_p ;" GCC,riscv,252,"Predict the next statement of this code snippet: continue ; } if ( ! has_vl_op ( rinsn ) || ! REG_P ( get_vl ( rinsn ) ) ) continue ; rtx avl = get_vl ( rinsn ) ; if ( count_occurrences ( PATTERN ( rinsn ) , avl , ) == ) { auto attempt = crtl -> ssa -> new_change_attempt ( ) ; insn_change change ( insn ) ; access_array_builder uses_builder ( attempt ) ; uses_builder . reserve ( insn -> num_uses ( ) - ) ; for ( use_info * use : insn -> uses ( ) ) if ( use != find_access ( insn -> uses ( ) , REGNO ( avl ) ) ) uses_builder . quick_push ( use ) ; use_array new_uses = use_array ( uses_builder . finish ( ) ) ; change . new_uses = new_uses ; change . move_range = insn -> ebb ( ) -> insn_range ( ) ;" GCC,riscv,253,"Predict the next statement of this code snippet: void pass_vsetvl :: cleanup_insns ( void ) const { for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) { for ( insn_info * insn : bb -> real_nondebug_insns ( ) ) { rtx_insn * rinsn = insn -> rtl ( ) ; if ( vlmax_avl_insn_p ( rinsn ) ) { eliminate_insn ( rinsn ) ; continue ; } if ( ! has_vl_op ( rinsn ) || ! REG_P ( get_vl ( rinsn ) ) ) continue ; rtx avl = get_vl ( rinsn ) ; if ( count_occurrences ( PATTERN ( rinsn ) , avl , ) == ) { auto attempt = crtl -> ssa -> new_change_attempt ( ) ; insn_change change ( insn ) ; access_array_builder uses_builder ( attempt ) ; uses_builder . reserve ( insn -> num_uses ( ) - ) ; for ( use_info * use : insn -> uses ( ) ) if ( use != find_access ( insn -> uses ( ) , REGNO ( avl ) ) ) uses_builder . quick_push ( use ) ; use_array new_uses = use_array ( uses_builder . finish ( ) ) ; change . new_uses = new_uses ; change . move_range = insn -> ebb ( ) -> insn_range ( ) ;" GCC,riscv,254,"Predict the next statement of this code snippet: basic_block cfg_bb ; FOR_EACH_BB_FN ( cfg_bb , cfun ) { auto & info = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . reaching_out ; gcc_assert ( m_vector_manager -> expr_set_num ( m_vector_manager -> vector_del [ cfg_bb -> index ] ) <= ) ; for ( size_t i = ; i < m_vector_manager -> vector_exprs . length ( ) ; i ++ ) { if ( bitmap_bit_p ( m_vector_manager -> vector_del [ cfg_bb -> index ] , i ) ) { if ( info . dirty_p ( ) ) info . set_unknown ( ) ; else { const auto dem = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . local_dem ; gcc_assert ( dem == * m_vector_manager -> vector_exprs [ i ] ) ; insn_info * insn = dem . get_insn ( ) ; gcc_assert ( insn && insn -> rtl ( ) ) ; rtx_insn * rinsn ; if ( vector_config_insn_p ( insn -> rtl ( ) ) ) { m_vector_manager -> to_delete_vsetvls . add ( insn -> rtl ( ) ) ; continue ; } gcc_assert ( has_vtype_op ( insn -> rtl ( ) ) ) ; rinsn = PREV_INSN ( insn -> rtl ( ) ) ; gcc_assert ( vector_config_insn_p ( PREV_INSN ( insn -> rtl ( ) ) ) ) ; eliminate_insn ( rinsn ) ; } } }" GCC,riscv,255,"Predict the next statement of this code snippet: gcc_assert ( dem == * m_vector_manager -> vector_exprs [ i ] ) ; insn_info * insn = dem . get_insn ( ) ; gcc_assert ( insn && insn -> rtl ( ) ) ; rtx_insn * rinsn ; if ( vector_config_insn_p ( insn -> rtl ( ) ) ) { m_vector_manager -> to_delete_vsetvls . add ( insn -> rtl ( ) ) ; continue ; } gcc_assert ( has_vtype_op ( insn -> rtl ( ) ) ) ; rinsn = PREV_INSN ( insn -> rtl ( ) ) ; gcc_assert ( vector_config_insn_p ( PREV_INSN ( insn -> rtl ( ) ) ) ) ; eliminate_insn ( rinsn ) ; } }" GCC,riscv,256,"Predict the next statement of this code snippet: } } for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) { basic_block cfg_bb = bb -> cfg_bb ( ) ; const auto reaching_out = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . reaching_out ; if ( ! reaching_out . dirty_p ( ) ) continue ; if ( reaching_out . dirty_with_killed_avl_p ( ) ) { if ( ! has_vsetvl_killed_avl_p ( bb , reaching_out ) ) continue ; unsigned int bb_index ; sbitmap_iterator sbi ; sbitmap avin = m_vector_manager -> vector_avin [ cfg_bb -> index ] ; bool available_p = false ; EXECUTE_IF_SET_IN_BITMAP ( avin , , bb_index , sbi ) { if ( m_vector_manager -> vector_exprs [ bb_index ] -> available_p ( reaching_out ) ) { available_p = true ; break ; } } if ( available_p ) continue ; } rtx new_pat ; if ( ! reaching_out . demand_p ( DEMAND_AVL ) ) { vl_vtype_info new_info = reaching_out ; new_info . set_avl_info ( avl_info ( const0_rtx , nullptr ) ) ; new_pat = gen_vsetvl_pat ( VSETVL_DISCARD_RESULT , new_info , NULL_RTX ) ; } else if ( can_refine_vsetvl_p ( cfg_bb , reaching_out ) ) new_pat = gen_vsetvl_pat ( VSETVL_VTYPE_CHANGE_ONLY , reaching_out , NULL_RTX ) ; else if ( vlmax_avl_p ( reaching_out . get_avl ( ) ) ) new_pat = gen_vsetvl_pat ( VSETVL_NORMAL , reaching_out , reaching_out . get_avl_reg_rtx ( ) ) ; else new_pat = gen_vsetvl_pat ( VSETVL_DISCARD_RESULT , reaching_out , NULL_RTX ) ; start_sequence ( ) ; emit_insn ( new_pat ) ; rtx_insn * rinsn = get_insns ( ) ; end_sequence ( ) ; insert_insn_end_basic_block ( rinsn , cfg_bb ) ; if ( dump_file ) { fprintf ( dump_file , , INSN_UID ( rinsn ) , cfg_bb -> index ) ; print_rtl_single ( dump_file , rinsn ) ; } } return need_commit ;" GCC,riscv,257,"Predict the next statement of this code snippet: if ( vlmul2 == LMUL_1 || vlmul2 == LMUL_2 || vlmul2 == LMUL_4 || vlmul2 == LMUL_8 ) return ; else return - ; case LMUL_F4 : if ( vlmul2 == LMUL_F2 || vlmul2 == LMUL_1 || vlmul2 == LMUL_2 || vlmul2 == LMUL_4 || vlmul2 == LMUL_8 ) return ; else return - ; case LMUL_F8 : return ;" GCC,riscv,258,"Predict the next statement of this code snippet: gcc_assert ( valid_or_dirty_p ( ) && ) ; gcc_assert ( ! unknown_p ( ) && ) ; gcc_assert ( demand_p ( DEMAND_AVL ) && ) ; if ( ! demand_p ( DEMAND_AVL ) ) return true ;" GCC,riscv,259,"Predict the next statement of this code snippet: if ( ! demand_p ( DEMAND_AVL ) ) return true ; if ( demand_p ( DEMAND_NONZERO_AVL ) && other . has_non_zero_avl ( ) ) return true ;" GCC,riscv,260,"Predict the next statement of this code snippet: bool vector_insn_info :: compatible_p ( const vl_vtype_info & curr_info ) const { gcc_assert ( ! uninit_p ( ) && ) ; if ( empty_p ( ) ) return false ; if ( unknown_p ( ) ) return false ; if ( ! demand_p ( DEMAND_AVL ) ) if ( m_sew == curr_info . get_sew ( ) ) return true ; return compatible_avl_p ( curr_info ) && compatible_vtype_p ( curr_info ) ;" GCC,riscv,261,"Predict the next statement of this code snippet: if ( ! demand_p ( DEMAND_AVL ) ) if ( m_sew == curr_info . get_sew ( ) ) return true ; return compatible_avl_p ( curr_info ) && compatible_vtype_p ( curr_info ) ;" GCC,riscv,262,"Predict the next statement of this code snippet: if ( demand_p ( DEMAND_LMUL ) && m_vlmul != other . get_vlmul ( ) ) return false ; if ( demand_p ( DEMAND_RATIO ) && m_ratio != other . get_ratio ( ) ) return false ; if ( demand_p ( DEMAND_TAIL_POLICY ) && m_ta != other . get_ta ( ) ) return false ; if ( demand_p ( DEMAND_MASK_POLICY ) && m_ma != other . get_ma ( ) ) return false ; return true ;" GCC,riscv,263,"Predict the next statement of this code snippet: auto & info = m_vector_manager -> vector_insn_infos [ insn -> uid ( ) ] ; if ( info . uninit_p ( ) ) info = change ; else if ( info . unknown_p ( ) ) change = info ; else { gcc_assert ( info . valid_p ( ) && ) ; if ( change . valid_p ( ) ) { if ( ! ( propagate_avl_across_demands_p ( change , info ) && ! reg_available_p ( insn , change ) ) && change . compatible_p ( info ) ) { info = change . merge ( info ) ; if ( vsetvl_insn_p ( insn -> rtl ( ) ) ) change_vsetvl_insn ( insn , info ) ;" GCC,riscv,264,"Predict the next statement of this code snippet: if ( ! optimize ) return ; edge e ; edge_iterator ei ; for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) { basic_block cfg_bb = bb -> cfg_bb ( ) ; auto & curr_prob = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . probability ; if ( ENTRY_BLOCK_PTR_FOR_FN ( cfun ) == cfg_bb ) curr_prob = profile_probability :: always ( ) ; if ( EXIT_BLOCK_PTR_FOR_FN ( cfun ) == cfg_bb ) continue ; gcc_assert ( curr_prob . initialized_p ( ) ) ; FOR_EACH_EDGE ( e , ei , cfg_bb -> succs ) { auto & new_prob = m_vector_manager -> vector_block_infos [ e -> dest -> index ] . probability ;" GCC,riscv,265,"Predict the next statement of this code snippet: if ( ! optimize ) return ; edge e ; edge_iterator ei ; for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) { basic_block cfg_bb = bb -> cfg_bb ( ) ; auto & curr_prob = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . probability ;" GCC,riscv,266,"Predict the next statement of this code snippet: vector_antic = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_transp = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_comp = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_avin = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_avout = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_kill = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; bitmap_vector_ones ( vector_transp , last_basic_block_for_fn ( cfun ) ) ;" GCC,riscv,267,"Predict the next statement of this code snippet: void vector_infos_manager :: create_bitmap_vectors ( void ) { vector_antic = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_transp = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_comp = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_avin = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_avout = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; vector_kill = sbitmap_vector_alloc ( last_basic_block_for_fn ( cfun ) , vector_exprs . length ( ) ) ; bitmap_vector_ones ( vector_transp , last_basic_block_for_fn ( cfun ) ) ;" GCC,riscv,268,"Predict the next statement of this code snippet: void vector_infos_manager :: create_expr ( vector_insn_info & info ) {" GCC,riscv,269,"Predict the next statement of this code snippet: info -> dump ( stderr ) ;" GCC,riscv,270,"Predict the next statement of this code snippet: DEBUG_FUNCTION void debug ( const vector_infos_manager * info ) {" GCC,riscv,271,"Predict the next statement of this code snippet: m_demands [ type ] = true ;" GCC,riscv,272,"Predict the next statement of this code snippet: } if ( dump_file ) { fprintf ( dump_file , ) ; for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) if ( m_vector_manager -> vector_block_infos [ bb -> index ( ) ] . reaching_out . dirty_p ( ) ) fprintf ( dump_file , , bb -> index ( ) ) ; fprintf ( dump_file , ) ; }" GCC,riscv,273,"Predict the next statement of this code snippet: bool demand_p ( enum demand_type type ) const {" GCC,riscv,274,"Predict the next statement of this code snippet: return info1 . get_vlmul ( ) != info2 . get_vlmul ( ) ;" GCC,riscv,275,"Predict the next statement of this code snippet: return info1 . get_ma ( ) != info2 . get_ma ( ) ;" GCC,riscv,276,"Predict the next statement of this code snippet: static bool different_ratio_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) {" GCC,riscv,277,"Predict the next statement of this code snippet: return info1 . get_sew ( ) != info2 . get_sew ( ) ;" GCC,riscv,278,"Predict the next statement of this code snippet: static bool different_tail_policy_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) { return info1 . get_ta ( ) != info2 . get_ta ( ) ;" GCC,riscv,279,"Predict the next statement of this code snippet: return m_state == DIRTY || m_state == DIRTY_WITH_KILLED_AVL ;" GCC,riscv,280,"Predict the next statement of this code snippet: return m_state == DIRTY || m_state == DIRTY_WITH_KILLED_AVL ;" GCC,riscv,281,"Predict the next statement of this code snippet: delete crtl -> ssa ; crtl -> ssa = nullptr ; } m_vector_manager -> release ( ) ; delete m_vector_manager ; m_vector_manager = nullptr ;" GCC,riscv,282,"Predict the next statement of this code snippet: return ( ( pair . match_cond_p ( info1 . get_demands ( ) , info2 . get_demands ( ) ) && incompatible_p ( info1 , info2 ) ) || ( pair . match_cond_p ( info2 . get_demands ( ) , info1 . get_demands ( ) ) && incompatible_p ( info2 , info1 ) ) ) ;" GCC,riscv,283,"Predict the next statement of this code snippet: bool dual_incompatible_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) const { return ( ( pair . match_cond_p ( info1 . get_demands ( ) , info2 . get_demands ( ) ) && incompatible_p ( info1 , info2 ) ) || ( pair . match_cond_p ( info2 . get_demands ( ) , info1 . get_demands ( ) ) && incompatible_p ( info2 , info1 ) ) ) ;" GCC,riscv,284,"Predict the next statement of this code snippet: if ( vector_kill == nullptr ) fprintf ( file , ) ; else dump_bitmap_file ( file , vector_kill [ cfg_bb -> index ] ) ; } fprintf ( file , ) ; FOR_ALL_BB_FN ( cfg_bb , cfun ) { fprintf ( file , , cfg_bb -> index ) ; fprintf ( file , ) ; if ( vector_avin == nullptr ) fprintf ( file , ) ; else dump_bitmap_file ( file , vector_avin [ cfg_bb -> index ] ) ; fprintf ( file , ) ; if ( vector_avout == nullptr ) fprintf ( file , ) ; else dump_bitmap_file ( file , vector_avout [ cfg_bb -> index ] ) ; fprintf ( file , ) ; if ( vector_del == nullptr ) fprintf ( file , ) ; else dump_bitmap_file ( file , vector_del [ cfg_bb -> index ] ) ; } fprintf ( file , ) ;" GCC,riscv,285,"Predict the next statement of this code snippet: fprintf ( dump_file , , INSN_UID ( rinsn ) ) ; print_rtl_single ( dump_file , rinsn ) ; }" GCC,riscv,286,"Predict the next statement of this code snippet: auto & block_info = m_vector_manager -> vector_block_infos [ bb -> index ( ) ] ; if ( block_info . local_dem . empty_p ( ) ) return ; vector_insn_info curr_info ; for ( insn_info * insn : bb -> real_nondebug_insns ( ) ) { const vector_insn_info prev_info = curr_info ; enum vsetvl_type type = NUM_VSETVL_TYPE ; transfer_before ( curr_info , insn ) ; if ( has_vtype_op ( insn -> rtl ( ) ) ) { if ( static_cast < const vl_vtype_info & > ( prev_info ) != static_cast < const vl_vtype_info & > ( curr_info ) ) { const auto require = m_vector_manager -> vector_insn_infos [ insn -> uid ( ) ] ; if ( ! require . compatible_p ( static_cast < const vl_vtype_info & > ( prev_info ) ) ) type = insert_vsetvl ( EMIT_BEFORE , insn -> rtl ( ) , require , prev_info ) ; } } if ( type == VSETVL_VTYPE_CHANGE_ONLY ) { curr_info . set_avl_info ( prev_info . get_avl_info ( ) ) ;" GCC,riscv,287,"Predict the next statement of this code snippet: if ( emit_type == EMIT_DIRECT ) emit_insn ( pat ) ; else if ( emit_type == EMIT_BEFORE ) emit_insn_before ( pat , rinsn ) ; else emit_insn_after ( pat , rinsn ) ;" GCC,riscv,288,"Predict the next statement of this code snippet: fprintf ( dump_file , ) ; print_rtl_single ( dump_file , pat ) ; } if ( emit_type == EMIT_DIRECT ) emit_insn ( pat ) ; else if ( emit_type == EMIT_BEFORE ) emit_insn_before ( pat , rinsn ) ; else emit_insn_after ( pat , rinsn ) ;" GCC,riscv,289,"Predict the next statement of this code snippet: bool empty_p ( ) const { return m_state == EMPTY || m_state == HARD_EMPTY ;" GCC,riscv,290,"Predict the next statement of this code snippet: if ( ! has_vector_insn ( cfun ) ) return ; init ( ) ; if ( ! optimize ) simple_vsetvl ( ) ; else lazy_vsetvl ( ) ; done ( ) ;" GCC,riscv,291,"Predict the next statement of this code snippet: size_t count = ;" GCC,riscv,292,"Predict the next statement of this code snippet: if ( ! set -> insn ( ) -> is_phi ( ) ) return nullptr ; hash_set < set_info * > sets = get_all_sets ( set , true , false , true ) ; insn_info * first_insn = ( * sets . begin ( ) ) -> insn ( ) ;" GCC,riscv,293,"Predict the next statement of this code snippet: for ( insn_info * insn : bb -> reverse_real_nondebug_insns ( ) ) if ( find_access ( insn -> defs ( ) , REGNO ( x ) ) ) return insn ; return nullptr ;" GCC,riscv,294,"Predict the next statement of this code snippet: static insn_info * find_reg_killed_by ( const bb_info * bb , rtx x ) { if ( ! x || vlmax_avl_p ( x ) || ! REG_P ( x ) ) return nullptr ; for ( insn_info * insn : bb -> reverse_real_nondebug_insns ( ) ) if ( find_access ( insn -> defs ( ) , REGNO ( x ) ) ) return insn ;" GCC,riscv,295,"Predict the next statement of this code snippet: static unsigned first_ratio ( const vector_insn_info & info1 , const vector_insn_info & ) { return info1 . get_ratio ( ) ;" GCC,riscv,296,"Predict the next statement of this code snippet: return info1 . get_vlmul ( ) ;" GCC,riscv,297,"Predict the next statement of this code snippet: edge_iterator ei ; FOR_EACH_EDGE ( e , ei , cfg_bb -> succs ) { auto & local_dem = m_vector_manager -> vector_block_infos [ e -> dest -> index ] . local_dem ; auto & reaching_out = m_vector_manager -> vector_block_infos [ e -> dest -> index ] . reaching_out ; if ( e -> dest -> index == cfg_bb -> index ) continue ; if ( e -> flags & EDGE_COMPLEX ) continue ; if ( e -> dest -> index == EXIT_BLOCK_PTR_FOR_FN ( cfun ) -> index ) continue ; if ( ! local_dem . valid_or_dirty_p ( ) ) continue ; if ( local_dem . available_p ( prop ) ) continue ; if ( ! local_dem . compatible_p ( prop ) ) continue ; if ( propagate_avl_across_demands_p ( prop , local_dem ) ) continue ; vector_insn_info new_info = local_dem . merge ( prop , GLOBAL_MERGE ) ; new_info . set_insn ( local_dem . get_insn ( ) ) ;" GCC,riscv,298,"Predict the next statement of this code snippet: const auto info = m_vector_manager -> vector_insn_infos [ INSN_UID ( rinsn ) ] ;" GCC,riscv,299,"Predict the next statement of this code snippet: if ( info . dirty_p ( ) ) info . set_unknown ( ) ; else { const auto dem = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . local_dem ; gcc_assert ( dem == * m_vector_manager -> vector_exprs [ i ] ) ; insn_info * insn = dem . get_insn ( ) ; gcc_assert ( insn && insn -> rtl ( ) ) ; rtx_insn * rinsn ; if ( vector_config_insn_p ( insn -> rtl ( ) ) ) { m_vector_manager -> to_delete_vsetvls . add ( insn -> rtl ( ) ) ; continue ; } gcc_assert ( has_vtype_op ( insn -> rtl ( ) ) ) ; rinsn = PREV_INSN ( insn -> rtl ( ) ) ;" GCC,riscv,300,"Predict the next statement of this code snippet: FOR_EACH_BB_FN ( cfg_bb , cfun ) { auto & info = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . reaching_out ; gcc_assert ( m_vector_manager -> expr_set_num ( m_vector_manager -> vector_del [ cfg_bb -> index ] ) <= ) ; for ( size_t i = ; i < m_vector_manager -> vector_exprs . length ( ) ; i ++ ) { if ( bitmap_bit_p ( m_vector_manager -> vector_del [ cfg_bb -> index ] , i ) ) { if ( info . dirty_p ( ) ) info . set_unknown ( ) ; else { const auto dem = m_vector_manager -> vector_block_infos [ cfg_bb -> index ] . local_dem ; gcc_assert ( dem == * m_vector_manager -> vector_exprs [ i ] ) ; insn_info * insn = dem . get_insn ( ) ; gcc_assert ( insn && insn -> rtl ( ) ) ;" GCC,riscv,301,"Predict the next statement of this code snippet: if ( vector_kill ) sbitmap_vector_free ( vector_kill ) ; if ( vector_antic ) sbitmap_vector_free ( vector_antic ) ; if ( vector_transp ) sbitmap_vector_free ( vector_transp ) ; if ( vector_comp ) sbitmap_vector_free ( vector_comp ) ; if ( vector_avin ) sbitmap_vector_free ( vector_avin ) ; if ( vector_avout ) sbitmap_vector_free ( vector_avout ) ; vector_edge_list = nullptr ;" GCC,riscv,302,"Predict the next statement of this code snippet: if ( info1 . demand_p ( DEMAND_AVL ) ) { if ( info1 . demand_p ( DEMAND_NONZERO_AVL ) ) { if ( info2 . demand_p ( DEMAND_AVL ) && ! info2 . demand_p ( DEMAND_NONZERO_AVL ) ) { set_avl_info ( info2 . get_avl_info ( ) ) ; set_demand ( DEMAND_AVL , true ) ; set_demand ( DEMAND_NONZERO_AVL , false ) ;" GCC,riscv,303,"Predict the next statement of this code snippet: if ( info2 . demand_p ( DEMAND_AVL ) && ! info2 . demand_p ( DEMAND_NONZERO_AVL ) ) { set_avl_info ( info2 . get_avl_info ( ) ) ; set_demand ( DEMAND_AVL , true ) ; set_demand ( DEMAND_NONZERO_AVL , false ) ; return ; } } set_avl_info ( info1 . get_avl_info ( ) ) ; set_demand ( DEMAND_NONZERO_AVL , info1 . demand_p ( DEMAND_NONZERO_AVL ) ) ; }" GCC,riscv,304,"Predict the next statement of this code snippet: else if ( info2 . demand_p ( DEMAND_MASK_POLICY ) ) { set_ma ( info2 . get_ma ( ) ) ; demand ( DEMAND_MASK_POLICY ) ; }" GCC,riscv,305,"Predict the next statement of this code snippet: if ( rule . pair . match_cond_p ( info2 . get_demands ( ) , info1 . get_demands ( ) ) ) { set_demand ( DEMAND_SEW , rule . demand_sew_p ) ; set_demand ( DEMAND_LMUL , rule . demand_lmul_p ) ; set_demand ( DEMAND_RATIO , rule . demand_ratio_p ) ; set_demand ( DEMAND_GE_SEW , rule . demand_ge_sew_p ) ; set_sew ( rule . new_sew ( info2 , info1 ) ) ; set_vlmul ( rule . new_vlmul ( info2 , info1 ) ) ; set_ratio ( rule . new_ratio ( info2 , info1 ) ) ; return ; } } gcc_unreachable ( ) ;" GCC,riscv,306,"Predict the next statement of this code snippet: if ( info1 . demand_p ( DEMAND_TAIL_POLICY ) ) { set_ta ( info1 . get_ta ( ) ) ; demand ( DEMAND_TAIL_POLICY ) ; } else if ( info2 . demand_p ( DEMAND_TAIL_POLICY ) ) {" GCC,riscv,307,"Predict the next statement of this code snippet: virtual bool gate ( function * ) final override { return TARGET_VECTOR ;" GCC,riscv,308,"Predict the next statement of this code snippet: rtx new_pat ; vl_vtype_info new_info = info ; if ( info . get_insn ( ) && info . get_insn ( ) -> rtl ( ) && fault_first_load_p ( info . get_insn ( ) -> rtl ( ) ) ) new_info . set_avl_info ( avl_info ( get_avl ( info . get_insn ( ) -> rtl ( ) ) , nullptr ) ) ; if ( vsetvl_insn_p ( rinsn ) || vlmax_avl_p ( info . get_avl ( ) ) ) { rtx dest = get_vl ( rinsn ) ; new_pat = gen_vsetvl_pat ( VSETVL_NORMAL , new_info , dest ) ; } else if ( INSN_CODE ( rinsn ) == CODE_FOR_vsetvl_vtype_change_only ) new_pat = gen_vsetvl_pat ( VSETVL_VTYPE_CHANGE_ONLY , new_info , NULL_RTX ) ; else new_pat = gen_vsetvl_pat ( VSETVL_DISCARD_RESULT , new_info , NULL_RTX ) ; return new_pat ;" GCC,riscv,309,"Predict the next statement of this code snippet: if ( vsetvl_insn_p ( rinsn ) || vlmax_avl_p ( info . get_avl ( ) ) ) { rtx dest = get_vl ( rinsn ) ; new_pat = gen_vsetvl_pat ( VSETVL_NORMAL , new_info , dest ) ; } else if ( INSN_CODE ( rinsn ) == CODE_FOR_vsetvl_vtype_change_only ) new_pat = gen_vsetvl_pat ( VSETVL_VTYPE_CHANGE_ONLY , new_info , NULL_RTX ) ;" GCC,riscv,310,"Predict the next statement of this code snippet: auto_vec < size_t > available_list ;" GCC,riscv,311,"Predict the next statement of this code snippet: auto_vec < size_t > available_list ;" GCC,riscv,312,"Predict the next statement of this code snippet: while ( ! work_list . is_empty ( ) ) { basic_block new_cfg_bb = work_list . pop ( ) ; visited_list . add ( new_cfg_bb ) ; edge e ; edge_iterator ei ; FOR_EACH_EDGE ( e , ei , new_cfg_bb -> preds ) { if ( ! visited_list . contains ( e -> src ) ) work_list . safe_push ( e -> src ) ; blocks . add ( e -> src ) ;" GCC,riscv,313,"Predict the next statement of this code snippet: auto_vec < basic_block > work_list ; hash_set < basic_block > visited_list ; work_list . safe_push ( cfg_bb ) ; while ( ! work_list . is_empty ( ) ) {" GCC,riscv,314,"Predict the next statement of this code snippet: static hash_set < set_info * > get_all_sets ( set_info * set , bool real_p , bool phi_p , bool param_p ) {" GCC,riscv,315,"Predict the next statement of this code snippet: return m_avl . get_value ( ) ;" GCC,riscv,316,"Predict the next statement of this code snippet: const avl_info & get_avl_info ( ) const {" GCC,riscv,317,"Predict the next statement of this code snippet: return gen_rtx_REG ( Pmode , get_avl_source ( ) -> regno ( ) ) ;" GCC,riscv,318,"Predict the next statement of this code snippet: return m_avl . get_source ( ) ;" GCC,riscv,319,"Predict the next statement of this code snippet: static const insn_info * get_backward_fault_first_load_insn ( const insn_info * insn ) { const bb_info * bb = insn -> bb ( ) ; for ( const insn_info * i = insn -> prev_nondebug_insn ( ) ; real_insn_and_same_bb_p ( i , bb ) ; i = i -> prev_nondebug_insn ( ) ) {" GCC,riscv,320,"Predict the next statement of this code snippet: if ( ! prop . demand_p ( DEMAND_AVL ) ) return VALID_AVL_FUSION ; else { if ( prop . has_avl_imm ( ) ) return VALID_AVL_FUSION ; else { gcc_assert ( prop . has_avl_reg ( ) ) ; if ( vlmax_avl_p ( prop . get_avl ( ) ) ) reg = prop . get_avl_reg_rtx ( ) ; else reg = prop . get_avl ( ) ; } } gcc_assert ( reg ) ; if ( ! prop . get_avl_source ( ) -> insn ( ) -> is_phi ( ) && prop . get_avl_source ( ) -> insn ( ) -> bb ( ) == insn -> bb ( ) ) return INVALID_FUSION ; hash_set < set_info * > sets = get_all_sets ( prop . get_avl_source ( ) , true , true , true ) ; if ( any_set_in_bb_p ( sets , insn -> bb ( ) ) ) return INVALID_FUSION ; if ( vlmax_avl_p ( prop . get_avl ( ) ) ) { if ( find_reg_killed_by ( bb , reg ) ) return INVALID_FUSION ; else return VALID_AVL_FUSION ;" GCC,riscv,321,"Predict the next statement of this code snippet: return ( bool ) ( get_prefer_mask_policy ( ) & || ( get_prefer_mask_policy ( ) >> & ) ) ;" GCC,riscv,322,"Predict the next statement of this code snippet: static bool get_default_ta ( ) {" GCC,riscv,323,"Predict the next statement of this code snippet: return m_demands ;" GCC,riscv,324,"Predict the next statement of this code snippet: const bool * get_demands ( void ) const { return m_demands ;" GCC,riscv,325,"Predict the next statement of this code snippet: size_t vector_infos_manager :: get_expr_id ( const vector_insn_info & info ) const { for ( size_t i = ; i < vector_exprs . length ( ) ; i ++ ) if ( * vector_exprs [ i ] == info ) return i ;" GCC,riscv,326,"Predict the next statement of this code snippet: for ( const insn_info * i = insn -> next_nondebug_insn ( ) ; real_insn_and_same_bb_p ( i , bb ) ; i = i -> next_nondebug_insn ( ) ) { if ( find_access ( i -> defs ( ) , VL_REGNUM ) ) return nullptr ;" GCC,riscv,327,"Predict the next statement of this code snippet: const bb_info * bb = insn -> bb ( ) ; for ( const insn_info * i = insn -> next_nondebug_insn ( ) ; real_insn_and_same_bb_p ( i , bb ) ; i = i -> next_nondebug_insn ( ) ) { if ( find_access ( i -> defs ( ) , VL_REGNUM ) ) return nullptr ; if ( read_vl_insn_p ( i -> rtl ( ) ) ) return i ;" GCC,riscv,328,"Predict the next statement of this code snippet: static vector_insn_info get_hard_empty ( ) {" GCC,riscv,329,"Predict the next statement of this code snippet: static vector_insn_info get_hard_empty ( ) {" GCC,riscv,330,"Predict the next statement of this code snippet: return m_insn ;" GCC,riscv,331,"Predict the next statement of this code snippet: rtl_ssa :: insn_info * get_insn ( ) const { return m_insn ;" GCC,riscv,332,"Predict the next statement of this code snippet: bool get_ma ( ) const {" GCC,riscv,333,"Predict the next statement of this code snippet: return m_ratio ;" GCC,riscv,334,"Predict the next statement of this code snippet: uint8_t get_ratio ( ) const {" GCC,riscv,335,"Predict the next statement of this code snippet: for ( set_info * set : sets ) if ( set -> bb ( ) -> cfg_bb ( ) == cfg_bb ) return set ; return nullptr ;" GCC,riscv,336,"Predict the next statement of this code snippet: static set_info * get_same_bb_set ( hash_set < set_info * > & sets , const basic_block cfg_bb ) { for ( set_info * set : sets ) if ( set -> bb ( ) -> cfg_bb ( ) == cfg_bb ) return set ; return nullptr ;" GCC,riscv,337,"Predict the next statement of this code snippet: uint8_t get_sew ( ) const { return m_sew ;" GCC,riscv,338,"Predict the next statement of this code snippet: uint8_t get_sew ( ) const { return m_sew ;" GCC,riscv,339,"Predict the next statement of this code snippet: return m_source ;" GCC,riscv,340,"Predict the next statement of this code snippet: bool get_ta ( ) const {" GCC,riscv,341,"Predict the next statement of this code snippet: return m_ta ;" GCC,riscv,342,"Predict the next statement of this code snippet: info . set_unknown ( ) ; return info ;" GCC,riscv,343,"Predict the next statement of this code snippet: rtx get_value ( ) const { return m_value ;" GCC,riscv,344,"Predict the next statement of this code snippet: return recog_data . operand [ get_attr_vl_op_idx ( rinsn ) ] ; }" GCC,riscv,345,"Predict the next statement of this code snippet: return m_vlmul ;" GCC,riscv,346,"Predict the next statement of this code snippet: return m_vlmul ;" GCC,riscv,347,"Predict the next statement of this code snippet: else set = nullptr ; } uint8_t sew = get_sew ( insn -> rtl ( ) ) ; enum vlmul_type vlmul = get_vlmul ( insn -> rtl ( ) ) ; uint8_t ratio = get_attr_ratio ( insn -> rtl ( ) ) ; if ( ratio == INVALID_ATTRIBUTE ) ratio = calculate_ratio ( sew , vlmul ) ; bool ta = tail_agnostic_p ( insn -> rtl ( ) ) ; bool ma = mask_agnostic_p ( insn -> rtl ( ) ) ;" GCC,riscv,348,"Predict the next statement of this code snippet: static bool ge_sew_lmul_unavailable_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) { if ( ! info2 . demand_p ( DEMAND_RATIO ) && info2 . demand_p ( DEMAND_GE_SEW ) ) return info1 . get_sew ( ) < info2 . get_sew ( ) ; return true ;" GCC,riscv,349,"Predict the next statement of this code snippet: if ( ! info2 . demand_p ( DEMAND_LMUL ) && info2 . demand_p ( DEMAND_GE_SEW ) ) return info1 . get_sew ( ) < info2 . get_sew ( ) ; return true ;" GCC,riscv,350,"Predict the next statement of this code snippet: static bool ge_sew_ratio_unavailable_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) { if ( ! info2 . demand_p ( DEMAND_LMUL ) && info2 . demand_p ( DEMAND_GE_SEW ) ) return info1 . get_sew ( ) < info2 . get_sew ( ) ; return true ;" GCC,riscv,351,"Predict the next statement of this code snippet: static bool ge_sew_unavailable_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) { if ( ! info2 . demand_p ( DEMAND_LMUL ) && ! info2 . demand_p ( DEMAND_RATIO ) && info2 . demand_p ( DEMAND_GE_SEW ) ) return info1 . get_sew ( ) < info2 . get_sew ( ) ;" GCC,riscv,352,"Predict the next statement of this code snippet: return std :: max ( info1 . get_sew ( ) , info2 . get_sew ( ) ) ;" GCC,riscv,353,"Predict the next statement of this code snippet: return std :: max ( info1 . get_sew ( ) , info2 . get_sew ( ) ) ;" GCC,riscv,354,"Predict the next statement of this code snippet: bool hard_empty_p ( ) const { return m_state == HARD_EMPTY ;" GCC,riscv,355,"Predict the next statement of this code snippet: return m_avl . has_avl_imm ( ) ;" GCC,riscv,356,"Predict the next statement of this code snippet: bool has_avl_imm ( ) const {" GCC,riscv,357,"Predict the next statement of this code snippet: bool has_avl_no_reg ( ) const {" GCC,riscv,358,"Predict the next statement of this code snippet: return m_avl . has_avl_no_reg ( ) ;" GCC,riscv,359,"Predict the next statement of this code snippet: return m_avl . has_avl_reg ( ) ;" GCC,riscv,360,"Predict the next statement of this code snippet: FOR_ALL_BB_FN ( cfg_bb , fn ) FOR_BB_INSNS ( cfg_bb , rinsn ) if ( NONDEBUG_INSN_P ( rinsn ) && has_vtype_op ( rinsn ) ) return true ; return false ;" GCC,riscv,361,"Predict the next statement of this code snippet: basic_block cfg_bb ; rtx_insn * rinsn ; FOR_ALL_BB_FN ( cfg_bb , fn ) FOR_BB_INSNS ( cfg_bb , rinsn ) if ( NONDEBUG_INSN_P ( rinsn ) && has_vtype_op ( rinsn ) ) return true ;" GCC,riscv,362,"Predict the next statement of this code snippet: return recog_memoized ( rinsn ) >= && get_attr_has_vl_op ( rinsn ) ;" GCC,riscv,363,"Predict the next statement of this code snippet: static bool has_vsetvl_killed_avl_p ( const bb_info * bb , const vector_insn_info & info ) { if ( info . dirty_with_killed_avl_p ( ) ) { rtx avl = info . get_avl ( ) ; if ( vlmax_avl_p ( avl ) ) return find_reg_killed_by ( bb , info . get_avl_reg_rtx ( ) ) != nullptr ; for ( const insn_info * insn : bb -> reverse_real_nondebug_insns ( ) ) {" GCC,riscv,364,"Predict the next statement of this code snippet: set_info * set = safe_dyn_cast < set_info * > ( def ) ; if ( ! set ) return false ; rtx new_avl = gen_rtx_REG ( GET_MODE ( avl ) , REGNO ( avl ) ) ; gcc_assert ( new_avl != avl ) ; if ( ! info . compatible_avl_p ( avl_info ( new_avl , set ) ) ) return false ; return true ; } } } return false ;" GCC,riscv,365,"Predict the next statement of this code snippet: return recog_memoized ( rinsn ) >= && get_attr_has_vtype_op ( rinsn ) ;" GCC,riscv,366,"Predict the next statement of this code snippet: static bool has_vtype_op ( rtx_insn * rinsn ) {" GCC,riscv,367,"Predict the next statement of this code snippet: return get_attr_type ( rinsn ) == TYPE_VIMOVVX || get_attr_type ( rinsn ) == TYPE_VFMOVVF || get_attr_type ( rinsn ) == TYPE_VIMOVXV || get_attr_type ( rinsn ) == TYPE_VFMOVFV ;" GCC,riscv,368,"Predict the next statement of this code snippet: static bool ignore_vlmul_insn_p ( rtx_insn * rinsn ) {" GCC,riscv,369,"Predict the next statement of this code snippet: m_vector_manager = new vector_infos_manager ( ) ; compute_probabilities ( ) ; if ( dump_file ) { fprintf ( dump_file , ) ; m_vector_manager -> dump ( dump_file ) ;" GCC,riscv,370,"Predict the next statement of this code snippet: } else if ( CALL_P ( end_rinsn ) && ( ! single_succ_p ( cfg_bb ) || single_succ_edge ( cfg_bb ) -> flags & EDGE_ABNORMAL ) ) { end_rinsn = find_first_parameter_load ( end_rinsn , BB_HEAD ( cfg_bb ) ) ; while ( LABEL_P ( end_rinsn ) || NOTE_INSN_BASIC_BLOCK_P ( end_rinsn ) ) end_rinsn = NEXT_INSN ( end_rinsn ) ; new_insn = emit_insn_before_noloc ( pat , end_rinsn , cfg_bb ) ; } else new_insn = emit_insn_after_noloc ( pat , end_rinsn , cfg_bb ) ; while ( ) { if ( INSN_P ( pat ) ) add_label_notes ( PATTERN ( pat ) , new_insn ) ; if ( pat == pat_end ) break ; pat = NEXT_INSN ( pat ) ;" GCC,riscv,371,"Predict the next statement of this code snippet: pat_end = pat ; while ( NEXT_INSN ( pat_end ) != NULL_RTX ) pat_end = NEXT_INSN ( pat_end ) ; if ( JUMP_P ( end_rinsn ) || ( NONJUMP_INSN_P ( end_rinsn ) && ( ! single_succ_p ( cfg_bb ) || single_succ_edge ( cfg_bb ) -> flags & EDGE_ABNORMAL ) ) ) { new_insn = emit_insn_before_noloc ( pat , end_rinsn , cfg_bb ) ; } else if ( CALL_P ( end_rinsn ) && ( ! single_succ_p ( cfg_bb ) || single_succ_edge ( cfg_bb ) -> flags & EDGE_ABNORMAL ) ) { end_rinsn = find_first_parameter_load ( end_rinsn , BB_HEAD ( cfg_bb ) ) ; while ( LABEL_P ( end_rinsn ) || NOTE_INSN_BASIC_BLOCK_P ( end_rinsn ) ) end_rinsn = NEXT_INSN ( end_rinsn ) ; new_insn = emit_insn_before_noloc ( pat , end_rinsn , cfg_bb ) ; } else new_insn = emit_insn_after_noloc ( pat , end_rinsn , cfg_bb ) ; while ( ) { if ( INSN_P ( pat ) ) add_label_notes ( PATTERN ( pat ) , new_insn ) ; if ( pat == pat_end ) break ; pat = NEXT_INSN ( pat ) ; }" GCC,riscv,372,"Predict the next statement of this code snippet: if ( insn -> is_real ( ) && ( types & REAL_SET ) ) return true ; if ( insn -> is_phi ( ) && ( types & PHI_SET ) ) return true ;" GCC,riscv,373,"Predict the next statement of this code snippet: static bool insn_should_be_added_p ( const insn_info * insn , unsigned int types ) { if ( insn -> is_real ( ) && ( types & REAL_SET ) ) return true ; if ( insn -> is_phi ( ) && ( types & PHI_SET ) ) return true ; if ( insn -> is_bb_head ( ) && ( types & BB_HEAD_SET ) ) return true ; if ( insn -> is_bb_end ( ) && ( types & BB_END_SET ) ) return true ; return false ;" GCC,riscv,374,"Predict the next statement of this code snippet: for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) compute_local_backward_infos ( bb ) ; if ( dump_file ) m_vector_manager -> dump ( dump_file ) ; if ( dump_file ) fprintf ( dump_file , ) ; for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) emit_local_forward_vsetvls ( bb ) ; if ( dump_file ) m_vector_manager -> dump ( dump_file ) ;" GCC,riscv,375,"Predict the next statement of this code snippet: if ( info1 . get_vlmul ( ) == info2 . get_vlmul ( ) && ! info2 . demand_p ( DEMAND_SEW ) && ! info2 . demand_p ( DEMAND_RATIO ) ) return false ; return true ;" GCC,riscv,376,"Predict the next statement of this code snippet: if ( info1 . get_vlmul ( ) == info2 . get_vlmul ( ) && ! info2 . demand_p ( DEMAND_SEW ) && ! info2 . demand_p ( DEMAND_RATIO ) ) return false ;" GCC,riscv,377,"Predict the next statement of this code snippet: edge e ; edge_iterator ei ; FOR_EACH_EDGE ( e , ei , cfg_bb -> succs ) if ( e -> dest -> index == cfg_bb -> index ) return true ; }" GCC,riscv,378,"Predict the next statement of this code snippet: rtl_opt_pass * make_pass_vsetvl ( gcc :: context * ctxt ) { return new pass_vsetvl ( ctxt ) ;" GCC,riscv,379,"Predict the next statement of this code snippet: return ma == INVALID_ATTRIBUTE ? get_default_ma ( ) : IS_AGNOSTIC ( ma ) ;" GCC,riscv,380,"Predict the next statement of this code snippet: extract_insn_cached ( rinsn ) ; int ma = get_attr_ma ( rinsn ) ;" GCC,riscv,381,"Predict the next statement of this code snippet: bool match_cond_p ( const bool * dems1 , const bool * dems2 ) const { for ( unsigned i = ; i < NUM_DEMAND ; i ++ ) {" GCC,riscv,382,"Predict the next statement of this code snippet: return m_source == other . get_source ( ) ;" GCC,riscv,383,"Predict the next statement of this code snippet: if ( ! curr_info . valid_p ( ) || curr_info . unknown_p ( ) || curr_info . uninit_p ( ) ) return true ; if ( require . compatible_p ( static_cast < const vl_vtype_info & > ( curr_info ) ) ) return false ; return true ;" GCC,riscv,384,"Predict the next statement of this code snippet: bool pass_vsetvl :: need_vsetvl ( const vector_insn_info & require , const vector_insn_info & curr_info ) const { if ( ! curr_info . valid_p ( ) || curr_info . unknown_p ( ) || curr_info . uninit_p ( ) ) return true ;" GCC,riscv,385,"Predict the next statement of this code snippet: m_demands [ DEMAND_SEW ] = true ; if ( ! ignore_vlmul_insn_p ( insn -> rtl ( ) ) ) m_demands [ DEMAND_LMUL ] = true ; } if ( get_attr_ta ( insn -> rtl ( ) ) != INVALID_ATTRIBUTE ) m_demands [ DEMAND_TAIL_POLICY ] = true ; if ( get_attr_ma ( insn -> rtl ( ) ) != INVALID_ATTRIBUTE ) m_demands [ DEMAND_MASK_POLICY ] = true ; if ( vector_config_insn_p ( insn -> rtl ( ) ) ) return ; if ( scalar_move_insn_p ( insn -> rtl ( ) ) ) { if ( m_avl . has_non_zero_avl ( ) ) m_demands [ DEMAND_NONZERO_AVL ] = true ; if ( m_ta ) m_demands [ DEMAND_GE_SEW ] = true ; } if ( ! m_avl . has_avl_reg ( ) || vlmax_avl_p ( get_avl ( ) ) || ! m_avl . get_source ( ) ) return ; if ( ! m_avl . get_source ( ) -> insn ( ) -> is_real ( ) && ! m_avl . get_source ( ) -> insn ( ) -> is_phi ( ) ) return ;" GCC,riscv,386,"Predict the next statement of this code snippet: return ; } if ( ! vector_config_insn_p ( insn -> rtl ( ) ) && ! has_vtype_op ( insn -> rtl ( ) ) && ( find_access ( insn -> defs ( ) , VL_REGNUM ) || find_access ( insn -> defs ( ) , VTYPE_REGNUM ) ) ) { set_unknown ( ) ; return ; } if ( ! vector_config_insn_p ( insn -> rtl ( ) ) && ! has_vtype_op ( insn -> rtl ( ) ) ) return ; vl_vtype_info :: operator = ( get_vl_vtype_info ( insn ) ) ; m_insn = insn ; m_state = VALID ; if ( vector_config_insn_p ( insn -> rtl ( ) ) ) { m_demands [ DEMAND_AVL ] = true ; m_demands [ DEMAND_RATIO ] = true ; return ; } if ( has_vl_op ( insn -> rtl ( ) ) ) m_demands [ DEMAND_AVL ] = true ; if ( get_attr_ratio ( insn -> rtl ( ) ) != INVALID_ATTRIBUTE ) m_demands [ DEMAND_RATIO ] = true ; else { m_demands [ DEMAND_SEW ] = true ; if ( ! ignore_vlmul_insn_p ( insn -> rtl ( ) ) ) m_demands [ DEMAND_LMUL ] = true ; } if ( get_attr_ta ( insn -> rtl ( ) ) != INVALID_ATTRIBUTE ) m_demands [ DEMAND_TAIL_POLICY ] = true ; if ( get_attr_ma ( insn -> rtl ( ) ) != INVALID_ATTRIBUTE ) m_demands [ DEMAND_MASK_POLICY ] = true ; if ( vector_config_insn_p ( insn -> rtl ( ) ) ) return ;" GCC,riscv,387,"Predict the next statement of this code snippet: pass_vsetvl ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_vsetvl , ctxt ) {" GCC,riscv,388,"Predict the next statement of this code snippet: pass_vsetvl ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_vsetvl , ctxt ) {" GCC,riscv,389,"Predict the next statement of this code snippet: return ! info1 . has_non_zero_avl ( ) || ! info2 . has_non_zero_avl ( ) ;" GCC,riscv,390,"Predict the next statement of this code snippet: compute_local_properties ( ) ; m_vector_manager -> vector_edge_list = pre_edge_lcm_avs ( m_vector_manager -> vector_exprs . length ( ) , m_vector_manager -> vector_transp , m_vector_manager -> vector_comp , m_vector_manager -> vector_antic , m_vector_manager -> vector_kill , m_vector_manager -> vector_avin , m_vector_manager -> vector_avout , & m_vector_manager -> vector_insert , & m_vector_manager -> vector_del ) ; if ( dump_file ) m_vector_manager -> dump ( dump_file ) ; refine_vsetvls ( ) ; cleanup_vsetvls ( ) ; bool need_commit = commit_vsetvls ( ) ;" GCC,riscv,391,"Predict the next statement of this code snippet: rtx vl = get_vl ( insn -> rtl ( ) ) ; rtx avl = get_avl ( insn -> rtl ( ) ) ; def_info * def = find_access ( insn -> defs ( ) , REGNO ( vl ) ) ; set_info * set = safe_dyn_cast < set_info * > ( def ) ; vector_insn_info info ; info . parse_insn ( insn ) ; gcc_assert ( set ) ; if ( m_vector_manager -> to_delete_vsetvls . contains ( insn -> rtl ( ) ) ) { m_vector_manager -> to_delete_vsetvls . remove ( insn -> rtl ( ) ) ; if ( m_vector_manager -> to_refine_vsetvls . contains ( insn -> rtl ( ) ) ) m_vector_manager -> to_refine_vsetvls . remove ( insn -> rtl ( ) ) ; if ( ! set -> has_nondebug_insn_uses ( ) ) { to_delete . add ( insn -> rtl ( ) ) ; continue ; } } if ( m_vector_manager -> to_refine_vsetvls . contains ( insn -> rtl ( ) ) ) { m_vector_manager -> to_refine_vsetvls . remove ( insn -> rtl ( ) ) ; if ( ! set -> has_nondebug_insn_uses ( ) ) { rtx new_pat = gen_vsetvl_pat ( VSETVL_VTYPE_CHANGE_ONLY , info , NULL_RTX ) ; change_insn ( insn -> rtl ( ) , new_pat ) ; continue ; } } if ( vlmax_avl_p ( avl ) ) continue ; rtx new_pat = gen_vsetvl_pat ( VSETVL_DISCARD_RESULT , info , NULL_RTX ) ; if ( ! set -> has_nondebug_insn_uses ( ) ) { validate_change ( insn -> rtl ( ) , & PATTERN ( insn -> rtl ( ) ) , new_pat , false ) ; continue ; } }" GCC,riscv,392,"Predict the next statement of this code snippet: if ( info2 . demand_p ( DEMAND_NONZERO_AVL ) ) return info1 . demand_p ( DEMAND_AVL ) && ! info1 . demand_p ( DEMAND_NONZERO_AVL ) && info1 . has_avl_reg ( ) ; }" GCC,riscv,393,"Predict the next statement of this code snippet: void pass_vsetvl :: prune_expressions ( void ) { for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) { if ( m_vector_manager -> vector_block_infos [ bb -> index ( ) ] . local_dem . valid_or_dirty_p ( ) ) m_vector_manager -> create_expr ( m_vector_manager -> vector_block_infos [ bb -> index ( ) ] . local_dem ) ; if ( m_vector_manager -> vector_block_infos [ bb -> index ( ) ] . reaching_out . valid_or_dirty_p ( ) ) m_vector_manager -> create_expr ( m_vector_manager -> vector_block_infos [ bb -> index ( ) ] . reaching_out ) ; } if ( dump_file ) {" GCC,riscv,394,"Predict the next statement of this code snippet: return calculate_ratio ( info2 . get_sew ( ) , info1 . get_vlmul ( ) ) ;" GCC,riscv,395,"Predict the next statement of this code snippet: static bool read_vl_insn_p ( rtx_insn * rinsn ) { return recog_memoized ( rinsn ) >= && get_attr_type ( rinsn ) == TYPE_RDVL ;" GCC,riscv,396,"Predict the next statement of this code snippet: static bool real_insn_and_same_bb_p ( const insn_info * insn , const bb_info * bb ) {" GCC,riscv,397,"Predict the next statement of this code snippet: if ( ! info . valid_p ( ) ) continue ; rtx_insn * rinsn = insn -> rtl ( ) ; if ( ! can_refine_vsetvl_p ( cfg_bb , info ) ) continue ; if ( vector_config_insn_p ( rinsn ) ) { m_vector_manager -> to_refine_vsetvls . add ( rinsn ) ; continue ; } rinsn = PREV_INSN ( rinsn ) ; rtx new_pat = gen_vsetvl_pat ( VSETVL_VTYPE_CHANGE_ONLY , info , NULL_RTX ) ; change_insn ( rinsn , new_pat ) ;" GCC,riscv,398,"Predict the next statement of this code snippet: if ( vector_config_insn_p ( rinsn ) ) { m_vector_manager -> to_refine_vsetvls . add ( rinsn ) ; continue ; } rinsn = PREV_INSN ( rinsn ) ; rtx new_pat = gen_vsetvl_pat ( VSETVL_VTYPE_CHANGE_ONLY , info , NULL_RTX ) ; change_insn ( rinsn , new_pat ) ; }" GCC,riscv,399,"Predict the next statement of this code snippet: static bool reg_available_p ( const insn_info * insn , const vector_insn_info & info ) { if ( info . has_avl_reg ( ) && ! info . get_avl_source ( ) ) return false ; insn_info * def_insn = info . get_avl_source ( ) -> insn ( ) ;" GCC,riscv,400,"Predict the next statement of this code snippet: if ( ! vector_block_infos . is_empty ( ) ) vector_block_infos . release ( ) ; if ( ! vector_exprs . is_empty ( ) ) vector_exprs . release ( ) ; gcc_assert ( to_refine_vsetvls . is_empty ( ) ) ; gcc_assert ( to_delete_vsetvls . is_empty ( ) ) ; if ( optimize > ) free_bitmap_vectors ( ) ;" GCC,riscv,401,"Predict the next statement of this code snippet: void vector_infos_manager :: release ( void ) { if ( ! vector_insn_infos . is_empty ( ) ) vector_insn_infos . release ( ) ; if ( ! vector_block_infos . is_empty ( ) ) vector_block_infos . release ( ) ; if ( ! vector_exprs . is_empty ( ) ) vector_exprs . release ( ) ; gcc_assert ( to_refine_vsetvls . is_empty ( ) ) ; gcc_assert ( to_delete_vsetvls . is_empty ( ) ) ;" GCC,riscv,402,"Predict the next statement of this code snippet: bool vl_vtype_info :: same_avl_p ( const vl_vtype_info & other ) const { return get_avl ( ) == other . get_avl ( ) && get_avl_source ( ) == other . get_avl_source ( ) ;" GCC,riscv,403,"Predict the next statement of this code snippet: return dems1 [ DEMAND_SEW ] == dems2 [ DEMAND_SEW ] && dems1 [ DEMAND_LMUL ] == dems2 [ DEMAND_LMUL ] && dems1 [ DEMAND_RATIO ] == dems2 [ DEMAND_RATIO ] && ! dems1 [ DEMAND_GE_SEW ] && ! dems2 [ DEMAND_GE_SEW ] ;" GCC,riscv,404,"Predict the next statement of this code snippet: return get_ratio ( ) == other . get_ratio ( ) ;" GCC,riscv,405,"Predict the next statement of this code snippet: bool vl_vtype_info :: same_vtype_p ( const vl_vtype_info & other ) const { return get_sew ( ) == other . get_sew ( ) && get_vlmul ( ) == other . get_vlmul ( ) && get_ta ( ) == other . get_ta ( ) && get_ma ( ) == other . get_ma ( ) ;" GCC,riscv,406,"Predict the next statement of this code snippet: bool vl_vtype_info :: same_vtype_p ( const vl_vtype_info & other ) const {" GCC,riscv,407,"Predict the next statement of this code snippet: return get_attr_type ( rinsn ) == TYPE_VIMOVXV || get_attr_type ( rinsn ) == TYPE_VFMOVFV ;" GCC,riscv,408,"Predict the next statement of this code snippet: static bool second_lmul_less_than_first_lmul_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) {" GCC,riscv,409,"Predict the next statement of this code snippet: static unsigned second_ratio ( const vector_insn_info & , const vector_insn_info & info2 ) {" GCC,riscv,410,"Predict the next statement of this code snippet: static unsigned second_ratio ( const vector_insn_info & , const vector_insn_info & info2 ) {" GCC,riscv,411,"Predict the next statement of this code snippet: static bool second_ratio_invalid_for_first_lmul_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) { return calculate_sew ( info1 . get_vlmul ( ) , info2 . get_ratio ( ) ) == ;" GCC,riscv,412,"Predict the next statement of this code snippet: static bool second_ratio_invalid_for_first_sew_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) { return calculate_vlmul ( info1 . get_sew ( ) , info2 . get_ratio ( ) ) == LMUL_RESERVED ;" GCC,riscv,413,"Predict the next statement of this code snippet: return info2 . get_ratio ( ) < info1 . get_ratio ( ) ;" GCC,riscv,414,"Predict the next statement of this code snippet: return info2 . get_sew ( ) ;" GCC,riscv,415,"Predict the next statement of this code snippet: static bool second_sew_less_than_first_sew_p ( const vector_insn_info & info1 , const vector_insn_info & info2 ) {" GCC,riscv,416,"Predict the next statement of this code snippet: static vlmul_type second_vlmul ( const vector_insn_info & , const vector_insn_info & info2 ) {" GCC,riscv,417,"Predict the next statement of this code snippet: m_avl = avl ;" GCC,riscv,418,"Predict the next statement of this code snippet: void set_avl_info ( const avl_info & avl ) { m_avl = avl ;" GCC,riscv,419,"Predict the next statement of this code snippet: void set_demand ( enum demand_type type , bool value ) { m_demands [ type ] = value ;" GCC,riscv,420,"Predict the next statement of this code snippet: m_demands [ type ] = value ;" GCC,riscv,421,"Predict the next statement of this code snippet: void set_dirty ( bool dirty_with_killed_avl_p ) {" GCC,riscv,422,"Predict the next statement of this code snippet: m_state = EMPTY ;" GCC,riscv,423,"Predict the next statement of this code snippet: void set_hard_empty ( ) { m_state = HARD_EMPTY ;" GCC,riscv,424,"Predict the next statement of this code snippet: void set_hard_empty ( ) {" GCC,riscv,425,"Predict the next statement of this code snippet: m_insn = insn ;" GCC,riscv,426,"Predict the next statement of this code snippet: m_insn = insn ;" GCC,riscv,427,"Predict the next statement of this code snippet: m_ma = ma ;" GCC,riscv,428,"Predict the next statement of this code snippet: void set_ma ( bool ma ) {" GCC,riscv,429,"Predict the next statement of this code snippet: m_ratio = ratio ;" GCC,riscv,430,"Predict the next statement of this code snippet: void set_ratio ( uint8_t ratio ) { m_ratio = ratio ;" GCC,riscv,431,"Predict the next statement of this code snippet: m_sew = sew ;" GCC,riscv,432,"Predict the next statement of this code snippet: void set_ta ( bool ta ) {" GCC,riscv,433,"Predict the next statement of this code snippet: void set_unknown ( ) {" GCC,riscv,434,"Predict the next statement of this code snippet: void set_valid ( ) { m_state = VALID ;" GCC,riscv,435,"Predict the next statement of this code snippet: m_vlmul = vlmul ;" GCC,riscv,436,"Predict the next statement of this code snippet: FOR_ALL_BB_FN ( cfg_bb , cfun ) { FOR_BB_INSNS ( cfg_bb , rinsn ) { if ( ! NONDEBUG_INSN_P ( rinsn ) ) continue ; if ( has_vtype_op ( rinsn ) ) { const auto info = m_vector_manager -> vector_insn_infos [ INSN_UID ( rinsn ) ] ; emit_vsetvl_insn ( VSETVL_DISCARD_RESULT , EMIT_BEFORE , info , NULL_RTX , rinsn ) ; } } }" GCC,riscv,437,"Predict the next statement of this code snippet: if ( ! NONDEBUG_INSN_P ( rinsn ) ) continue ; if ( has_vtype_op ( rinsn ) ) { const auto info = m_vector_manager -> vector_insn_infos [ INSN_UID ( rinsn ) ] ; emit_vsetvl_insn ( VSETVL_DISCARD_RESULT , EMIT_BEFORE , info , NULL_RTX , rinsn ) ; } } }" GCC,riscv,438,"Predict the next statement of this code snippet: insn_info * insn2 = extract_single_source ( set2 ) ; if ( ! insn1 || ! insn2 ) return false ;" GCC,riscv,439,"Predict the next statement of this code snippet: } if ( note1 && note2 && rtx_equal_p ( note1 , note2 ) ) return true ; if ( vsetvl_insn_p ( insn1 -> rtl ( ) ) && vsetvl_insn_p ( insn2 -> rtl ( ) ) ) { vector_insn_info insn1_info , insn2_info ; insn1_info . parse_insn ( insn1 ) ; insn2_info . parse_insn ( insn2 ) ; if ( insn1_info . same_vlmax_p ( insn2_info ) && insn1_info . compatible_avl_p ( insn2_info ) ) return true ; } if ( ! single_set1 || ! single_set2 ) return false ; if ( ! rtx_equal_p ( SET_SRC ( single_set1 ) , SET_SRC ( single_set2 ) ) ) return false ; gcc_assert ( insn1 -> uses ( ) . size ( ) == insn2 -> uses ( ) . size ( ) ) ;" GCC,riscv,440,"Predict the next statement of this code snippet: for ( set_info * set : sets ) { if ( read_vl_insn_p ( set -> insn ( ) -> rtl ( ) ) ) { const insn_info * insn = get_backward_fault_first_load_insn ( set -> insn ( ) ) ; if ( insn == info1 . get_insn ( ) ) return info2 . compatible_vtype_p ( info1 ) ; } } } return false ;" GCC,riscv,441,"Predict the next statement of this code snippet: extract_insn_cached ( rinsn ) ; int ta = get_attr_ta ( rinsn ) ; return ta == INVALID_ATTRIBUTE ? get_default_ta ( ) : IS_AGNOSTIC ( ta ) ;" GCC,riscv,442,"Predict the next statement of this code snippet: int ta = get_attr_ta ( rinsn ) ; return ta == INVALID_ATTRIBUTE ? get_default_ta ( ) : IS_AGNOSTIC ( ta ) ;" GCC,riscv,443,"Predict the next statement of this code snippet: info = m_vector_manager -> vector_insn_infos [ insn -> uid ( ) ] ; return ; }" GCC,riscv,444,"Predict the next statement of this code snippet: if ( insn -> is_call ( ) || insn -> is_asm ( ) || find_access ( insn -> defs ( ) , VL_REGNUM ) || find_access ( insn -> defs ( ) , VTYPE_REGNUM ) ) info = vector_insn_info :: get_unknown ( ) ;" GCC,riscv,445,"Predict the next statement of this code snippet: if ( info . valid_p ( ) && ! need_vsetvl ( require , info ) ) return ; info = require ;" GCC,riscv,446,"Predict the next statement of this code snippet: if ( info . valid_p ( ) && ! need_vsetvl ( require , info ) ) return ;" GCC,riscv,447,"Predict the next statement of this code snippet: bool uninit_p ( ) const { return m_state == UNINITIALIZED ;" GCC,riscv,448,"Predict the next statement of this code snippet: return m_state == UNINITIALIZED ;" GCC,riscv,449,"Predict the next statement of this code snippet: set_info * set = safe_dyn_cast < set_info * > ( def ) ; set_avl_info ( avl_info ( vl , set ) ) ; set_insn ( insn ) ; return true ; }" GCC,riscv,450,"Predict the next statement of this code snippet: return m_state == VALID || m_state == DIRTY || m_state == DIRTY_WITH_KILLED_AVL ;" GCC,riscv,451,"Predict the next statement of this code snippet: return m_state == VALID ;" GCC,riscv,452,"Predict the next statement of this code snippet: return m_state == VALID ;" GCC,riscv,453,"Predict the next statement of this code snippet: static bool valid_sew_p ( size_t sew ) { return exact_log2 ( sew ) && sew >= && sew <= ;" GCC,riscv,454,"Predict the next statement of this code snippet: return exact_log2 ( sew ) && sew >= && sew <= ;" GCC,riscv,455,"Predict the next statement of this code snippet: static bool vector_config_insn_p ( rtx_insn * rinsn ) {" GCC,riscv,456,"Predict the next statement of this code snippet: static bool vector_config_insn_p ( rtx_insn * rinsn ) {" GCC,riscv,457,"Predict the next statement of this code snippet: for ( const bb_info * bb : crtl -> ssa -> bbs ( ) ) { vector_block_infos [ bb -> index ( ) ] . local_dem = vector_insn_info ( ) ; vector_block_infos [ bb -> index ( ) ] . reaching_out = vector_insn_info ( ) ; for ( insn_info * insn : bb -> real_insns ( ) ) vector_insn_infos [ insn -> uid ( ) ] . parse_insn ( insn ) ;" GCC,riscv,458,"Predict the next statement of this code snippet: vector_insn_info ( ) : vl_vtype_info ( ) , m_state ( UNINITIALIZED ) , m_demands { false } , m_insn ( nullptr ) {" GCC,riscv,459,"Predict the next statement of this code snippet: vector_insn_info ( ) : vl_vtype_info ( ) , m_state ( UNINITIALIZED ) , m_demands { false } , m_insn ( nullptr ) {" GCC,riscv,460,"Predict the next statement of this code snippet: return ( INSN_CODE ( rinsn ) == CODE_FOR_vlmax_avlsi || INSN_CODE ( rinsn ) == CODE_FOR_vlmax_avldi ) ;" GCC,riscv,461,"Predict the next statement of this code snippet: static bool vlmax_avl_insn_p ( rtx_insn * rinsn ) {" GCC,riscv,462,"Predict the next statement of this code snippet: return x && rtx_equal_p ( x , RVV_VLMAX ) ;" GCC,riscv,463,"Predict the next statement of this code snippet: return calculate_vlmul ( info1 . get_sew ( ) , info2 . get_ratio ( ) ) ;" GCC,riscv,464,"Predict the next statement of this code snippet: vl_vtype_info ( ) : m_avl ( avl_info ( ) ) , m_sew ( ) , m_vlmul ( ) , m_ratio ( ) , m_ta ( ) , m_ma ( ) {" GCC,riscv,465,"Predict the next statement of this code snippet: vl_vtype_info ( ) : m_avl ( avl_info ( ) ) , m_sew ( ) , m_vlmul ( ) , m_ratio ( ) , m_ta ( ) , m_ma ( ) {" GCC,riscv,466,"Predict the next statement of this code snippet: static bool vsetvl_discard_result_insn_p ( rtx_insn * rinsn ) { if ( ! vector_config_insn_p ( rinsn ) ) return false ; return ( INSN_CODE ( rinsn ) == CODE_FOR_vsetvl_discard_resultdi || INSN_CODE ( rinsn ) == CODE_FOR_vsetvl_discard_resultsi ) ;" GCC,riscv,467,"Predict the next statement of this code snippet: static bool vsetvl_discard_result_insn_p ( rtx_insn * rinsn ) { if ( ! vector_config_insn_p ( rinsn ) ) return false ; return ( INSN_CODE ( rinsn ) == CODE_FOR_vsetvl_discard_resultdi || INSN_CODE ( rinsn ) == CODE_FOR_vsetvl_discard_resultsi ) ;" GCC,riscv,468,"Predict the next statement of this code snippet: return ( INSN_CODE ( rinsn ) == CODE_FOR_vsetvldi || INSN_CODE ( rinsn ) == CODE_FOR_vsetvlsi ) ;" GCC,riscv,469,"Predict the next statement of this code snippet: void add_all_one_mask_operand ( machine_mode mode ) { add_input_operand ( CONSTM1_RTX ( mode ) , mode ) ;" GCC,riscv,470,"Predict the next statement of this code snippet: void add_avl_type_operand ( avl_type type ) {" GCC,riscv,471,"Predict the next statement of this code snippet: void add_avl_type_operand ( avl_type type ) {" GCC,riscv,472,"Predict the next statement of this code snippet: rtx tail_policy_rtx = gen_int_mode ( vta , Pmode ) ; rtx mask_policy_rtx = gen_int_mode ( vma , Pmode ) ; add_input_operand ( tail_policy_rtx , Pmode ) ; add_input_operand ( mask_policy_rtx , Pmode ) ;" GCC,riscv,473,"Predict the next statement of this code snippet: void add_policy_operand ( enum tail_policy vta , enum mask_policy vma ) {" GCC,riscv,474,"Predict the next statement of this code snippet: void add_vundef_operand ( machine_mode mode ) {" GCC,riscv,475,"Predict the next statement of this code snippet: void add_vundef_operand ( machine_mode mode ) { add_input_operand ( RVV_VUNDEF ( mode ) , mode ) ;" GCC,riscv,476,"Predict the next statement of this code snippet: unsigned int calculate_ratio ( unsigned int sew , enum vlmul_type vlmul ) { unsigned int ratio ; switch ( vlmul ) { case LMUL_1 : ratio = sew ; break ; case LMUL_2 : ratio = sew / ; break ;" GCC,riscv,477,"Predict the next statement of this code snippet: static unsigned compute_vlmax ( unsigned vector_bits , unsigned elt_size , unsigned min_size ) {" GCC,riscv,478,"Predict the next statement of this code snippet: return ( const_vec_duplicate_p ( x , & elt ) && CONST_INT_P ( elt ) && IN_RANGE ( INTVAL ( elt ) , minval , maxval ) ) ;" GCC,riscv,479,"Predict the next statement of this code snippet: unsigned int sew = get_sew ( vmode ) ;" GCC,riscv,480,"Predict the next statement of this code snippet: void emit_hard_vlmax_vsetvl ( machine_mode vmode , rtx vl ) { unsigned int sew = get_sew ( vmode ) ; emit_insn ( gen_vsetvl ( Pmode , vl , RVV_VLMAX , gen_int_mode ( sew , Pmode ) , gen_int_mode ( get_vlmul ( vmode ) , Pmode ) , const0_rtx , const0_rtx ) ) ;" GCC,riscv,481,"Predict the next statement of this code snippet: void emit_nonvlmax_op ( unsigned icode , rtx dest , rtx src , rtx len , machine_mode mask_mode ) { emit_pred_op ( icode , NULL_RTX , dest , src , len , mask_mode , false ) ;" GCC,riscv,482,"Predict the next statement of this code snippet: emit_pred_op ( icode , NULL_RTX , dest , src , len , mask_mode , false ) ;" GCC,riscv,483,"Predict the next statement of this code snippet: e . add_output_operand ( dest , mode ) ; if ( mask ) e . add_input_operand ( mask , GET_MODE ( mask ) ) ; else e . add_all_one_mask_operand ( mask_mode ) ; e . add_vundef_operand ( mode ) ; e . add_input_operand ( src , GET_MODE ( src ) ) ;" GCC,riscv,484,"Predict the next statement of this code snippet: emit_pred_op ( icode , NULL_RTX , dest , src , len , mask_mode , true ) ;" GCC,riscv,485,"Predict the next statement of this code snippet: void emit_vlmax_op ( unsigned icode , rtx dest , rtx src , rtx len , machine_mode mask_mode ) { emit_pred_op ( icode , NULL_RTX , dest , src , len , mask_mode , true ) ;" GCC,riscv,486,"Predict the next statement of this code snippet: unsigned int ratio = calculate_ratio ( sew , vlmul ) ; if ( ! optimize ) emit_hard_vlmax_vsetvl ( vmode , vl ) ;" GCC,riscv,487,"Predict the next statement of this code snippet: enum vlmul_type vlmul = get_vlmul ( vmode ) ; unsigned int ratio = calculate_ratio ( sew , vlmul ) ; if ( ! optimize ) emit_hard_vlmax_vsetvl ( vmode , vl ) ; else emit_insn ( gen_vlmax_avl ( Pmode , vl , gen_int_mode ( ratio , Pmode ) ) ) ;" GCC,riscv,488,"Predict the next statement of this code snippet: expand_insn ( icode , m_opno , m_ops ) ; }" GCC,riscv,489,"Predict the next statement of this code snippet: void expand ( enum insn_code icode , bool temporary_volatile_p = false ) { if ( temporary_volatile_p ) { temporary_volatile_ok v ( true ) ; expand_insn ( icode , m_opno , m_ops ) ;" GCC,riscv,490,"Predict the next statement of this code snippet: emit_vlmax_op ( code_for_pred_mov ( mode ) , target , src , mask_mode ) ; return ; } rtx elt ; if ( const_vec_duplicate_p ( src , & elt ) ) { rtx tmp = register_operand ( target , mode ) ? target : gen_reg_rtx ( mode ) ; if ( satisfies_constraint_vi ( src ) || satisfies_constraint_Wc0 ( src ) ) emit_vlmax_op ( code_for_pred_mov ( mode ) , tmp , src , mask_mode ) ; else emit_vlmax_op ( code_for_pred_broadcast ( mode ) , tmp , force_reg ( elt_mode , elt ) , mask_mode ) ; if ( tmp != target ) emit_move_insn ( target , tmp ) ; return ;" GCC,riscv,491,"Predict the next statement of this code snippet: if ( GET_MODE_CLASS ( mode ) == MODE_VECTOR_BOOL ) { rtx elt ; gcc_assert ( const_vec_duplicate_p ( src , & elt ) && ( rtx_equal_p ( elt , const0_rtx ) || rtx_equal_p ( elt , const1_rtx ) ) ) ; emit_vlmax_op ( code_for_pred_mov ( mode ) , target , src , mask_mode ) ; return ;" GCC,riscv,492,"Predict the next statement of this code snippet: rtx tmp = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_rtx_SET ( tmp , gen_rtx_fmt_ee ( GTU , Pmode , avl , const0_rtx ) ) ) ; return tmp ; }" GCC,riscv,493,"Predict the next statement of this code snippet: rtx tmp = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_rtx_SET ( tmp , gen_rtx_fmt_ee ( GTU , Pmode , avl , const0_rtx ) ) ) ;" GCC,riscv,494,"Predict the next statement of this code snippet: static rtx gen_no_side_effects_vsetvl_rtx ( machine_mode vmode , rtx vl , rtx avl ) { unsigned int sew = get_sew ( vmode ) ;" GCC,riscv,495,"Predict the next statement of this code snippet: return gen_vsetvl_no_side_effects ( Pmode , vl , avl , gen_int_mode ( sew , Pmode ) , gen_int_mode ( get_vlmul ( vmode ) , Pmode ) , const0_rtx , const0_rtx ) ;" GCC,riscv,496,"Predict the next statement of this code snippet: builder . quick_push ( const1_rtx ) ;" GCC,riscv,497,"Predict the next statement of this code snippet: return gen_int_mode ( type , Pmode ) ;" GCC,riscv,498,"Predict the next statement of this code snippet: int get_ma ( rtx ma ) {" GCC,riscv,499,"Predict the next statement of this code snippet: int get_ma ( rtx ma ) {" GCC,riscv,500,"Predict the next statement of this code snippet: return MASK_ANY ;" GCC,riscv,501,"Predict the next statement of this code snippet: enum mask_policy get_prefer_mask_policy ( ) {" GCC,riscv,502,"Predict the next statement of this code snippet: enum tail_policy get_prefer_tail_policy ( ) { return TAIL_ANY ;" GCC,riscv,503,"Predict the next statement of this code snippet: if ( TARGET_MIN_VLEN == ) return mode_vtype_infos . ratio_for_min_vlen32 [ mode ] ; else return mode_vtype_infos . ratio_for_min_vlen64 [ mode ] ;" GCC,riscv,504,"Predict the next statement of this code snippet: if ( TARGET_MIN_VLEN == ) return mode_vtype_infos . ratio_for_min_vlen32 [ mode ] ; else return mode_vtype_infos . ratio_for_min_vlen64 [ mode ] ;" GCC,riscv,505,"Predict the next statement of this code snippet: static unsigned get_sew ( machine_mode mode ) {" GCC,riscv,506,"Predict the next statement of this code snippet: static unsigned get_sew ( machine_mode mode ) { unsigned int sew = GET_MODE_CLASS ( mode ) == MODE_VECTOR_BOOL ? : GET_MODE_BITSIZE ( GET_MODE_INNER ( mode ) ) ;" GCC,riscv,507,"Predict the next statement of this code snippet: int get_ta ( rtx ta ) { if ( INTVAL ( ta ) == TAIL_ANY ) return INVALID_ATTRIBUTE ;" GCC,riscv,508,"Predict the next statement of this code snippet: case LMUL_2 : return TARGET_MIN_VLEN * ; case LMUL_4 : return TARGET_MIN_VLEN * ; case LMUL_8 : return TARGET_MIN_VLEN * ; default : gcc_unreachable ( ) ; }" GCC,riscv,509,"Predict the next statement of this code snippet: return TARGET_MIN_VLEN * ; case LMUL_4 : return TARGET_MIN_VLEN * ; case LMUL_8 : return TARGET_MIN_VLEN * ; default :" GCC,riscv,510,"Predict the next statement of this code snippet: if ( inner_mode == E_BImode ) mclass = MODE_VECTOR_BOOL ; else if ( FLOAT_MODE_P ( inner_mode ) ) mclass = MODE_VECTOR_FLOAT ; else mclass = MODE_VECTOR_INT ; machine_mode mode ; FOR_EACH_MODE_IN_CLASS ( mode , mclass ) if ( inner_mode == GET_MODE_INNER ( mode ) && known_eq ( nunits , GET_MODE_NUNITS ( mode ) ) && riscv_v_ext_vector_mode_p ( mode ) ) return mode ;" GCC,riscv,511,"Predict the next statement of this code snippet: if ( TARGET_MIN_VLEN == ) return mode_vtype_infos . vlmul_for_min_vlen32 [ mode ] ; else return mode_vtype_infos . vlmul_for_min_vlen64 [ mode ] ;" GCC,riscv,512,"Predict the next statement of this code snippet: rtx i32vl = NULL_RTX ; if ( CONST_INT_P ( avl ) ) { unsigned elt_size = GET_MODE_BITSIZE ( GET_MODE_INNER ( mode ) ) ; unsigned min_size = get_unknown_min_value ( mode ) ; unsigned vlen_max = RVV_65536 ; unsigned vlmax_max = compute_vlmax ( vlen_max , elt_size , min_size ) ; unsigned vlen_min = TARGET_MIN_VLEN ; unsigned vlmax_min = compute_vlmax ( vlen_min , elt_size , min_size ) ; unsigned HOST_WIDE_INT avl_int = INTVAL ( avl ) ; if ( avl_int <= vlmax_min ) i32vl = gen_int_mode ( * avl_int , Pmode ) ; else if ( avl_int >= * vlmax_max ) { i32vl = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_no_side_effects_vsetvl_rtx ( demote_mode , i32vl , RVV_VLMAX ) ) ; } else { } } if ( ! i32vl ) {" GCC,riscv,513,"Predict the next statement of this code snippet: unsigned vlen_max = RVV_65536 ; unsigned vlmax_max = compute_vlmax ( vlen_max , elt_size , min_size ) ; unsigned vlen_min = TARGET_MIN_VLEN ; unsigned vlmax_min = compute_vlmax ( vlen_min , elt_size , min_size ) ; unsigned HOST_WIDE_INT avl_int = INTVAL ( avl ) ; if ( avl_int <= vlmax_min ) i32vl = gen_int_mode ( * avl_int , Pmode ) ; else if ( avl_int >= * vlmax_max ) { i32vl = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_no_side_effects_vsetvl_rtx ( demote_mode , i32vl , RVV_VLMAX ) ) ; } else { } } if ( ! i32vl ) { rtx i64vl = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_no_side_effects_vsetvl_rtx ( mode , i64vl , force_reg ( Pmode , avl ) ) ) ; i32vl = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_rtx_SET ( i32vl , gen_rtx_ASHIFT ( Pmode , i64vl , const1_rtx ) ) ) ;" GCC,riscv,514,"Predict the next statement of this code snippet: case US_PLUS : case EQ : case NE : case LE : case LEU : case GT : case GTU : return simm5_p ( x ) ; case LT :" GCC,riscv,515,"Predict the next statement of this code snippet: insn_expander ( ) : m_opno ( ) {" GCC,riscv,516,"Predict the next statement of this code snippet: insn_expander ( ) : m_opno ( ) {" GCC,riscv,517,"Predict the next statement of this code snippet: if ( ( known_lt ( GET_MODE_SIZE ( mode ) , BYTES_PER_RISCV_VECTOR ) || GET_MODE_CLASS ( mode ) == MODE_VECTOR_BOOL ) && lra_in_progress ) { emit_insn ( gen_mov_lra ( mode , Pmode , dest , src ) ) ; return true ; } if ( known_ge ( GET_MODE_SIZE ( mode ) , BYTES_PER_RISCV_VECTOR ) && GET_MODE_CLASS ( mode ) != MODE_VECTOR_BOOL ) { if ( MEM_P ( dest ) && ! REG_P ( src ) ) src = force_reg ( mode , src ) ; return false ; } if ( register_operand ( src , mode ) && register_operand ( dest , mode ) ) { emit_insn ( gen_rtx_SET ( dest , src ) ) ; return true ; } if ( ! register_operand ( src , mode ) && ! register_operand ( dest , mode ) ) { rtx tmp = gen_reg_rtx ( mode ) ;" GCC,riscv,518,"Predict the next statement of this code snippet: } if ( known_ge ( GET_MODE_SIZE ( mode ) , BYTES_PER_RISCV_VECTOR ) && GET_MODE_CLASS ( mode ) != MODE_VECTOR_BOOL ) { if ( MEM_P ( dest ) && ! REG_P ( src ) ) src = force_reg ( mode , src ) ; return false ; } if ( register_operand ( src , mode ) && register_operand ( dest , mode ) ) { emit_insn ( gen_rtx_SET ( dest , src ) ) ; return true ; } if ( ! register_operand ( src , mode ) && ! register_operand ( dest , mode ) ) { rtx tmp = gen_reg_rtx ( mode ) ; if ( MEM_P ( src ) ) emit_vlmax_op ( code_for_pred_mov ( mode ) , tmp , src , mask_mode ) ; else emit_move_insn ( tmp , src ) ; src = tmp ; } if ( satisfies_constraint_vu ( src ) ) return false ; emit_vlmax_op ( code_for_pred_mov ( mode ) , dest , src , mask_mode ) ;" GCC,riscv,519,"Predict the next statement of this code snippet: VLMUL_FOR_MIN_VLEN64 , RATIO_FOR_MIN_VLEN64 ) \ vlmul_for_min_vlen32 [ MODE ## mode ] = VLMUL_FOR_MIN_VLEN32 ; \ ratio_for_min_vlen32 [ MODE ## mode ] = RATIO_FOR_MIN_VLEN32 ; \ vlmul_for_min_vlen64 [ MODE ## mode ] = VLMUL_FOR_MIN_VLEN64 ; \ ratio_for_min_vlen64 [ MODE ## mode ] = RATIO_FOR_MIN_VLEN64 ;" GCC,riscv,520,"Predict the next statement of this code snippet: bool neg_simm5_p ( rtx x ) { if ( ! CONST_INT_P ( x ) ) return false ;" GCC,riscv,521,"Predict the next statement of this code snippet: bool neg_simm5_p ( rtx x ) { if ( ! CONST_INT_P ( x ) ) return false ; return IN_RANGE ( INTVAL ( x ) , - , ) ;" GCC,riscv,522,"Predict the next statement of this code snippet: if ( immediate_operand ( * scalar_op , Pmode ) ) { if ( ! rtx_equal_p ( * scalar_op , const0_rtx ) ) * scalar_op = force_reg ( Pmode , * scalar_op ) ; * scalar_op = gen_rtx_SIGN_EXTEND ( scalar_mode , * scalar_op ) ; return false ; } if ( CONST_INT_P ( * scalar_op ) ) * scalar_op = force_reg ( scalar_mode , * scalar_op ) ; rtx tmp = gen_reg_rtx ( vector_mode ) ; ( code_for_pred_broadcast ( vector_mode ) , tmp , * scalar_op , vl , mask_mode ) ; emit_vector_func ( operands , tmp ) ; return true ;" GCC,riscv,523,"Predict the next statement of this code snippet: if ( ! CONST_INT_P ( x ) ) return false ; return IN_RANGE ( INTVAL ( x ) , - , ) ;" GCC,riscv,524,"Predict the next statement of this code snippet: if ( ! CONST_INT_P ( x ) ) return false ; return IN_RANGE ( INTVAL ( x ) , - , ) ;" GCC,riscv,525,"Predict the next statement of this code snippet: rtx ma = gen_int_mode ( get_prefer_mask_policy ( ) , Pmode ) ; rtx merge = RVV_VUNDEF ( demote_mode ) ; if ( register_operand ( ops [ ] , mode ) && rtx_equal_p ( ops [ ] , CONSTM1_RTX ( GET_MODE ( ops [ ] ) ) ) ) { merge = gen_lowpart ( demote_mode , ops [ ] ) ; ta = ops [ ] ; ma = ops [ ] ; } emit_insn ( gen_pred_slide ( unspec , demote_mode , temp , CONSTM1_RTX ( demote_mask_mode ) , merge , gen_lowpart ( demote_mode , ops [ ] ) , demote_scalar_op1 , vl_x2 , ta , ma , ops [ ] ) ) ; emit_insn ( gen_pred_slide ( unspec , demote_mode , gen_lowpart ( demote_mode , ops [ ] ) , CONSTM1_RTX ( demote_mask_mode ) , merge , temp , demote_scalar_op2 , vl_x2 , ta , ma , ops [ ] ) ) ;" GCC,riscv,526,"Predict the next statement of this code snippet: } if ( immediate_operand ( scalar_op , Pmode ) ) { ops [ ] = gen_rtx_SIGN_EXTEND ( scalar_mode , force_reg ( Pmode , scalar_op ) ) ; ops [ ] = force_vector_length_operand ( ops [ ] ) ; return false ; } if ( CONST_INT_P ( scalar_op ) ) scalar_op = force_reg ( scalar_mode , scalar_op ) ; rtx vl_x2 = get_vl_x2_rtx ( avl , mode , demote_mode ) ; rtx demote_scalar_op1 , demote_scalar_op2 ; if ( unspec == UNSPEC_VSLIDE1UP ) { demote_scalar_op1 = gen_highpart ( Pmode , scalar_op ) ; demote_scalar_op2 = gen_lowpart ( Pmode , scalar_op ) ; } else { demote_scalar_op1 = gen_lowpart ( Pmode , scalar_op ) ; demote_scalar_op2 = gen_highpart ( Pmode , scalar_op ) ; } rtx temp = gen_reg_rtx ( demote_mode ) ; rtx ta = gen_int_mode ( get_prefer_tail_policy ( ) , Pmode ) ; rtx ma = gen_int_mode ( get_prefer_mask_policy ( ) , Pmode ) ; rtx merge = RVV_VUNDEF ( demote_mode ) ; if ( register_operand ( ops [ ] , mode ) && rtx_equal_p ( ops [ ] , CONSTM1_RTX ( GET_MODE ( ops [ ] ) ) ) ) { merge = gen_lowpart ( demote_mode , ops [ ] ) ;" GCC,riscv,527,"Predict the next statement of this code snippet: mask = ; fmask = ; save_libcall_adjustment = ;" GCC,riscv,528,"Predict the next statement of this code snippet: int n = ; if ( ! riscv_classify_address ( & addr , x , mode , false ) ) { return ; } if ( ! riscv_v_ext_vector_mode_p ( mode ) && mode != BLKmode && might_split_p ) n += ( GET_MODE_SIZE ( mode ) . to_constant ( ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ;" GCC,riscv,529,"Predict the next statement of this code snippet: }" GCC,riscv,530,"Predict the next statement of this code snippet: rtx dwarf = NULL_RTX ; rtx adjust_sp_rtx , reg ; int saved_size = cfun -> machine -> frame . save_libcall_adjustment ; adjust_sp_rtx = gen_rtx_SET ( stack_pointer_rtx , gen_rtx_PLUS ( GET_MODE ( stack_pointer_rtx ) , stack_pointer_rtx , GEN_INT ( saved_size ) ) ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , adjust_sp_rtx , dwarf ) ; for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { reg = gen_rtx_REG ( SImode , regno ) ; dwarf = alloc_reg_note ( REG_CFA_RESTORE , reg , dwarf ) ; }" GCC,riscv,531,"Predict the next statement of this code snippet: reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , offset ) ) ; insn = gen_rtx_SET ( mem , reg ) ; dwarf = alloc_reg_note ( REG_CFA_OFFSET , insn , dwarf ) ; } adjust_sp_rtx = gen_rtx_SET ( stack_pointer_rtx , gen_rtx_PLUS ( GET_MODE ( stack_pointer_rtx ) , stack_pointer_rtx , GEN_INT ( - saved_size ) ) ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , adjust_sp_rtx , dwarf ) ; return dwarf ;" GCC,riscv,532,"Predict the next statement of this code snippet: static int riscv_binary_cost ( rtx x , int single_insns , int double_insns ) { if ( ! riscv_v_ext_vector_mode_p ( GET_MODE ( x ) ) && GET_MODE_SIZE ( GET_MODE ( x ) ) . to_constant ( ) == UNITS_PER_WORD * ) return COSTS_N_INSNS ( double_insns ) ;" GCC,riscv,533,"Predict the next statement of this code snippet: if ( ! riscv_v_ext_vector_mode_p ( GET_MODE ( x ) ) && GET_MODE_SIZE ( GET_MODE ( x ) ) . to_constant ( ) == UNITS_PER_WORD * ) return COSTS_N_INSNS ( double_insns ) ; return COSTS_N_INSNS ( single_insns ) ;" GCC,riscv,534,"Predict the next statement of this code snippet: static void riscv_block_move_loop ( rtx dest , rtx src , unsigned HOST_WIDE_INT length , unsigned HOST_WIDE_INT bytes_per_iter ) { rtx label , src_reg , dest_reg , final_src , test ; unsigned HOST_WIDE_INT leftover ; leftover = length % bytes_per_iter ; length -= leftover ; riscv_adjust_block_mem ( src , bytes_per_iter , & src_reg , & src ) ; riscv_adjust_block_mem ( dest , bytes_per_iter , & dest_reg , & dest ) ;" GCC,riscv,535,"Predict the next statement of this code snippet: riscv_adjust_block_mem ( dest , bytes_per_iter , & dest_reg , & dest ) ; final_src = expand_simple_binop ( Pmode , PLUS , src_reg , GEN_INT ( length ) , , , OPTAB_WIDEN ) ; label = gen_label_rtx ( ) ; emit_label ( label ) ; riscv_block_move_straight ( dest , src , bytes_per_iter ) ; riscv_emit_move ( src_reg , plus_constant ( Pmode , src_reg , bytes_per_iter ) ) ; riscv_emit_move ( dest_reg , plus_constant ( Pmode , dest_reg , bytes_per_iter ) ) ; test = gen_rtx_NE ( VOIDmode , src_reg , final_src ) ;" GCC,riscv,536,"Predict the next statement of this code snippet: HOST_WIDE_INT shifted_val ; shifted_val = ( value << shift ) | ( ( ( ( HOST_WIDE_INT ) ) << shift ) - ) ; alt_cost = + riscv_build_integer_1 ( alt_codes , shifted_val , mode ) ; if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = LSHIFTRT ; alt_codes [ alt_cost - ] . value = shift ; memcpy ( codes , alt_codes , sizeof ( alt_codes ) ) ; cost = alt_cost ; } shifted_val = value << shift ; alt_cost = + riscv_build_integer_1 ( alt_codes , shifted_val , mode ) ; if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = LSHIFTRT ; alt_codes [ alt_cost - ] . value = shift ; memcpy ( codes , alt_codes , sizeof ( alt_codes ) ) ; cost = alt_cost ; } } if ( ! TARGET_64BIT && ( value > INT32_MAX || value < INT32_MIN ) ) { unsigned HOST_WIDE_INT loval = sext_hwi ( value , ) ; unsigned HOST_WIDE_INT hival = sext_hwi ( ( value - loval ) >> , ) ; struct riscv_integer_op alt_codes [ RISCV_MAX_INTEGER_OPS ] ;" GCC,riscv,537,"Predict the next statement of this code snippet: int leading_ones = clz_hwi ( ~ value ) ; int trailing_ones = ctz_hwi ( ~ value ) ; if ( leading_ones < && ( ( - leading_ones - trailing_ones ) < ) ) { codes [ ] . code = UNKNOWN ; codes [ ] . value = ( ( ( unsigned HOST_WIDE_INT ) value >> trailing_ones ) | ( value << ( - trailing_ones ) ) ) ; codes [ ] . code = ROTATERT ; codes [ ] . value = - trailing_ones ; cost = ; } else { int upper_trailing_ones = ctz_hwi ( ~ value >> ) ; int lower_leading_ones = clz_hwi ( ~ value << ) ; if ( upper_trailing_ones < && lower_leading_ones < && ( ( - upper_trailing_ones - lower_leading_ones ) < ) ) { codes [ ] . code = UNKNOWN ; codes [ ] . value = ( ( value << ( - upper_trailing_ones ) ) | ( ( unsigned HOST_WIDE_INT ) value >> ( + upper_trailing_ones ) ) ) ; codes [ ] . code = ROTATERT ; codes [ ] . value = - upper_trailing_ones ; cost = ; }" GCC,riscv,538,"Predict the next statement of this code snippet: subrtx_iterator :: array_type array ; FOR_EACH_SUBRTX ( iter , array , x , ALL ) if ( GET_CODE ( * iter ) == CONST_POLY_INT ) return true ; if ( GET_CODE ( x ) == HIGH ) return true ; split_const ( x , & base , & offset ) ; if ( riscv_symbolic_constant_p ( base , & type ) ) { if ( SMALL_OPERAND ( INTVAL ( offset ) ) && riscv_symbol_insns ( type ) > ) return true ; if ( flag_pic ) return true ; } if ( tls_referenced_p ( x ) ) return true ;" GCC,riscv,539,"Predict the next statement of this code snippet: return ( reload_completed && known_eq ( cfun -> machine -> frame . total_size , ) && ! cfun -> machine -> interrupt_handler_p ) ;" GCC,riscv,540,"Predict the next statement of this code snippet: switch ( GET_CODE ( x ) ) { case REG : case SUBREG : info -> type = ADDRESS_REG ; info -> reg = x ; info -> offset = const0_rtx ; return riscv_valid_base_register_p ( info -> reg , mode , strict_p ) ; case PLUS : if ( riscv_v_ext_vector_mode_p ( mode ) ) return false ; info -> type = ADDRESS_REG ; info -> reg = XEXP ( x , ) ; info -> offset = XEXP ( x , ) ; return ( riscv_valid_base_register_p ( info -> reg , mode , strict_p ) && riscv_valid_offset_p ( info -> offset , mode ) ) ; case LO_SUM : if ( riscv_v_ext_vector_mode_p ( mode ) ) return false ; info -> type = ADDRESS_LO_SUM ; info -> reg = XEXP ( x , ) ; info -> offset = XEXP ( x , ) ;" GCC,riscv,541,"Predict the next statement of this code snippet: if ( riscv_v_ext_vector_mode_p ( mode ) ) return false ; info -> type = ADDRESS_REG ; info -> reg = XEXP ( x , ) ; info -> offset = XEXP ( x , ) ; return ( riscv_valid_base_register_p ( info -> reg , mode , strict_p ) && riscv_valid_offset_p ( info -> offset , mode ) ) ; case LO_SUM : if ( riscv_v_ext_vector_mode_p ( mode ) ) return false ; info -> type = ADDRESS_LO_SUM ; info -> reg = XEXP ( x , ) ; info -> offset = XEXP ( x , ) ; info -> symbol_type = riscv_classify_symbolic_expression ( info -> offset ) ; return ( riscv_valid_base_register_p ( info -> reg , mode , strict_p ) && riscv_valid_lo_sum_p ( info -> symbol_type , mode , info -> offset ) ) ; case CONST_INT : if ( riscv_v_ext_vector_mode_p ( mode ) ) return false ;" GCC,riscv,542,"Predict the next statement of this code snippet: if ( reg_class_subset_p ( rclass , GR_REGS ) ) return riscv_hard_regno_nregs ( GP_REG_FIRST , mode ) ;" GCC,riscv,543,"Predict the next statement of this code snippet: sbitmap components = sbitmap_alloc ( FIRST_PSEUDO_REGISTER ) ; bitmap_clear ( components ) ; function_abi_aggregator callee_abis ; rtx_insn * insn ; FOR_BB_INSNS ( bb , insn ) if ( CALL_P ( insn ) ) callee_abis . note_callee_abi ( insn_callee_abi ( insn ) ) ; HARD_REG_SET extra_caller_saves = callee_abis . caller_save_regs ( * crtl -> abi ) ; for ( unsigned int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( ! fixed_regs [ regno ] && ! crtl -> abi -> clobbers_full_reg_p ( regno ) && ( TEST_HARD_REG_BIT ( extra_caller_saves , regno ) || bitmap_bit_p ( in , regno ) || bitmap_bit_p ( gen , regno ) || bitmap_bit_p ( kill , regno ) ) ) bitmap_set_bit ( components , regno ) ; for ( unsigned int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( ! fixed_regs [ regno ] && ! crtl -> abi -> clobbers_full_reg_p ( regno ) && ( TEST_HARD_REG_BIT ( extra_caller_saves , regno ) || bitmap_bit_p ( in , regno ) || bitmap_bit_p ( gen , regno ) || bitmap_bit_p ( kill , regno ) ) ) bitmap_set_bit ( components , regno ) ;" GCC,riscv,544,"Predict the next statement of this code snippet: for ( unsigned int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( ! fixed_regs [ regno ] && ! crtl -> abi -> clobbers_full_reg_p ( regno ) && ( TEST_HARD_REG_BIT ( extra_caller_saves , regno ) || bitmap_bit_p ( in , regno ) || bitmap_bit_p ( gen , regno ) || bitmap_bit_p ( kill , regno ) ) ) bitmap_set_bit ( components , regno ) ; return components ;" GCC,riscv,545,"Predict the next statement of this code snippet: if ( ! cfun -> machine -> naked_p ) { for ( regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) || ( interrupt_save_prologue_temp && ( regno == RISCV_PROLOGUE_TEMP_REGNUM ) ) ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( crtl -> calls_eh_return ) for ( i = ; ( regno = EH_RETURN_DATA_REGNO ( i ) ) != INVALID_REGNUM ; i ++ ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( TARGET_HARD_FLOAT ) for ( regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) ) frame -> fmask |= << ( regno - FP_REG_FIRST ) , num_f_saved ++ ;" GCC,riscv,546,"Predict the next statement of this code snippet: if ( riscv_abi == ABI_ILP32E ) { for ( int r = ; r <= ; r ++ ) call_used_regs [ r ] = ; } if ( ! TARGET_HARD_FLOAT ) { for ( int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) fixed_regs [ regno ] = call_used_regs [ regno ] = ; } if ( UNITS_PER_FP_ARG == ) { for ( int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) call_used_regs [ regno ] = ; }" GCC,riscv,547,"Predict the next statement of this code snippet: for ( int r = ; r <= ; r ++ ) fixed_regs [ r ] = ; } if ( riscv_abi == ABI_ILP32E ) { for ( int r = ; r <= ; r ++ ) call_used_regs [ r ] = ; } if ( ! TARGET_HARD_FLOAT ) { for ( int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) fixed_regs [ regno ] = call_used_regs [ regno ] = ; } if ( UNITS_PER_FP_ARG == ) { for ( int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) call_used_regs [ regno ] = ; }" GCC,riscv,548,"Predict the next statement of this code snippet: static poly_uint16 riscv_convert_vector_bits ( void ) { if ( TARGET_MIN_VLEN > ) { riscv_bytes_per_vector_chunk = ; } else {" GCC,riscv,549,"Predict the next statement of this code snippet: static void riscv_disqualify_components ( sbitmap , edge , sbitmap , bool ) {" GCC,riscv,550,"Predict the next statement of this code snippet: static void riscv_disqualify_components ( sbitmap , edge , sbitmap , bool ) {" GCC,riscv,551,"Predict the next statement of this code snippet: if ( startswith ( s -> named . name , ) ) { char * name = ( char * ) alloca ( strlen ( s -> named . name ) + ) ; sprintf ( name , , s -> named . name + ) ; return get_section ( name , s -> named . common . flags , NULL ) ; } if ( s == data_section ) return sdata_section ; } return s ;" GCC,riscv,552,"Predict the next statement of this code snippet: static section * riscv_elf_select_rtx_section ( machine_mode mode , rtx x , unsigned HOST_WIDE_INT align ) { section * s = default_elf_select_rtx_section ( mode , x , align ) ;" GCC,riscv,553,"Predict the next statement of this code snippet: static void riscv_emit_epilogue_components ( sbitmap components ) { riscv_process_components ( components , false ) ;" GCC,riscv,554,"Predict the next statement of this code snippet: rtx tmp0 , tmp1 , cmp_op0 = * op0 , cmp_op1 = * op1 ; enum rtx_code fp_code = * code ; * code = NE ; switch ( fp_code ) { case UNORDERED : * code = EQ ; case ORDERED : tmp0 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op0 ) ; tmp1 = riscv_force_binary ( word_mode , EQ , cmp_op1 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , AND , tmp0 , tmp1 ) ; * op1 = const0_rtx ; break ; case UNEQ : * code = EQ ; tmp0 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op0 ) ; tmp1 = riscv_force_binary ( word_mode , EQ , cmp_op1 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , AND , tmp0 , tmp1 ) ; * op1 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op1 ) ; break ; case CODE : \ * code = EQ ; \ * op0 = gen_reg_rtx ( word_mode ) ; \ if ( GET_MODE ( cmp_op0 ) == SFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietsfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == SFmode ) \ emit_insn ( gen_f ## CMP ## _quietsfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietdfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode ) \ emit_insn ( gen_f ## CMP ## _quietdfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == HFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quiethfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == HFmode ) \ emit_insn ( gen_f ## CMP ## _quiethfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else \ gcc_unreachable ( ) ; \ * op1 = const0_rtx ; \ break ; case UNLT : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGT , le ) case UNLE : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGE , lt ) case NE : fp_code = EQ ; * code = EQ ; case EQ : case LE : case LT : case GE : case GT : * op0 = riscv_force_binary ( word_mode , fp_code , cmp_op0 , cmp_op1 ) ; * op1 = const0_rtx ; break ; case LTGT : tmp0 = riscv_force_binary ( word_mode , LT , cmp_op0 , cmp_op1 ) ; tmp1 = riscv_force_binary ( word_mode , GT , cmp_op0 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , IOR , tmp0 , tmp1 ) ; * op1 = const0_rtx ; break ;" GCC,riscv,555,"Predict the next statement of this code snippet: * code = EQ ; tmp0 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op0 ) ; tmp1 = riscv_force_binary ( word_mode , EQ , cmp_op1 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , AND , tmp0 , tmp1 ) ; * op1 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op1 ) ; break ; case CODE : \ * code = EQ ; \ * op0 = gen_reg_rtx ( word_mode ) ; \ if ( GET_MODE ( cmp_op0 ) == SFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietsfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == SFmode ) \ emit_insn ( gen_f ## CMP ## _quietsfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietdfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode ) \ emit_insn ( gen_f ## CMP ## _quietdfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == HFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quiethfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == HFmode ) \ emit_insn ( gen_f ## CMP ## _quiethfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else \ gcc_unreachable ( ) ; \ * op1 = const0_rtx ; \ break ; case UNLT : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGT , le ) case UNLE : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGE , lt ) case NE : fp_code = EQ ; * code = EQ ; case EQ : case LE : case LT : case GE : case GT : * op0 = riscv_force_binary ( word_mode , fp_code , cmp_op0 , cmp_op1 ) ; * op1 = const0_rtx ;" GCC,riscv,556,"Predict the next statement of this code snippet: if ( ! riscv_canonicalize_int_order_test ( & inv_code , & cmp1 , mode ) ) { cmp1 = force_reg ( mode , cmp1 ) ; riscv_emit_int_order_test ( code , invert_ptr , target , cmp0 , cmp1 ) ; } else if ( invert_ptr == ) { rtx inv_target = riscv_force_binary ( word_mode , inv_code , cmp0 , cmp1 ) ; riscv_emit_binary ( EQ , target , inv_target , const0_rtx ) ;" GCC,riscv,557,"Predict the next statement of this code snippet: static void riscv_emit_prologue_components ( sbitmap components ) { riscv_process_components ( components , true ) ;" GCC,riscv,558,"Predict the next statement of this code snippet: riscv_process_components ( components , true ) ;" GCC,riscv,559,"Predict the next statement of this code snippet: case EXCESS_PRECISION_TYPE_STANDARD : return ( ( TARGET_ZFH || TARGET_ZHINX ) ? FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 : FLT_EVAL_METHOD_PROMOTE_TO_FLOAT ) ; case EXCESS_PRECISION_TYPE_IMPLICIT : case EXCESS_PRECISION_TYPE_FLOAT16 :" GCC,riscv,560,"Predict the next statement of this code snippet: case EXCESS_PRECISION_TYPE_FAST : case EXCESS_PRECISION_TYPE_STANDARD : return ( ( TARGET_ZFH || TARGET_ZHINX ) ? FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 : FLT_EVAL_METHOD_PROMOTE_TO_FLOAT ) ; case EXCESS_PRECISION_TYPE_IMPLICIT : case EXCESS_PRECISION_TYPE_FLOAT16 : return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 ;" GCC,riscv,561,"Predict the next statement of this code snippet: if ( TARGET_XTHEADCONDMOV && GET_MODE_CLASS ( mode ) == MODE_INT && reg_or_0_operand ( cons , mode ) && reg_or_0_operand ( alt , mode ) && GET_MODE ( op ) == mode && GET_MODE ( op0 ) == mode && GET_MODE ( op1 ) == mode && ( code == EQ || code == NE ) ) { riscv_expand_conditional_move_onesided ( dest , cons , alt , code , op0 , op1 ) ; return true ; } else if ( TARGET_SFB_ALU && mode == word_mode ) { riscv_emit_int_compare ( & code , & op0 , & op1 ) ; rtx cond = gen_rtx_fmt_ee ( code , GET_MODE ( op0 ) , op0 , op1 ) ;" GCC,riscv,562,"Predict the next statement of this code snippet: gcc_assert ( GET_MODE_CLASS ( mode ) == MODE_INT ) ; gcc_assert ( reg_or_0_operand ( cons , mode ) ) ; gcc_assert ( reg_or_0_operand ( alt , mode ) ) ; riscv_emit_int_compare ( & code , & op0 , & op1 , true ) ; rtx cond = gen_rtx_fmt_ee ( code , mode , op0 , op1 ) ; rtx tmp1 = gen_reg_rtx ( mode ) ; rtx tmp2 = gen_reg_rtx ( mode ) ; emit_insn ( gen_rtx_SET ( tmp1 , gen_rtx_IF_THEN_ELSE ( mode , cond , cons , const0_rtx ) ) ) ; cond = gen_rtx_fmt_ee ( ( code == EQ ) ? NE : EQ , mode , op0 , op1 ) ; emit_insn ( gen_rtx_SET ( tmp2 , gen_rtx_IF_THEN_ELSE ( mode , cond , alt , const0_rtx ) ) ) ; emit_insn ( gen_rtx_SET ( dest , gen_rtx_IOR ( mode , tmp1 , tmp2 ) ) ) ;" GCC,riscv,563,"Predict the next statement of this code snippet: machine_mode mode = GET_MODE ( dest ) ; gcc_assert ( GET_MODE_CLASS ( mode ) == MODE_INT ) ; gcc_assert ( reg_or_0_operand ( cons , mode ) ) ; gcc_assert ( reg_or_0_operand ( alt , mode ) ) ; riscv_emit_int_compare ( & code , & op0 , & op1 , true ) ; rtx cond = gen_rtx_fmt_ee ( code , mode , op0 , op1 ) ;" GCC,riscv,564,"Predict the next statement of this code snippet: rtx ra = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; rtx insn ; bool need_barrier_p = known_ne ( get_frame_size ( ) + cfun -> machine -> frame . arg_pointer_offset , ) ; if ( cfun -> machine -> naked_p ) { gcc_assert ( style == NORMAL_RETURN ) ; emit_jump_insn ( gen_return ( ) ) ; return ; } if ( ( style == NORMAL_RETURN ) && riscv_can_use_return_insn ( ) ) { emit_jump_insn ( gen_return ( ) ) ; return ; } epilogue_cfa_sp_offset = ; if ( cfun -> calls_alloca ) { riscv_emit_stack_tie ( ) ; need_barrier_p = false ; poly_int64 adjust_offset = - frame -> hard_frame_pointer_offset ; rtx adjust = NULL_RTX ; if ( ! adjust_offset . is_constant ( ) ) { rtx tmp1 = RISCV_PROLOGUE_TEMP ( Pmode ) ; rtx tmp2 = RISCV_PROLOGUE_TEMP2 ( Pmode ) ; riscv_legitimize_poly_move ( Pmode , tmp1 , tmp2 , gen_int_mode ( adjust_offset , Pmode ) ) ; adjust = tmp1 ; } else { if ( ! SMALL_OPERAND ( adjust_offset . to_constant ( ) ) ) { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , GEN_INT ( adjust_offset . to_constant ( ) ) ) ; adjust = RISCV_PROLOGUE_TEMP ( Pmode ) ; } else adjust = GEN_INT ( adjust_offset . to_constant ( ) ) ; } insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , hard_frame_pointer_rtx , adjust ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_value = gen_rtx_PLUS ( Pmode , hard_frame_pointer_rtx , gen_int_mode ( - frame -> hard_frame_pointer_offset , Pmode ) ) ; rtx cfa_adjust_rtx = gen_rtx_SET ( stack_pointer_rtx , cfa_adjust_value ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { step2 = riscv_first_stack_step ( frame ) ; step1 -= step2 ; } if ( known_gt ( step1 , ) ) { riscv_emit_stack_tie ( ) ; need_barrier_p = false ; if ( ! step1 . is_constant ( ) ) { poly_int64 scalable_frame = step1 ; scalable_frame . coeffs [ ] = step1 . coeffs [ ] ; riscv_v_adjust_scalable_frame ( stack_pointer_rtx , scalable_frame , true ) ; step1 -= scalable_frame ; } if ( step1 . to_constant ( ) != ) { rtx adjust = GEN_INT ( step1 . to_constant ( ) ) ; if ( ! SMALL_OPERAND ( step1 . to_constant ( ) ) ) { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , adjust ) ; adjust = RISCV_PROLOGUE_TEMP ( Pmode ) ; } insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , adjust ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_rtx = gen_rtx_PLUS ( Pmode , stack_pointer_rtx , GEN_INT ( step2 ) ) ; dwarf = alloc_reg_note ( REG_CFA_DEF_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ;" GCC,riscv,565,"Predict the next statement of this code snippet: rtx insn ; bool need_barrier_p = known_ne ( get_frame_size ( ) + cfun -> machine -> frame . arg_pointer_offset , ) ; if ( cfun -> machine -> naked_p ) { gcc_assert ( style == NORMAL_RETURN ) ; emit_jump_insn ( gen_return ( ) ) ; return ; } if ( ( style == NORMAL_RETURN ) && riscv_can_use_return_insn ( ) ) { emit_jump_insn ( gen_return ( ) ) ; return ; } epilogue_cfa_sp_offset = ; if ( cfun -> calls_alloca ) { riscv_emit_stack_tie ( ) ; need_barrier_p = false ; poly_int64 adjust_offset = - frame -> hard_frame_pointer_offset ; rtx adjust = NULL_RTX ; if ( ! adjust_offset . is_constant ( ) ) { rtx tmp1 = RISCV_PROLOGUE_TEMP ( Pmode ) ; rtx tmp2 = RISCV_PROLOGUE_TEMP2 ( Pmode ) ; riscv_legitimize_poly_move ( Pmode , tmp1 , tmp2 , gen_int_mode ( adjust_offset , Pmode ) ) ; adjust = tmp1 ; } else { if ( ! SMALL_OPERAND ( adjust_offset . to_constant ( ) ) ) { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , GEN_INT ( adjust_offset . to_constant ( ) ) ) ; adjust = RISCV_PROLOGUE_TEMP ( Pmode ) ; } else adjust = GEN_INT ( adjust_offset . to_constant ( ) ) ; } insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , hard_frame_pointer_rtx , adjust ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_value = gen_rtx_PLUS ( Pmode , hard_frame_pointer_rtx , gen_int_mode ( - frame -> hard_frame_pointer_offset , Pmode ) ) ; rtx cfa_adjust_rtx = gen_rtx_SET ( stack_pointer_rtx , cfa_adjust_value ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { step2 = riscv_first_stack_step ( frame ) ; step1 -= step2 ; } if ( known_gt ( step1 , ) ) { riscv_emit_stack_tie ( ) ; need_barrier_p = false ; if ( ! step1 . is_constant ( ) ) {" GCC,riscv,566,"Predict the next statement of this code snippet: static void riscv_expand_mult_with_const_int ( machine_mode mode , rtx dest , rtx multiplicand , int multiplier ) { if ( multiplier == ) { riscv_emit_move ( dest , GEN_INT ( ) ) ; return ; } bool neg_p = multiplier < ; int multiplier_abs = abs ( multiplier ) ; if ( multiplier_abs == ) { if ( neg_p ) riscv_expand_op ( NEG , mode , dest , multiplicand , NULL_RTX ) ; else riscv_emit_move ( dest , multiplicand ) ; } else { if ( pow2p_hwi ( multiplier_abs ) ) { riscv_expand_op ( ASHIFT , mode , dest , multiplicand , gen_int_mode ( exact_log2 ( multiplier_abs ) , QImode ) ) ; if ( neg_p ) riscv_expand_op ( NEG , mode , dest , dest , NULL_RTX ) ; } else if ( pow2p_hwi ( multiplier_abs + ) ) { riscv_expand_op ( ASHIFT , mode , dest , multiplicand , gen_int_mode ( exact_log2 ( multiplier_abs + ) , QImode ) ) ; if ( neg_p ) riscv_expand_op ( MINUS , mode , dest , multiplicand , dest ) ; else riscv_expand_op ( MINUS , mode , dest , dest , multiplicand ) ; } else if ( pow2p_hwi ( multiplier - ) ) { riscv_expand_op ( ASHIFT , mode , dest , multiplicand , gen_int_mode ( exact_log2 ( multiplier_abs - ) , QImode ) ) ; riscv_expand_op ( PLUS , mode , dest , dest , multiplicand ) ; if ( neg_p ) riscv_expand_op ( NEG , mode , dest , dest , NULL_RTX ) ; } else { gcc_assert ( TARGET_MUL && ) ; riscv_emit_move ( dest , gen_int_mode ( multiplier , mode ) ) ; riscv_expand_op ( MULT , mode , dest , dest , multiplicand ) ; } }" GCC,riscv,567,"Predict the next statement of this code snippet: if ( GET_RTX_CLASS ( code ) == RTX_UNARY ) result = expand_simple_unop ( mode , code , op1 , NULL_RTX , false ) ; else result = expand_simple_binop ( mode , code , op1 , op2 , NULL_RTX , false , OPTAB_DIRECT ) ; riscv_emit_move ( op0 , result ) ; } else { rtx pat ; if ( GET_RTX_CLASS ( code ) == RTX_UNARY ) pat = gen_rtx_fmt_e ( code , mode , op1 ) ;" GCC,riscv,568,"Predict the next statement of this code snippet: riscv_emit_move ( op0 , result ) ; } else { rtx pat ; if ( GET_RTX_CLASS ( code ) == RTX_UNARY ) pat = gen_rtx_fmt_e ( code , mode , op1 ) ; else pat = gen_rtx_fmt_ee ( code , mode , op1 , op2 ) ; emit_insn ( gen_rtx_SET ( op0 , pat ) ) ; }" GCC,riscv,569,"Predict the next statement of this code snippet: rtx dwarf = NULL_RTX ; dwarf = riscv_adjust_libcall_cfi_prologue ( ) ; size -= frame -> save_libcall_adjustment ; insn = emit_insn ( riscv_gen_gpr_save_insn ( frame ) ) ; frame -> mask = ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { HOST_WIDE_INT step1 = riscv_first_stack_step ( frame ) ; if ( size . is_constant ( ) ) step1 = MIN ( size . to_constant ( ) , step1 ) ; insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - step1 ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; size -= step1 ; riscv_for_each_saved_reg ( size , riscv_save_reg , false , false ) ; } frame -> mask = mask ; if ( frame_pointer_needed ) { insn = gen_add3_insn ( hard_frame_pointer_rtx , stack_pointer_rtx , GEN_INT ( ( frame -> hard_frame_pointer_offset - size ) . to_constant ( ) ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; riscv_emit_stack_tie ( ) ; } if ( known_gt ( size , ) ) { poly_int64 scalable_frame ( , ) ; if ( ! size . is_constant ( ) ) {" GCC,riscv,570,"Predict the next statement of this code snippet: riscv_emit_stack_tie ( ) ; } if ( known_gt ( size , ) ) { poly_int64 scalable_frame ( , ) ; if ( ! size . is_constant ( ) ) { poly_int64 scalable_frame = size ; scalable_frame . coeffs [ ] = size . coeffs [ ] ; riscv_v_adjust_scalable_frame ( stack_pointer_rtx , scalable_frame , false ) ; size -= scalable_frame ; } HOST_WIDE_INT constant_frame = size . to_constant ( ) ; if ( constant_frame == ) return ; if ( SMALL_OPERAND ( - constant_frame ) ) { insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - constant_frame ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; } else { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , GEN_INT ( - constant_frame ) ) ; emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , RISCV_PROLOGUE_TEMP ( Pmode ) ) ) ;" GCC,riscv,571,"Predict the next statement of this code snippet: if ( unsigned_condition ( code ) == code && ( GET_MODE ( * op0 ) == QImode && ! ( GET_CODE ( * op0 ) == SUBREG && SUBREG_PROMOTED_VAR_P ( * op0 ) && SUBREG_PROMOTED_SIGNED_P ( * op0 ) && ( CONST_INT_P ( * op1 ) || ( GET_CODE ( * op1 ) == SUBREG && SUBREG_PROMOTED_VAR_P ( * op1 ) && SUBREG_PROMOTED_SIGNED_P ( * op1 ) ) ) ) ) ) { * op0 = gen_rtx_ZERO_EXTEND ( word_mode , * op0 ) ; if ( CONST_INT_P ( * op1 ) ) * op1 = GEN_INT ( ( uint8_t ) INTVAL ( * op1 ) ) ; else * op1 = gen_rtx_ZERO_EXTEND ( word_mode , * op1 ) ; } else { * op0 = gen_rtx_SIGN_EXTEND ( word_mode , * op0 ) ; if ( * op1 != const0_rtx ) * op1 = gen_rtx_SIGN_EXTEND ( word_mode , * op1 ) ;" GCC,riscv,572,"Predict the next statement of this code snippet: fprintf ( asm_out_file , , ( flag_pic ? : ) ) ; if ( ! riscv_mrelax ) fprintf ( asm_out_file , ) ; if ( riscv_mcsr_check ) fprintf ( asm_out_file , ) ;" GCC,riscv,573,"Predict the next statement of this code snippet: if ( ! SMALL_OPERAND ( min_second_step ) && frame_total_constant_size % IMM_REACH < IMM_REACH / && frame_total_constant_size % IMM_REACH >= min_first_step ) return frame_total_constant_size % IMM_REACH ; if ( TARGET_RVC ) { if ( IN_RANGE ( min_second_step , , ( TARGET_64BIT ? SDSP_REACH : SWSP_REACH ) ) ) return MAX ( min_second_step , min_first_step ) ; else if ( ! SMALL_OPERAND ( min_second_step ) ) return min_first_step ; }" GCC,riscv,574,"Predict the next statement of this code snippet: else frame_total_constant_size = frame -> total_size . to_constant ( ) ; if ( SMALL_OPERAND ( frame_total_constant_size ) ) return frame_total_constant_size ; HOST_WIDE_INT min_first_step = RISCV_STACK_ALIGN ( ( frame -> total_size - frame -> frame_pointer_offset ) . to_constant ( ) ) ; HOST_WIDE_INT max_first_step = IMM_REACH / - PREFERRED_STACK_BOUNDARY / ; HOST_WIDE_INT min_second_step = frame_total_constant_size - max_first_step ; gcc_assert ( min_first_step <= max_first_step ) ; if ( ! SMALL_OPERAND ( min_second_step ) && frame_total_constant_size % IMM_REACH < IMM_REACH / && frame_total_constant_size % IMM_REACH >= min_first_step ) return frame_total_constant_size % IMM_REACH ; if ( TARGET_RVC ) { if ( IN_RANGE ( min_second_step , , ( TARGET_64BIT ? SDSP_REACH : SWSP_REACH ) ) ) return MAX ( min_second_step , min_first_step ) ; else if ( ! SMALL_OPERAND ( min_second_step ) ) return min_first_step ; }" GCC,riscv,575,"Predict the next statement of this code snippet: if ( ignore_zero_width_bit_field_p && DECL_BIT_FIELD ( f ) && ( DECL_SIZE ( f ) == NULL_TREE || integer_zerop ( DECL_SIZE ( f ) ) ) ) ; else { HOST_WIDE_INT pos = offset + int_byte_position ( f ) ; n = riscv_flatten_aggregate_field ( TREE_TYPE ( f ) , fields , n , pos , ignore_zero_width_bit_field_p ) ; } if ( n < ) return - ; } return n ; case ARRAY_TYPE : { HOST_WIDE_INT n_elts ; riscv_aggregate_field subfields [ ] ; tree index = TYPE_DOMAIN ( type ) ; tree elt_size = TYPE_SIZE_UNIT ( TREE_TYPE ( type ) ) ; int n_subfields = riscv_flatten_aggregate_field ( TREE_TYPE ( type ) , subfields , , offset , ignore_zero_width_bit_field_p ) ; if ( n_subfields <= || ! COMPLETE_TYPE_P ( type ) || TREE_CODE ( TYPE_SIZE ( type ) ) != INTEGER_CST || ! index || ! TYPE_MAX_VALUE ( index ) || ! tree_fits_uhwi_p ( TYPE_MAX_VALUE ( index ) ) || ! TYPE_MIN_VALUE ( index ) || ! tree_fits_uhwi_p ( TYPE_MIN_VALUE ( index ) ) || ! tree_fits_uhwi_p ( elt_size ) ) return - ; n_elts = + tree_to_uhwi ( TYPE_MAX_VALUE ( index ) ) - tree_to_uhwi ( TYPE_MIN_VALUE ( index ) ) ; gcc_assert ( n_elts >= ) ; for ( HOST_WIDE_INT i = ; i < n_elts ; i ++ ) for ( int j = ; j < n_subfields ; j ++ ) { if ( n >= ) return - ; fields [ n ] = subfields [ j ] ;" GCC,riscv,576,"Predict the next statement of this code snippet: bool load_p = ( fn == riscv_restore_reg ) ; rtx operands [ ] ; th_mempair_prepare_save_restore_operands ( operands , load_p , word_mode , regno , offset , regno2 , offset2 ) ; if ( th_mempair_operands_p ( operands , load_p , word_mode ) ) { th_mempair_save_restore_regs ( operands , load_p , word_mode ) ; offset = offset2 ; regno = regno2 ; continue ; } } } riscv_save_restore_reg ( word_mode , regno , offset , fn ) ; } offset = ( cfun -> machine -> frame . fp_sp_offset - sp_offset ) . to_constant ( ) ;" GCC,riscv,577,"Predict the next statement of this code snippet: } } } riscv_save_restore_reg ( word_mode , regno , offset , fn ) ; } offset = ( cfun -> machine -> frame . fp_sp_offset - sp_offset ) . to_constant ( ) ; for ( unsigned int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . fmask , regno - FP_REG_FIRST ) ) { bool handle_reg = ! cfun -> machine -> reg_is_wrapped_separately [ regno ] ; machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode ; if ( handle_reg ) riscv_save_restore_reg ( mode , regno , offset , fn ) ;" GCC,riscv,578,"Predict the next statement of this code snippet: gcc_unreachable ( ) ; } if ( ( info -> num_fprs = riscv_pass_mode_in_fpr_p ( mode ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( GET_MODE_CLASS ( mode ) ) { case MODE_FLOAT : return gen_rtx_REG ( mode , fregno ) ; case MODE_COMPLEX_FLOAT : return riscv_pass_fpr_pair ( mode , fregno , GET_MODE_INNER ( mode ) , , fregno + , GET_MODE_INNER ( mode ) , GET_MODE_UNIT_SIZE ( mode ) ) ; default : gcc_unreachable ( ) ; } if ( riscv_pass_aggregate_in_fpr_and_gpr_p ( type , fields ) && info -> gpr_offset < MAX_ARGS_IN_REGISTERS && info -> fpr_offset < MAX_ARGS_IN_REGISTERS ) { info -> num_gprs = ; info -> num_fprs = ; if ( ! SCALAR_FLOAT_TYPE_P ( fields [ ] . type ) ) std :: swap ( fregno , gregno ) ; return riscv_pass_fpr_pair ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset , gregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ;" GCC,riscv,579,"Predict the next statement of this code snippet: HOST_WIDE_INT offset ; sbitmap components = sbitmap_alloc ( FIRST_PSEUDO_REGISTER ) ; bitmap_clear ( components ) ; if ( riscv_use_save_libcall ( & cfun -> machine -> frame ) || cfun -> machine -> interrupt_handler_p || ! cfun -> machine -> frame . gp_sp_offset . is_constant ( ) ) return components ; offset = cfun -> machine -> frame . gp_sp_offset . to_constant ( ) ;" GCC,riscv,580,"Predict the next statement of this code snippet: } offset = cfun -> machine -> frame . fp_sp_offset . to_constant ( ) ; for ( unsigned int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . fmask , regno - FP_REG_FIRST ) ) { machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode ; if ( SMALL_OPERAND ( offset ) ) bitmap_set_bit ( components , regno ) ; offset -= GET_MODE_SIZE ( mode ) . to_constant ( ) ; } if ( frame_pointer_needed ) bitmap_clear_bit ( components , HARD_FRAME_POINTER_REGNUM ) ; bitmap_clear_bit ( components , RETURN_ADDR_REGNUM ) ; return components ;" GCC,riscv,581,"Predict the next statement of this code snippet: } else if ( FP_REG_P ( regno ) ) { if ( riscv_v_ext_vector_mode_p ( mode ) ) return false ; if ( ! FP_REG_P ( regno + nregs - ) ) return false ; if ( GET_MODE_CLASS ( mode ) != MODE_FLOAT && GET_MODE_CLASS ( mode ) != MODE_COMPLEX_FLOAT ) return false ; if ( GET_MODE_UNIT_SIZE ( mode ) > UNITS_PER_FP_REG || ( ! call_used_or_fixed_reg_p ( regno ) && GET_MODE_UNIT_SIZE ( mode ) > UNITS_PER_FP_ARG ) ) return false ; } else if ( V_REG_P ( regno ) ) { if ( ! riscv_v_ext_vector_mode_p ( mode ) ) return false ; if ( ! V_REG_P ( regno + nregs - ) ) return false ; int lmul = ; if ( known_gt ( GET_MODE_SIZE ( mode ) , UNITS_PER_V_REG ) ) lmul = exact_div ( GET_MODE_SIZE ( mode ) , UNITS_PER_V_REG ) . to_constant ( ) ; if ( lmul != ) return ( ( regno % lmul ) == ) ; } else if ( regno == VL_REGNUM || regno == VTYPE_REGNUM ) return true ; else return false ; for ( unsigned i = ; i < nregs ; i ++ ) if ( call_used_or_fixed_reg_p ( regno ) != call_used_or_fixed_reg_p ( regno + i ) ) return false ; if ( ! TARGET_64BIT && TARGET_ZDINX ) { if ( GET_MODE_CLASS ( mode ) == MODE_FLOAT && GET_MODE_UNIT_SIZE ( mode ) == GET_MODE_SIZE ( DFmode ) ) return ! ( regno & ) ; }" GCC,riscv,582,"Predict the next statement of this code snippet: if ( known_gt ( GET_MODE_SIZE ( mode ) , UNITS_PER_V_REG ) ) lmul = exact_div ( GET_MODE_SIZE ( mode ) , UNITS_PER_V_REG ) . to_constant ( ) ; if ( lmul != ) return ( ( regno % lmul ) == ) ; } else if ( regno == VL_REGNUM || regno == VTYPE_REGNUM ) return true ; else return false ; for ( unsigned i = ; i < nregs ; i ++ ) if ( call_used_or_fixed_reg_p ( regno ) != call_used_or_fixed_reg_p ( regno + i ) ) return false ; if ( ! TARGET_64BIT && TARGET_ZDINX ) { if ( GET_MODE_CLASS ( mode ) == MODE_FLOAT && GET_MODE_UNIT_SIZE ( mode ) == GET_MODE_SIZE ( DFmode ) ) return ! ( regno & ) ; } return true ;" GCC,riscv,583,"Predict the next statement of this code snippet: if ( riscv_v_ext_vector_mode_p ( mode ) ) { if ( maybe_lt ( GET_MODE_SIZE ( mode ) , UNITS_PER_V_REG ) ) return ; return exact_div ( GET_MODE_SIZE ( mode ) , UNITS_PER_V_REG ) . to_constant ( ) ; } if ( regno == VTYPE_REGNUM || regno == VL_REGNUM ) return ; if ( V_REG_P ( regno ) ) return ; if ( FP_REG_P ( regno ) ) return ( GET_MODE_SIZE ( mode ) . to_constant ( ) + UNITS_PER_FP_REG - ) / UNITS_PER_FP_REG ; return ( GET_MODE_SIZE ( mode ) . to_constant ( ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ;" GCC,riscv,584,"Predict the next statement of this code snippet: poly_int64 src , dest ; riscv_compute_frame_info ( ) ; if ( to == HARD_FRAME_POINTER_REGNUM ) dest = cfun -> machine -> frame . hard_frame_pointer_offset ; else if ( to == STACK_POINTER_REGNUM ) dest = ; else gcc_unreachable ( ) ; if ( from == FRAME_POINTER_REGNUM ) src = cfun -> machine -> frame . frame_pointer_offset ; else if ( from == ARG_POINTER_REGNUM ) src = cfun -> machine -> frame . arg_pointer_offset ; else gcc_unreachable ( ) ; return src - dest ;" GCC,riscv,585,"Predict the next statement of this code snippet: if ( from == FRAME_POINTER_REGNUM ) src = cfun -> machine -> frame . frame_pointer_offset ;" GCC,riscv,586,"Predict the next statement of this code snippet: set_optab_libfunc ( smul_optab , HFmode , NULL ) ; set_optab_libfunc ( neg_optab , HFmode , NULL ) ; set_optab_libfunc ( sub_optab , HFmode , NULL ) ; set_optab_libfunc ( eq_optab , HFmode , NULL ) ; set_optab_libfunc ( ne_optab , HFmode , NULL ) ; set_optab_libfunc ( lt_optab , HFmode , NULL ) ; set_optab_libfunc ( le_optab , HFmode , NULL ) ;" GCC,riscv,587,"Predict the next statement of this code snippet: if ( ! crtl -> calls_eh_return ) return false ; for ( i = ; ( regnum = EH_RETURN_DATA_REGNO ( i ) ) != INVALID_REGNUM ; i ++ ) if ( regno == regnum ) { return true ; } return false ;" GCC,riscv,588,"Predict the next statement of this code snippet: return true ; } poly_int64 value = rtx_to_poly_int64 ( src ) ; if ( ! value . is_constant ( ) && ! TARGET_VECTOR ) { riscv_report_v_required ( ) ; return false ; } if ( satisfies_constraint_vp ( src ) ) return false ; if ( GET_MODE_SIZE ( mode ) . to_constant ( ) < GET_MODE_SIZE ( Pmode ) ) { rtx tmp = gen_reg_rtx ( Pmode ) ; riscv_legitimize_poly_move ( Pmode , gen_lowpart ( Pmode , dest ) , tmp , src ) ; } else { rtx tmp = gen_reg_rtx ( mode ) ; riscv_legitimize_poly_move ( mode , dest , tmp , src ) ; } return true ; } if ( GET_MODE_CLASS ( mode ) == MODE_INT && GET_MODE_SIZE ( mode ) . to_constant ( ) < UNITS_PER_WORD && can_create_pseudo_p ( ) && MEM_P ( src ) ) { rtx temp_reg ; int zero_extend_p ; temp_reg = gen_reg_rtx ( word_mode ) ; zero_extend_p = ( LOAD_EXTEND_OP ( mode ) == ZERO_EXTEND ) ; emit_insn ( gen_extend_insn ( temp_reg , src , word_mode , mode , zero_extend_p ) ) ; riscv_emit_move ( dest , gen_lowpart ( mode , temp_reg ) ) ; return true ; } if ( ! register_operand ( dest , mode ) && ! reg_or_0_operand ( src , mode ) ) { rtx reg ; if ( GET_CODE ( src ) == CONST_INT ) { machine_mode promoted_mode = mode ; if ( GET_MODE_CLASS ( mode ) == MODE_INT && GET_MODE_SIZE ( mode ) . to_constant ( ) < UNITS_PER_WORD ) promoted_mode = word_mode ; if ( splittable_const_int_operand ( src , mode ) ) { reg = gen_reg_rtx ( promoted_mode ) ; riscv_move_integer ( reg , reg , INTVAL ( src ) , mode , FALSE ) ; } else reg = force_reg ( promoted_mode , src ) ; if ( promoted_mode != mode ) reg = gen_lowpart ( mode , reg ) ; } else reg = force_reg ( mode , src ) ; riscv_emit_move ( dest , reg ) ; return true ; } if ( CONSTANT_P ( src ) && ! move_operand ( src , mode ) ) { riscv_legitimize_const_move ( mode , dest , src ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , copy_rtx ( src ) ) ; return true ; } if ( MEM_P ( dest ) && ! riscv_legitimate_address_p ( mode , XEXP ( dest , ) , reload_completed ) ) { XEXP ( dest , ) = riscv_force_address ( XEXP ( dest , ) , mode ) ; } if ( MEM_P ( src ) && ! riscv_legitimate_address_p ( mode , XEXP ( src , ) , reload_completed ) ) { XEXP ( src , ) = riscv_force_address ( XEXP ( src , ) , mode ) ;" GCC,riscv,589,"Predict the next statement of this code snippet: int zero_extend_p ; temp_reg = gen_reg_rtx ( word_mode ) ; zero_extend_p = ( LOAD_EXTEND_OP ( mode ) == ZERO_EXTEND ) ; emit_insn ( gen_extend_insn ( temp_reg , src , word_mode , mode , zero_extend_p ) ) ; riscv_emit_move ( dest , gen_lowpart ( mode , temp_reg ) ) ; return true ; } if ( ! register_operand ( dest , mode ) && ! reg_or_0_operand ( src , mode ) ) { rtx reg ; if ( GET_CODE ( src ) == CONST_INT ) { machine_mode promoted_mode = mode ; if ( GET_MODE_CLASS ( mode ) == MODE_INT && GET_MODE_SIZE ( mode ) . to_constant ( ) < UNITS_PER_WORD ) promoted_mode = word_mode ; if ( splittable_const_int_operand ( src , mode ) ) { reg = gen_reg_rtx ( promoted_mode ) ; riscv_move_integer ( reg , reg , INTVAL ( src ) , mode , FALSE ) ; } else reg = force_reg ( promoted_mode , src ) ; if ( promoted_mode != mode ) reg = gen_lowpart ( mode , reg ) ; } else reg = force_reg ( mode , src ) ;" GCC,riscv,590,"Predict the next statement of this code snippet: int div_factor = ; emit_move_insn ( tmp , gen_int_mode ( BYTES_PER_RISCV_VECTOR , mode ) ) ; if ( BYTES_PER_RISCV_VECTOR . is_constant ( ) ) { gcc_assert ( value . is_constant ( ) ) ; riscv_emit_move ( dest , GEN_INT ( value . to_constant ( ) ) ) ; return ; } else if ( ( factor % vlenb ) == ) div_factor = ; else if ( ( factor % ( vlenb / ) ) == ) div_factor = ; else if ( ( factor % ( vlenb / ) ) == ) div_factor = ; else if ( ( factor % ( vlenb / ) ) == ) div_factor = ; else gcc_unreachable ( ) ; if ( div_factor != ) riscv_expand_op ( LSHIFTRT , mode , tmp , tmp , gen_int_mode ( exact_log2 ( div_factor ) , QImode ) ) ; riscv_expand_mult_with_const_int ( mode , dest , tmp , factor / ( vlenb / div_factor ) ) ; HOST_WIDE_INT constant = offset - factor ; if ( constant == ) return ; else if ( SMALL_OPERAND ( constant ) ) riscv_expand_op ( PLUS , mode , dest , dest , gen_int_mode ( constant , mode ) ) ; else { rtx high ; high = gen_int_mode ( CONST_HIGH_PART ( constant ) , mode ) ; constant = CONST_LOW_PART ( constant ) ; riscv_emit_move ( tmp , high ) ; riscv_expand_op ( PLUS , mode , dest , tmp , dest ) ;" GCC,riscv,591,"Predict the next statement of this code snippet: else if ( ( factor % ( vlenb / ) ) == ) div_factor = ; else gcc_unreachable ( ) ; if ( div_factor != ) riscv_expand_op ( LSHIFTRT , mode , tmp , tmp , gen_int_mode ( exact_log2 ( div_factor ) , QImode ) ) ; riscv_expand_mult_with_const_int ( mode , dest , tmp , factor / ( vlenb / div_factor ) ) ; HOST_WIDE_INT constant = offset - factor ; if ( constant == ) return ; else if ( SMALL_OPERAND ( constant ) ) riscv_expand_op ( PLUS , mode , dest , dest , gen_int_mode ( constant , mode ) ) ; else { rtx high ; high = gen_int_mode ( CONST_HIGH_PART ( constant ) , mode ) ; constant = CONST_LOW_PART ( constant ) ; riscv_emit_move ( tmp , high ) ; riscv_expand_op ( PLUS , mode , dest , tmp , dest ) ; riscv_expand_op ( PLUS , mode , dest , dest , gen_int_mode ( constant , mode ) ) ; }" GCC,riscv,592,"Predict the next statement of this code snippet: bool might_split_p ; rtx set ; gcc_assert ( MEM_P ( mem ) ) ; mode = GET_MODE ( mem ) ; might_split_p = true ; if ( GET_MODE_BITSIZE ( mode ) . to_constant ( ) <= ) might_split_p = false ; else if ( GET_MODE_BITSIZE ( mode ) . to_constant ( ) == ) { set = single_set ( insn ) ; if ( set && ! riscv_split_64bit_move_p ( SET_DEST ( set ) , SET_SRC ( set ) ) ) might_split_p = false ; }" GCC,riscv,593,"Predict the next statement of this code snippet: if ( TREE_CODE ( type ) == REAL_TYPE && TYPE_PRECISION ( type ) == ) return ; if ( TYPE_NAME ( type ) != NULL ) { const char * res = ( type ) ;" GCC,riscv,594,"Predict the next statement of this code snippet: if ( TREE_CODE ( type ) == REAL_TYPE && TYPE_PRECISION ( type ) == ) return ; if ( TYPE_NAME ( type ) != NULL ) {" GCC,riscv,595,"Predict the next statement of this code snippet: for ( i = ; i < num_ops ; i ++ ) { if ( ! can_create_pseudo ) x = riscv_emit_set ( temp , x ) ; else x = force_reg ( mode , x ) ; codes [ i ] . value = trunc_int_for_mode ( codes [ i ] . value , mode ) ; x = gen_rtx_fmt_ee ( codes [ i ] . code , mode , x , GEN_INT ( codes [ i ] . value ) ) ; } }" GCC,riscv,596,"Predict the next statement of this code snippet: mode = GET_MODE ( dest ) ; num_ops = riscv_build_integer ( codes , value , orig_mode ) ; if ( can_create_pseudo && num_ops > && num_ops >= riscv_split_integer_cost ( value ) ) x = riscv_split_integer ( value , mode ) ; else { codes [ ] . value = trunc_int_for_mode ( codes [ ] . value , mode ) ; x = GEN_INT ( codes [ ] . value ) ; for ( i = ; i < num_ops ; i ++ ) { if ( ! can_create_pseudo ) x = riscv_emit_set ( temp , x ) ; else x = force_reg ( mode , x ) ;" GCC,riscv,597,"Predict the next statement of this code snippet: if ( inc ) regno ++ ; while ( regno <= limit ) { if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { * offset = * offset - UNITS_PER_WORD ; return regno ; } regno ++ ; } return INVALID_REGNUM ;" GCC,riscv,598,"Predict the next statement of this code snippet: if ( dest_code == REG ) { if ( GP_REG_P ( REGNO ( dest ) ) ) return ; if ( FP_REG_P ( REGNO ( dest ) ) ) switch ( width ) { case : if ( TARGET_ZFHMIN ) return ; return ; case : return ; case : if ( TARGET_64BIT ) return ; gcc_assert ( src == CONST0_RTX ( mode ) ) ; return ; } } if ( dest_code == MEM ) switch ( width ) { case : return ; case : return ; case : return ; case : return ; } } if ( src_code == REG && FP_REG_P ( REGNO ( src ) ) ) { if ( dest_code == REG && FP_REG_P ( REGNO ( dest ) ) ) switch ( width ) { case : if ( TARGET_ZFH ) return ; return ; case : return ; case : return ; } if ( dest_code == MEM ) switch ( width ) { case : return ; case : return ; case : return ; } } if ( dest_code == REG && FP_REG_P ( REGNO ( dest ) ) ) { if ( src_code == MEM ) switch ( width ) { case :" GCC,riscv,599,"Predict the next statement of this code snippet: riscv_get_arg_info ( & info , cum , arg . mode , arg . type , arg . named , false ) ; if ( info . num_fprs ) return false ; }" GCC,riscv,600,"Predict the next statement of this code snippet: } else { if ( CONST_INT_P ( op ) ) asm_fprintf ( file , ) ; else asm_fprintf ( file , ) ; } break ; } case 'v' : { rtx elt ; if ( REG_P ( op ) ) asm_fprintf ( file , , reg_names [ REGNO ( op ) ] ) ; else { if ( ! const_vec_duplicate_p ( op , & elt ) ) output_operand_lossage ( ) ; else if ( satisfies_constraint_Wc0 ( op ) ) asm_fprintf ( file , ) ; else if ( satisfies_constraint_vi ( op ) || satisfies_constraint_vj ( op ) ) asm_fprintf ( file , , INTVAL ( elt ) ) ; else output_operand_lossage ( ) ; } break ; } case 'V' : { rtx elt ; if ( ! const_vec_duplicate_p ( op , & elt ) ) output_operand_lossage ( ) ; else if ( satisfies_constraint_vj ( op ) ) asm_fprintf ( file , , - INTVAL ( elt ) ) ; else output_operand_lossage ( ) ; break ; } case 'm' : { if ( riscv_v_ext_vector_mode_p ( mode ) ) { poly_int64 size = GET_MODE_SIZE ( mode ) ; unsigned int lmul ; if ( known_lt ( size , BYTES_PER_RISCV_VECTOR ) ) lmul = ; else lmul = exact_div ( size , BYTES_PER_RISCV_VECTOR ) . to_constant ( ) ; asm_fprintf ( file , , lmul ) ; } else if ( code == CONST_INT ) { unsigned int vlmul = UINTVAL ( op ) ; switch ( vlmul ) { case : asm_fprintf ( file , , ) ;" GCC,riscv,601,"Predict the next statement of this code snippet: offset -= UNITS_PER_WORD ; } offset = cfun -> machine -> frame . fp_sp_offset . to_constant ( ) ; for ( unsigned int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . fmask , regno - FP_REG_FIRST ) ) { machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode ;" GCC,riscv,602,"Predict the next statement of this code snippet: if ( type != NULL_TREE ) return promote_mode ( type , mode , punsignedp ) ; unsignedp = * punsignedp ; PROMOTE_MODE ( as_a < scalar_mode > ( mode ) , unsignedp , type ) ; * punsignedp = unsignedp ; return mode ;" GCC,riscv,603,"Predict the next statement of this code snippet: PROMOTE_MODE ( as_a < scalar_mode > ( mode ) , unsignedp , type ) ; * punsignedp = unsignedp ; return mode ;" GCC,riscv,604,"Predict the next statement of this code snippet: poly_uint64 riscv_regmode_natural_size ( machine_mode mode ) { if ( ! riscv_vector_chunks . is_constant ( ) && riscv_v_ext_vector_mode_p ( mode ) ) return BYTES_PER_RISCV_VECTOR ;" GCC,riscv,605,"Predict the next statement of this code snippet: if ( ! riscv_vector_chunks . is_constant ( ) && riscv_v_ext_vector_mode_p ( mode ) ) return BYTES_PER_RISCV_VECTOR ;" GCC,riscv,606,"Predict the next statement of this code snippet: init_adjust_machine_modes ( ) ; init_derived_machine_modes ( ) ; reinit_regs ( ) ;" GCC,riscv,607,"Predict the next statement of this code snippet: init_derived_machine_modes ( ) ; reinit_regs ( ) ;" GCC,riscv,608,"Predict the next statement of this code snippet: inform ( input_location , ) ;" GCC,riscv,609,"Predict the next statement of this code snippet: else return default_scalar_mode_supported_p ( mode ) ;" GCC,riscv,610,"Predict the next statement of this code snippet: static bool riscv_scalar_mode_supported_p ( scalar_mode mode ) { if ( mode == HFmode ) return true ; else return default_scalar_mode_supported_p ( mode ) ;" GCC,riscv,611,"Predict the next statement of this code snippet: static bool riscv_secondary_memory_needed ( machine_mode mode , reg_class_t class1 , reg_class_t class2 ) {" GCC,riscv,612,"Predict the next statement of this code snippet: static bool riscv_secondary_memory_needed ( machine_mode mode , reg_class_t class1 , reg_class_t class2 ) { return ( ! riscv_v_ext_vector_mode_p ( mode ) && GET_MODE_SIZE ( mode ) . to_constant ( ) > UNITS_PER_WORD && ( class1 == FP_REGS ) != ( class2 == FP_REGS ) && ! TARGET_XTHEADFMV ) ;" GCC,riscv,613,"Predict the next statement of this code snippet: local_cum = * get_cumulative_args ( cum ) ; if ( ! TYPE_NO_NAMED_ARGS_STDARG_P ( TREE_TYPE ( current_function_decl ) ) ) riscv_function_arg_advance ( pack_cumulative_args ( & local_cum ) , arg ) ; gp_saved = MAX_ARGS_IN_REGISTERS - local_cum . num_gprs ; if ( ! no_rtl && gp_saved > ) { rtx ptr = plus_constant ( Pmode , virtual_incoming_args_rtx , REG_PARM_STACK_SPACE ( cfun -> decl ) - gp_saved * UNITS_PER_WORD ) ; rtx mem = gen_frame_mem ( BLKmode , ptr ) ; set_mem_alias_set ( mem , get_varargs_alias_set ( ) ) ; move_block_from_reg ( local_cum . num_gprs + GP_ARG_FIRST , mem , gp_saved ) ; } if ( REG_PARM_STACK_SPACE ( cfun -> decl ) == ) cfun -> machine -> varargs_size = gp_saved * UNITS_PER_WORD ;" GCC,riscv,614,"Predict the next statement of this code snippet: static void riscv_setup_incoming_varargs ( cumulative_args_t cum , const function_arg_info & arg , int * pretend_size ATTRIBUTE_UNUSED , int no_rtl ) { CUMULATIVE_ARGS local_cum ; int gp_saved ; local_cum = * get_cumulative_args ( cum ) ; if ( ! TYPE_NO_NAMED_ARGS_STDARG_P ( TREE_TYPE ( current_function_decl ) ) ) riscv_function_arg_advance ( pack_cumulative_args ( & local_cum ) , arg ) ; gp_saved = MAX_ARGS_IN_REGISTERS - local_cum . num_gprs ; if ( ! no_rtl && gp_saved > ) { rtx ptr = plus_constant ( Pmode , virtual_incoming_args_rtx , REG_PARM_STACK_SPACE ( cfun -> decl ) - gp_saved * UNITS_PER_WORD ) ; rtx mem = gen_frame_mem ( BLKmode , ptr ) ; set_mem_alias_set ( mem , get_varargs_alias_set ( ) ) ; move_block_from_reg ( local_cum . num_gprs + GP_ARG_FIRST , mem , gp_saved ) ;" GCC,riscv,615,"Predict the next statement of this code snippet: static void riscv_set_handled_components ( sbitmap components ) { for ( unsigned int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( bitmap_bit_p ( components , regno ) ) cfun -> machine -> reg_is_wrapped_separately [ regno ] = true ;" GCC,riscv,616,"Predict the next statement of this code snippet: static void riscv_set_handled_components ( sbitmap components ) { for ( unsigned int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( bitmap_bit_p ( components , regno ) ) cfun -> machine -> reg_is_wrapped_separately [ regno ] = true ;" GCC,riscv,617,"Predict the next statement of this code snippet: slot_address = riscv_add_offset ( scratch , stack_pointer_rtx , cfun -> machine -> frame . gp_sp_offset . to_constant ( ) ) ;" GCC,riscv,618,"Predict the next statement of this code snippet: bool riscv_shamt_matches_mask_p ( int shamt , HOST_WIDE_INT mask ) { return shamt == ctz_hwi ( mask ) ;" GCC,riscv,619,"Predict the next statement of this code snippet: bool riscv_shamt_matches_mask_p ( int shamt , HOST_WIDE_INT mask ) {" GCC,riscv,620,"Predict the next statement of this code snippet: emit_insn ( gen_th_fmv_x_w ( low_dest , src ) ) ; emit_insn ( gen_th_fmv_x_hw ( high_dest , src ) ) ; return ; } } rtx low_dest = riscv_subword ( dest , false ) ; if ( REG_P ( low_dest ) && reg_overlap_mentioned_p ( low_dest , src ) ) { riscv_emit_move ( riscv_subword ( dest , true ) , riscv_subword ( src , true ) ) ; riscv_emit_move ( low_dest , riscv_subword ( src , false ) ) ; } else { riscv_emit_move ( low_dest , riscv_subword ( src , false ) ) ; riscv_emit_move ( riscv_subword ( dest , true ) , riscv_subword ( src , true ) ) ; }" GCC,riscv,621,"Predict the next statement of this code snippet: emit_insn ( gen_th_fmv_hw_w_x ( dest , high_src , low_src ) ) ; return ; } if ( FP_REG_RTX_P ( src ) ) { rtx low_dest = riscv_subword ( dest , false ) ; rtx high_dest = riscv_subword ( dest , true ) ; emit_insn ( gen_th_fmv_x_w ( low_dest , src ) ) ; emit_insn ( gen_th_fmv_x_hw ( high_dest , src ) ) ; return ; } } rtx low_dest = riscv_subword ( dest , false ) ; if ( REG_P ( low_dest ) && reg_overlap_mentioned_p ( low_dest , src ) ) { riscv_emit_move ( riscv_subword ( dest , true ) , riscv_subword ( src , true ) ) ; riscv_emit_move ( low_dest , riscv_subword ( src , false ) ) ; } else {" GCC,riscv,622,"Predict the next statement of this code snippet: rtx offset ; split_const ( x , & x , & offset ) ; if ( ! SYMBOL_REF_P ( x ) ) return false ; align = ( SYMBOL_REF_DECL ( x ) ? DECL_ALIGN ( SYMBOL_REF_DECL ( x ) ) : ) ; size = ( SYMBOL_REF_DECL ( x ) && DECL_SIZE ( SYMBOL_REF_DECL ( x ) ) ? tree_to_uhwi ( DECL_SIZE ( SYMBOL_REF_DECL ( x ) ) ) : * BITS_PER_WORD ) ; } else { align = GET_MODE_ALIGNMENT ( mode ) ; size = GET_MODE_BITSIZE ( mode ) . to_constant ( ) ;" GCC,riscv,623,"Predict the next statement of this code snippet: int align , size ; if ( riscv_symbol_insns ( sym_type ) == ) return false ; if ( ! riscv_split_symbol_type ( sym_type ) ) return false ; if ( mode == BLKmode ) { rtx offset ; split_const ( x , & x , & offset ) ; if ( ! SYMBOL_REF_P ( x ) ) return false ; align = ( SYMBOL_REF_DECL ( x ) ? DECL_ALIGN ( SYMBOL_REF_DECL ( x ) ) : ) ; size = ( SYMBOL_REF_DECL ( x ) && DECL_SIZE ( SYMBOL_REF_DECL ( x ) ) ? tree_to_uhwi ( DECL_SIZE ( SYMBOL_REF_DECL ( x ) ) ) : * BITS_PER_WORD ) ;" GCC,riscv,624,"Predict the next statement of this code snippet: static bool riscv_valid_offset_p ( rtx x , machine_mode mode ) { if ( ! const_arith_operand ( x , Pmode ) ) return false ; if ( GET_MODE_SIZE ( mode ) . to_constant ( ) > UNITS_PER_WORD && ! SMALL_OPERAND ( INTVAL ( x ) + GET_MODE_SIZE ( mode ) . to_constant ( ) - UNITS_PER_WORD ) ) return false ; return true ;" GCC,riscv,625,"Predict the next statement of this code snippet: if ( GET_MODE_SIZE ( mode ) . to_constant ( ) > UNITS_PER_WORD && ! SMALL_OPERAND ( INTVAL ( x ) + GET_MODE_SIZE ( mode ) . to_constant ( ) - UNITS_PER_WORD ) ) return false ; return true ;" GCC,riscv,626,"Predict the next statement of this code snippet: widest_int min_size = constant_lower_bound ( wi :: to_poly_widest ( TYPE_SIZE ( type ) ) ) ;" GCC,riscv,627,"Predict the next statement of this code snippet: if ( GET_MODE_CLASS ( TYPE_MODE ( type ) ) == MODE_VECTOR_BOOL ) return ; widest_int min_size = constant_lower_bound ( wi :: to_poly_widest ( TYPE_SIZE ( type ) ) ) ;" GCC,riscv,628,"Predict the next statement of this code snippet: if ( TARGET_VECTOR ) return riscv_v_ext_vector_mode_p ( mode ) ;" GCC,riscv,629,"Predict the next statement of this code snippet: poly_int64 riscv_v_adjust_bytesize ( machine_mode mode , int scale ) { if ( riscv_v_ext_vector_mode_p ( mode ) ) { poly_uint16 mode_size = GET_MODE_SIZE ( mode ) ; if ( maybe_eq ( mode_size , ( uint16_t ) - ) ) mode_size = riscv_vector_chunks * scale ; if ( known_gt ( mode_size , BYTES_PER_RISCV_VECTOR ) ) mode_size = BYTES_PER_RISCV_VECTOR ; return mode_size ; }" GCC,riscv,630,"Predict the next statement of this code snippet: poly_int64 riscv_v_adjust_bytesize ( machine_mode mode , int scale ) { if ( riscv_v_ext_vector_mode_p ( mode ) ) { poly_uint16 mode_size = GET_MODE_SIZE ( mode ) ; if ( maybe_eq ( mode_size , ( uint16_t ) - ) ) mode_size = riscv_vector_chunks * scale ; if ( known_gt ( mode_size , BYTES_PER_RISCV_VECTOR ) ) mode_size = BYTES_PER_RISCV_VECTOR ; return mode_size ;" GCC,riscv,631,"Predict the next statement of this code snippet: if ( riscv_v_ext_vector_mode_p ( mode ) ) return riscv_vector_chunks * scale ;" GCC,riscv,632,"Predict the next statement of this code snippet: if ( riscv_v_ext_vector_mode_p ( mode ) ) return riscv_vector_chunks * scale ;" GCC,riscv,633,"Predict the next statement of this code snippet: poly_int64 riscv_v_adjust_precision ( machine_mode mode , int scale ) {" GCC,riscv,634,"Predict the next statement of this code snippet: rtx insn , dwarf , adjust_frame_rtx ; riscv_legitimize_poly_move ( Pmode , adjust_size , tmp , gen_int_mode ( offset , Pmode ) ) ; if ( epilogue ) insn = gen_add3_insn ( target , target , adjust_size ) ; else insn = gen_sub3_insn ( target , target , adjust_size ) ; insn = emit_insn ( insn ) ; RTX_FRAME_RELATED_P ( insn ) = ; adjust_frame_rtx = gen_rtx_SET ( target , plus_constant ( Pmode , target , epilogue ? offset : - offset ) ) ; dwarf = alloc_reg_note ( REG_FRAME_RELATED_EXPR , copy_rtx ( adjust_frame_rtx ) , NULL_RTX ) ;" GCC,riscv,635,"Predict the next statement of this code snippet: if ( epilogue ) insn = gen_add3_insn ( target , target , adjust_size ) ; else insn = gen_sub3_insn ( target , target , adjust_size ) ; insn = emit_insn ( insn ) ; RTX_FRAME_RELATED_P ( insn ) = ; adjust_frame_rtx = gen_rtx_SET ( target , plus_constant ( Pmode , target , epilogue ? offset : - offset ) ) ; dwarf = alloc_reg_note ( REG_FRAME_RELATED_EXPR , copy_rtx ( adjust_frame_rtx ) , NULL_RTX ) ; REG_NOTES ( insn ) = dwarf ;" GCC,riscv,636,"Predict the next statement of this code snippet: bool riscv_v_ext_vector_mode_p ( machine_mode mode ) {" GCC,riscv,637,"Predict the next statement of this code snippet: switch ( mode ) { default :" GCC,riscv,638,"Predict the next statement of this code snippet: HARD_REG_SET riscv_zero_call_used_regs ( HARD_REG_SET need_zeroed_hardregs ) { HARD_REG_SET zeroed_hardregs ; CLEAR_HARD_REG_SET ( zeroed_hardregs ) ;" GCC,riscv,639,"Predict the next statement of this code snippet: return zeroed_hardregs | default_zero_call_used_regs ( need_zeroed_hardregs & ~ zeroed_hardregs ) ;" GCC,riscv,640,"Predict the next statement of this code snippet: if ( TEST_HARD_REG_BIT ( need_zeroed_hardregs , regno ) ) { vl_regno = regno ; break ; } } if ( vl_regno > GP_REG_LAST ) sorry ( , ) ; bool emitted_vlmax_vsetvl = false ; rtx vl = gen_rtx_REG ( Pmode , vl_regno ) ; for ( unsigned regno = V_REG_FIRST ; regno <= V_REG_LAST ; ++ regno ) { if ( TEST_HARD_REG_BIT ( need_zeroed_hardregs , regno ) ) { rtx target = regno_reg_rtx [ regno ] ; machine_mode mode = GET_MODE ( target ) ;" GCC,riscv,641,"Predict the next statement of this code snippet: HARD_REG_SET zeroed_hardregs ; CLEAR_HARD_REG_SET ( zeroed_hardregs ) ; unsigned vl_regno = INVALID_REGNUM ; for ( unsigned regno = GP_REG_FIRST + ; regno <= GP_REG_LAST ; regno ++ ) { if ( TEST_HARD_REG_BIT ( need_zeroed_hardregs , regno ) ) { vl_regno = regno ; break ; } } if ( vl_regno > GP_REG_LAST ) sorry ( , ) ; bool emitted_vlmax_vsetvl = false ; rtx vl = gen_rtx_REG ( Pmode , vl_regno ) ; for ( unsigned regno = V_REG_FIRST ; regno <= V_REG_LAST ; ++ regno ) {" GCC,riscv,642,"Predict the next statement of this code snippet: static int riscv_address_cost ( rtx addr , enum machine_mode mode , addr_space_t as ATTRIBUTE_UNUSED , bool speed ATTRIBUTE_UNUSED ) {" GCC,riscv,643,"Predict the next statement of this code snippet: if ( mode != BLKmode && might_split_p ) n += ( GET_MODE_SIZE ( mode ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ;" GCC,riscv,644,"Predict the next statement of this code snippet: int n = ; if ( ! riscv_classify_address ( & addr , x , mode , false ) ) return ;" GCC,riscv,645,"Predict the next statement of this code snippet: high = riscv_force_temporary ( temp , high ) ; reg = riscv_force_temporary ( temp , gen_rtx_PLUS ( Pmode , high , reg ) ) ;" GCC,riscv,646,"Predict the next statement of this code snippet: static rtx riscv_adjust_libcall_cfi_epilogue ( ) { rtx dwarf = NULL_RTX ; rtx adjust_sp_rtx , reg ; int saved_size = cfun -> machine -> frame . save_libcall_adjustment ; adjust_sp_rtx = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( saved_size ) ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , adjust_sp_rtx , dwarf ) ; for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST - ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { reg = gen_rtx_REG ( SImode , regno ) ; dwarf = alloc_reg_note ( REG_CFA_RESTORE , reg , dwarf ) ; } return dwarf ;" GCC,riscv,647,"Predict the next statement of this code snippet: rtx dwarf = NULL_RTX ; rtx adjust_sp_rtx , reg ; int saved_size = cfun -> machine -> frame . save_libcall_adjustment ;" GCC,riscv,648,"Predict the next statement of this code snippet: rtx dwarf = NULL_RTX ; rtx adjust_sp_rtx , reg , mem , insn ; int saved_size = cfun -> machine -> frame . save_libcall_adjustment ; int offset ; for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST - ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { if ( regno == RETURN_ADDR_REGNUM ) offset = saved_size - UNITS_PER_WORD ; else if ( regno == S0_REGNUM ) offset = saved_size - UNITS_PER_WORD * ; else if ( regno == S1_REGNUM ) offset = saved_size - UNITS_PER_WORD * ; else offset = saved_size - ( ( regno - S2_REGNUM + ) * UNITS_PER_WORD ) ; reg = gen_rtx_REG ( SImode , regno ) ;" GCC,riscv,649,"Predict the next statement of this code snippet: riscv_get_arg_info ( & arg , get_cumulative_args ( cum ) , mode , type , named , false ) ;" GCC,riscv,650,"Predict the next statement of this code snippet: riscv_get_arg_info ( & arg , get_cumulative_args ( cum ) , mode , type , named , false ) ;" GCC,riscv,651,"Predict the next statement of this code snippet: if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = LSHIFTRT ; alt_codes [ alt_cost - ] . value = shift ; memcpy ( codes , alt_codes , sizeof ( alt_codes ) ) ; cost = alt_cost ; } shifted_val = value << shift ; alt_cost = + riscv_build_integer_1 ( alt_codes , shifted_val , mode ) ; if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = LSHIFTRT ; alt_codes [ alt_cost - ] . value = shift ; memcpy ( codes , alt_codes , sizeof ( alt_codes ) ) ; cost = alt_cost ;" GCC,riscv,652,"Predict the next statement of this code snippet: if ( cost > && ( value & ) == ) { int shift = ctz_hwi ( value ) ; unsigned HOST_WIDE_INT x = value ; x = sext_hwi ( x >> shift , HOST_BITS_PER_WIDE_INT - shift ) ; if ( shift > IMM_BITS && ! SMALL_OPERAND ( x ) && LUI_OPERAND ( x << IMM_BITS ) ) shift -= IMM_BITS , x <<= IMM_BITS ; alt_cost = + riscv_build_integer_1 ( alt_codes , x , mode ) ; if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = ASHIFT ; alt_codes [ alt_cost - ] . value = shift ; memcpy ( codes , alt_codes , sizeof ( alt_codes ) ) ; cost = alt_cost ; }" GCC,riscv,653,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) == HIGH ) return true ; split_const ( x , & base , & offset ) ; if ( riscv_symbolic_constant_p ( base , & type ) ) { if ( SMALL_OPERAND ( INTVAL ( offset ) ) && riscv_symbol_insns ( type ) > ) return true ; if ( flag_pic ) return true ; }" GCC,riscv,654,"Predict the next statement of this code snippet: case LE : plus_one = trunc_int_for_mode ( UINTVAL ( * cmp1 ) + , mode ) ; if ( INTVAL ( * cmp1 ) < plus_one ) { * code = LT ; * cmp1 = force_reg ( mode , GEN_INT ( plus_one ) ) ; return true ; } break ; case LEU : plus_one = trunc_int_for_mode ( UINTVAL ( * cmp1 ) + , mode ) ; if ( plus_one != ) { * code = LTU ; * cmp1 = force_reg ( mode , GEN_INT ( plus_one ) ) ; return true ; } break ; default : break ;" GCC,riscv,655,"Predict the next statement of this code snippet: if ( riscv_int_order_operand_ok_p ( * code , * cmp1 ) ) return true ; if ( CONST_INT_P ( * cmp1 ) ) switch ( * code ) { case LE : plus_one = trunc_int_for_mode ( UINTVAL ( * cmp1 ) + , mode ) ; if ( INTVAL ( * cmp1 ) < plus_one ) { * code = LT ; * cmp1 = force_reg ( mode , GEN_INT ( plus_one ) ) ;" GCC,riscv,656,"Predict the next statement of this code snippet: bool riscv_can_use_return_insn ( void ) { return reload_completed && cfun -> machine -> frame . total_size == ;" GCC,riscv,657,"Predict the next statement of this code snippet: case REG : case SUBREG : info -> type = ADDRESS_REG ; info -> reg = x ; info -> offset = const0_rtx ; return riscv_valid_base_register_p ( info -> reg , mode , strict_p ) ; case PLUS : info -> type = ADDRESS_REG ; info -> reg = XEXP ( x , ) ; info -> offset = XEXP ( x , ) ;" GCC,riscv,658,"Predict the next statement of this code snippet: case REG : case SUBREG : info -> type = ADDRESS_REG ; info -> reg = x ; info -> offset = const0_rtx ; return riscv_valid_base_register_p ( info -> reg , mode , strict_p ) ; case PLUS : info -> type = ADDRESS_REG ; info -> reg = XEXP ( x , ) ;" GCC,riscv,659,"Predict the next statement of this code snippet: if ( reg_class_subset_p ( GR_REGS , rclass ) ) return riscv_hard_regno_nregs ( GP_REG_FIRST , mode ) ;" GCC,riscv,660,"Predict the next statement of this code snippet: memset ( frame , , sizeof ( * frame ) ) ; for ( regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( crtl -> calls_eh_return ) for ( i = ; ( regno = EH_RETURN_DATA_REGNO ( i ) ) != INVALID_REGNUM ; i ++ ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( TARGET_HARD_FLOAT ) for ( regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) ) frame -> fmask |= << ( regno - FP_REG_FIRST ) , num_f_saved ++ ; offset = crtl -> outgoing_args_size ; offset += RISCV_STACK_ALIGN ( get_frame_size ( ) ) ; frame -> frame_pointer_offset = offset ; if ( frame -> fmask ) offset += RISCV_STACK_ALIGN ( num_f_saved * UNITS_PER_FP_REG ) ; frame -> fp_sp_offset = offset - UNITS_PER_FP_REG ; if ( frame -> mask ) { unsigned x_save_size = RISCV_STACK_ALIGN ( num_x_saved * UNITS_PER_WORD ) ; unsigned num_save_restore = + riscv_save_libcall_count ( frame -> mask ) ; if ( RISCV_STACK_ALIGN ( num_save_restore * UNITS_PER_WORD ) == x_save_size ) frame -> save_libcall_adjustment = x_save_size ; offset += x_save_size ; } frame -> gp_sp_offset = offset - UNITS_PER_WORD ; frame -> hard_frame_pointer_offset = offset ; offset += RISCV_STACK_ALIGN ( cfun -> machine -> varargs_size ) ; frame -> arg_pointer_offset = offset ;" GCC,riscv,661,"Predict the next statement of this code snippet: static void riscv_conditional_register_usage ( void ) { if ( ! TARGET_HARD_FLOAT ) {" GCC,riscv,662,"Predict the next statement of this code snippet: char * name = ( char * ) alloca ( strlen ( s -> named . name ) + ) ; sprintf ( name , , s -> named . name + ) ; return get_section ( name , s -> named . common . flags , NULL ) ; } if ( s == data_section ) return sdata_section ; } return s ;" GCC,riscv,663,"Predict the next statement of this code snippet: * code = EQ ; case ORDERED : tmp0 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op0 ) ; tmp1 = riscv_force_binary ( word_mode , EQ , cmp_op1 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , AND , tmp0 , tmp1 ) ; * op1 = const0_rtx ; break ; case UNEQ : case LTGT : * code = fp_code == LTGT ? GTU : EQ ; tmp0 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op0 ) ; tmp1 = riscv_force_binary ( word_mode , EQ , cmp_op1 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , AND , tmp0 , tmp1 ) ; * op1 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op1 ) ; break ; case CODE : \ * code = EQ ; \ * op0 = gen_reg_rtx ( word_mode ) ; \ if ( GET_MODE ( cmp_op0 ) == SFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietsfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == SFmode ) \ emit_insn ( gen_f ## CMP ## _quietsfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietdfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode ) \ emit_insn ( gen_f ## CMP ## _quietdfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else \ gcc_unreachable ( ) ; \ * op1 = const0_rtx ; \ break ; case UNLT : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGT , le ) case UNLE : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGE , lt ) case NE : fp_code = EQ ; * code = EQ ; case EQ : case LE : case LT : case GE : case GT : * op0 = riscv_force_binary ( word_mode , fp_code , cmp_op0 , cmp_op1 ) ; * op1 = const0_rtx ; break ; default :" GCC,riscv,664,"Predict the next statement of this code snippet: } else if ( invert_ptr == ) { rtx inv_target = riscv_force_binary ( GET_MODE ( target ) , inv_code , cmp0 , cmp1 ) ; riscv_emit_binary ( XOR , target , inv_target , const1_rtx ) ; } else { * invert_ptr = ! * invert_ptr ; riscv_emit_binary ( inv_code , target , cmp0 , cmp1 ) ; } }" GCC,riscv,665,"Predict the next statement of this code snippet: step1 -= step2 ; } if ( step1 > ) { riscv_emit_stack_tie ( ) ; need_barrier_p = false ; rtx adjust = GEN_INT ( step1 ) ; if ( ! SMALL_OPERAND ( step1 ) ) { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , adjust ) ; adjust = RISCV_PROLOGUE_TEMP ( Pmode ) ; } insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , adjust ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_rtx = gen_rtx_PLUS ( Pmode , stack_pointer_rtx , GEN_INT ( step2 ) ) ; dwarf = alloc_reg_note ( REG_CFA_DEF_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( use_restore_libcall ) frame -> mask = ; riscv_for_each_saved_reg ( frame -> total_size - step2 , riscv_restore_reg ) ; if ( use_restore_libcall ) { frame -> mask = mask ; gcc_assert ( step2 >= frame -> save_libcall_adjustment ) ; step2 -= frame -> save_libcall_adjustment ; } if ( need_barrier_p ) riscv_emit_stack_tie ( ) ;" GCC,riscv,666,"Predict the next statement of this code snippet: insn = emit_insn ( gen_gpr_save ( GEN_INT ( mask ) ) ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { HOST_WIDE_INT step1 = MIN ( size , riscv_first_stack_step ( frame ) ) ; insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - step1 ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; size -= step1 ; riscv_for_each_saved_reg ( size , riscv_save_reg ) ; }" GCC,riscv,667,"Predict the next statement of this code snippet: insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - step1 ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; size -= step1 ; riscv_for_each_saved_reg ( size , riscv_save_reg ) ; } frame -> mask = mask ; if ( frame_pointer_needed ) { insn = gen_add3_insn ( hard_frame_pointer_rtx , stack_pointer_rtx , GEN_INT ( frame -> hard_frame_pointer_offset - size ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; riscv_emit_stack_tie ( ) ; } if ( size > ) {" GCC,riscv,668,"Predict the next statement of this code snippet: if ( GET_MODE_SIZE ( word_mode ) > GET_MODE_SIZE ( GET_MODE ( * op0 ) ) ) { if ( unsigned_condition ( code ) == code && GET_MODE ( * op0 ) == QImode ) { * op0 = gen_rtx_ZERO_EXTEND ( word_mode , * op0 ) ; if ( CONST_INT_P ( * op1 ) ) * op1 = GEN_INT ( ( uint8_t ) INTVAL ( * op1 ) ) ; else * op1 = gen_rtx_ZERO_EXTEND ( word_mode , * op1 ) ;" GCC,riscv,669,"Predict the next statement of this code snippet: static void riscv_extend_comparands ( rtx_code code , rtx * op0 , rtx * op1 ) { if ( GET_MODE_SIZE ( word_mode ) > GET_MODE_SIZE ( GET_MODE ( * op0 ) ) ) { if ( unsigned_condition ( code ) == code && GET_MODE ( * op0 ) == QImode ) { * op0 = gen_rtx_ZERO_EXTEND ( word_mode , * op0 ) ; if ( CONST_INT_P ( * op1 ) ) * op1 = GEN_INT ( ( uint8_t ) INTVAL ( * op1 ) ) ; else * op1 = gen_rtx_ZERO_EXTEND ( word_mode , * op1 ) ; } else { * op0 = gen_rtx_SIGN_EXTEND ( word_mode , * op0 ) ; if ( * op1 != const0_rtx ) * op1 = gen_rtx_SIGN_EXTEND ( word_mode , * op1 ) ;" GCC,riscv,670,"Predict the next statement of this code snippet: default_file_start ( ) ;" GCC,riscv,671,"Predict the next statement of this code snippet: static void riscv_file_start ( void ) { default_file_start ( ) ;" GCC,riscv,672,"Predict the next statement of this code snippet: if ( ! SMALL_OPERAND ( frame -> total_size - max_first_step ) && frame -> total_size % IMM_REACH < IMM_REACH / && frame -> total_size % IMM_REACH >= min_first_step ) return frame -> total_size % IMM_REACH ; gcc_assert ( min_first_step <= max_first_step ) ;" GCC,riscv,673,"Predict the next statement of this code snippet: return riscv_flatten_aggregate_field ( type , fields , , ) ;" GCC,riscv,674,"Predict the next statement of this code snippet: static int riscv_flatten_aggregate_argument ( const_tree type , riscv_aggregate_field fields [ ] ) { if ( ! type || TREE_CODE ( type ) != RECORD_TYPE ) return - ; return riscv_flatten_aggregate_field ( type , fields , , ) ;" GCC,riscv,675,"Predict the next statement of this code snippet: n_elts = + tree_to_uhwi ( TYPE_MAX_VALUE ( index ) ) - tree_to_uhwi ( TYPE_MIN_VALUE ( index ) ) ; gcc_assert ( n_elts >= ) ; for ( HOST_WIDE_INT i = ; i < n_elts ; i ++ ) for ( int j = ; j < n_subfields ; j ++ ) { if ( n >= ) return - ; fields [ n ] = subfields [ j ] ; fields [ n ++ ] . offset += i * tree_to_uhwi ( elt_size ) ; } return n ; } case COMPLEX_TYPE : { if ( n != ) return - ; HOST_WIDE_INT elt_size = GET_MODE_SIZE ( TYPE_MODE ( TREE_TYPE ( type ) ) ) ; if ( elt_size <= UNITS_PER_FP_ARG ) { fields [ ] . type = TREE_TYPE ( type ) ; fields [ ] . offset = offset ; fields [ ] . type = TREE_TYPE ( type ) ; fields [ ] . offset = offset + elt_size ; return ; } return - ;" GCC,riscv,676,"Predict the next statement of this code snippet: if ( n >= ) return - ; fields [ n ] = subfields [ j ] ; fields [ n ++ ] . offset += i * tree_to_uhwi ( elt_size ) ; } return n ; } case COMPLEX_TYPE : { if ( n != ) return - ; HOST_WIDE_INT elt_size = GET_MODE_SIZE ( TYPE_MODE ( TREE_TYPE ( type ) ) ) ; if ( elt_size <= UNITS_PER_FP_ARG ) { fields [ ] . type = TREE_TYPE ( type ) ; fields [ ] . offset = offset ; fields [ ] . type = TREE_TYPE ( type ) ; fields [ ] . offset = offset + elt_size ; return ; } return - ; } default : if ( n < && ( ( SCALAR_FLOAT_TYPE_P ( type ) && GET_MODE_SIZE ( TYPE_MODE ( type ) ) <= UNITS_PER_FP_ARG ) || ( INTEGRAL_TYPE_P ( type ) && GET_MODE_SIZE ( TYPE_MODE ( type ) ) <= UNITS_PER_WORD ) ) ) {" GCC,riscv,677,"Predict the next statement of this code snippet: static rtx riscv_force_address ( rtx x , enum machine_mode mode ) { if ( ! riscv_legitimate_address_p ( mode , x , false ) ) x = force_reg ( Pmode , x ) ;" GCC,riscv,678,"Predict the next statement of this code snippet: static rtx riscv_force_binary ( enum machine_mode mode , enum rtx_code code , rtx x , rtx y ) {" GCC,riscv,679,"Predict the next statement of this code snippet: static rtx riscv_force_temporary ( rtx dest , rtx value ) { if ( can_create_pseudo_p ( ) ) return force_reg ( Pmode , value ) ; else { riscv_emit_move ( dest , value ) ; return dest ; }" GCC,riscv,680,"Predict the next statement of this code snippet: if ( can_create_pseudo_p ( ) ) return force_reg ( Pmode , value ) ; else { riscv_emit_move ( dest , value ) ; return dest ; }" GCC,riscv,681,"Predict the next statement of this code snippet: offset = cfun -> machine -> frame . gp_sp_offset - sp_offset ; for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST - ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { riscv_save_restore_reg ( word_mode , regno , offset , fn ) ; offset -= UNITS_PER_WORD ; } offset = cfun -> machine -> frame . fp_sp_offset - sp_offset ; for ( int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . fmask , regno - FP_REG_FIRST ) ) { enum machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode ; riscv_save_restore_reg ( mode , regno , offset , fn ) ;" GCC,riscv,682,"Predict the next statement of this code snippet: return riscv_get_arg_info ( & info , cum , mode , type , named , false ) ;" GCC,riscv,683,"Predict the next statement of this code snippet: struct riscv_arg_info info ; if ( mode == VOIDmode ) return NULL ; return riscv_get_arg_info ( & info , cum , mode , type , named , false ) ;" GCC,riscv,684,"Predict the next statement of this code snippet: else alignment = type ? TYPE_ALIGN ( type ) : GET_MODE_ALIGNMENT ( mode ) ;" GCC,riscv,685,"Predict the next statement of this code snippet: static bool riscv_function_ok_for_sibcall ( tree decl ATTRIBUTE_UNUSED , tree exp ATTRIBUTE_UNUSED ) { if ( TARGET_SAVE_RESTORE ) return riscv_leaf_function_p ( ) ; return true ;" GCC,riscv,686,"Predict the next statement of this code snippet: } memset ( & args , , sizeof args ) ;" GCC,riscv,687,"Predict the next statement of this code snippet: rtx riscv_function_value ( const_tree type , const_tree func , enum machine_mode mode ) { struct riscv_arg_info info ; CUMULATIVE_ARGS args ; if ( type ) { int unsigned_p = TYPE_UNSIGNED ( type ) ; mode = TYPE_MODE ( type ) ; mode = promote_function_mode ( type , mode , & unsigned_p , func , ) ;" GCC,riscv,688,"Predict the next statement of this code snippet: memset ( info , , sizeof ( * info ) ) ; info -> gpr_offset = cum -> num_gprs ; info -> fpr_offset = cum -> num_fprs ; if ( named ) { riscv_aggregate_field fields [ ] ; unsigned fregno = fpr_base + info -> fpr_offset ; unsigned gregno = gpr_base + info -> gpr_offset ; if ( ( info -> num_fprs = riscv_pass_aggregate_in_fpr_pair_p ( type , fields ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( info -> num_fprs ) { case : return riscv_pass_fpr_single ( mode , fregno , TYPE_MODE ( fields [ ] . type ) ) ; case : return riscv_pass_fpr_pair ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset , fregno + , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ; default : gcc_unreachable ( ) ; } if ( ( info -> num_fprs = riscv_pass_mode_in_fpr_p ( mode ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( GET_MODE_CLASS ( mode ) ) { case MODE_FLOAT : return gen_rtx_REG ( mode , fregno ) ; case MODE_COMPLEX_FLOAT :" GCC,riscv,689,"Predict the next statement of this code snippet: memset ( info , , sizeof ( * info ) ) ; info -> gpr_offset = cum -> num_gprs ; info -> fpr_offset = cum -> num_fprs ; if ( named ) { riscv_aggregate_field fields [ ] ; unsigned fregno = fpr_base + info -> fpr_offset ; unsigned gregno = gpr_base + info -> gpr_offset ; if ( ( info -> num_fprs = riscv_pass_aggregate_in_fpr_pair_p ( type , fields ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( info -> num_fprs ) { case : return riscv_pass_fpr_single ( mode , fregno , TYPE_MODE ( fields [ ] . type ) ) ; case : return riscv_pass_fpr_pair ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset , fregno + , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ; default : gcc_unreachable ( ) ; } if ( ( info -> num_fprs = riscv_pass_mode_in_fpr_p ( mode ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( GET_MODE_CLASS ( mode ) ) { case MODE_FLOAT : return gen_rtx_REG ( mode , fregno ) ;" GCC,riscv,690,"Predict the next statement of this code snippet: } else if ( FP_REG_P ( regno ) ) { if ( ! FP_REG_P ( regno + nregs - ) ) return false ; if ( GET_MODE_CLASS ( mode ) != MODE_FLOAT && GET_MODE_CLASS ( mode ) != MODE_COMPLEX_FLOAT ) return false ; if ( GET_MODE_UNIT_SIZE ( mode ) > UNITS_PER_FP_REG || ( ! call_used_regs [ regno ] && GET_MODE_UNIT_SIZE ( mode ) > UNITS_PER_FP_ARG ) ) return false ;" GCC,riscv,691,"Predict the next statement of this code snippet: unsigned int nregs = riscv_hard_regno_nregs ( regno , mode ) ; if ( GP_REG_P ( regno ) ) { if ( ! GP_REG_P ( regno + nregs - ) ) return false ; } else if ( FP_REG_P ( regno ) ) { if ( ! FP_REG_P ( regno + nregs - ) ) return false ;" GCC,riscv,692,"Predict the next statement of this code snippet: if ( FP_REG_P ( regno ) ) return ( GET_MODE_SIZE ( mode ) + UNITS_PER_FP_REG - ) / UNITS_PER_FP_REG ;" GCC,riscv,693,"Predict the next statement of this code snippet: static bool riscv_leaf_function_p ( void ) { if ( cfun -> machine -> is_leaf == ) cfun -> machine -> is_leaf = leaf_function_p ( ) ? : - ; return cfun -> machine -> is_leaf > ;" GCC,riscv,694,"Predict the next statement of this code snippet: static bool riscv_legitimate_address_p ( enum machine_mode mode , rtx x , bool strict_p ) { struct riscv_address_info addr ;" GCC,riscv,695,"Predict the next statement of this code snippet: struct riscv_address_info addr ;" GCC,riscv,696,"Predict the next statement of this code snippet: static rtx riscv_legitimize_address ( rtx x , rtx oldx ATTRIBUTE_UNUSED , enum machine_mode mode ) { rtx addr ; if ( riscv_tls_symbol_p ( x ) ) return riscv_legitimize_tls_address ( x ) ; if ( riscv_split_symbol ( NULL , x , mode , & addr ) ) return riscv_force_address ( addr , mode ) ; if ( GET_CODE ( x ) == PLUS && CONST_INT_P ( XEXP ( x , ) ) && INTVAL ( XEXP ( x , ) ) != ) { rtx base = XEXP ( x , ) ; HOST_WIDE_INT offset = INTVAL ( XEXP ( x , ) ) ; if ( ! riscv_valid_base_register_p ( base , mode , false ) ) base = copy_to_mode_reg ( Pmode , base ) ; addr = riscv_add_offset ( NULL , base , offset ) ; return riscv_force_address ( addr , mode ) ; }" GCC,riscv,697,"Predict the next statement of this code snippet: rtx base , offset ; if ( splittable_const_int_operand ( src , mode ) ) { riscv_move_integer ( dest , dest , INTVAL ( src ) ) ; return ; } if ( riscv_split_symbol ( dest , src , MAX_MACHINE_MODE , & src ) ) { riscv_emit_set ( dest , src ) ; return ; } if ( riscv_tls_symbol_p ( src ) ) { riscv_emit_move ( dest , riscv_legitimize_tls_address ( src ) ) ; return ; } split_const ( src , & base , & offset ) ; if ( offset != const0_rtx && ( targetm . cannot_force_const_mem ( mode , src ) || can_create_pseudo_p ( ) ) ) {" GCC,riscv,698,"Predict the next statement of this code snippet: riscv_emit_move ( dest , force_reg ( mode , src ) ) ; return true ; } if ( CONSTANT_P ( src ) && ! move_operand ( src , mode ) ) { riscv_legitimize_const_move ( mode , dest , src ) ;" GCC,riscv,699,"Predict the next statement of this code snippet: bool riscv_legitimize_move ( enum machine_mode mode , rtx dest , rtx src ) { if ( ! register_operand ( dest , mode ) && ! reg_or_0_operand ( src , mode ) ) { riscv_emit_move ( dest , force_reg ( mode , src ) ) ; return true ; } if ( CONSTANT_P ( src ) && ! move_operand ( src , mode ) ) {" GCC,riscv,700,"Predict the next statement of this code snippet: mode = GET_MODE ( mem ) ; might_split_p = true ; if ( GET_MODE_BITSIZE ( mode ) <= ) might_split_p = false ; else if ( GET_MODE_BITSIZE ( mode ) == ) { set = single_set ( insn ) ; if ( set && ! riscv_split_64bit_move_p ( SET_DEST ( set ) , SET_SRC ( set ) ) ) might_split_p = false ;" GCC,riscv,701,"Predict the next statement of this code snippet: set = single_set ( insn ) ; if ( set && ! riscv_split_64bit_move_p ( SET_DEST ( set ) , SET_SRC ( set ) ) ) might_split_p = false ; } return riscv_address_insns ( XEXP ( mem , ) , mode , might_split_p ) ;" GCC,riscv,702,"Predict the next statement of this code snippet: return ( tune_info -> memory_cost + memory_move_secondary_cost ( mode , rclass , in ) ) ;" GCC,riscv,703,"Predict the next statement of this code snippet: if ( can_create_pseudo_p ( ) && num_ops > && num_ops >= riscv_split_integer_cost ( value ) ) x = riscv_split_integer ( value , mode ) ; else { x = GEN_INT ( codes [ ] . value ) ; for ( i = ; i < num_ops ; i ++ ) { if ( ! can_create_pseudo_p ( ) ) x = riscv_emit_set ( temp , x ) ;" GCC,riscv,704,"Predict the next statement of this code snippet: x = GEN_INT ( codes [ ] . value ) ; for ( i = ; i < num_ops ; i ++ ) { if ( ! can_create_pseudo_p ( ) ) x = riscv_emit_set ( temp , x ) ; else x = force_reg ( mode , x ) ;" GCC,riscv,705,"Predict the next statement of this code snippet: SUBTARGET_OVERRIDE_OPTIONS ; flag_pcc_struct_return = ; if ( flag_pic ) g_switch_value = ; if ( TARGET_MUL && ( target_flags_explicit & MASK_DIV ) == ) target_flags |= MASK_DIV ; else if ( ! TARGET_MUL && TARGET_DIV ) error ( ) ; if ( TARGET_HARD_FLOAT && ( target_flags_explicit & MASK_FDIV ) == ) target_flags |= MASK_FDIV ; cpu = riscv_parse_cpu ( riscv_tune_string ? riscv_tune_string : RISCV_TUNE_STRING_DEFAULT ) ; tune_info = optimize_size ? & optimize_size_tune_info : cpu -> tune_info ; if ( riscv_branch_cost == ) riscv_branch_cost = tune_info -> branch_cost ; init_machine_status = & riscv_init_machine_status ; if ( flag_pic ) riscv_cmodel = CM_PIC ; if ( ( target_flags_explicit & MASK_EXPLICIT_RELOCS ) == ) if ( riscv_cmodel == CM_MEDLOW ) target_flags |= MASK_EXPLICIT_RELOCS ; if ( UNITS_PER_FP_ARG > ( TARGET_HARD_FLOAT ? UNITS_PER_FP_REG : ) ) error ( , UNITS_PER_FP_ARG > ? 'Q' : ( UNITS_PER_FP_ARG > ? 'D' : 'F' ) ) ; if ( BITS_PER_WORD != POINTER_SIZE ) error ( , POINTER_SIZE ) ;" GCC,riscv,706,"Predict the next statement of this code snippet: RISCV_TUNE_STRING_DEFAULT ) ; tune_info = optimize_size ? & optimize_size_tune_info : cpu -> tune_info ; if ( riscv_branch_cost == ) riscv_branch_cost = tune_info -> branch_cost ; init_machine_status = & riscv_init_machine_status ; if ( flag_pic ) riscv_cmodel = CM_PIC ; if ( ( target_flags_explicit & MASK_EXPLICIT_RELOCS ) == ) if ( riscv_cmodel == CM_MEDLOW ) target_flags |= MASK_EXPLICIT_RELOCS ; if ( UNITS_PER_FP_ARG > ( TARGET_HARD_FLOAT ? UNITS_PER_FP_REG : ) ) error ( , UNITS_PER_FP_ARG > ? 'Q' : ( UNITS_PER_FP_ARG > ? 'D' : 'F' ) ) ; if ( BITS_PER_WORD != POINTER_SIZE ) error ( , POINTER_SIZE ) ;" GCC,riscv,707,"Predict the next statement of this code snippet: reload_completed = ; emit_note ( NOTE_INSN_PROLOGUE_END ) ; fnaddr = gen_rtx_MEM ( FUNCTION_MODE , XEXP ( DECL_RTL ( function ) , ) ) ; temp1 = gen_rtx_REG ( Pmode , RISCV_PROLOGUE_TEMP_REGNUM ) ; temp2 = gen_rtx_REG ( Pmode , STATIC_CHAIN_REGNUM ) ; if ( aggregate_value_p ( TREE_TYPE ( TREE_TYPE ( function ) ) , function ) ) this_rtx = gen_rtx_REG ( Pmode , GP_ARG_FIRST + ) ; else this_rtx = gen_rtx_REG ( Pmode , GP_ARG_FIRST ) ; if ( delta != ) { rtx offset = GEN_INT ( delta ) ; if ( ! SMALL_OPERAND ( delta ) ) { riscv_emit_move ( temp1 , offset ) ; offset = temp1 ; } emit_insn ( gen_add3_insn ( this_rtx , this_rtx , offset ) ) ; }" GCC,riscv,708,"Predict the next statement of this code snippet: for ( unsigned i = ; i < ARRAY_SIZE ( riscv_cpu_info_table ) ; i ++ ) if ( strcmp ( riscv_cpu_info_table [ i ] . name , cpu_string ) == ) return riscv_cpu_info_table + i ; error ( , cpu_string ) ; return riscv_cpu_info_table ;" GCC,riscv,709,"Predict the next statement of this code snippet: static const struct riscv_cpu_info * riscv_parse_cpu ( const char * cpu_string ) { for ( unsigned i = ; i < ARRAY_SIZE ( riscv_cpu_info_table ) ; i ++ ) if ( strcmp ( riscv_cpu_info_table [ i ] . name , cpu_string ) == ) return riscv_cpu_info_table + i ;" GCC,riscv,710,"Predict the next statement of this code snippet: unsigned num_int = , num_float = ; int n = riscv_flatten_aggregate_argument ( type , fields ) ; for ( int i = ; i < n ; i ++ ) { num_float += SCALAR_FLOAT_TYPE_P ( fields [ i ] . type ) ;" GCC,riscv,711,"Predict the next statement of this code snippet: int n = riscv_flatten_aggregate_argument ( type , fields ) ; for ( int i = ; i < n ; i ++ ) if ( ! SCALAR_FLOAT_TYPE_P ( fields [ i ] . type ) ) return ; return n > ? n : ;" GCC,riscv,712,"Predict the next statement of this code snippet: struct riscv_arg_info info ; CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; if ( cum != NULL ) { riscv_get_arg_info ( & info , cum , mode , type , named , false ) ;" GCC,riscv,713,"Predict the next statement of this code snippet: struct riscv_arg_info info ; CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; if ( cum != NULL ) {" GCC,riscv,714,"Predict the next statement of this code snippet: return gen_rtx_PARALLEL ( mode , gen_rtvec ( , gen_rtx_EXPR_LIST ( VOIDmode , gen_rtx_REG ( mode1 , regno1 ) , GEN_INT ( offset1 ) ) , gen_rtx_EXPR_LIST ( VOIDmode , gen_rtx_REG ( mode2 , regno2 ) , GEN_INT ( offset2 ) ) ) ) ;" GCC,riscv,715,"Predict the next statement of this code snippet: static rtx riscv_pass_fpr_pair ( enum machine_mode mode , unsigned regno1 , enum machine_mode mode1 , HOST_WIDE_INT offset1 , unsigned regno2 , enum machine_mode mode2 , HOST_WIDE_INT offset2 ) {" GCC,riscv,716,"Predict the next statement of this code snippet: static rtx riscv_pass_fpr_single ( enum machine_mode type_mode , unsigned regno , enum machine_mode value_mode ) {" GCC,riscv,717,"Predict the next statement of this code snippet: static rtx riscv_pass_fpr_single ( enum machine_mode type_mode , unsigned regno , enum machine_mode value_mode ) { rtx x = gen_rtx_REG ( value_mode , regno ) ; if ( type_mode != value_mode ) { x = gen_rtx_EXPR_LIST ( VOIDmode , x , const0_rtx ) ; x = gen_rtx_PARALLEL ( type_mode , gen_rtvec ( , x ) ) ; } return x ;" GCC,riscv,718,"Predict the next statement of this code snippet: case REG : if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ; fprintf ( file , , reg_names [ REGNO ( op ) ] ) ; break ; case MEM : if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ; else output_address ( mode , XEXP ( op , ) ) ; break ; default : if ( letter == 'z' && op == CONST0_RTX ( GET_MODE ( op ) ) ) fputs ( reg_names [ GP_REG_FIRST ] , file ) ; else if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ;" GCC,riscv,719,"Predict the next statement of this code snippet: switch ( code ) { case REG : if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ; fprintf ( file , , reg_names [ REGNO ( op ) ] ) ; break ; case MEM : if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ; else output_address ( mode , XEXP ( op , ) ) ; break ; default : if ( letter == 'z' && op == CONST0_RTX ( GET_MODE ( op ) ) ) fputs ( reg_names [ GP_REG_FIRST ] , file ) ; else if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ;" GCC,riscv,720,"Predict the next statement of this code snippet: reloc = hi_reloc ? : ; break ; case SYMBOL_PCREL : reloc = hi_reloc ? : ; break ; case SYMBOL_TLS_LE : reloc = hi_reloc ? : ; break ; default : gcc_unreachable ( ) ;" GCC,riscv,721,"Predict the next statement of this code snippet: if ( ! strict_p ) return true ; regno = reg_renumber [ regno ] ; }" GCC,riscv,722,"Predict the next statement of this code snippet: regno = reg_renumber [ regno ] ; }" GCC,riscv,723,"Predict the next statement of this code snippet: static void riscv_restore_reg ( rtx reg , rtx mem ) { rtx insn = riscv_emit_move ( reg , mem ) ; rtx dwarf = NULL_RTX ; dwarf = alloc_reg_note ( REG_CFA_RESTORE , reg , dwarf ) ; REG_NOTES ( insn ) = dwarf ; RTX_FRAME_RELATED_P ( insn ) = ;" GCC,riscv,724,"Predict the next statement of this code snippet: memset ( & args , , sizeof args ) ;" GCC,riscv,725,"Predict the next statement of this code snippet: bool might_clobber = crtl -> saves_all_registers || df_regs_ever_live_p ( regno ) ; if ( call_saved && might_clobber ) return true ;" GCC,riscv,726,"Predict the next statement of this code snippet: bool call_saved = ! global_regs [ regno ] && ! call_used_regs [ regno ] ; bool might_clobber = crtl -> saves_all_registers || df_regs_ever_live_p ( regno ) ; if ( call_saved && might_clobber ) return true ;" GCC,riscv,727,"Predict the next statement of this code snippet: static void riscv_save_restore_reg ( enum machine_mode mode , int regno , HOST_WIDE_INT offset , riscv_save_restore_fn fn ) { rtx mem ; mem = gen_frame_mem ( mode , plus_constant ( Pmode , stack_pointer_rtx , offset ) ) ;" GCC,riscv,728,"Predict the next statement of this code snippet: static void riscv_setup_incoming_varargs ( cumulative_args_t cum , enum machine_mode mode , tree type , int * pretend_size ATTRIBUTE_UNUSED , int no_rtl ) { CUMULATIVE_ARGS local_cum ; int gp_saved ; local_cum = * get_cumulative_args ( cum ) ; riscv_function_arg_advance ( pack_cumulative_args ( & local_cum ) , mode , type , ) ; gp_saved = MAX_ARGS_IN_REGISTERS - local_cum . num_gprs ; if ( ! no_rtl && gp_saved > ) { rtx ptr = plus_constant ( Pmode , virtual_incoming_args_rtx , REG_PARM_STACK_SPACE ( cfun -> decl ) - gp_saved * UNITS_PER_WORD ) ; rtx mem = gen_frame_mem ( BLKmode , ptr ) ;" GCC,riscv,729,"Predict the next statement of this code snippet: { static unsigned seqno ; char buf [ ] ; rtx label ; ssize_t bytes = snprintf ( buf , sizeof ( buf ) , , seqno ) ; gcc_assert ( ( size_t ) bytes < sizeof ( buf ) ) ; label = gen_rtx_SYMBOL_REF ( Pmode , ggc_strdup ( buf ) ) ; SYMBOL_REF_FLAGS ( label ) |= SYMBOL_FLAG_LOCAL ; if ( temp == NULL ) temp = gen_reg_rtx ( Pmode ) ; if ( Pmode == DImode ) emit_insn ( gen_auipcdi ( temp , copy_rtx ( addr ) , GEN_INT ( seqno ) ) ) ; else emit_insn ( gen_auipcsi ( temp , copy_rtx ( addr ) , GEN_INT ( seqno ) ) ) ; * low_out = gen_rtx_LO_SUM ( Pmode , temp , label ) ; seqno ++ ; } break ; default : gcc_unreachable ( ) ; }" GCC,riscv,730,"Predict the next statement of this code snippet: rtx label ; ssize_t bytes = snprintf ( buf , sizeof ( buf ) , , seqno ) ; gcc_assert ( ( size_t ) bytes < sizeof ( buf ) ) ; label = gen_rtx_SYMBOL_REF ( Pmode , ggc_strdup ( buf ) ) ; SYMBOL_REF_FLAGS ( label ) |= SYMBOL_FLAG_LOCAL ; if ( temp == NULL ) temp = gen_reg_rtx ( Pmode ) ; if ( Pmode == DImode ) emit_insn ( gen_auipcdi ( temp , copy_rtx ( addr ) , GEN_INT ( seqno ) ) ) ; else emit_insn ( gen_auipcsi ( temp , copy_rtx ( addr ) , GEN_INT ( seqno ) ) ) ; * low_out = gen_rtx_LO_SUM ( Pmode , temp , label ) ; seqno ++ ; } break ;" GCC,riscv,731,"Predict the next statement of this code snippet: if ( MEM_P ( op ) ) return adjust_address ( op , word_mode , byte ) ; if ( REG_P ( op ) ) gcc_assert ( ! FP_REG_RTX_P ( op ) ) ;" GCC,riscv,732,"Predict the next statement of this code snippet: if ( REG_P ( op ) ) gcc_assert ( ! FP_REG_RTX_P ( op ) ) ; return simplify_gen_subreg ( word_mode , op , mode , byte ) ;" GCC,riscv,733,"Predict the next statement of this code snippet: static rtx riscv_unspec_offset_high ( rtx temp , rtx addr , enum riscv_symbol_type symbol_type ) {" GCC,riscv,734,"Predict the next statement of this code snippet: if ( riscv_symbol_insns ( sym_type ) == ) return false ;" GCC,riscv,735,"Predict the next statement of this code snippet: static bool riscv_valid_lo_sum_p ( enum riscv_symbol_type sym_type , enum machine_mode mode ) { if ( riscv_symbol_insns ( sym_type ) == ) return false ;" GCC,riscv,736,"Predict the next statement of this code snippet: int n = ; if ( ! riscv_classify_address ( & addr , x , mode , false ) ) return ; if ( mode != BLKmode && might_split_p ) n += ( GET_MODE_SIZE ( mode ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ;" GCC,riscv,737,"Predict the next statement of this code snippet: struct riscv_arg_info arg ; riscv_get_arg_info ( & arg , get_cumulative_args ( cum ) , mode , type , named , false ) ; return arg . stack_p ? arg . num_gprs * UNITS_PER_WORD : ;" GCC,riscv,738,"Predict the next statement of this code snippet: struct riscv_arg_info arg ;" GCC,riscv,739,"Predict the next statement of this code snippet: static void riscv_block_move_straight ( rtx dest , rtx src , HOST_WIDE_INT length ) { HOST_WIDE_INT offset , delta ; unsigned HOST_WIDE_INT bits ; int i ; enum machine_mode mode ; rtx * regs ; bits = MAX ( BITS_PER_UNIT , MIN ( BITS_PER_WORD , MIN ( MEM_ALIGN ( src ) , MEM_ALIGN ( dest ) ) ) ) ; mode = mode_for_size ( bits , MODE_INT , ) . require ( ) ;" GCC,riscv,740,"Predict the next statement of this code snippet: switch ( GET_CODE ( x ) ) { case REG : case SUBREG : info -> type = ADDRESS_REG ; info -> reg = x ; info -> offset = const0_rtx ; return riscv_valid_base_register_p ( info -> reg , mode , strict_p ) ; case PLUS : info -> type = ADDRESS_REG ; info -> reg = XEXP ( x , ) ; info -> offset = XEXP ( x , ) ; return ( riscv_valid_base_register_p ( info -> reg , mode , strict_p ) && riscv_valid_offset_p ( info -> offset , mode ) ) ; case LO_SUM : info -> type = ADDRESS_LO_SUM ;" GCC,riscv,741,"Predict the next statement of this code snippet: info -> reg = XEXP ( x , ) ; info -> offset = XEXP ( x , ) ; info -> symbol_type = riscv_classify_symbolic_expression ( info -> offset ) ; return ( riscv_valid_base_register_p ( info -> reg , mode , strict_p ) && riscv_valid_lo_sum_p ( info -> symbol_type , mode ) ) ; case CONST_INT : info -> type = ADDRESS_CONST_INT ; return SMALL_OPERAND ( INTVAL ( x ) ) ; default : return false ;" GCC,riscv,742,"Predict the next statement of this code snippet: if ( ! cfun -> machine -> naked_p ) { for ( regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( crtl -> calls_eh_return ) for ( i = ; ( regno = EH_RETURN_DATA_REGNO ( i ) ) != INVALID_REGNUM ; i ++ ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( TARGET_HARD_FLOAT ) for ( regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) ) frame -> fmask |= << ( regno - FP_REG_FIRST ) , num_f_saved ++ ; } offset = RISCV_STACK_ALIGN ( crtl -> outgoing_args_size ) ; offset += RISCV_STACK_ALIGN ( get_frame_size ( ) ) ; frame -> frame_pointer_offset = offset ; if ( frame -> fmask ) offset += RISCV_STACK_ALIGN ( num_f_saved * UNITS_PER_FP_REG ) ; frame -> fp_sp_offset = offset - UNITS_PER_FP_REG ; if ( frame -> mask ) { unsigned x_save_size = RISCV_STACK_ALIGN ( num_x_saved * UNITS_PER_WORD ) ; unsigned num_save_restore = + riscv_save_libcall_count ( frame -> mask ) ; if ( RISCV_STACK_ALIGN ( num_save_restore * UNITS_PER_WORD ) == x_save_size ) frame -> save_libcall_adjustment = x_save_size ; offset += x_save_size ; } frame -> gp_sp_offset = offset - UNITS_PER_WORD ; frame -> hard_frame_pointer_offset = offset ; offset += RISCV_STACK_ALIGN ( cfun -> machine -> varargs_size ) ; offset += RISCV_STACK_ALIGN ( crtl -> args . pretend_args_size ) ;" GCC,riscv,743,"Predict the next statement of this code snippet: } if ( UNITS_PER_FP_ARG == ) { for ( int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) call_used_regs [ regno ] = ; }" GCC,riscv,744,"Predict the next statement of this code snippet: if ( TREE_CODE ( exp ) == STRING_CST || TREE_CODE ( exp ) == CONSTRUCTOR ) return MAX ( align , BITS_PER_WORD ) ; return align ;" GCC,riscv,745,"Predict the next statement of this code snippet: riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , adjust ) ; adjust = RISCV_PROLOGUE_TEMP ( Pmode ) ; } insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , adjust ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_rtx = gen_rtx_PLUS ( Pmode , stack_pointer_rtx , GEN_INT ( step2 ) ) ; dwarf = alloc_reg_note ( REG_CFA_DEF_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( use_restore_libcall ) frame -> mask = ; riscv_for_each_saved_reg ( frame -> total_size - step2 , riscv_restore_reg ) ; if ( use_restore_libcall ) { frame -> mask = mask ; gcc_assert ( step2 >= frame -> save_libcall_adjustment ) ; step2 -= frame -> save_libcall_adjustment ; } if ( need_barrier_p ) riscv_emit_stack_tie ( ) ; if ( step2 > ) { insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( step2 ) ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_rtx = gen_rtx_PLUS ( Pmode , stack_pointer_rtx , const0_rtx ) ; dwarf = alloc_reg_note ( REG_CFA_DEF_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( use_restore_libcall ) { rtx dwarf = riscv_adjust_libcall_cfi_epilogue ( ) ; insn = emit_insn ( gen_gpr_restore ( GEN_INT ( riscv_save_libcall_count ( mask ) ) ) ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ;" GCC,riscv,746,"Predict the next statement of this code snippet: if ( riscv_use_save_libcall ( frame ) ) { rtx dwarf = NULL_RTX ; dwarf = riscv_adjust_libcall_cfi_prologue ( ) ; frame -> mask = ; size -= frame -> save_libcall_adjustment ; insn = emit_insn ( gen_gpr_save ( GEN_INT ( mask ) ) ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { HOST_WIDE_INT step1 = MIN ( size , riscv_first_stack_step ( frame ) ) ; insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - step1 ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; size -= step1 ; riscv_for_each_saved_reg ( size , riscv_save_reg ) ; } frame -> mask = mask ; if ( frame_pointer_needed ) { insn = gen_add3_insn ( hard_frame_pointer_rtx , stack_pointer_rtx , GEN_INT ( frame -> hard_frame_pointer_offset - size ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; riscv_emit_stack_tie ( ) ; } if ( size > ) { if ( SMALL_OPERAND ( - size ) ) { insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - size ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; } else { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , GEN_INT ( - size ) ) ; emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , RISCV_PROLOGUE_TEMP ( Pmode ) ) ) ;" GCC,riscv,747,"Predict the next statement of this code snippet: fprintf ( asm_out_file , , ( flag_pic ? : ) ) ;" GCC,riscv,748,"Predict the next statement of this code snippet: static void riscv_file_start ( void ) { default_file_start ( ) ;" GCC,riscv,749,"Predict the next statement of this code snippet: offset -= UNITS_PER_WORD ; } offset = cfun -> machine -> frame . fp_sp_offset - sp_offset ;" GCC,riscv,750,"Predict the next statement of this code snippet: return riscv_get_arg_info ( & info , cum , mode , type , named , false ) ;" GCC,riscv,751,"Predict the next statement of this code snippet: struct riscv_arg_info info ; riscv_get_arg_info ( & info , cum , mode , type , named , false ) ;" GCC,riscv,752,"Predict the next statement of this code snippet: CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; struct riscv_arg_info info ; riscv_get_arg_info ( & info , cum , mode , type , named , false ) ;" GCC,riscv,753,"Predict the next statement of this code snippet: if ( TARGET_SAVE_RESTORE ) return false ; if ( cfun -> machine -> naked_p ) return false ;" GCC,riscv,754,"Predict the next statement of this code snippet: static bool riscv_function_ok_for_sibcall ( tree decl ATTRIBUTE_UNUSED , tree exp ATTRIBUTE_UNUSED ) { if ( TARGET_SAVE_RESTORE ) return false ; if ( cfun -> machine -> naked_p ) return false ; return true ;" GCC,riscv,755,"Predict the next statement of this code snippet: info -> num_gprs = ; info -> num_fprs = ; if ( ! SCALAR_FLOAT_TYPE_P ( fields [ ] . type ) ) std :: swap ( fregno , gregno ) ; return riscv_pass_fpr_pair ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset , gregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ; } } num_bytes = type ? int_size_in_bytes ( type ) : GET_MODE_SIZE ( mode ) ; num_words = ( num_bytes + UNITS_PER_WORD - ) / UNITS_PER_WORD ; if ( ! named && num_bytes != && alignment > BITS_PER_WORD ) info -> gpr_offset += info -> gpr_offset & ; info -> num_fprs = ; info -> num_gprs = MIN ( num_words , MAX_ARGS_IN_REGISTERS - info -> gpr_offset ) ; info -> stack_p = ( num_words - info -> num_gprs ) != ;" GCC,riscv,756,"Predict the next statement of this code snippet: if ( GP_REG_P ( regno ) ) { if ( ! GP_REG_P ( regno + nregs - ) ) return false ; } else if ( FP_REG_P ( regno ) ) { if ( ! FP_REG_P ( regno + nregs - ) ) return false ; if ( GET_MODE_CLASS ( mode ) != MODE_FLOAT && GET_MODE_CLASS ( mode ) != MODE_COMPLEX_FLOAT ) return false ; if ( GET_MODE_UNIT_SIZE ( mode ) > UNITS_PER_FP_REG || ( ! call_used_regs [ regno ] && GET_MODE_UNIT_SIZE ( mode ) > UNITS_PER_FP_ARG ) ) return false ; }" GCC,riscv,757,"Predict the next statement of this code snippet: static rtx riscv_legitimize_address ( rtx x , rtx oldx ATTRIBUTE_UNUSED , machine_mode mode ) { rtx addr ; if ( riscv_tls_symbol_p ( x ) ) return riscv_legitimize_tls_address ( x ) ;" GCC,riscv,758,"Predict the next statement of this code snippet: return ; } if ( riscv_split_symbol ( dest , src , MAX_MACHINE_MODE , & src ) ) { riscv_emit_set ( dest , src ) ; return ; } if ( riscv_tls_symbol_p ( src ) ) { riscv_emit_move ( dest , riscv_legitimize_tls_address ( src ) ) ; return ; } split_const ( src , & base , & offset ) ; if ( offset != const0_rtx && ( targetm . cannot_force_const_mem ( mode , src ) || can_create_pseudo_p ( ) ) ) { base = riscv_force_temporary ( dest , base ) ;" GCC,riscv,759,"Predict the next statement of this code snippet: } if ( riscv_split_symbol ( dest , src , MAX_MACHINE_MODE , & src ) ) { riscv_emit_set ( dest , src ) ; return ; } if ( riscv_tls_symbol_p ( src ) ) { riscv_emit_move ( dest , riscv_legitimize_tls_address ( src ) ) ; return ; } split_const ( src , & base , & offset ) ; if ( offset != const0_rtx && ( targetm . cannot_force_const_mem ( mode , src ) || can_create_pseudo_p ( ) ) ) { base = riscv_force_temporary ( dest , base ) ; riscv_emit_move ( dest , riscv_add_offset ( NULL , base , INTVAL ( offset ) ) ) ; return ; } src = force_const_mem ( mode , src ) ; riscv_split_symbol ( dest , XEXP ( src , ) , mode , & XEXP ( src , ) ) ; riscv_emit_move ( dest , src ) ;" GCC,riscv,760,"Predict the next statement of this code snippet: riscv_legitimize_const_move ( mode , dest , src ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , copy_rtx ( src ) ) ; return true ; } if ( MEM_P ( dest ) && ! riscv_legitimate_address_p ( mode , XEXP ( dest , ) , reload_completed ) ) { XEXP ( dest , ) = riscv_force_address ( XEXP ( dest , ) , mode ) ; }" GCC,riscv,761,"Predict the next statement of this code snippet: if ( CONSTANT_P ( src ) && ! move_operand ( src , mode ) ) { riscv_legitimize_const_move ( mode , dest , src ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , copy_rtx ( src ) ) ; return true ; } if ( MEM_P ( dest ) && ! riscv_legitimate_address_p ( mode , XEXP ( dest , ) , reload_completed ) ) { XEXP ( dest , ) = riscv_force_address ( XEXP ( dest , ) , mode ) ; } if ( MEM_P ( src ) && ! riscv_legitimate_address_p ( mode , XEXP ( src , ) , reload_completed ) ) { XEXP ( src , ) = riscv_force_address ( XEXP ( src , ) , mode ) ; } return false ;" GCC,riscv,762,"Predict the next statement of this code snippet: if ( can_create_pseudo_p ( ) && num_ops > && num_ops >= riscv_split_integer_cost ( value ) ) x = riscv_split_integer ( value , mode ) ; else { x = GEN_INT ( codes [ ] . value ) ; for ( i = ; i < num_ops ; i ++ ) { if ( ! can_create_pseudo_p ( ) ) x = riscv_emit_set ( temp , x ) ;" GCC,riscv,763,"Predict the next statement of this code snippet: for ( i = ; i < num_ops ; i ++ ) { if ( ! can_create_pseudo_p ( ) ) x = riscv_emit_set ( temp , x ) ; else x = force_reg ( mode , x ) ; x = gen_rtx_fmt_ee ( codes [ i ] . code , mode , x , GEN_INT ( codes [ i ] . value ) ) ;" GCC,riscv,764,"Predict the next statement of this code snippet: flag_pcc_struct_return = ; if ( flag_pic ) g_switch_value = ; if ( TARGET_MUL && ( target_flags_explicit & MASK_DIV ) == ) target_flags |= MASK_DIV ; else if ( ! TARGET_MUL && TARGET_DIV ) error ( ) ; if ( TARGET_HARD_FLOAT && ( target_flags_explicit & MASK_FDIV ) == ) target_flags |= MASK_FDIV ; cpu = riscv_parse_cpu ( riscv_tune_string ? riscv_tune_string : RISCV_TUNE_STRING_DEFAULT ) ; tune_info = optimize_size ? & optimize_size_tune_info : cpu -> tune_info ; riscv_slow_unaligned_access_p = ( cpu -> tune_info -> slow_unaligned_access || TARGET_STRICT_ALIGN ) ; if ( ( target_flags_explicit & MASK_STRICT_ALIGN ) == && cpu -> tune_info -> slow_unaligned_access ) target_flags |= MASK_STRICT_ALIGN ; if ( riscv_branch_cost == ) riscv_branch_cost = tune_info -> branch_cost ; init_machine_status = & riscv_init_machine_status ; if ( flag_pic ) riscv_cmodel = CM_PIC ; if ( ( target_flags_explicit & MASK_EXPLICIT_RELOCS ) == ) if ( riscv_cmodel == CM_MEDLOW ) target_flags |= MASK_EXPLICIT_RELOCS ; if ( UNITS_PER_FP_ARG > ( TARGET_HARD_FLOAT ? UNITS_PER_FP_REG : ) ) error ( , UNITS_PER_FP_ARG > ? 'Q' : ( UNITS_PER_FP_ARG > ? 'D' : 'F' ) ) ; if ( BITS_PER_WORD != POINTER_SIZE ) error ( , POINTER_SIZE ) ; riscv_stack_boundary = ABI_STACK_BOUNDARY ; if ( riscv_preferred_stack_boundary_arg ) { int min = ctz_hwi ( STACK_BOUNDARY / ) ; int max = ;" GCC,riscv,765,"Predict the next statement of this code snippet: if ( GP_REG_P ( REGNO ( dest ) ) ) return ; if ( FP_REG_P ( REGNO ( dest ) ) ) { if ( ! dbl_p ) return ; if ( TARGET_64BIT ) return ; gcc_assert ( src == CONST0_RTX ( mode ) ) ; return ; } } if ( dest_code == MEM ) switch ( GET_MODE_SIZE ( mode ) ) { case : return ; case : return ; case : return ; case : return ; } } if ( src_code == REG && FP_REG_P ( REGNO ( src ) ) ) {" GCC,riscv,766,"Predict the next statement of this code snippet: enum rtx_code dest_code , src_code ; machine_mode mode ; bool dbl_p ; dest_code = GET_CODE ( dest ) ; src_code = GET_CODE ( src ) ; mode = GET_MODE ( dest ) ; dbl_p = ( GET_MODE_SIZE ( mode ) == ) ; if ( dbl_p && riscv_split_64bit_move_p ( dest , src ) ) return ; if ( dest_code == REG && GP_REG_P ( REGNO ( dest ) ) ) { if ( src_code == REG && FP_REG_P ( REGNO ( src ) ) ) return dbl_p ? : ; if ( src_code == MEM ) switch ( GET_MODE_SIZE ( mode ) ) { case : return ; case : return ; case : return ; case : return ; } if ( src_code == CONST_INT ) return ; if ( src_code == HIGH ) return ; if ( symbolic_operand ( src , VOIDmode ) ) switch ( riscv_classify_symbolic_expression ( src ) ) { case SYMBOL_GOT_DISP : return ; case SYMBOL_ABSOLUTE : return ; case SYMBOL_PCREL : return ; default : gcc_unreachable ( ) ; } } if ( ( src_code == REG && GP_REG_P ( REGNO ( src ) ) ) || ( src == CONST0_RTX ( mode ) ) ) { if ( dest_code == REG ) { if ( GP_REG_P ( REGNO ( dest ) ) ) return ; if ( FP_REG_P ( REGNO ( dest ) ) ) { if ( ! dbl_p ) return ; if ( TARGET_64BIT ) return ; gcc_assert ( src == CONST0_RTX ( mode ) ) ; return ; } } if ( dest_code == MEM ) switch ( GET_MODE_SIZE ( mode ) ) { case : return ; case : return ;" GCC,riscv,767,"Predict the next statement of this code snippet: if ( cum != NULL ) { riscv_get_arg_info ( & info , cum , mode , type , named , false ) ; if ( info . num_fprs ) return false ; } return ! IN_RANGE ( size , , * UNITS_PER_WORD ) ;" GCC,riscv,768,"Predict the next statement of this code snippet: x = gen_rtx_EXPR_LIST ( VOIDmode , x , const0_rtx ) ;" GCC,riscv,769,"Predict the next statement of this code snippet: gp_saved = MAX_ARGS_IN_REGISTERS - local_cum . num_gprs ; if ( ! no_rtl && gp_saved > ) { rtx ptr = plus_constant ( Pmode , virtual_incoming_args_rtx , REG_PARM_STACK_SPACE ( cfun -> decl ) - gp_saved * UNITS_PER_WORD ) ; rtx mem = gen_frame_mem ( BLKmode , ptr ) ; set_mem_alias_set ( mem , get_varargs_alias_set ( ) ) ; move_block_from_reg ( local_cum . num_gprs + GP_ARG_FIRST , mem , gp_saved ) ; } if ( REG_PARM_STACK_SPACE ( cfun -> decl ) == ) cfun -> machine -> varargs_size = gp_saved * UNITS_PER_WORD ;" GCC,riscv,770,"Predict the next statement of this code snippet: if ( decl == NULL_TREE || current_function_decl == NULL_TREE || current_function_decl == error_mark_node || ! cfun -> machine ) return ;" GCC,riscv,771,"Predict the next statement of this code snippet: if ( decl == NULL_TREE || current_function_decl == NULL_TREE || current_function_decl == error_mark_node || ! cfun -> machine ) return ;" GCC,riscv,772,"Predict the next statement of this code snippet: riscv_move_integer ( hi , hi , hival ) ; riscv_move_integer ( lo , lo , loval ) ;" GCC,riscv,773,"Predict the next statement of this code snippet: riscv_move_integer ( lo , lo , loval ) ; hi = gen_rtx_fmt_ee ( ASHIFT , mode , hi , GEN_INT ( ) ) ; hi = force_reg ( mode , hi ) ;" GCC,riscv,774,"Predict the next statement of this code snippet: bool riscv_split_symbol ( rtx temp , rtx addr , machine_mode mode , rtx * low_out ) { enum riscv_symbol_type symbol_type ; if ( ( GET_CODE ( addr ) == HIGH && mode == MAX_MACHINE_MODE ) || ! riscv_symbolic_constant_p ( addr , & symbol_type ) || riscv_symbol_insns ( symbol_type ) == || ! riscv_split_symbol_type ( symbol_type ) ) return false ; if ( low_out ) switch ( symbol_type ) { case SYMBOL_ABSOLUTE : { rtx high = gen_rtx_HIGH ( Pmode , copy_rtx ( addr ) ) ; high = riscv_force_temporary ( temp , high ) ; * low_out = gen_rtx_LO_SUM ( Pmode , high , addr ) ; } break ; case SYMBOL_PCREL : { static unsigned seqno ; char buf [ ] ; rtx label ; ssize_t bytes = snprintf ( buf , sizeof ( buf ) , , seqno ) ; gcc_assert ( ( size_t ) bytes < sizeof ( buf ) ) ; label = gen_rtx_SYMBOL_REF ( Pmode , ggc_strdup ( buf ) ) ; SYMBOL_REF_FLAGS ( label ) |= SYMBOL_FLAG_LOCAL ; if ( temp == NULL ) temp = gen_reg_rtx ( Pmode ) ;" GCC,riscv,775,"Predict the next statement of this code snippet: if ( ! riscv_split_symbol_type ( sym_type ) ) return false ; if ( GET_MODE_SIZE ( mode ) > UNITS_PER_WORD && ( ! TARGET_STRICT_ALIGN || GET_MODE_BITSIZE ( mode ) > GET_MODE_ALIGNMENT ( mode ) ) ) return false ; return true ;" GCC,riscv,776,"Predict the next statement of this code snippet: } if ( mode != BLKmode && might_split_p ) n += ( GET_MODE_SIZE ( mode ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ; if ( addr . type == ADDRESS_LO_SUM ) n += riscv_symbol_insns ( addr . symbol_type ) - ;" GCC,riscv,777,"Predict the next statement of this code snippet: bool riscv_epilogue_uses ( unsigned int regno ) { if ( regno == RETURN_ADDR_REGNUM ) return true ;" GCC,riscv,778,"Predict the next statement of this code snippet: static bool riscv_save_reg_p ( unsigned int regno ) { bool call_saved = ! global_regs [ regno ] && ! call_used_regs [ regno ] ; bool might_clobber = crtl -> saves_all_registers || df_regs_ever_live_p ( regno ) ;" GCC,riscv,779,"Predict the next statement of this code snippet: ssize_t bytes = snprintf ( buf , sizeof ( buf ) , , seqno ) ; gcc_assert ( ( size_t ) bytes < sizeof ( buf ) ) ; label = gen_rtx_SYMBOL_REF ( Pmode , ggc_strdup ( buf ) ) ; SYMBOL_REF_FLAGS ( label ) |= SYMBOL_FLAG_LOCAL ; if ( ! nonzero_address_p ( addr ) ) SYMBOL_REF_WEAK ( label ) = ; if ( temp == NULL ) temp = gen_reg_rtx ( Pmode ) ; if ( Pmode == DImode ) emit_insn ( gen_auipcdi ( temp , copy_rtx ( addr ) , GEN_INT ( seqno ) ) ) ; else emit_insn ( gen_auipcsi ( temp , copy_rtx ( addr ) , GEN_INT ( seqno ) ) ) ; * low_out = gen_rtx_LO_SUM ( Pmode , temp , label ) ; seqno ++ ; } break ; default :" GCC,riscv,780,"Predict the next statement of this code snippet: if ( TARGET_RVC && ! speed && riscv_mshorten_memrefs && mode == SImode && ! riscv_compressed_lw_address_p ( addr ) ) return riscv_address_insns ( addr , mode , false ) + ;" GCC,riscv,781,"Predict the next statement of this code snippet: int riscv_address_insns ( rtx x , machine_mode mode , bool might_split_p ) { struct riscv_address_info addr = { } ; int n = ; if ( ! riscv_classify_address ( & addr , x , mode , false ) ) { return ; } if ( mode != BLKmode && might_split_p ) n += ( GET_MODE_SIZE ( mode ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ;" GCC,riscv,782,"Predict the next statement of this code snippet: offset = CONST_LOW_PART ( offset ) ; high = riscv_force_temporary ( temp , high , FALSE ) ;" GCC,riscv,783,"Predict the next statement of this code snippet: high = gen_int_mode ( CONST_HIGH_PART ( offset ) , Pmode ) ; offset = CONST_LOW_PART ( offset ) ; high = riscv_force_temporary ( temp , high , FALSE ) ; reg = riscv_force_temporary ( temp , gen_rtx_PLUS ( Pmode , high , reg ) , FALSE ) ; }" GCC,riscv,784,"Predict the next statement of this code snippet: * loop_reg = copy_addr_to_reg ( XEXP ( mem , ) ) ;" GCC,riscv,785,"Predict the next statement of this code snippet: for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { reg = gen_rtx_REG ( SImode , regno ) ;" GCC,riscv,786,"Predict the next statement of this code snippet: static rtx riscv_adjust_libcall_cfi_epilogue ( ) { rtx dwarf = NULL_RTX ; rtx adjust_sp_rtx , reg ; int saved_size = cfun -> machine -> frame . save_libcall_adjustment ; adjust_sp_rtx = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( saved_size ) ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , adjust_sp_rtx , dwarf ) ; for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { reg = gen_rtx_REG ( SImode , regno ) ; dwarf = alloc_reg_note ( REG_CFA_RESTORE , reg , dwarf ) ;" GCC,riscv,787,"Predict the next statement of this code snippet: int saved_size = cfun -> machine -> frame . save_libcall_adjustment ; int offset ; for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { if ( regno == RETURN_ADDR_REGNUM ) offset = saved_size - UNITS_PER_WORD ; else if ( regno == S0_REGNUM ) offset = saved_size - UNITS_PER_WORD * ; else if ( regno == S1_REGNUM ) offset = saved_size - UNITS_PER_WORD * ; else offset = saved_size - ( ( regno - S2_REGNUM + ) * UNITS_PER_WORD ) ; reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , offset ) ) ; insn = gen_rtx_SET ( mem , reg ) ; dwarf = alloc_reg_note ( REG_CFA_OFFSET , insn , dwarf ) ; } adjust_sp_rtx = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - saved_size ) ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , adjust_sp_rtx , dwarf ) ; return dwarf ;" GCC,riscv,788,"Predict the next statement of this code snippet: for ( int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { if ( regno == RETURN_ADDR_REGNUM ) offset = saved_size - UNITS_PER_WORD ; else if ( regno == S0_REGNUM ) offset = saved_size - UNITS_PER_WORD * ; else if ( regno == S1_REGNUM ) offset = saved_size - UNITS_PER_WORD * ; else offset = saved_size - ( ( regno - S2_REGNUM + ) * UNITS_PER_WORD ) ; reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , offset ) ) ; insn = gen_rtx_SET ( mem , reg ) ; dwarf = alloc_reg_note ( REG_CFA_OFFSET , insn , dwarf ) ; } adjust_sp_rtx = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - saved_size ) ) ;" GCC,riscv,789,"Predict the next statement of this code snippet: return ! riscv_naked_function_p ( current_function_decl ) ;" GCC,riscv,790,"Predict the next statement of this code snippet: static bool riscv_allocate_stack_slots_for_args ( ) { return ! riscv_naked_function_p ( current_function_decl ) ;" GCC,riscv,791,"Predict the next statement of this code snippet: riscv_get_arg_info ( & arg , get_cumulative_args ( cum ) , generic_arg . mode , generic_arg . type , generic_arg . named , false ) ; return arg . stack_p ? arg . num_gprs * UNITS_PER_WORD : ;" GCC,riscv,792,"Predict the next statement of this code snippet: static unsigned HOST_WIDE_INT riscv_asan_shadow_offset ( void ) { return TARGET_64BIT ? ( HOST_WIDE_INT_1 << ) : ;" GCC,riscv,793,"Predict the next statement of this code snippet: static unsigned HOST_WIDE_INT riscv_asan_shadow_offset ( void ) {" GCC,riscv,794,"Predict the next statement of this code snippet: static int riscv_binary_cost ( rtx x , int single_insns , int double_insns ) { if ( GET_MODE_SIZE ( GET_MODE ( x ) ) == UNITS_PER_WORD * ) return COSTS_N_INSNS ( double_insns ) ;" GCC,riscv,795,"Predict the next statement of this code snippet: leftover = length % bytes_per_iter ; length -= leftover ; riscv_adjust_block_mem ( src , bytes_per_iter , & src_reg , & src ) ; riscv_adjust_block_mem ( dest , bytes_per_iter , & dest_reg , & dest ) ; final_src = expand_simple_binop ( Pmode , PLUS , src_reg , GEN_INT ( length ) , , , OPTAB_WIDEN ) ; label = gen_label_rtx ( ) ; emit_label ( label ) ; riscv_block_move_straight ( dest , src , bytes_per_iter ) ; riscv_emit_move ( src_reg , plus_constant ( Pmode , src_reg , bytes_per_iter ) ) ;" GCC,riscv,796,"Predict the next statement of this code snippet: static void riscv_block_move_straight ( rtx dest , rtx src , unsigned HOST_WIDE_INT length ) { unsigned HOST_WIDE_INT offset , delta ; unsigned HOST_WIDE_INT bits ; int i ; enum machine_mode mode ; rtx * regs ; bits = MAX ( BITS_PER_UNIT , MIN ( BITS_PER_WORD , MIN ( MEM_ALIGN ( src ) , MEM_ALIGN ( dest ) ) ) ) ; mode = mode_for_size ( bits , MODE_INT , ) . require ( ) ; delta = bits / BITS_PER_UNIT ; regs = XALLOCAVEC ( rtx , length / delta ) ; for ( offset = , i = ; offset + delta <= length ; offset += delta , i ++ ) { regs [ i ] = gen_reg_rtx ( mode ) ;" GCC,riscv,797,"Predict the next statement of this code snippet: for ( offset = , i = ; offset + delta <= length ; offset += delta , i ++ ) riscv_emit_move ( adjust_address ( dest , mode , offset ) , regs [ i ] ) ; if ( offset < length ) { src = adjust_address ( src , BLKmode , offset ) ; dest = adjust_address ( dest , BLKmode , offset ) ;" GCC,riscv,798,"Predict the next statement of this code snippet: } shifted_val = value << shift ; alt_cost = + riscv_build_integer_1 ( alt_codes , shifted_val , mode ) ; if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = LSHIFTRT ; alt_codes [ alt_cost - ] . value = shift ; memcpy ( codes , alt_codes , sizeof ( alt_codes ) ) ; cost = alt_cost ; }" GCC,riscv,799,"Predict the next statement of this code snippet: codes [ ] . value = value ; return ; } if ( TARGET_ZBS && SINGLE_BIT_MASK_OPERAND ( value ) ) { codes [ ] . code = UNKNOWN ; codes [ ] . value = value ; return ; } if ( low_part != && ( mode != HImode || value - low_part <= ( ( << ( GET_MODE_BITSIZE ( HImode ) - ) ) - ) ) ) { alt_cost = + riscv_build_integer_1 ( alt_codes , value - low_part , mode ) ; if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = PLUS ; alt_codes [ alt_cost - ] . value = low_part ; memcpy ( codes , alt_codes , sizeof ( alt_codes ) ) ; cost = alt_cost ; } } if ( cost > && ( low_part < || mode == HImode ) ) { alt_cost = + riscv_build_integer_1 ( alt_codes , value ^ low_part , mode ) ; if ( alt_cost < cost ) { alt_codes [ alt_cost - ] . code = XOR ;" GCC,riscv,800,"Predict the next statement of this code snippet: if ( ! riscv_tls_symbol ) riscv_tls_symbol = init_one_libfunc ( ) ; func = gen_rtx_MEM ( FUNCTION_MODE , riscv_tls_symbol ) ; start_sequence ( ) ; emit_insn ( riscv_got_load_tls_gd ( a0 , sym ) ) ; insn = emit_call_insn ( gen_call_value ( result , func , const0_rtx , NULL ) ) ; RTL_CONST_CALL_P ( insn ) = ;" GCC,riscv,801,"Predict the next statement of this code snippet: emit_insn ( riscv_got_load_tls_gd ( a0 , sym ) ) ; insn = emit_call_insn ( gen_call_value ( result , func , const0_rtx , NULL ) ) ; RTL_CONST_CALL_P ( insn ) = ; use_reg ( & CALL_INSN_FUNCTION_USAGE ( insn ) , a0 ) ; insn = get_insns ( ) ; end_sequence ( ) ;" GCC,riscv,802,"Predict the next statement of this code snippet: static bool riscv_cannot_copy_insn_p ( rtx_insn * insn ) { return recog_memoized ( insn ) >= && get_attr_cannot_copy ( insn ) ;" GCC,riscv,803,"Predict the next statement of this code snippet: split_const ( x , & base , & offset ) ; if ( riscv_symbolic_constant_p ( base , & type ) ) { if ( SMALL_OPERAND ( INTVAL ( offset ) ) && riscv_symbol_insns ( type ) > ) return true ; if ( flag_pic ) return true ; }" GCC,riscv,804,"Predict the next statement of this code snippet: return true ; } break ; case LEU : plus_one = trunc_int_for_mode ( UINTVAL ( * cmp1 ) + , mode ) ; if ( plus_one != ) { * code = LTU ; * cmp1 = force_reg ( mode , GEN_INT ( plus_one ) ) ; return true ;" GCC,riscv,805,"Predict the next statement of this code snippet: } break ; case LEU : plus_one = trunc_int_for_mode ( UINTVAL ( * cmp1 ) + , mode ) ; if ( plus_one != ) { * code = LTU ; * cmp1 = force_reg ( mode , GEN_INT ( plus_one ) ) ;" GCC,riscv,806,"Predict the next statement of this code snippet: static bool riscv_can_change_mode_class ( machine_mode , machine_mode , reg_class_t rclass ) {" GCC,riscv,807,"Predict the next statement of this code snippet: static bool riscv_can_change_mode_class ( machine_mode , machine_mode , reg_class_t rclass ) { return ! reg_classes_intersect_p ( FP_REGS , rclass ) ;" GCC,riscv,808,"Predict the next statement of this code snippet: static bool riscv_can_eliminate ( const int from ATTRIBUTE_UNUSED , const int to ) { return ( to == HARD_FRAME_POINTER_REGNUM || to == STACK_POINTER_REGNUM ) ;" GCC,riscv,809,"Predict the next statement of this code snippet: bool riscv_can_use_return_insn ( void ) {" GCC,riscv,810,"Predict the next statement of this code snippet: static enum riscv_symbol_type riscv_classify_symbol ( const_rtx x ) {" GCC,riscv,811,"Predict the next statement of this code snippet: if ( UNSPEC_ADDRESS_P ( x ) ) return UNSPEC_ADDRESS_TYPE ( x ) ;" GCC,riscv,812,"Predict the next statement of this code snippet: split_const ( x , & x , & offset ) ; if ( UNSPEC_ADDRESS_P ( x ) ) return UNSPEC_ADDRESS_TYPE ( x ) ; return riscv_classify_symbol ( x ) ;" GCC,riscv,813,"Predict the next statement of this code snippet: static unsigned char riscv_class_max_nregs ( reg_class_t rclass , machine_mode mode ) {" GCC,riscv,814,"Predict the next statement of this code snippet: struct riscv_address_info addr ; bool result = riscv_classify_address ( & addr , x , GET_MODE ( x ) , reload_completed ) ; if ( ! result || addr . type != ADDRESS_REG || ( reload_completed && ! riscv_compressed_reg_p ( REGNO ( addr . reg ) ) && addr . reg != stack_pointer_rtx ) || ! riscv_compressed_lw_offset_p ( addr . offset ) ) return false ; return result ;" GCC,riscv,815,"Predict the next statement of this code snippet: static bool riscv_compressed_lw_offset_p ( rtx x ) { return ( CONST_INT_P ( x ) && ( INTVAL ( x ) & ) == && IN_RANGE ( INTVAL ( x ) , , CSW_MAX_OFFSET ) ) ;" GCC,riscv,816,"Predict the next statement of this code snippet: return ( CONST_INT_P ( x ) && ( INTVAL ( x ) & ) == && IN_RANGE ( INTVAL ( x ) , , CSW_MAX_OFFSET ) ) ;" GCC,riscv,817,"Predict the next statement of this code snippet: HOST_WIDE_INT offset ; bool interrupt_save_prologue_temp = false ; unsigned int regno , i , num_x_saved = , num_f_saved = ; frame = & cfun -> machine -> frame ; if ( cfun -> machine -> interrupt_handler_p ) { HOST_WIDE_INT step1 = riscv_first_stack_step ( frame ) ; if ( ! SMALL_OPERAND ( frame -> total_size - step1 ) ) interrupt_save_prologue_temp = true ; } memset ( frame , , sizeof ( * frame ) ) ; if ( ! cfun -> machine -> naked_p ) { for ( regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) || ( interrupt_save_prologue_temp && ( regno == RISCV_PROLOGUE_TEMP_REGNUM ) ) ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( crtl -> calls_eh_return ) for ( i = ; ( regno = EH_RETURN_DATA_REGNO ( i ) ) != INVALID_REGNUM ; i ++ ) frame -> mask |= << ( regno - GP_REG_FIRST ) , num_x_saved ++ ; if ( TARGET_HARD_FLOAT ) for ( regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) if ( riscv_save_reg_p ( regno ) ) frame -> fmask |= << ( regno - FP_REG_FIRST ) , num_f_saved ++ ; } offset = RISCV_STACK_ALIGN ( crtl -> outgoing_args_size ) ; offset += RISCV_STACK_ALIGN ( get_frame_size ( ) ) ; frame -> frame_pointer_offset = offset ; if ( frame -> fmask ) offset += RISCV_STACK_ALIGN ( num_f_saved * UNITS_PER_FP_REG ) ; frame -> fp_sp_offset = offset - UNITS_PER_FP_REG ; if ( frame -> mask ) { unsigned x_save_size = RISCV_STACK_ALIGN ( num_x_saved * UNITS_PER_WORD ) ; unsigned num_save_restore = + riscv_save_libcall_count ( frame -> mask ) ; if ( RISCV_STACK_ALIGN ( num_save_restore * UNITS_PER_WORD ) == x_save_size ) { if ( TARGET_RVE ) x_save_size = * UNITS_PER_WORD ; frame -> save_libcall_adjustment = x_save_size ; } offset += x_save_size ; } frame -> gp_sp_offset = offset - UNITS_PER_WORD ; frame -> hard_frame_pointer_offset = offset ; offset += RISCV_STACK_ALIGN ( cfun -> machine -> varargs_size ) ; offset += RISCV_STACK_ALIGN ( crtl -> args . pretend_args_size ) ;" GCC,riscv,818,"Predict the next statement of this code snippet: } if ( ! TARGET_HARD_FLOAT ) { for ( int regno = FP_REG_FIRST ; regno <= FP_REG_LAST ; regno ++ ) fixed_regs [ regno ] = call_used_regs [ regno ] = ; } if ( UNITS_PER_FP_ARG == ) {" GCC,riscv,819,"Predict the next statement of this code snippet: case CONST_DOUBLE : case CONST_VECTOR : return x == CONST0_RTX ( GET_MODE ( x ) ) ? : ; case CONST : if ( riscv_symbolic_constant_p ( x , & symbol_type ) ) return riscv_symbol_insns ( symbol_type ) ; split_const ( x , & x , & offset ) ;" GCC,riscv,820,"Predict the next statement of this code snippet: if ( startswith ( s -> named . name , ) ) { char * name = ( char * ) alloca ( strlen ( s -> named . name ) + ) ; sprintf ( name , , s -> named . name + ) ; return get_section ( name , s -> named . common . flags , NULL ) ; } if ( s == data_section ) return sdata_section ;" GCC,riscv,821,"Predict the next statement of this code snippet: static section * riscv_elf_select_rtx_section ( machine_mode mode , rtx x , unsigned HOST_WIDE_INT align ) { section * s = default_elf_select_rtx_section ( mode , x , align ) ; if ( riscv_size_ok_for_small_data_p ( GET_MODE_SIZE ( mode ) ) ) { if ( startswith ( s -> named . name , ) ) { char * name = ( char * ) alloca ( strlen ( s -> named . name ) + ) ;" GCC,riscv,822,"Predict the next statement of this code snippet: fprintf ( asm_out_file , , TARGET_STRICT_ALIGN ? : ) ;" GCC,riscv,823,"Predict the next statement of this code snippet: case UNORDERED : * code = EQ ; case ORDERED : tmp0 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op0 ) ; tmp1 = riscv_force_binary ( word_mode , EQ , cmp_op1 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , AND , tmp0 , tmp1 ) ; * op1 = const0_rtx ; break ; case UNEQ : * code = EQ ; tmp0 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op0 ) ; tmp1 = riscv_force_binary ( word_mode , EQ , cmp_op1 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , AND , tmp0 , tmp1 ) ; * op1 = riscv_force_binary ( word_mode , EQ , cmp_op0 , cmp_op1 ) ; break ; case CODE : \ * code = EQ ; \ * op0 = gen_reg_rtx ( word_mode ) ; \ if ( GET_MODE ( cmp_op0 ) == SFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietsfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == SFmode ) \ emit_insn ( gen_f ## CMP ## _quietsfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode && TARGET_64BIT ) \ emit_insn ( gen_f ## CMP ## _quietdfdi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else if ( GET_MODE ( cmp_op0 ) == DFmode ) \ emit_insn ( gen_f ## CMP ## _quietdfsi4 ( * op0 , cmp_op0 , cmp_op1 ) ) ; \ else \ gcc_unreachable ( ) ; \ * op1 = const0_rtx ; \ break ; case UNLT : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGT , le ) case UNLE : std :: swap ( cmp_op0 , cmp_op1 ) ; gcc_fallthrough ( ) ; UNORDERED_COMPARISON ( UNGE , lt ) case NE : fp_code = EQ ; * code = EQ ; case EQ : case LE : case LT : case GE : case GT : * op0 = riscv_force_binary ( word_mode , fp_code , cmp_op0 , cmp_op1 ) ; * op1 = const0_rtx ; break ; case LTGT : tmp0 = riscv_force_binary ( word_mode , LT , cmp_op0 , cmp_op1 ) ; tmp1 = riscv_force_binary ( word_mode , GT , cmp_op0 , cmp_op1 ) ; * op0 = riscv_force_binary ( word_mode , IOR , tmp0 , tmp1 ) ; * op1 = const0_rtx ; break ; default :" GCC,riscv,824,"Predict the next statement of this code snippet: static void riscv_emit_int_order_test ( enum rtx_code code , bool * invert_ptr , rtx target , rtx cmp0 , rtx cmp1 ) { machine_mode mode ; mode = GET_MODE ( cmp0 ) ; if ( riscv_canonicalize_int_order_test ( & code , & cmp1 , mode ) ) riscv_emit_binary ( code , target , cmp0 , cmp1 ) ; else { enum rtx_code inv_code = reverse_condition ( code ) ; if ( ! riscv_canonicalize_int_order_test ( & inv_code , & cmp1 , mode ) ) { cmp1 = force_reg ( mode , cmp1 ) ; riscv_emit_int_order_test ( code , invert_ptr , target , cmp0 , cmp1 ) ; } else if ( invert_ptr == ) {" GCC,riscv,825,"Predict the next statement of this code snippet: rtx riscv_emit_move ( rtx dest , rtx src ) { return ( can_create_pseudo_p ( ) ? emit_move_insn ( dest , src ) : emit_move_insn_1 ( dest , src ) ) ;" GCC,riscv,826,"Predict the next statement of this code snippet: rtx riscv_emit_move ( rtx dest , rtx src ) { return ( can_create_pseudo_p ( ) ? emit_move_insn ( dest , src ) : emit_move_insn_1 ( dest , src ) ) ;" GCC,riscv,827,"Predict the next statement of this code snippet: static rtx riscv_emit_set ( rtx target , rtx src ) {" GCC,riscv,828,"Predict the next statement of this code snippet: static void riscv_emit_stack_tie ( void ) { if ( Pmode == SImode ) emit_insn ( gen_stack_tiesi ( stack_pointer_rtx , hard_frame_pointer_rtx ) ) ; else emit_insn ( gen_stack_tiedi ( stack_pointer_rtx , hard_frame_pointer_rtx ) ) ;" GCC,riscv,829,"Predict the next statement of this code snippet: if ( regno == RETURN_ADDR_REGNUM ) return true ; if ( epilogue_completed && cfun -> machine -> interrupt_handler_p ) {" GCC,riscv,830,"Predict the next statement of this code snippet: if ( regno == RETURN_ADDR_REGNUM ) return true ; if ( epilogue_completed && cfun -> machine -> interrupt_handler_p ) { if ( df_regs_ever_live_p ( regno ) || ( ! crtl -> is_leaf && call_used_or_fixed_reg_p ( regno ) ) ) return true ;" GCC,riscv,831,"Predict the next statement of this code snippet: for ( unsigned i = min_iter_words ; i < min_iter_words * - ; i ++ ) { unsigned cur_cost = iter_words + words % iter_words ; unsigned new_cost = i + words % i ; if ( new_cost <= cur_cost ) iter_words = i ; } riscv_block_move_loop ( dest , src , bytes , iter_words * UNITS_PER_WORD ) ; return true ; } } return false ;" GCC,riscv,832,"Predict the next statement of this code snippet: void riscv_expand_conditional_branch ( rtx label , rtx_code code , rtx op0 , rtx op1 ) { if ( FLOAT_MODE_P ( GET_MODE ( op1 ) ) ) riscv_emit_float_compare ( & code , & op0 , & op1 ) ; else riscv_emit_int_compare ( & code , & op0 , & op1 ) ; rtx condition = gen_rtx_fmt_ee ( code , VOIDmode , op0 , op1 ) ;" GCC,riscv,833,"Predict the next statement of this code snippet: riscv_emit_int_compare ( & code , & op0 , & op1 ) ;" GCC,riscv,834,"Predict the next statement of this code snippet: } if ( ( style == NORMAL_RETURN ) && riscv_can_use_return_insn ( ) ) { emit_jump_insn ( gen_return ( ) ) ; return ; } epilogue_cfa_sp_offset = ; if ( cfun -> calls_alloca ) { riscv_emit_stack_tie ( ) ; need_barrier_p = false ; rtx adjust = GEN_INT ( - frame -> hard_frame_pointer_offset ) ; if ( ! SMALL_OPERAND ( INTVAL ( adjust ) ) ) { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , adjust ) ; adjust = RISCV_PROLOGUE_TEMP ( Pmode ) ; } insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , hard_frame_pointer_rtx , adjust ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_value = gen_rtx_PLUS ( Pmode , hard_frame_pointer_rtx , GEN_INT ( - frame -> hard_frame_pointer_offset ) ) ; rtx cfa_adjust_rtx = gen_rtx_SET ( stack_pointer_rtx , cfa_adjust_value ) ; dwarf = alloc_reg_note ( REG_CFA_ADJUST_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { step2 = riscv_first_stack_step ( frame ) ; step1 -= step2 ; } if ( step1 > ) { riscv_emit_stack_tie ( ) ; need_barrier_p = false ; rtx adjust = GEN_INT ( step1 ) ; if ( ! SMALL_OPERAND ( step1 ) ) { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , adjust ) ; adjust = RISCV_PROLOGUE_TEMP ( Pmode ) ; } insn = emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , adjust ) ) ; rtx dwarf = NULL_RTX ; rtx cfa_adjust_rtx = gen_rtx_PLUS ( Pmode , stack_pointer_rtx , GEN_INT ( step2 ) ) ; dwarf = alloc_reg_note ( REG_CFA_DEF_CFA , cfa_adjust_rtx , dwarf ) ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } else if ( frame_pointer_needed ) { epilogue_cfa_sp_offset = step2 ; } if ( use_restore_libcall ) frame -> mask = ; riscv_for_each_saved_reg ( frame -> total_size - step2 , riscv_restore_reg , true , style == EXCEPTION_RETURN ) ; if ( use_restore_libcall ) { frame -> mask = mask ; gcc_assert ( step2 >= frame -> save_libcall_adjustment ) ; step2 -= frame -> save_libcall_adjustment ; } if ( need_barrier_p ) riscv_emit_stack_tie ( ) ; if ( step2 > ) {" GCC,riscv,835,"Predict the next statement of this code snippet: void riscv_expand_float_scc ( rtx target , enum rtx_code code , rtx op0 , rtx op1 ) { riscv_emit_float_compare ( & code , & op0 , & op1 ) ;" GCC,riscv,836,"Predict the next statement of this code snippet: riscv_emit_float_compare ( & code , & op0 , & op1 ) ; rtx cmp = riscv_force_binary ( word_mode , code , op0 , op1 ) ; riscv_emit_set ( target , lowpart_subreg ( SImode , cmp , word_mode ) ) ;" GCC,riscv,837,"Predict the next statement of this code snippet: op0 = force_reg ( word_mode , op0 ) ; if ( code == EQ || code == NE ) { rtx zie = riscv_zero_if_equal ( op0 , op1 ) ; riscv_emit_binary ( code , target , zie , const0_rtx ) ; } else riscv_emit_int_order_test ( code , , target , op0 , op1 ) ;" GCC,riscv,838,"Predict the next statement of this code snippet: if ( code == EQ || code == NE ) { rtx zie = riscv_zero_if_equal ( op0 , op1 ) ;" GCC,riscv,839,"Predict the next statement of this code snippet: if ( cfun -> machine -> naked_p ) return ; if ( riscv_use_save_libcall ( frame ) ) { rtx dwarf = NULL_RTX ; dwarf = riscv_adjust_libcall_cfi_prologue ( ) ; size -= frame -> save_libcall_adjustment ; insn = emit_insn ( riscv_gen_gpr_save_insn ( frame ) ) ; frame -> mask = ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { HOST_WIDE_INT step1 = MIN ( size , riscv_first_stack_step ( frame ) ) ; insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - step1 ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; size -= step1 ; riscv_for_each_saved_reg ( size , riscv_save_reg , false , false ) ; } frame -> mask = mask ; if ( frame_pointer_needed ) { insn = gen_add3_insn ( hard_frame_pointer_rtx , stack_pointer_rtx , GEN_INT ( frame -> hard_frame_pointer_offset - size ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; riscv_emit_stack_tie ( ) ; } if ( size > ) { if ( SMALL_OPERAND ( - size ) ) { insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - size ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ; } else { riscv_emit_move ( RISCV_PROLOGUE_TEMP ( Pmode ) , GEN_INT ( - size ) ) ; emit_insn ( gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , RISCV_PROLOGUE_TEMP ( Pmode ) ) ) ; insn = plus_constant ( Pmode , stack_pointer_rtx , - size ) ; insn = gen_rtx_SET ( stack_pointer_rtx , insn ) ;" GCC,riscv,840,"Predict the next statement of this code snippet: if ( cfun -> machine -> naked_p ) return ; if ( riscv_use_save_libcall ( frame ) ) { rtx dwarf = NULL_RTX ; dwarf = riscv_adjust_libcall_cfi_prologue ( ) ; size -= frame -> save_libcall_adjustment ; insn = emit_insn ( riscv_gen_gpr_save_insn ( frame ) ) ; frame -> mask = ; RTX_FRAME_RELATED_P ( insn ) = ; REG_NOTES ( insn ) = dwarf ; } if ( ( frame -> mask | frame -> fmask ) != ) { HOST_WIDE_INT step1 = MIN ( size , riscv_first_stack_step ( frame ) ) ; insn = gen_add3_insn ( stack_pointer_rtx , stack_pointer_rtx , GEN_INT ( - step1 ) ) ; RTX_FRAME_RELATED_P ( emit_insn ( insn ) ) = ;" GCC,riscv,841,"Predict the next statement of this code snippet: if ( GET_MODE_SIZE ( word_mode ) > GET_MODE_SIZE ( GET_MODE ( * op0 ) ) ) { if ( unsigned_condition ( code ) == code && ( GET_MODE ( * op0 ) == QImode && ! ( GET_CODE ( * op0 ) == SUBREG && SUBREG_PROMOTED_VAR_P ( * op0 ) && SUBREG_PROMOTED_SIGNED_P ( * op0 ) && ( CONST_INT_P ( * op1 ) || ( GET_CODE ( * op1 ) == SUBREG && SUBREG_PROMOTED_VAR_P ( * op1 ) && SUBREG_PROMOTED_SIGNED_P ( * op1 ) ) ) ) ) ) { * op0 = gen_rtx_ZERO_EXTEND ( word_mode , * op0 ) ; if ( CONST_INT_P ( * op1 ) ) * op1 = GEN_INT ( ( uint8_t ) INTVAL ( * op1 ) ) ; else * op1 = gen_rtx_ZERO_EXTEND ( word_mode , * op1 ) ; } else { * op0 = gen_rtx_SIGN_EXTEND ( word_mode , * op0 ) ; if ( * op1 != const0_rtx ) * op1 = gen_rtx_SIGN_EXTEND ( word_mode , * op1 ) ; } }" GCC,riscv,842,"Predict the next statement of this code snippet: static void riscv_extend_comparands ( rtx_code code , rtx * op0 , rtx * op1 ) { if ( GET_MODE_SIZE ( word_mode ) > GET_MODE_SIZE ( GET_MODE ( * op0 ) ) ) { if ( unsigned_condition ( code ) == code && ( GET_MODE ( * op0 ) == QImode && ! ( GET_CODE ( * op0 ) == SUBREG && SUBREG_PROMOTED_VAR_P ( * op0 ) && SUBREG_PROMOTED_SIGNED_P ( * op0 ) && ( CONST_INT_P ( * op1 ) || ( GET_CODE ( * op1 ) == SUBREG && SUBREG_PROMOTED_VAR_P ( * op1 ) && SUBREG_PROMOTED_SIGNED_P ( * op1 ) ) ) ) ) ) { * op0 = gen_rtx_ZERO_EXTEND ( word_mode , * op0 ) ; if ( CONST_INT_P ( * op1 ) ) * op1 = GEN_INT ( ( uint8_t ) INTVAL ( * op1 ) ) ; else * op1 = gen_rtx_ZERO_EXTEND ( word_mode , * op1 ) ;" GCC,riscv,843,"Predict the next statement of this code snippet: if ( unsigned_p && GET_MODE ( op ) == QImode ) return COSTS_N_INSNS ( ) ; if ( TARGET_ZBA && TARGET_64BIT && unsigned_p && GET_MODE ( op ) == SImode ) return COSTS_N_INSNS ( ) ; if ( TARGET_ZBB ) { if ( ! unsigned_p && GET_MODE ( op ) == QImode ) return COSTS_N_INSNS ( ) ; if ( GET_MODE ( op ) == HImode ) return COSTS_N_INSNS ( ) ; } if ( ! unsigned_p && GET_MODE ( op ) == SImode ) return COSTS_N_INSNS ( ) ; return COSTS_N_INSNS ( ) ;" GCC,riscv,844,"Predict the next statement of this code snippet: if ( MEM_P ( op ) ) return ; if ( unsigned_p && GET_MODE ( op ) == QImode ) return COSTS_N_INSNS ( ) ; if ( TARGET_ZBA && TARGET_64BIT && unsigned_p && GET_MODE ( op ) == SImode ) return COSTS_N_INSNS ( ) ; if ( TARGET_ZBB ) { if ( ! unsigned_p && GET_MODE ( op ) == QImode ) return COSTS_N_INSNS ( ) ;" GCC,riscv,845,"Predict the next statement of this code snippet: default_file_start ( ) ; fprintf ( asm_out_file , , ( flag_pic ? : ) ) ; if ( ! riscv_mrelax ) fprintf ( asm_out_file , ) ;" GCC,riscv,846,"Predict the next statement of this code snippet: gcc_assert ( min_first_step <= max_first_step ) ; if ( ! SMALL_OPERAND ( min_second_step ) && frame -> total_size % IMM_REACH < IMM_REACH / && frame -> total_size % IMM_REACH >= min_first_step ) return frame -> total_size % IMM_REACH ; if ( TARGET_RVC ) { if ( IN_RANGE ( min_second_step , , ( TARGET_64BIT ? SDSP_REACH : SWSP_REACH ) ) ) return MAX ( min_second_step , min_first_step ) ; else if ( ! SMALL_OPERAND ( min_second_step ) ) return min_first_step ; } return max_first_step ;" GCC,riscv,847,"Predict the next statement of this code snippet: if ( ! type || TREE_CODE ( type ) != RECORD_TYPE ) return - ;" GCC,riscv,848,"Predict the next statement of this code snippet: static int riscv_flatten_aggregate_argument ( const_tree type , riscv_aggregate_field fields [ ] , bool ignore_zero_width_bit_field_p ) { if ( ! type || TREE_CODE ( type ) != RECORD_TYPE ) return - ;" GCC,riscv,849,"Predict the next statement of this code snippet: n = riscv_flatten_aggregate_field ( TREE_TYPE ( f ) , fields , n , pos , ignore_zero_width_bit_field_p ) ; } if ( n < ) return - ; } return n ; case ARRAY_TYPE : { HOST_WIDE_INT n_elts ; riscv_aggregate_field subfields [ ] ; tree index = TYPE_DOMAIN ( type ) ; tree elt_size = TYPE_SIZE_UNIT ( TREE_TYPE ( type ) ) ; int n_subfields = riscv_flatten_aggregate_field ( TREE_TYPE ( type ) , subfields , , offset , ignore_zero_width_bit_field_p ) ; if ( n_subfields <= || ! COMPLETE_TYPE_P ( type ) || TREE_CODE ( TYPE_SIZE ( type ) ) != INTEGER_CST || ! index || ! TYPE_MAX_VALUE ( index ) || ! tree_fits_uhwi_p ( TYPE_MAX_VALUE ( index ) ) || ! TYPE_MIN_VALUE ( index ) || ! tree_fits_uhwi_p ( TYPE_MIN_VALUE ( index ) ) || ! tree_fits_uhwi_p ( elt_size ) ) return - ; n_elts = + tree_to_uhwi ( TYPE_MAX_VALUE ( index ) ) - tree_to_uhwi ( TYPE_MIN_VALUE ( index ) ) ; gcc_assert ( n_elts >= ) ; for ( HOST_WIDE_INT i = ; i < n_elts ; i ++ ) for ( int j = ; j < n_subfields ; j ++ ) { if ( n >= ) return - ; fields [ n ] = subfields [ j ] ; fields [ n ++ ] . offset += i * tree_to_uhwi ( elt_size ) ; } return n ; } case COMPLEX_TYPE : { if ( n != ) return - ; HOST_WIDE_INT elt_size = GET_MODE_SIZE ( TYPE_MODE ( TREE_TYPE ( type ) ) ) ; if ( elt_size <= UNITS_PER_FP_ARG ) { fields [ ] . type = TREE_TYPE ( type ) ; fields [ ] . offset = offset ; fields [ ] . type = TREE_TYPE ( type ) ;" GCC,riscv,850,"Predict the next statement of this code snippet: static rtx riscv_force_address ( rtx x , machine_mode mode ) { if ( ! riscv_legitimate_address_p ( mode , x , false ) ) x = force_reg ( Pmode , x ) ; return x ;" GCC,riscv,851,"Predict the next statement of this code snippet: static rtx riscv_force_binary ( machine_mode mode , enum rtx_code code , rtx x , rtx y ) {" GCC,riscv,852,"Predict the next statement of this code snippet: return riscv_emit_binary ( code , gen_reg_rtx ( mode ) , x , y ) ;" GCC,riscv,853,"Predict the next statement of this code snippet: for ( unsigned int regno = GP_REG_FIRST ; regno <= GP_REG_LAST ; regno ++ ) if ( BITSET_P ( cfun -> machine -> frame . mask , regno - GP_REG_FIRST ) ) { bool handle_reg = TRUE ; if ( epilogue && ! maybe_eh_return && crtl -> calls_eh_return ) { unsigned int i , regnum ; for ( i = ; ( regnum = EH_RETURN_DATA_REGNO ( i ) ) != INVALID_REGNUM ; i ++ ) if ( regno == regnum ) { handle_reg = FALSE ; break ; } } if ( handle_reg ) riscv_save_restore_reg ( word_mode , regno , offset , fn ) ; offset -= UNITS_PER_WORD ; } offset = cfun -> machine -> frame . fp_sp_offset - sp_offset ;" GCC,riscv,854,"Predict the next statement of this code snippet: rtx set = gen_rtx_SET ( mem , reg ) ;" GCC,riscv,855,"Predict the next statement of this code snippet: CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; struct riscv_arg_info info ; if ( arg . end_marker_p ( ) ) return NULL ; return riscv_get_arg_info ( & info , cum , arg . mode , arg . type , arg . named , false ) ;" GCC,riscv,856,"Predict the next statement of this code snippet: struct riscv_arg_info info ; if ( arg . end_marker_p ( ) ) return NULL ;" GCC,riscv,857,"Predict the next statement of this code snippet: struct riscv_arg_info info ; riscv_get_arg_info ( & info , cum , arg . mode , arg . type , arg . named , false ) ;" GCC,riscv,858,"Predict the next statement of this code snippet: riscv_get_arg_info ( & info , cum , arg . mode , arg . type , arg . named , false ) ;" GCC,riscv,859,"Predict the next statement of this code snippet: else alignment = type ? TYPE_ALIGN ( type ) : GET_MODE_ALIGNMENT ( mode ) ;" GCC,riscv,860,"Predict the next statement of this code snippet: if ( cfun -> machine -> naked_p ) return false ; if ( cfun -> machine -> interrupt_handler_p ) return false ;" GCC,riscv,861,"Predict the next statement of this code snippet: mode = TYPE_MODE ( type ) ; mode = promote_function_mode ( type , mode , & unsigned_p , func , ) ; } memset ( & args , , sizeof args ) ;" GCC,riscv,862,"Predict the next statement of this code snippet: case : return riscv_pass_fpr_single ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ; case : return riscv_pass_fpr_pair ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset , fregno + , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ; default : gcc_unreachable ( ) ; } if ( ( info -> num_fprs = riscv_pass_mode_in_fpr_p ( mode ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( GET_MODE_CLASS ( mode ) ) { case MODE_FLOAT : return gen_rtx_REG ( mode , fregno ) ; case MODE_COMPLEX_FLOAT :" GCC,riscv,863,"Predict the next statement of this code snippet: unsigned fpr_base = return_p ? FP_RETURN : FP_ARG_FIRST ; unsigned gpr_base = return_p ? GP_RETURN : GP_ARG_FIRST ; unsigned alignment = riscv_function_arg_boundary ( mode , type ) ; memset ( info , , sizeof ( * info ) ) ; info -> gpr_offset = cum -> num_gprs ; info -> fpr_offset = cum -> num_fprs ; if ( named ) { riscv_aggregate_field fields [ ] ; unsigned fregno = fpr_base + info -> fpr_offset ; unsigned gregno = gpr_base + info -> gpr_offset ; if ( ( info -> num_fprs = riscv_pass_aggregate_in_fpr_pair_p ( type , fields ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( info -> num_fprs ) { case : return riscv_pass_fpr_single ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ; case : return riscv_pass_fpr_pair ( mode , fregno , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset , fregno + , TYPE_MODE ( fields [ ] . type ) , fields [ ] . offset ) ; default : gcc_unreachable ( ) ; } if ( ( info -> num_fprs = riscv_pass_mode_in_fpr_p ( mode ) ) && info -> fpr_offset + info -> num_fprs <= MAX_ARGS_IN_REGISTERS ) switch ( GET_MODE_CLASS ( mode ) ) { case MODE_FLOAT :" GCC,riscv,864,"Predict the next statement of this code snippet: if ( ( TREE_CODE ( decl ) != FUNCTION_DECL ) || ( ! riscv_interrupt_type_p ( TREE_TYPE ( decl ) ) ) ) return UNKNOWN_MODE ; tree attr_args = TREE_VALUE ( lookup_attribute ( , TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ) ) ; if ( attr_args && TREE_CODE ( TREE_VALUE ( attr_args ) ) != VOID_TYPE ) { const char * string = TREE_STRING_POINTER ( TREE_VALUE ( attr_args ) ) ; if ( ! strcmp ( string , ) ) return USER_MODE ; else if ( ! strcmp ( string , ) ) return SUPERVISOR_MODE ;" GCC,riscv,865,"Predict the next statement of this code snippet: static enum riscv_privilege_levels riscv_get_interrupt_type ( tree decl ) { gcc_assert ( decl != NULL_TREE ) ; if ( ( TREE_CODE ( decl ) != FUNCTION_DECL ) || ( ! riscv_interrupt_type_p ( TREE_TYPE ( decl ) ) ) ) return UNKNOWN_MODE ; tree attr_args = TREE_VALUE ( lookup_attribute ( , TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ) ) ; if ( attr_args && TREE_CODE ( TREE_VALUE ( attr_args ) ) != VOID_TYPE ) { const char * string = TREE_STRING_POINTER ( TREE_VALUE ( attr_args ) ) ; if ( ! strcmp ( string , ) ) return USER_MODE ; else if ( ! strcmp ( string , ) ) return SUPERVISOR_MODE ; else return MACHINE_MODE ;" GCC,riscv,866,"Predict the next statement of this code snippet: if ( Pmode == DImode ) return gen_got_load_tls_gddi ( dest , sym ) ;" GCC,riscv,867,"Predict the next statement of this code snippet: static rtx riscv_got_load_tls_gd ( rtx dest , rtx sym ) { if ( Pmode == DImode ) return gen_got_load_tls_gddi ( dest , sym ) ;" GCC,riscv,868,"Predict the next statement of this code snippet: static rtx riscv_got_load_tls_ie ( rtx dest , rtx sym ) { if ( Pmode == DImode ) return gen_got_load_tls_iedi ( dest , sym ) ;" GCC,riscv,869,"Predict the next statement of this code snippet: if ( Pmode == DImode ) return gen_got_load_tls_iedi ( dest , sym ) ;" GCC,riscv,870,"Predict the next statement of this code snippet: bool riscv_gpr_save_operation_p ( rtx op ) { unsigned len = XVECLEN ( op , ) ; if ( len > ARRAY_SIZE ( gpr_save_reg_order ) ) return false ; for ( unsigned i = ; i < len ; i ++ ) { rtx elt = XVECEXP ( op , , i ) ; if ( i == ) {" GCC,riscv,871,"Predict the next statement of this code snippet: if ( FP_REG_P ( regno ) ) return ( GET_MODE_SIZE ( mode ) + UNITS_PER_FP_REG - ) / UNITS_PER_FP_REG ;" GCC,riscv,872,"Predict the next statement of this code snippet: static unsigned int riscv_hard_regno_nregs ( unsigned int regno , machine_mode mode ) { if ( FP_REG_P ( regno ) ) return ( GET_MODE_SIZE ( mode ) + UNITS_PER_FP_REG - ) / UNITS_PER_FP_REG ; return ( GET_MODE_SIZE ( mode ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ;" GCC,riscv,873,"Predict the next statement of this code snippet: case LT : case LTU : return SMALL_OPERAND ( x ) ; case LE : return SMALL_OPERAND ( x + ) ; case LEU : return SMALL_OPERAND ( x + ) && x + != ; case GE : case GEU : return x == ; default :" GCC,riscv,874,"Predict the next statement of this code snippet: if ( to == HARD_FRAME_POINTER_REGNUM ) dest = cfun -> machine -> frame . hard_frame_pointer_offset ; else if ( to == STACK_POINTER_REGNUM ) dest = ; else gcc_unreachable ( ) ; if ( from == FRAME_POINTER_REGNUM ) src = cfun -> machine -> frame . frame_pointer_offset ; else if ( from == ARG_POINTER_REGNUM ) src = cfun -> machine -> frame . arg_pointer_offset ;" GCC,riscv,875,"Predict the next statement of this code snippet: static struct machine_function * riscv_init_machine_status ( void ) {" GCC,riscv,876,"Predict the next statement of this code snippet: static int riscv_integer_cost ( HOST_WIDE_INT val ) { struct riscv_integer_op codes [ RISCV_MAX_INTEGER_OPS ] ; return MIN ( riscv_build_integer ( codes , val , VOIDmode ) , riscv_split_integer_cost ( val ) ) ;" GCC,riscv,877,"Predict the next statement of this code snippet: struct riscv_integer_op codes [ RISCV_MAX_INTEGER_OPS ] ; return MIN ( riscv_build_integer ( codes , val , VOIDmode ) , riscv_split_integer_cost ( val ) ) ;" GCC,riscv,878,"Predict the next statement of this code snippet: static bool riscv_interrupt_type_p ( tree type ) {" GCC,riscv,879,"Predict the next statement of this code snippet: return lookup_attribute ( , TYPE_ATTRIBUTES ( type ) ) != NULL ;" GCC,riscv,880,"Predict the next statement of this code snippet: return cmp1 == const1_rtx ; case LT : case LTU : return arith_operand ( cmp1 , VOIDmode ) ; case LE : return sle_operand ( cmp1 , VOIDmode ) ; case LEU : return sleu_operand ( cmp1 , VOIDmode ) ; default : gcc_unreachable ( ) ;" GCC,riscv,881,"Predict the next statement of this code snippet: if ( TREE_CODE ( x ) == VAR_DECL && DECL_SECTION_NAME ( x ) ) { const char * sec = DECL_SECTION_NAME ( x ) ; return strcmp ( sec , ) == || strcmp ( sec , ) == ; }" GCC,riscv,882,"Predict the next statement of this code snippet: if ( TREE_CODE ( x ) == VAR_DECL && DECL_SECTION_NAME ( x ) ) { const char * sec = DECL_SECTION_NAME ( x ) ; return strcmp ( sec , ) == || strcmp ( sec , ) == ; } return riscv_size_ok_for_small_data_p ( int_size_in_bytes ( TREE_TYPE ( x ) ) ) ;" GCC,riscv,883,"Predict the next statement of this code snippet: static int riscv_issue_rate ( void ) {" GCC,riscv,884,"Predict the next statement of this code snippet: return riscv_classify_address ( & addr , x , mode , strict_p ) ;" GCC,riscv,885,"Predict the next statement of this code snippet: static bool riscv_legitimate_address_p ( machine_mode mode , rtx x , bool strict_p ) {" GCC,riscv,886,"Predict the next statement of this code snippet: static bool riscv_legitimate_constant_p ( machine_mode mode ATTRIBUTE_UNUSED , rtx x ) { return riscv_const_insns ( x ) > ;" GCC,riscv,887,"Predict the next statement of this code snippet: static bool riscv_legitimate_constant_p ( machine_mode mode ATTRIBUTE_UNUSED , rtx x ) {" GCC,riscv,888,"Predict the next statement of this code snippet: static rtx riscv_legitimize_address ( rtx x , rtx oldx ATTRIBUTE_UNUSED , machine_mode mode ) { rtx addr ; if ( riscv_tls_symbol_p ( x ) ) return riscv_legitimize_tls_address ( x ) ; if ( riscv_split_symbol ( NULL , x , mode , & addr , FALSE ) ) return riscv_force_address ( addr , mode ) ; if ( GET_CODE ( x ) == PLUS && CONST_INT_P ( XEXP ( x , ) ) && INTVAL ( XEXP ( x , ) ) != ) { rtx base = XEXP ( x , ) ; HOST_WIDE_INT offset = INTVAL ( XEXP ( x , ) ) ; if ( ! riscv_valid_base_register_p ( base , mode , false ) ) base = copy_to_mode_reg ( Pmode , base ) ; if ( optimize_function_for_size_p ( cfun ) && ( strcmp ( current_pass -> name , ) == ) && mode == SImode ) addr = riscv_shorten_lw_offset ( base , offset ) ; else addr = riscv_add_offset ( NULL , base , offset ) ;" GCC,riscv,889,"Predict the next statement of this code snippet: riscv_emit_move ( reg , addr ) ; return reg ; } return addr ;" GCC,riscv,890,"Predict the next statement of this code snippet: if ( ! call_insn_operand ( addr , VOIDmode ) ) {" GCC,riscv,891,"Predict the next statement of this code snippet: riscv_move_integer ( dest , dest , INTVAL ( src ) , mode , FALSE ) ; return ; } if ( riscv_split_symbol ( dest , src , MAX_MACHINE_MODE , & src , FALSE ) ) { riscv_emit_set ( dest , src ) ; return ; } if ( riscv_tls_symbol_p ( src ) ) { riscv_emit_move ( dest , riscv_legitimize_tls_address ( src ) ) ; return ; } split_const ( src , & base , & offset ) ; if ( offset != const0_rtx && ( targetm . cannot_force_const_mem ( mode , src ) || can_create_pseudo_p ( ) ) ) { base = riscv_force_temporary ( dest , base , FALSE ) ; riscv_emit_move ( dest , riscv_add_offset ( NULL , base , INTVAL ( offset ) ) ) ; return ; }" GCC,riscv,892,"Predict the next statement of this code snippet: tp = gen_rtx_REG ( Pmode , THREAD_POINTER_REGNUM ) ; tmp = gen_reg_rtx ( Pmode ) ; emit_insn ( riscv_got_load_tls_ie ( tmp , loc ) ) ; dest = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_add3_insn ( dest , tmp , tp ) ) ; break ; case TLS_MODEL_LOCAL_EXEC :" GCC,riscv,893,"Predict the next statement of this code snippet: if ( ! flag_pic ) model = TLS_MODEL_LOCAL_EXEC ; switch ( model ) { case TLS_MODEL_LOCAL_DYNAMIC : case TLS_MODEL_GLOBAL_DYNAMIC : tmp = gen_rtx_REG ( Pmode , GP_RETURN ) ; dest = gen_reg_rtx ( Pmode ) ; emit_libcall_block ( riscv_call_tls_get_addr ( loc , tmp ) , dest , tmp , loc ) ; break ; case TLS_MODEL_INITIAL_EXEC : tp = gen_rtx_REG ( Pmode , THREAD_POINTER_REGNUM ) ; tmp = gen_reg_rtx ( Pmode ) ; emit_insn ( riscv_got_load_tls_ie ( tmp , loc ) ) ; dest = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_add3_insn ( dest , tmp , tp ) ) ; break ; case TLS_MODEL_LOCAL_EXEC : tmp = riscv_unspec_offset_high ( NULL , loc , SYMBOL_TLS_LE ) ;" GCC,riscv,894,"Predict the next statement of this code snippet: rtx set ; gcc_assert ( MEM_P ( mem ) ) ; mode = GET_MODE ( mem ) ; might_split_p = true ; if ( GET_MODE_BITSIZE ( mode ) <= ) might_split_p = false ; else if ( GET_MODE_BITSIZE ( mode ) == ) { set = single_set ( insn ) ; if ( set && ! riscv_split_64bit_move_p ( SET_DEST ( set ) , SET_SRC ( set ) ) ) might_split_p = false ;" GCC,riscv,895,"Predict the next statement of this code snippet: case MEMMODEL_ACQUIRE : case MEMMODEL_CONSUME : case MEMMODEL_SYNC_ACQUIRE : return true ; case MEMMODEL_RELEASE : case MEMMODEL_SYNC_RELEASE : case MEMMODEL_RELAXED : return false ;" GCC,riscv,896,"Predict the next statement of this code snippet: case MEMMODEL_ACQUIRE : case MEMMODEL_CONSUME : case MEMMODEL_SYNC_ACQUIRE : return true ; case MEMMODEL_RELEASE : case MEMMODEL_SYNC_RELEASE : case MEMMODEL_RELAXED : return false ; default : gcc_unreachable ( ) ;" GCC,riscv,897,"Predict the next statement of this code snippet: case MEMMODEL_ACQUIRE : case MEMMODEL_CONSUME : case MEMMODEL_SYNC_ACQUIRE : case MEMMODEL_RELAXED : return false ; default : gcc_unreachable ( ) ;" GCC,riscv,898,"Predict the next statement of this code snippet: static bool riscv_memmodel_needs_release_fence ( enum memmodel model ) { switch ( model ) { case MEMMODEL_ACQ_REL : case MEMMODEL_SEQ_CST : case MEMMODEL_SYNC_SEQ_CST : case MEMMODEL_RELEASE : case MEMMODEL_SYNC_RELEASE : return true ; case MEMMODEL_ACQUIRE : case MEMMODEL_CONSUME : case MEMMODEL_SYNC_ACQUIRE :" GCC,riscv,899,"Predict the next statement of this code snippet: static int riscv_memory_move_cost ( machine_mode mode , reg_class_t rclass , bool in ) { return ( tune_param -> memory_cost + memory_move_secondary_cost ( mode , rclass , in ) ) ;" GCC,riscv,900,"Predict the next statement of this code snippet: static tree riscv_merge_decl_attributes ( tree olddecl , tree newdecl ) { tree combined_attrs ; enum riscv_privilege_levels old_interrupt_type = riscv_get_interrupt_type ( olddecl ) ; enum riscv_privilege_levels new_interrupt_type = riscv_get_interrupt_type ( newdecl ) ; if ( ( old_interrupt_type != UNKNOWN_MODE ) && ( new_interrupt_type != UNKNOWN_MODE ) && ( old_interrupt_type != new_interrupt_type ) ) error ( , ) ; combined_attrs = merge_attributes ( DECL_ATTRIBUTES ( olddecl ) , DECL_ATTRIBUTES ( newdecl ) ) ; return combined_attrs ;" GCC,riscv,901,"Predict the next statement of this code snippet: enum riscv_privilege_levels new_interrupt_type = riscv_get_interrupt_type ( newdecl ) ; if ( ( old_interrupt_type != UNKNOWN_MODE ) && ( new_interrupt_type != UNKNOWN_MODE ) && ( old_interrupt_type != new_interrupt_type ) ) error ( , ) ; combined_attrs = merge_attributes ( DECL_ATTRIBUTES ( olddecl ) , DECL_ATTRIBUTES ( newdecl ) ) ; return combined_attrs ;" GCC,riscv,902,"Predict the next statement of this code snippet: return ( mode1 == mode2 || ! ( GET_MODE_CLASS ( mode1 ) == MODE_FLOAT && GET_MODE_CLASS ( mode2 ) == MODE_FLOAT ) ) ;" GCC,riscv,903,"Predict the next statement of this code snippet: static bool riscv_modes_tieable_p ( machine_mode mode1 , machine_mode mode2 ) {" GCC,riscv,904,"Predict the next statement of this code snippet: if ( can_create_pseudo && num_ops > && num_ops >= riscv_split_integer_cost ( value ) ) x = riscv_split_integer ( value , mode ) ; else { x = GEN_INT ( codes [ ] . value ) ; for ( i = ; i < num_ops ; i ++ ) { if ( ! can_create_pseudo ) x = riscv_emit_set ( temp , x ) ;" GCC,riscv,905,"Predict the next statement of this code snippet: return NULL_TREE != lookup_attribute ( , DECL_ATTRIBUTES ( func_decl ) ) ;" GCC,riscv,906,"Predict the next statement of this code snippet: bool riscv_new_address_profitable_p ( rtx memref , rtx_insn * insn , rtx new_addr ) { addr_space_t as = MEM_ADDR_SPACE ( memref ) ; bool speed = optimize_bb_for_speed_p ( BLOCK_FOR_INSN ( insn ) ) ; int old_cost = address_cost ( XEXP ( memref , ) , GET_MODE ( memref ) , as , speed ) ; int new_cost = address_cost ( new_addr , GET_MODE ( memref ) , as , speed ) ;" GCC,riscv,907,"Predict the next statement of this code snippet: bool speed = optimize_bb_for_speed_p ( BLOCK_FOR_INSN ( insn ) ) ;" GCC,riscv,908,"Predict the next statement of this code snippet: int max = ; if ( ! IN_RANGE ( riscv_preferred_stack_boundary_arg , min , max ) ) error ( , riscv_preferred_stack_boundary_arg , min , max ) ; riscv_stack_boundary = << riscv_preferred_stack_boundary_arg ; } if ( riscv_emit_attribute_p < ) riscv_emit_attribute_p = TARGET_RISCV_ATTRIBUTE ; riscv_emit_attribute_p = ; if ( riscv_emit_attribute_p ) error ( ) ; if ( riscv_stack_protector_guard == SSP_GLOBAL && OPTION_SET_P ( riscv_stack_protector_guard_offset_str ) ) { error ( , riscv_stack_protector_guard_offset_str ) ; } if ( riscv_stack_protector_guard == SSP_TLS && ! ( OPTION_SET_P ( riscv_stack_protector_guard_offset_str ) && OPTION_SET_P ( riscv_stack_protector_guard_reg_str ) ) ) { error ( ) ; } if ( OPTION_SET_P ( riscv_stack_protector_guard_reg_str ) ) { const char * str = riscv_stack_protector_guard_reg_str ; int reg = decode_reg_name ( str ) ;" GCC,riscv,909,"Predict the next statement of this code snippet: unsigned n = riscv_save_libcall_count ( mask ) ;" GCC,riscv,910,"Predict the next statement of this code snippet: ssize_t bytes = snprintf ( s , sizeof ( s ) , , n ) ; gcc_assert ( ( size_t ) bytes < sizeof ( s ) ) ;" GCC,riscv,911,"Predict the next statement of this code snippet: emit_note ( NOTE_INSN_PROLOGUE_END ) ; fnaddr = gen_rtx_MEM ( FUNCTION_MODE , XEXP ( DECL_RTL ( function ) , ) ) ; temp1 = gen_rtx_REG ( Pmode , RISCV_PROLOGUE_TEMP_REGNUM ) ; temp2 = gen_rtx_REG ( Pmode , STATIC_CHAIN_REGNUM ) ; if ( aggregate_value_p ( TREE_TYPE ( TREE_TYPE ( function ) ) , function ) ) this_rtx = gen_rtx_REG ( Pmode , GP_ARG_FIRST + ) ; else this_rtx = gen_rtx_REG ( Pmode , GP_ARG_FIRST ) ; if ( delta != ) { rtx offset = GEN_INT ( delta ) ; if ( ! SMALL_OPERAND ( delta ) ) {" GCC,riscv,912,"Predict the next statement of this code snippet: } emit_insn ( gen_add3_insn ( this_rtx , this_rtx , offset ) ) ; } if ( vcall_offset != ) { rtx addr ; riscv_emit_move ( temp1 , gen_rtx_MEM ( Pmode , this_rtx ) ) ; addr = riscv_add_offset ( temp2 , temp1 , vcall_offset ) ; riscv_emit_move ( temp1 , gen_rtx_MEM ( Pmode , addr ) ) ; emit_insn ( gen_add3_insn ( this_rtx , this_rtx , temp1 ) ) ; } insn = emit_call_insn ( gen_sibcall ( fnaddr , const0_rtx , NULL , const0_rtx ) ) ; SIBLING_CALL_P ( insn ) = ;" GCC,riscv,913,"Predict the next statement of this code snippet: if ( src_code == CONST_INT ) { if ( SMALL_OPERAND ( INTVAL ( src ) ) || LUI_OPERAND ( INTVAL ( src ) ) ) return ; if ( TARGET_ZBS && SINGLE_BIT_MASK_OPERAND ( INTVAL ( src ) ) ) return ; abort ( ) ; } if ( src_code == HIGH ) return ; if ( symbolic_operand ( src , VOIDmode ) ) switch ( riscv_classify_symbolic_expression ( src ) ) { case SYMBOL_GOT_DISP : return ; case SYMBOL_ABSOLUTE : return ; case SYMBOL_PCREL : return ; default : gcc_unreachable ( ) ; } } if ( ( src_code == REG && GP_REG_P ( REGNO ( src ) ) ) || ( src == CONST0_RTX ( mode ) ) ) { if ( dest_code == REG ) { if ( GP_REG_P ( REGNO ( dest ) ) ) return ; if ( FP_REG_P ( REGNO ( dest ) ) ) { if ( ! dbl_p ) return ; if ( TARGET_64BIT ) return ; gcc_assert ( src == CONST0_RTX ( mode ) ) ; return ; } } if ( dest_code == MEM ) switch ( GET_MODE_SIZE ( mode ) ) {" GCC,riscv,914,"Predict the next statement of this code snippet: const char * riscv_output_return ( ) { if ( cfun -> machine -> naked_p ) return ;" GCC,riscv,915,"Predict the next statement of this code snippet: const char * riscv_output_return ( ) {" GCC,riscv,916,"Predict the next statement of this code snippet: static const struct riscv_tune_info * riscv_parse_tune ( const char * tune_string ) { const riscv_cpu_info * cpu = riscv_find_cpu ( tune_string ) ; if ( cpu ) tune_string = cpu -> tune ;" GCC,riscv,917,"Predict the next statement of this code snippet: static int warned = ; unsigned num_int_old = , num_float_old = ; int n_old = riscv_flatten_aggregate_argument ( type , fields , false ) ; for ( int i = ; i < n_old ; i ++ ) { num_float_old += SCALAR_FLOAT_TYPE_P ( fields [ i ] . type ) ; num_int_old += INTEGRAL_TYPE_P ( fields [ i ] . type ) ; } unsigned num_int_new = , num_float_new = ; int n_new = riscv_flatten_aggregate_argument ( type , fields , true ) ; for ( int i = ; i < n_new ; i ++ ) { num_float_new += SCALAR_FLOAT_TYPE_P ( fields [ i ] . type ) ; num_int_new += INTEGRAL_TYPE_P ( fields [ i ] . type ) ;" GCC,riscv,918,"Predict the next statement of this code snippet: int n_new = riscv_flatten_aggregate_argument ( type , fields , true ) ; for ( int i = ; i < n_new ; i ++ ) if ( ! SCALAR_FLOAT_TYPE_P ( fields [ i ] . type ) ) { n_new = - ; break ; } if ( ( n_old != n_new ) && ( warned == ) ) { warning ( OPT_Wpsabi , ) ; warned = ; }" GCC,riscv,919,"Predict the next statement of this code snippet: struct riscv_arg_info info ; CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; if ( cum != NULL ) { riscv_get_arg_info ( & info , cum , arg . mode , arg . type , arg . named , false ) ; if ( info . num_fprs ) return false ;" GCC,riscv,920,"Predict the next statement of this code snippet: riscv_get_arg_info ( & info , cum , arg . mode , arg . type , arg . named , false ) ; if ( info . num_fprs ) return false ;" GCC,riscv,921,"Predict the next statement of this code snippet: static rtx riscv_pass_fpr_pair ( machine_mode mode , unsigned regno1 , machine_mode mode1 , HOST_WIDE_INT offset1 , unsigned regno2 , machine_mode mode2 , HOST_WIDE_INT offset2 ) { return gen_rtx_PARALLEL ( mode , gen_rtvec ( , gen_rtx_EXPR_LIST ( VOIDmode , gen_rtx_REG ( mode1 , regno1 ) , GEN_INT ( offset1 ) ) , gen_rtx_EXPR_LIST ( VOIDmode , gen_rtx_REG ( mode2 , regno2 ) , GEN_INT ( offset2 ) ) ) ) ;" GCC,riscv,922,"Predict the next statement of this code snippet: x = gen_rtx_EXPR_LIST ( VOIDmode , x , GEN_INT ( offset ) ) ; x = gen_rtx_PARALLEL ( type_mode , gen_rtvec ( , x ) ) ; } return x ;" GCC,riscv,923,"Predict the next statement of this code snippet: if ( type_mode != value_mode ) { x = gen_rtx_EXPR_LIST ( VOIDmode , x , GEN_INT ( offset ) ) ; x = gen_rtx_PARALLEL ( type_mode , gen_rtvec ( , x ) ) ;" GCC,riscv,924,"Predict the next statement of this code snippet: static unsigned riscv_pass_mode_in_fpr_p ( machine_mode mode ) { if ( GET_MODE_UNIT_SIZE ( mode ) <= UNITS_PER_FP_ARG ) { if ( GET_MODE_CLASS ( mode ) == MODE_FLOAT ) return ; if ( GET_MODE_CLASS ( mode ) == MODE_COMPLEX_FLOAT ) return ; }" GCC,riscv,925,"Predict the next statement of this code snippet: if ( riscv_memmodel_needs_amo_acquire ( ( enum memmodel ) INTVAL ( op ) ) ) fputs ( , file ) ; break ; case 'F' : if ( riscv_memmodel_needs_release_fence ( ( enum memmodel ) INTVAL ( op ) ) ) fputs ( , file ) ; break ; case 'i' : if ( code != REG ) fputs ( , file ) ; break ; case 'S' : { rtx newop = GEN_INT ( ctz_hwi ( INTVAL ( op ) ) ) ; output_addr_const ( file , newop ) ; break ; } case 'T' : { rtx newop = GEN_INT ( ctz_hwi ( ~ INTVAL ( op ) ) ) ;" GCC,riscv,926,"Predict the next statement of this code snippet: case REG : if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ; fprintf ( file , , reg_names [ REGNO ( op ) ] ) ; break ; case MEM : if ( letter && letter != 'z' ) output_operand_lossage ( , letter ) ; else output_address ( mode , XEXP ( op , ) ) ; break ; default : if ( letter == 'z' && op == CONST0_RTX ( GET_MODE ( op ) ) ) fputs ( reg_names [ GP_REG_FIRST ] , file ) ;" GCC,riscv,927,"Predict the next statement of this code snippet: reloc = hi_reloc ? : ; break ; default : output_operand_lossage ( , hi_reloc ? 'h' : 'R' ) ; return ; } fprintf ( file , , reloc ) ; output_addr_const ( file , riscv_strip_unspec_address ( op ) ) ;" GCC,riscv,928,"Predict the next statement of this code snippet: if ( type != NULL_TREE ) return promote_mode ( type , mode , punsignedp ) ; unsignedp = * punsignedp ; PROMOTE_MODE ( mode , unsignedp , type ) ; * punsignedp = unsignedp ;" GCC,riscv,929,"Predict the next statement of this code snippet: return riscv_secondary_memory_needed ( mode , from , to ) ? : ;" GCC,riscv,930,"Predict the next statement of this code snippet: return riscv_secondary_memory_needed ( mode , from , to ) ? : ;" GCC,riscv,931,"Predict the next statement of this code snippet: if ( ! strict_p ) return true ; regno = reg_renumber [ regno ] ; }" GCC,riscv,932,"Predict the next statement of this code snippet: if ( TARGET_SAVE_RESTORE ) riscv_remove_unneeded_save_restore_calls ( ) ;" GCC,riscv,933,"Predict the next statement of this code snippet: static void riscv_reorg ( void ) {" GCC,riscv,934,"Predict the next statement of this code snippet: dwarf = alloc_reg_note ( REG_CFA_RESTORE , reg , dwarf ) ; if ( epilogue_cfa_sp_offset && REGNO ( reg ) == HARD_FRAME_POINTER_REGNUM ) { rtx cfa_adjust_rtx = gen_rtx_PLUS ( Pmode , stack_pointer_rtx , GEN_INT ( epilogue_cfa_sp_offset ) ) ;" GCC,riscv,935,"Predict the next statement of this code snippet: if ( count != ) return const0_rtx ;" GCC,riscv,936,"Predict the next statement of this code snippet: rtx riscv_return_addr ( int count , rtx frame ATTRIBUTE_UNUSED ) {" GCC,riscv,937,"Predict the next statement of this code snippet: memset ( & args , , sizeof args ) ; function_arg_info arg ( const_cast < tree > ( type ) , true ) ;" GCC,riscv,938,"Predict the next statement of this code snippet: static bool riscv_return_in_memory ( const_tree type , const_tree fndecl ATTRIBUTE_UNUSED ) { CUMULATIVE_ARGS args ; cumulative_args_t cum = pack_cumulative_args ( & args ) ; memset ( & args , , sizeof args ) ; function_arg_info arg ( const_cast < tree > ( type ) , true ) ; return riscv_pass_by_reference ( cum , arg ) ;" GCC,riscv,939,"Predict the next statement of this code snippet: static unsigned riscv_save_libcall_count ( unsigned mask ) {" GCC,riscv,940,"Predict the next statement of this code snippet: riscv_emit_move ( mem , reg ) ; riscv_set_frame_expr ( riscv_frame_set ( mem , reg ) ) ;" GCC,riscv,941,"Predict the next statement of this code snippet: mem = gen_frame_mem ( mode , plus_constant ( Pmode , stack_pointer_rtx , offset ) ) ; fn ( gen_rtx_REG ( mode , regno ) , mem ) ;" GCC,riscv,942,"Predict the next statement of this code snippet: mem = gen_frame_mem ( mode , plus_constant ( Pmode , stack_pointer_rtx , offset ) ) ;" GCC,riscv,943,"Predict the next statement of this code snippet: return ( GET_MODE_SIZE ( mode ) > UNITS_PER_WORD && ( class1 == FP_REGS ) != ( class2 == FP_REGS ) ) ;" GCC,riscv,944,"Predict the next statement of this code snippet: switch ( categorize_decl_for_section ( decl , reloc ) ) { case SECCAT_SRODATA : return get_named_section ( decl , , reloc ) ; default : return default_elf_select_section ( decl , reloc , align ) ;" GCC,riscv,945,"Predict the next statement of this code snippet: static section * riscv_select_section ( tree decl , int reloc , unsigned HOST_WIDE_INT align ) { switch ( categorize_decl_for_section ( decl , reloc ) ) { case SECCAT_SRODATA : return get_named_section ( decl , , reloc ) ; default : return default_elf_select_section ( decl , reloc , align ) ; }" GCC,riscv,946,"Predict the next statement of this code snippet: gp_saved = MAX_ARGS_IN_REGISTERS - local_cum . num_gprs ; if ( ! no_rtl && gp_saved > ) { rtx ptr = plus_constant ( Pmode , virtual_incoming_args_rtx , REG_PARM_STACK_SPACE ( cfun -> decl ) - gp_saved * UNITS_PER_WORD ) ;" GCC,riscv,947,"Predict the next statement of this code snippet: rtx mem = gen_frame_mem ( BLKmode , ptr ) ; set_mem_alias_set ( mem , get_varargs_alias_set ( ) ) ; move_block_from_reg ( local_cum . num_gprs + GP_ARG_FIRST , mem , gp_saved ) ; } if ( REG_PARM_STACK_SPACE ( cfun -> decl ) == ) cfun -> machine -> varargs_size = gp_saved * UNITS_PER_WORD ;" GCC,riscv,948,"Predict the next statement of this code snippet: static void riscv_set_current_function ( tree decl ) { if ( decl == NULL_TREE || current_function_decl == NULL_TREE || current_function_decl == error_mark_node || ! cfun -> machine || cfun -> machine -> attributes_checked_p ) return ; cfun -> machine -> naked_p = riscv_naked_function_p ( decl ) ; cfun -> machine -> interrupt_handler_p = riscv_interrupt_type_p ( TREE_TYPE ( decl ) ) ; if ( cfun -> machine -> naked_p && cfun -> machine -> interrupt_handler_p ) error ( , , ) ; if ( cfun -> machine -> interrupt_handler_p ) { tree ret = TREE_TYPE ( TREE_TYPE ( decl ) ) ; tree args = TYPE_ARG_TYPES ( TREE_TYPE ( decl ) ) ; if ( TREE_CODE ( ret ) != VOID_TYPE ) error ( , ) ; if ( args && TREE_CODE ( TREE_VALUE ( args ) ) != VOID_TYPE ) error ( , ) ; cfun -> machine -> interrupt_mode = riscv_get_interrupt_type ( decl ) ; gcc_assert ( cfun -> machine -> interrupt_mode != UNKNOWN_MODE ) ;" GCC,riscv,949,"Predict the next statement of this code snippet: slot_address = riscv_add_offset ( scratch , stack_pointer_rtx , cfun -> machine -> frame . gp_sp_offset ) ; riscv_emit_move ( gen_frame_mem ( GET_MODE ( address ) , slot_address ) , address ) ;" GCC,riscv,950,"Predict the next statement of this code snippet: offset &= CSW_MAX_OFFSET ; if ( ! SMALL_OPERAND ( INTVAL ( high ) ) ) high = force_reg ( Pmode , high ) ; base = force_reg ( Pmode , gen_rtx_PLUS ( Pmode , high , base ) ) ; addr = plus_constant ( Pmode , base , offset ) ; return addr ;" GCC,riscv,951,"Predict the next statement of this code snippet: static bool riscv_size_ok_for_small_data_p ( int size ) { return g_switch_value && IN_RANGE ( size , , g_switch_value ) ;" GCC,riscv,952,"Predict the next statement of this code snippet: static bool riscv_slow_unaligned_access ( machine_mode , unsigned int ) {" GCC,riscv,953,"Predict the next statement of this code snippet: if ( TARGET_64BIT ) return false ; if ( TARGET_DOUBLE_FLOAT && ( ( FP_REG_RTX_P ( src ) && FP_REG_RTX_P ( dest ) ) || ( FP_REG_RTX_P ( dest ) && MEM_P ( src ) ) || ( FP_REG_RTX_P ( src ) && MEM_P ( dest ) ) || ( FP_REG_RTX_P ( dest ) && src == CONST0_RTX ( GET_MODE ( src ) ) ) ) ) return false ;" GCC,riscv,954,"Predict the next statement of this code snippet: low = riscv_const_insns ( riscv_subword ( x , false ) ) ; high = riscv_const_insns ( riscv_subword ( x , true ) ) ; gcc_assert ( low > && high > ) ;" GCC,riscv,955,"Predict the next statement of this code snippet: void riscv_split_doubleword_move ( rtx dest , rtx src ) { rtx low_dest ; low_dest = riscv_subword ( dest , false ) ;" GCC,riscv,956,"Predict the next statement of this code snippet: low_dest = riscv_subword ( dest , false ) ; if ( REG_P ( low_dest ) && reg_overlap_mentioned_p ( low_dest , src ) ) { riscv_emit_move ( riscv_subword ( dest , true ) , riscv_subword ( src , true ) ) ; riscv_emit_move ( low_dest , riscv_subword ( src , false ) ) ; } else { riscv_emit_move ( low_dest , riscv_subword ( src , false ) ) ; riscv_emit_move ( riscv_subword ( dest , true ) , riscv_subword ( src , true ) ) ;" GCC,riscv,957,"Predict the next statement of this code snippet: unsigned HOST_WIDE_INT hival = sext_hwi ( ( val - loval ) >> , ) ; rtx hi = gen_reg_rtx ( mode ) , lo = gen_reg_rtx ( mode ) ; riscv_move_integer ( hi , hi , hival , mode , FALSE ) ; riscv_move_integer ( lo , lo , loval , mode , FALSE ) ; hi = gen_rtx_fmt_ee ( ASHIFT , mode , hi , GEN_INT ( ) ) ; hi = force_reg ( mode , hi ) ;" GCC,riscv,958,"Predict the next statement of this code snippet: hi = gen_rtx_fmt_ee ( ASHIFT , mode , hi , GEN_INT ( ) ) ; hi = force_reg ( mode , hi ) ; return gen_rtx_fmt_ee ( PLUS , mode , hi , lo ) ;" GCC,riscv,959,"Predict the next statement of this code snippet: unsigned HOST_WIDE_INT loval = sext_hwi ( val , ) ; unsigned HOST_WIDE_INT hival = sext_hwi ( ( val - loval ) >> , ) ; struct riscv_integer_op codes [ RISCV_MAX_INTEGER_OPS ] ; cost = + riscv_build_integer ( codes , loval , VOIDmode ) ; if ( loval != hival ) cost += riscv_build_integer ( codes , hival , VOIDmode ) ;" GCC,riscv,960,"Predict the next statement of this code snippet: cost = + riscv_build_integer ( codes , loval , VOIDmode ) ; if ( loval != hival ) cost += riscv_build_integer ( codes , hival , VOIDmode ) ;" GCC,riscv,961,"Predict the next statement of this code snippet: { rtx high = gen_rtx_HIGH ( Pmode , copy_rtx ( addr ) ) ; high = riscv_force_temporary ( temp , high , in_splitter ) ; * low_out = gen_rtx_LO_SUM ( Pmode , high , addr ) ; } break ; case SYMBOL_PCREL : { static unsigned seqno ; char buf [ ] ; rtx label ; ssize_t bytes = snprintf ( buf , sizeof ( buf ) , , seqno ) ; gcc_assert ( ( size_t ) bytes < sizeof ( buf ) ) ; label = gen_rtx_SYMBOL_REF ( Pmode , ggc_strdup ( buf ) ) ; SYMBOL_REF_FLAGS ( label ) |= SYMBOL_FLAG_LOCAL ; if ( ! nonzero_address_p ( addr ) ) SYMBOL_REF_WEAK ( label ) = ;" GCC,riscv,962,"Predict the next statement of this code snippet: case SYMBOL_PCREL : { static unsigned seqno ; char buf [ ] ; rtx label ; ssize_t bytes = snprintf ( buf , sizeof ( buf ) , , seqno ) ; gcc_assert ( ( size_t ) bytes < sizeof ( buf ) ) ; label = gen_rtx_SYMBOL_REF ( Pmode , ggc_strdup ( buf ) ) ; SYMBOL_REF_FLAGS ( label ) |= SYMBOL_FLAG_LOCAL ; if ( ! nonzero_address_p ( addr ) ) SYMBOL_REF_WEAK ( label ) = ; if ( temp == NULL ) temp = gen_reg_rtx ( Pmode ) ; if ( Pmode == DImode ) emit_insn ( gen_auipcdi ( temp , copy_rtx ( addr ) , GEN_INT ( seqno ) ) ) ;" GCC,riscv,963,"Predict the next statement of this code snippet: bool riscv_split_symbol_type ( enum riscv_symbol_type symbol_type ) { if ( symbol_type == SYMBOL_TLS_LE ) return true ; if ( ! TARGET_EXPLICIT_RELOCS ) return false ;" GCC,riscv,964,"Predict the next statement of this code snippet: if ( MEM_P ( SET_DEST ( in_set ) ) ) { out_set = single_set ( out_insn ) ; if ( ! out_set ) { out_pat = PATTERN ( out_insn ) ; if ( GET_CODE ( out_pat ) == PARALLEL ) { for ( i = ; i < XVECLEN ( out_pat , ) ; i ++ ) { out_exp = XVECEXP ( out_pat , , i ) ; if ( ( GET_CODE ( out_exp ) == CLOBBER ) || ( GET_CODE ( out_exp ) == USE ) ) continue ; else if ( GET_CODE ( out_exp ) != SET ) return false ; } } } } } else { in_pat = PATTERN ( in_insn ) ; if ( GET_CODE ( in_pat ) != PARALLEL ) return false ; for ( i = ; i < XVECLEN ( in_pat , ) ; i ++ ) { in_exp = XVECEXP ( in_pat , , i ) ; if ( ( GET_CODE ( in_exp ) == CLOBBER ) || ( GET_CODE ( in_exp ) == USE ) ) continue ; else if ( GET_CODE ( in_exp ) != SET ) return false ; if ( MEM_P ( SET_DEST ( in_exp ) ) ) { out_set = single_set ( out_insn ) ; if ( ! out_set ) { out_pat = PATTERN ( out_insn ) ; if ( GET_CODE ( out_pat ) != PARALLEL ) return false ; for ( j = ; j < XVECLEN ( out_pat , ) ; j ++ ) { out_exp = XVECEXP ( out_pat , , j ) ; if ( ( GET_CODE ( out_exp ) == CLOBBER ) || ( GET_CODE ( out_exp ) == USE ) ) continue ; else if ( GET_CODE ( out_exp ) != SET ) return false ; } } }" GCC,riscv,965,"Predict the next statement of this code snippet: if ( UNSPEC_ADDRESS_P ( base ) ) op = plus_constant ( Pmode , UNSPEC_ADDRESS ( base ) , INTVAL ( offset ) ) ;" GCC,riscv,966,"Predict the next statement of this code snippet: unsigned int byte = ( high_p != BYTES_BIG_ENDIAN ) ? UNITS_PER_WORD : ; machine_mode mode = GET_MODE ( op ) ; if ( mode == VOIDmode ) mode = TARGET_64BIT ? TImode : DImode ; if ( MEM_P ( op ) ) return adjust_address ( op , word_mode , byte ) ; if ( REG_P ( op ) ) gcc_assert ( ! FP_REG_RTX_P ( op ) ) ; return simplify_gen_subreg ( word_mode , op , mode , byte ) ;" GCC,riscv,967,"Predict the next statement of this code snippet: unsigned int byte = ( high_p != BYTES_BIG_ENDIAN ) ? UNITS_PER_WORD : ; machine_mode mode = GET_MODE ( op ) ; if ( mode == VOIDmode ) mode = TARGET_64BIT ? TImode : DImode ; if ( MEM_P ( op ) ) return adjust_address ( op , word_mode , byte ) ;" GCC,riscv,968,"Predict the next statement of this code snippet: static rtx riscv_swap_instruction ( rtx inst ) {" GCC,riscv,969,"Predict the next statement of this code snippet: static rtx riscv_swap_instruction ( rtx inst ) { gcc_assert ( GET_MODE ( inst ) == SImode ) ;" GCC,riscv,970,"Predict the next statement of this code snippet: else return false ; if ( offset == const0_rtx ) return true ; switch ( * symbol_type ) { case SYMBOL_ABSOLUTE : case SYMBOL_PCREL : case SYMBOL_TLS_LE : return sext_hwi ( INTVAL ( offset ) , ) == INTVAL ( offset ) ; default : return false ;" GCC,riscv,971,"Predict the next statement of this code snippet: if ( SYMBOL_REF_P ( x ) ) return ( SYMBOL_REF_DECL ( x ) ? targetm . binds_local_p ( SYMBOL_REF_DECL ( x ) ) : SYMBOL_REF_LOCAL_P ( x ) ) ; else return false ;" GCC,riscv,972,"Predict the next statement of this code snippet: if ( Pmode == DImode ) return gen_tls_add_tp_ledi ( dest , base , tp , sym ) ;" GCC,riscv,973,"Predict the next statement of this code snippet: if ( Pmode == DImode ) return gen_tls_add_tp_ledi ( dest , base , tp , sym ) ;" GCC,riscv,974,"Predict the next statement of this code snippet: hi_chain = riscv_force_binary ( SImode , AND , hi_chain , uimm_mask ) ; lui_hi_chain_code = OPCODE_LUI | ( STATIC_CHAIN_REGNUM << SHIFT_RD ) ; rtx lui_hi_chain = riscv_force_binary ( SImode , IOR , hi_chain , gen_int_mode ( lui_hi_chain_code , SImode ) ) ; mem = adjust_address ( m_tramp , SImode , ) ; riscv_emit_move ( mem , riscv_swap_instruction ( lui_hi_chain ) ) ; rtx hi_func = riscv_force_binary ( SImode , PLUS , target_function , fixup_value ) ; hi_func = riscv_force_binary ( SImode , AND , hi_func , uimm_mask ) ; lui_hi_func_code = OPCODE_LUI | ( RISCV_PROLOGUE_TEMP_REGNUM << SHIFT_RD ) ; rtx lui_hi_func = riscv_force_binary ( SImode , IOR , hi_func , gen_int_mode ( lui_hi_func_code , SImode ) ) ; mem = adjust_address ( m_tramp , SImode , * GET_MODE_SIZE ( SImode ) ) ; riscv_emit_move ( mem , riscv_swap_instruction ( lui_hi_func ) ) ; rtx lo_chain = riscv_force_binary ( SImode , AND , chain_value , imm12_mask ) ; lo_chain = riscv_force_binary ( SImode , ASHIFT , lo_chain , GEN_INT ( ) ) ; lo_chain_code = OPCODE_ADDI | ( STATIC_CHAIN_REGNUM << SHIFT_RD ) | ( STATIC_CHAIN_REGNUM << SHIFT_RS1 ) ; rtx addi_lo_chain = riscv_force_binary ( SImode , IOR , lo_chain , force_reg ( SImode , GEN_INT ( lo_chain_code ) ) ) ; mem = adjust_address ( m_tramp , SImode , * GET_MODE_SIZE ( SImode ) ) ; riscv_emit_move ( mem , riscv_swap_instruction ( addi_lo_chain ) ) ; rtx lo_func = riscv_force_binary ( SImode , AND , target_function , imm12_mask ) ; lo_func = riscv_force_binary ( SImode , ASHIFT , lo_func , GEN_INT ( ) ) ; lo_func_code = OPCODE_JALR | ( RISCV_PROLOGUE_TEMP_REGNUM << SHIFT_RS1 ) ; rtx jr_lo_func = riscv_force_binary ( SImode , IOR , lo_func , force_reg ( SImode , GEN_INT ( lo_func_code ) ) ) ;" GCC,riscv,975,"Predict the next statement of this code snippet: static void riscv_unique_section ( tree decl , int reloc ) { const char * prefix = NULL ; bool one_only = DECL_ONE_ONLY ( decl ) && ! HAVE_COMDAT_GROUP ; switch ( categorize_decl_for_section ( decl , reloc ) ) { case SECCAT_SRODATA :" GCC,riscv,976,"Predict the next statement of this code snippet: break ; default : break ; } if ( prefix ) { const char * name , * linkonce ; char * string ; name = IDENTIFIER_POINTER ( DECL_ASSEMBLER_NAME ( decl ) ) ; name = targetm . strip_name_encoding ( name ) ; linkonce = one_only ? : ; string = ACONCAT ( ( linkonce , prefix , , name , NULL ) ) ;" GCC,riscv,977,"Predict the next statement of this code snippet: rtx riscv_unspec_address ( rtx address , enum riscv_symbol_type symbol_type ) { rtx base , offset ;" GCC,riscv,978,"Predict the next statement of this code snippet: if ( offset != const0_rtx ) base = gen_rtx_PLUS ( Pmode , base , offset ) ;" GCC,riscv,979,"Predict the next statement of this code snippet: static rtx riscv_unspec_address_offset ( rtx base , rtx offset , enum riscv_symbol_type symbol_type ) {" GCC,riscv,980,"Predict the next statement of this code snippet: static rtx riscv_unspec_offset_high ( rtx temp , rtx addr , enum riscv_symbol_type symbol_type ) {" GCC,riscv,981,"Predict the next statement of this code snippet: static bool riscv_use_save_libcall ( const struct riscv_frame_info * frame ) { if ( ! TARGET_SAVE_RESTORE || crtl -> calls_eh_return || frame_pointer_needed || cfun -> machine -> interrupt_handler_p ) return false ; return frame -> save_libcall_adjustment != ;" GCC,riscv,982,"Predict the next statement of this code snippet: static bool riscv_valid_base_register_p ( rtx x , machine_mode mode , bool strict_p ) { if ( ! strict_p && GET_CODE ( x ) == SUBREG ) x = SUBREG_REG ( x ) ; return ( REG_P ( x ) && riscv_regno_mode_ok_for_base_p ( REGNO ( x ) , mode , strict_p ) ) ;" GCC,riscv,983,"Predict the next statement of this code snippet: if ( ! strict_p && GET_CODE ( x ) == SUBREG ) x = SUBREG_REG ( x ) ;" GCC,riscv,984,"Predict the next statement of this code snippet: static bool riscv_valid_lo_sum_p ( enum riscv_symbol_type sym_type , machine_mode mode , rtx x ) { int align , size ; if ( riscv_symbol_insns ( sym_type ) == ) return false ; if ( ! riscv_split_symbol_type ( sym_type ) ) return false ; if ( mode == BLKmode ) { rtx offset ; split_const ( x , & x , & offset ) ; if ( ! SYMBOL_REF_P ( x ) ) return false ;" GCC,riscv,985,"Predict the next statement of this code snippet: if ( riscv_symbol_insns ( sym_type ) == ) return false ; if ( ! riscv_split_symbol_type ( sym_type ) ) return false ; if ( mode == BLKmode ) { rtx offset ; split_const ( x , & x , & offset ) ; if ( ! SYMBOL_REF_P ( x ) ) return false ; align = ( SYMBOL_REF_DECL ( x ) ? DECL_ALIGN ( SYMBOL_REF_DECL ( x ) ) : ) ; size = ( SYMBOL_REF_DECL ( x ) && DECL_SIZE ( SYMBOL_REF_DECL ( x ) ) ? tree_to_uhwi ( DECL_SIZE ( SYMBOL_REF_DECL ( x ) ) ) : * BITS_PER_WORD ) ; } else {" GCC,riscv,986,"Predict the next statement of this code snippet: if ( ! const_arith_operand ( x , Pmode ) ) return false ; if ( GET_MODE_SIZE ( mode ) > UNITS_PER_WORD && ! SMALL_OPERAND ( INTVAL ( x ) + GET_MODE_SIZE ( mode ) - UNITS_PER_WORD ) ) return false ;" GCC,riscv,987,"Predict the next statement of this code snippet: static void riscv_va_start ( tree valist , rtx nextarg ) { nextarg = plus_constant ( Pmode , nextarg , - cfun -> machine -> varargs_size ) ; std_expand_builtin_va_start ( valist , nextarg ) ;" GCC,riscv,988,"Predict the next statement of this code snippet: static bool riscv_warn_func_return ( tree decl ) { return ! riscv_naked_function_p ( decl ) ;" GCC,riscv,989,"Predict the next statement of this code snippet: if ( cmp1 == const0_rtx ) return cmp0 ; return expand_binop ( GET_MODE ( cmp0 ) , sub_optab , cmp0 , cmp1 , , , OPTAB_DIRECT ) ;" GCC,riscv,990,"Predict the next statement of this code snippet: if ( cmp1 == const0_rtx ) return cmp0 ;" GCC,riscv,991,"Predict the next statement of this code snippet: break ; case RVV_VXSAT : __asm__ __volatile__ ( : ( rv ) : : ) ; break ; case RVV_VXRM :" GCC,riscv,992,"Predict the next statement of this code snippet: __asm__ __volatile__ ( : ( rv ) : : ) ; break ; case RVV_VXRM : __asm__ __volatile__ ( : ( rv ) : : ) ; break ; case RVV_VCSR : __asm__ __volatile__ ( : ( rv ) : : ) ; break ;" GCC,riscv,993,"Predict the next statement of this code snippet: vwrite_csr ( enum RVV_CSR csr , unsigned long value ) { switch ( csr ) { case RVV_VSTART : __asm__ __volatile__ ( : : ( value ) : ) ; break ; case RVV_VXSAT :" GCC,riscv,994,"Predict the next statement of this code snippet: static bool extract_base_offset_in_addr ( rtx mem , rtx * base , rtx * offset ) { rtx addr ; gcc_assert ( MEM_P ( mem ) ) ; addr = XEXP ( mem , ) ; if ( REG_P ( addr ) ) { * base = addr ; * offset = const0_rtx ; return true ; } if ( GET_CODE ( addr ) == PLUS && REG_P ( XEXP ( addr , ) ) && CONST_INT_P ( XEXP ( addr , ) ) ) {" GCC,riscv,995,"Predict the next statement of this code snippet: * offset_ptr = INTVAL ( XEXP ( x , ) ) ; } else { * base_ptr = x ;" GCC,riscv,996,"Predict the next statement of this code snippet: if ( known_eq ( UINTVAL ( offset1 ) + size , UINTVAL ( offset2 ) ) ) { * reversed = false ; return true ; } if ( known_eq ( UINTVAL ( offset2 ) + size , UINTVAL ( offset1 ) ) ) { * reversed = true ; return true ; }" GCC,riscv,997,"Predict the next statement of this code snippet: split_plus ( XEXP ( mem , ) , & base , & offset ) ; if ( ! REG_P ( base ) ) return true ; if ( REG_P ( base ) ) { if ( REGNO ( base ) == REGNO ( reg1 ) || REGNO ( base ) == REGNO ( reg2 ) ) return true ; } return false ;" GCC,riscv,998,"Predict the next statement of this code snippet: if ( riscv_slow_unaligned_access_p && known_lt ( MEM_ALIGN ( mem_1 ) , GET_MODE_SIZE ( mode ) * BITS_PER_UNIT ) ) return false ; bool reversed = false ; if ( ! th_mempair_check_consecutive_mems ( mode , & mem_1 , & mem_2 , & reversed ) ) return false ; if ( ( ! reversed && ! th_mempair_operand_p ( mem_1 , mode ) ) || ( reversed && ! th_mempair_operand_p ( mem_2 , mode ) ) ) return false ; gcc_assert ( known_eq ( GET_MODE_SIZE ( GET_MODE ( mem_1 ) ) , GET_MODE_SIZE ( GET_MODE ( mem_2 ) ) ) ) ; return true ;" GCC,riscv,999,"Predict the next statement of this code snippet: auto mode_sz = GET_MODE_SIZE ( mode ) ; if ( ! known_eq ( mem_sz , mode_sz ) ) return false ; machine_mode mem_mode = GET_MODE ( mem ) ; unsigned shamt = ( mem_mode == DImode ) ? : ; rtx base ; HOST_WIDE_INT offset ; split_plus ( XEXP ( mem , ) , & base , & offset ) ;" GCC,riscv,1000,"Predict the next statement of this code snippet: void th_mempair_order_operands ( rtx operands [ ] , bool load_p , machine_mode mode ) { int mem_op = load_p ? : ;" GCC,riscv,1001,"Predict the next statement of this code snippet: void th_mempair_order_operands ( rtx operands [ ] , bool load_p , machine_mode mode ) { int mem_op = load_p ? : ; bool reversed = false ; if ( ! th_mempair_check_consecutive_mems ( mode , operands + mem_op , operands + mem_op + , & reversed ) ) gcc_unreachable ( ) ; if ( reversed ) { std :: swap ( operands [ ] , operands [ ] ) ; std :: swap ( operands [ ] , operands [ ] ) ; }" GCC,riscv,1002,"Predict the next statement of this code snippet: auto size1 = MEM_SIZE ( mem1 ) ; auto size2 = MEM_SIZE ( mem2 ) ; gcc_assert ( known_eq ( size1 , size2 ) ) ; gcc_assert ( known_eq ( offset1 + size1 , offset2 ) ) ; HOST_WIDE_INT imm2 = offset1 >> shamt ; gcc_assert ( imm2 >= && imm2 < ) ; gcc_assert ( ( imm2 << shamt ) == offset1 ) ; gcc_assert ( REG_P ( reg1 ) ) ; gcc_assert ( REG_P ( reg2 ) ) ; gcc_assert ( REG_P ( base1 ) ) ; if ( load_p ) { gcc_assert ( REGNO ( reg1 ) != REGNO ( reg2 ) ) ; gcc_assert ( REGNO ( reg1 ) != REGNO ( base1 ) ) ; gcc_assert ( REGNO ( reg2 ) != REGNO ( base1 ) ) ; } output_operands [ ] = copy_rtx ( reg1 ) ; output_operands [ ] = copy_rtx ( reg2 ) ; output_operands [ ] = copy_rtx ( base1 ) ;" GCC,riscv,1003,"Predict the next statement of this code snippet: mem2 = copy_rtx ( operands [ ] ) ; if ( mode == SImode ) format = ; else format = ; } split_plus ( XEXP ( mem1 , ) , & base1 , & offset1 ) ; split_plus ( XEXP ( mem2 , ) , & base2 , & offset2 ) ; gcc_assert ( rtx_equal_p ( base1 , base2 ) ) ; auto size1 = MEM_SIZE ( mem1 ) ; auto size2 = MEM_SIZE ( mem2 ) ; gcc_assert ( known_eq ( size1 , size2 ) ) ; gcc_assert ( known_eq ( offset1 + size1 , offset2 ) ) ; HOST_WIDE_INT imm2 = offset1 >> shamt ; gcc_assert ( imm2 >= && imm2 < ) ; gcc_assert ( ( imm2 << shamt ) == offset1 ) ; gcc_assert ( REG_P ( reg1 ) ) ; gcc_assert ( REG_P ( reg2 ) ) ; gcc_assert ( REG_P ( base1 ) ) ; if ( load_p ) { gcc_assert ( REGNO ( reg1 ) != REGNO ( reg2 ) ) ; gcc_assert ( REGNO ( reg1 ) != REGNO ( base1 ) ) ; gcc_assert ( REGNO ( reg2 ) != REGNO ( base1 ) ) ; } output_operands [ ] = copy_rtx ( reg1 ) ;" GCC,riscv,1004,"Predict the next statement of this code snippet: mem2 = gen_frame_mem ( mode , mem2 ) ; operands [ reg_op ] = gen_rtx_REG ( mode , regno ) ; operands [ mem_op ] = mem1 ; operands [ + reg_op ] = gen_rtx_REG ( mode , regno2 ) ; operands [ + mem_op ] = mem2 ;" GCC,riscv,1005,"Predict the next statement of this code snippet: int reg_op = load_p ? : ; int mem_op = load_p ? : ; rtx mem1 = plus_constant ( mode , stack_pointer_rtx , offset ) ; mem1 = gen_frame_mem ( mode , mem1 ) ; rtx mem2 = plus_constant ( mode , stack_pointer_rtx , offset2 ) ; mem2 = gen_frame_mem ( mode , mem2 ) ; operands [ reg_op ] = gen_rtx_REG ( mode , regno ) ; operands [ mem_op ] = mem1 ;" GCC,riscv,1006,"Predict the next statement of this code snippet: rtx set2 = gen_rtx_SET ( operands [ ] , operands [ ] ) ; rtx insn = emit_insn ( gen_rtx_PARALLEL ( VOIDmode , gen_rtvec ( , set1 , set2 ) ) ) ; RTX_FRAME_RELATED_P ( insn ) = ; add_reg_note ( insn , REG_CFA_RESTORE , operands [ ] ) ; add_reg_note ( insn , REG_CFA_RESTORE , operands [ ] ) ;" GCC,riscv,1007,"Predict the next statement of this code snippet: rtx set2 = gen_rtx_SET ( operands [ ] , operands [ ] ) ; rtx insn = emit_insn ( gen_rtx_PARALLEL ( VOIDmode , gen_rtvec ( , set1 , set2 ) ) ) ; RTX_FRAME_RELATED_P ( insn ) = ;" GCC,riscv,1008,"Predict the next statement of this code snippet: void th_mempair_save_restore_regs ( rtx operands [ ] , bool load_p , machine_mode mode ) {" GCC,arc,0,"Predict the next statement of this code snippet: builtin_define ( ) ; def_or_undef_macro ( pfile , NAME , CONDITION ) ; builtin_define_with_int_value ( , arc_tp_regno ) ;" GCC,arc,1,"Predict the next statement of this code snippet: builtin_assert ( ) ; builtin_define ( ) ; def_or_undef_macro ( pfile , NAME , CONDITION ) ; builtin_define_with_int_value ( , arc_tp_regno ) ; builtin_define ( TARGET_BIG_ENDIAN ? : ) ;" GCC,arc,2,"Predict the next statement of this code snippet: builtin_assert ( ) ; builtin_define ( ) ; def_or_undef_macro ( pfile , NAME , CONDITION ) ; builtin_define_with_int_value ( , arc_tp_regno ) ; builtin_define_with_int_value ( , arc_lpcwidth ) ; builtin_define ( TARGET_BIG_ENDIAN ? : ) ;" GCC,arc,3,"Predict the next statement of this code snippet: builtin_assert ( ) ; builtin_assert ( ) ; builtin_define ( ) ; def_or_undef_macro ( pfile , NAME , CONDITION ) ; builtin_define_with_int_value ( , arc_tp_regno ) ;" GCC,arc,4,"Predict the next statement of this code snippet: builtin_define_with_int_value ( , arc_tp_regno ) ; builtin_define_with_int_value ( , arc_lpcwidth ) ; builtin_define ( TARGET_BIG_ENDIAN ? : ) ; if ( TARGET_BIG_ENDIAN ) builtin_define ( ) ;" GCC,arc,5,"Predict the next statement of this code snippet: builtin_define ( ) ; def_or_undef_macro ( pfile , NAME , CONDITION ) ; builtin_define_with_int_value ( , arc_tp_regno ) ; builtin_define_with_int_value ( , arc_lpcwidth ) ; builtin_define ( TARGET_BIG_ENDIAN ? : ) ; if ( TARGET_BIG_ENDIAN ) builtin_define ( ) ; if ( TARGET_HARD_FLOAT ) { builtin_define ( ) ; builtin_define ( ) ; } else {" GCC,arc,6,"Predict the next statement of this code snippet: if ( def_p ) cpp_define ( pfile , name ) ;" GCC,arc,7,"Predict the next statement of this code snippet: static void def_or_undef_macro ( cpp_reader * pfile , const char * name , bool def_p ) { if ( def_p ) cpp_define ( pfile , name ) ;" GCC,arc,8,"Predict the next statement of this code snippet: case PRE_INC : case PRE_DEC : case POST_INC : case POST_DEC : case PRE_MODIFY : case POST_MODIFY : return ! speed ; case LABEL_REF : case SYMBOL_REF : case CONST : if ( TARGET_NPS_CMEM && cmem_address ( addr , SImode ) ) return ; return COSTS_N_INSNS ( ) ; case PLUS : { rtx plus0 = XEXP ( addr , ) ; rtx plus1 = XEXP ( addr , ) ; if ( GET_CODE ( plus0 ) != REG && ( GET_CODE ( plus0 ) != MULT || ! CONST_INT_P ( XEXP ( plus0 , ) ) || ( INTVAL ( XEXP ( plus0 , ) ) != && INTVAL ( XEXP ( plus0 , ) ) != ) ) ) break ; switch ( GET_CODE ( plus1 ) ) { case CONST_INT : return ( ! RTX_OK_FOR_OFFSET_P ( SImode , plus1 ) ? COSTS_N_INSNS ( ) : speed ? : ( arc_check_short_reg_p ( plus0 ) && satisfies_constraint_O ( plus1 ) ) ? : ) ; case REG : return ( speed < ? : ( arc_check_short_reg_p ( plus0 ) && arc_check_short_reg_p ( plus1 ) ) ? : ) ; case CONST : case SYMBOL_REF : case LABEL_REF : return COSTS_N_INSNS ( ) ; default : break ;" GCC,arc,9,"Predict the next statement of this code snippet: case LABEL_REF : case SYMBOL_REF : case CONST : if ( TARGET_NPS_CMEM && cmem_address ( addr , SImode ) ) return ; return COSTS_N_INSNS ( ) ; case PLUS : { rtx plus0 = XEXP ( addr , ) ; rtx plus1 = XEXP ( addr , ) ; if ( GET_CODE ( plus0 ) != REG && ( GET_CODE ( plus0 ) != MULT || ! CONST_INT_P ( XEXP ( plus0 , ) ) || ( INTVAL ( XEXP ( plus0 , ) ) != && INTVAL ( XEXP ( plus0 , ) ) != ) ) ) break ;" GCC,arc,10,"Predict the next statement of this code snippet: if ( TARGET_HS && ( arc_tune == ARC_TUNE_ARCHS4X_REL31A ) ) switch ( get_attr_type ( pred ) ) { case TYPE_STORE : switch ( get_attr_type ( succ ) ) { case TYPE_BRCC : case TYPE_BRCC_NO_DELAY_SLOT : case TYPE_LOOP_END : return ; default : break ; } break ;" GCC,arc,11,"Predict the next statement of this code snippet: if ( IN_RANGE ( REGNO ( op ) ^ , , ) ) return true ;" GCC,arc,12,"Predict the next statement of this code snippet: if ( ! REG_P ( op ) ) return false ; if ( IN_RANGE ( REGNO ( op ) ^ , , ) ) return true ; return false ;" GCC,arc,13,"Predict the next statement of this code snippet: if ( ARC_NAKED_P ( fn_type ) ) return ; size = arc_compute_frame_size ( ) ; size_to_deallocate = size ; first_offset = size - ( frame -> pretend_size + frame -> reg_size + frame -> extra_size ) ; if ( ! can_trust_sp_p ) gcc_assert ( arc_frame_pointer_needed ( ) ) ; if ( size ) emit_insn ( gen_blockage ( ) ) ; if ( ARC_INTERRUPT_P ( fn_type ) ) { size_to_deallocate -= arc_restore_callee_saves ( , false , restore_fp , first_offset , size_to_deallocate ) ; restore_fp = false ; first_offset = ; } if ( arc_must_save_register ( R58_REG , cfun , true ) ) { rtx insn ; rtx reg0 = gen_rtx_REG ( SImode , R0_REG ) ; rtx reg1 = gen_rtx_REG ( SImode , R1_REG ) ; size_to_deallocate -= pop_reg ( reg0 ) ; size_to_deallocate -= pop_reg ( reg1 ) ; insn = emit_insn ( gen_mulu64 ( reg0 , const1_rtx ) ) ; add_reg_note ( insn , REG_CFA_RESTORE , gen_rtx_REG ( SImode , R58_REG ) ) ; RTX_FRAME_RELATED_P ( insn ) = ; emit_insn ( gen_arc600_stall ( ) ) ; insn = emit_insn ( gen_rtx_UNSPEC_VOLATILE ( VOIDmode , gen_rtvec ( , reg1 , GEN_INT ( AUX_MULHI ) ) , VUNSPEC_ARC_SR ) ) ; add_reg_note ( insn , REG_CFA_RESTORE , gen_rtx_REG ( SImode , R59_REG ) ) ; RTX_FRAME_RELATED_P ( insn ) = ; } if ( arc_must_save_register ( TARGET_BIG_ENDIAN ? R41_REG : R40_REG , cfun , TARGET_DPFP ) ) { rtx reg0 = gen_rtx_REG ( SImode , R0_REG ) ; int i ; for ( i = ; i < ; i ++ ) { size_to_deallocate -= pop_reg ( reg0 ) ; emit_insn ( gen_rtx_UNSPEC_VOLATILE ( VOIDmode , gen_rtvec ( , reg0 , GEN_INT ( AUX_DPFP_START + i ) ) , VUNSPEC_ARC_SR ) ) ; } } if ( arc_lpcwidth != && arc_must_save_register ( LP_COUNT , cfun , true ) ) { rtx reg0 = gen_rtx_REG ( SImode , R0_REG ) ; size_to_deallocate -= pop_reg ( reg0 ) ; emit_move_insn ( gen_rtx_REG ( SImode , LP_COUNT ) , reg0 ) ;" GCC,arc,14,"Predict the next statement of this code snippet: int match = operands_match_p ( operands [ ] , operands [ ] ) ; int match2 = operands_match_p ( operands [ ] , operands [ ] ) ; int intval = ( REG_P ( operands [ ] ) ? : CONST_INT_P ( operands [ ] ) ? INTVAL ( operands [ ] ) : ) ;" GCC,arc,15,"Predict the next statement of this code snippet: int regno , indx , off , nregs ; rtx insn , reg , mem ; int frame_allocated = ; for ( regno = start_reg ; regno <= end_reg && ( gmask & ( << regno ) ) ; ) regno ++ ; end_reg = regno - ; nregs = end_reg - start_reg + ; nregs += save_blink ? : ; nregs += save_fp ? : ; if ( offset ) frame_stack_add ( offset ) ; insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( nregs + ( save_fp ? : ) + ) ) ; indx = ; reg = gen_rtx_SET ( stack_pointer_rtx , plus_constant ( Pmode , stack_pointer_rtx , - nregs * UNITS_PER_WORD ) ) ; RTX_FRAME_RELATED_P ( reg ) = ; XVECEXP ( insn , , indx ++ ) = reg ; off = nregs * UNITS_PER_WORD ; if ( save_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , - off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ; save_blink = false ; } for ( regno = start_reg ; regno <= end_reg ; regno ++ , indx ++ , off -= UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , - off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ) ) = ; gmask = gmask & ~ ( << regno ) ; }" GCC,arc,16,"Predict the next statement of this code snippet: RTX_FRAME_RELATED_P ( reg ) = ; XVECEXP ( insn , , indx ++ ) = reg ; off = nregs * UNITS_PER_WORD ; if ( save_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , - off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ; save_blink = false ; } for ( regno = start_reg ; regno <= end_reg ; regno ++ , indx ++ , off -= UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , - off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ) ) = ; gmask = gmask & ~ ( << regno ) ; } if ( save_fp ) { mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , - off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , hard_frame_pointer_rtx ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( hard_frame_pointer_rtx , stack_pointer_rtx ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; save_fp = false ;" GCC,arc,17,"Predict the next statement of this code snippet: case ARC_TUNE_ARCHS4X : case ARC_TUNE_ARCHS4XD : return ; default : break ;" GCC,arc,18,"Predict the next statement of this code snippet: next_cum = * get_cumulative_args ( args_so_far ) ; if ( ! TYPE_NO_NAMED_ARGS_STDARG_P ( TREE_TYPE ( current_function_decl ) ) ) arc_function_arg_advance ( pack_cumulative_args ( & next_cum ) , arg ) ; first_anon_arg = next_cum ; if ( FUNCTION_ARG_REGNO_P ( first_anon_arg ) ) { int first_reg_offset = first_anon_arg ; if ( ! no_rtl ) { rtx regblock = gen_rtx_MEM ( BLKmode , plus_constant ( Pmode , arg_pointer_rtx , FIRST_PARM_OFFSET ( ) ) ) ; move_block_from_reg ( first_reg_offset , regblock , MAX_ARC_PARM_REGS - first_reg_offset ) ; } * pretend_size = ( ( MAX_ARC_PARM_REGS - first_reg_offset ) * UNITS_PER_WORD ) ;" GCC,arc,19,"Predict the next statement of this code snippet: } xop [ ] = gen_rtx_REG ( SImode , REGNO ( operands [ ] ) ) ; xop [ ] = gen_rtx_REG ( SImode , REGNO ( operands [ ] ) + ) ; xop [ ] = GEN_INT ( trunc_int_for_mode ( intval0 , SImode ) ) ; xop [ ] = GEN_INT ( trunc_int_for_mode ( intval1 , SImode ) ) ; emit_move_insn ( xop [ ] , xop [ ] ) ; emit_move_insn ( xop [ ] , xop [ ] ) ; return ; } for ( i = ; i < ; i ++ ) { if ( MEM_P ( operands [ i ] ) && auto_inc_p ( XEXP ( operands [ i ] , ) ) ) { rtx addr = XEXP ( operands [ i ] , ) ; rtx r , o ; enum rtx_code code ; gcc_assert ( ! reg_overlap_mentioned_p ( operands [ ] , addr ) ) ; switch ( GET_CODE ( addr ) ) { case PRE_DEC : o = GEN_INT ( - ) ; goto pre_modify ; case PRE_INC : o = GEN_INT ( ) ; goto pre_modify ; case PRE_MODIFY : o = XEXP ( XEXP ( addr , ) , ) ; pre_modify : code = PRE_MODIFY ; break ; case POST_DEC : o = GEN_INT ( - ) ; goto post_modify ; case POST_INC : o = GEN_INT ( ) ; goto post_modify ; case POST_MODIFY : o = XEXP ( XEXP ( addr , ) , ) ; post_modify : code = POST_MODIFY ; swap = ; break ; default : gcc_unreachable ( ) ; } r = XEXP ( addr , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , gen_rtx_fmt_ee ( code , Pmode , r , gen_rtx_PLUS ( Pmode , r , o ) ) , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , plus_constant ( Pmode , r , ) , ) ; } else { xop [ + i ] = operand_subword ( operands [ i ] , , , mode ) ; xop [ + i ] = operand_subword ( operands [ i ] , , , mode ) ; } } if ( reg_overlap_mentioned_p ( xop [ ] , xop [ ] ) ) { swap = ;" GCC,arc,20,"Predict the next statement of this code snippet: intval0 = INTVAL ( XVECEXP ( operands [ ] , , ) ) << ; intval0 |= INTVAL ( XVECEXP ( operands [ ] , , ) ) & ; } xop [ ] = gen_rtx_REG ( SImode , REGNO ( operands [ ] ) ) ; xop [ ] = gen_rtx_REG ( SImode , REGNO ( operands [ ] ) + ) ; xop [ ] = GEN_INT ( trunc_int_for_mode ( intval0 , SImode ) ) ; xop [ ] = GEN_INT ( trunc_int_for_mode ( intval1 , SImode ) ) ; emit_move_insn ( xop [ ] , xop [ ] ) ; emit_move_insn ( xop [ ] , xop [ ] ) ; return ; } for ( i = ; i < ; i ++ ) { if ( MEM_P ( operands [ i ] ) && auto_inc_p ( XEXP ( operands [ i ] , ) ) ) { rtx addr = XEXP ( operands [ i ] , ) ; rtx r , o ; enum rtx_code code ; gcc_assert ( ! reg_overlap_mentioned_p ( operands [ ] , addr ) ) ; switch ( GET_CODE ( addr ) ) { case PRE_DEC : o = GEN_INT ( - ) ; goto pre_modify ; case PRE_INC : o = GEN_INT ( ) ; goto pre_modify ; case PRE_MODIFY : o = XEXP ( XEXP ( addr , ) , ) ; pre_modify : code = PRE_MODIFY ; break ; case POST_DEC : o = GEN_INT ( - ) ; goto post_modify ; case POST_INC : o = GEN_INT ( ) ; goto post_modify ; case POST_MODIFY : o = XEXP ( XEXP ( addr , ) , ) ; post_modify : code = POST_MODIFY ; swap = ; break ; default : gcc_unreachable ( ) ; } r = XEXP ( addr , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , gen_rtx_fmt_ee ( code , Pmode , r , gen_rtx_PLUS ( Pmode , r , o ) ) , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , plus_constant ( Pmode , r , ) , ) ; } else { xop [ + i ] = operand_subword ( operands [ i ] , , , mode ) ;" GCC,arc,21,"Predict the next statement of this code snippet: operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ; } else { operands [ ] = operands [ ] ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ;" GCC,arc,22,"Predict the next statement of this code snippet: operands [ ] = operands [ ] ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ; }" GCC,arc,23,"Predict the next statement of this code snippet: operands [ ] = gen_rtx_NEG ( SImode , operands [ ] ) ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ; return ; } else if ( val >= && val < ) { operands [ ] = operands [ ] ; operands [ ] = gen_rtx_MINUS ( SImode , operands [ ] , operands [ ] ) ; return ; }" GCC,arc,24,"Predict the next statement of this code snippet: int val = INTVAL ( operands [ ] ) ; if ( arc_check_short_reg_p ( operands [ ] ) && arc_check_short_reg_p ( operands [ ] ) ) { if ( val >= - && val <= ) { operands [ ] = gen_rtx_NEG ( SImode , operands [ ] ) ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ; return ; } else if ( val >= && val < ) { operands [ ] = operands [ ] ; operands [ ] = gen_rtx_MINUS ( SImode , operands [ ] , operands [ ] ) ; return ; } } operands [ ] = operands [ ] ; operands [ ] = gen_rtx_MINUS ( SImode , operands [ ] , operands [ ] ) ;" GCC,arc,25,"Predict the next statement of this code snippet: static void workaround_arc_anomaly ( void ) { rtx_insn * insn , * succ0 ; for ( insn = get_insns ( ) ; insn ; insn = NEXT_INSN ( insn ) ) { succ0 = next_real_insn ( insn ) ; if ( arc_hazard ( insn , succ0 ) || arc_check_release31a ( insn , succ0 ) ) emit_insn_before ( gen_nopv ( ) , succ0 ) ; } if ( ! TARGET_ARC700 ) return ;" GCC,arc,26,"Predict the next statement of this code snippet: if ( arc_hazard ( insn , succ0 ) || arc_check_release31a ( insn , succ0 ) ) emit_insn_before ( gen_nopv ( ) , succ0 ) ; } if ( ! TARGET_ARC700 ) return ;" GCC,arc,27,"Predict the next statement of this code snippet: int arc_ccfsm_branch_deleted_p ( ) { if ( arc_ccfsm_state == || arc_ccfsm_state == ) return ; return ;" GCC,arc,28,"Predict the next statement of this code snippet: int arc_ccfsm_branch_deleted_p ( ) { if ( arc_ccfsm_state == || arc_ccfsm_state == ) return ; return ;" GCC,arc,29,"Predict the next statement of this code snippet: void arc_ccfsm_record_branch_deleted ( ) { arc_ccfsm_state += ;" GCC,arc,30,"Predict the next statement of this code snippet: void arc_ccfsm_record_branch_deleted ( ) { arc_ccfsm_state += ; current_insn_set_cc_p = last_insn_set_cc_p ;" GCC,arc,31,"Predict the next statement of this code snippet: if ( arc_compute_function_type ( current_function_decl ) != ARC_FUNCTION_NORMAL ) return ; if ( ! current_frame_info . initialized ) ( void ) arc_compute_frame_size ( get_frame_size ( ) ) ;" GCC,arc,32,"Predict the next statement of this code snippet: if ( arc_compute_function_type ( current_function_decl ) != ARC_FUNCTION_NORMAL ) return ; if ( ! current_frame_info . initialized ) ( void ) arc_compute_frame_size ( get_frame_size ( ) ) ; if ( current_frame_info . total_size == ) return ; return ;" GCC,arc,33,"Predict the next statement of this code snippet: void arc_finalize_pic ( ) {" GCC,arc,34,"Predict the next statement of this code snippet: void arc_finalize_pic ( ) {" GCC,arc,35,"Predict the next statement of this code snippet: arc_cpu_string = ; arc_cpu_type = ; arc_mangle_cpu = NULL ; } arc_text_section = tmp = xmalloc ( strlen ( arc_text_string ) + sizeof ( ARC_SECTION_FORMAT ) + ) ; sprintf ( tmp , ARC_SECTION_FORMAT , arc_text_string ) ; arc_data_section = tmp = xmalloc ( strlen ( arc_data_string ) + sizeof ( ARC_SECTION_FORMAT ) + ) ; sprintf ( tmp , ARC_SECTION_FORMAT , arc_data_string ) ; arc_rodata_section = tmp = xmalloc ( strlen ( arc_rodata_string ) + sizeof ( ARC_SECTION_FORMAT ) + ) ; sprintf ( tmp , ARC_SECTION_FORMAT , arc_rodata_string ) ; arc_init_reg_tables ( ) ; memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ; arc_punct_chars [ '*' ] = ; arc_punct_chars [ '?' ] = ; arc_punct_chars [ '!' ] = ; arc_punct_chars [ '~' ] = ;" GCC,arc,36,"Predict the next statement of this code snippet: case REG : return ; case LABEL_REF : case SYMBOL_REF : case CONST : return ; case PLUS : { register rtx plus0 = XEXP ( addr , ) ; register rtx plus1 = XEXP ( addr , ) ; if ( GET_CODE ( plus0 ) != REG ) break ; switch ( GET_CODE ( plus1 ) ) { case CONST_INT : return SMALL_INT ( plus1 ) ? : ; case CONST : case SYMBOL_REF : case LABEL_REF : return ; default : break ;" GCC,arc,37,"Predict the next statement of this code snippet: case PLUS : { register rtx plus0 = XEXP ( addr , ) ; register rtx plus1 = XEXP ( addr , ) ; if ( GET_CODE ( plus0 ) != REG ) break ; switch ( GET_CODE ( plus1 ) ) { case CONST_INT : return SMALL_INT ( plus1 ) ? : ; case CONST : case SYMBOL_REF : case LABEL_REF : return ; default : break ; } break ; } default : break ; } return ;" GCC,arc,38,"Predict the next statement of this code snippet: if ( size == UNITS_PER_WORD && aligned_p && ( ( GET_CODE ( x ) == SYMBOL_REF && SYMBOL_REF_FUNCTION_P ( x ) ) || GET_CODE ( x ) == LABEL_REF ) ) { fputs ( , asm_out_file ) ; output_addr_const ( asm_out_file , x ) ; fputs ( , asm_out_file ) ; return true ; } return default_assemble_integer ( x , size , aligned_p ) ;" GCC,arc,39,"Predict the next statement of this code snippet: fputs ( , asm_out_file ) ; output_addr_const ( asm_out_file , x ) ; fputs ( , asm_out_file ) ; return true ; } return default_assemble_integer ( x , size , aligned_p ) ;" GCC,arc,40,"Predict the next statement of this code snippet: void arc_ccfsm_at_label ( const char * prefix , int num ) { if ( arc_ccfsm_state == && arc_ccfsm_target_label == num && ! strcmp ( prefix , ) ) { arc_ccfsm_state = ; arc_ccfsm_target_insn = NULL_RTX ; }" GCC,arc,41,"Predict the next statement of this code snippet: if ( arc_ccfsm_state == || arc_ccfsm_state == ) return ; return ;" GCC,arc,42,"Predict the next statement of this code snippet: if ( arc_ccfsm_state == || arc_ccfsm_state == ) return ; return ;" GCC,arc,43,"Predict the next statement of this code snippet: arc_ccfsm_state += ;" GCC,arc,44,"Predict the next statement of this code snippet: unsigned int arc_compute_frame_size ( int size ) { int regno ; unsigned int total_size , var_size , args_size , pretend_size , extra_size ; unsigned int reg_size , reg_offset ; unsigned int gmask ; enum arc_function_type fn_type ; int interrupt_p ; var_size = size ; args_size = current_function_outgoing_args_size ; pretend_size = current_function_pretend_args_size ; extra_size = FIRST_PARM_OFFSET ( ) ; total_size = extra_size + pretend_size + args_size + var_size ; reg_offset = FIRST_PARM_OFFSET ( ) + current_function_outgoing_args_size ; reg_size = ; gmask = ; fn_type = arc_compute_function_type ( current_function_decl ) ; interrupt_p = ARC_INTERRUPT_P ( fn_type ) ; for ( regno = ; regno <= ; regno ++ ) { if ( MUST_SAVE_REGISTER ( regno , interrupt_p ) ) { reg_size += UNITS_PER_WORD ; gmask |= << regno ; } } total_size += reg_size ; if ( total_size == extra_size && ! MUST_SAVE_RETURN_ADDR ) total_size = extra_size = ; total_size = ARC_STACK_ALIGN ( total_size ) ; current_frame_info . total_size = total_size ; current_frame_info . extra_size = extra_size ; current_frame_info . pretend_size = pretend_size ; current_frame_info . var_size = var_size ; current_frame_info . args_size = args_size ; current_frame_info . reg_size = reg_size ; current_frame_info . reg_offset = reg_offset ;" GCC,arc,45,"Predict the next statement of this code snippet: return fn_type ; } if ( decl == last_fn && fn_type != ARC_FUNCTION_UNKNOWN ) return fn_type ; fn_type = ARC_FUNCTION_NORMAL ; for ( a = DECL_ATTRIBUTES ( current_function_decl ) ; a ; a = TREE_CHAIN ( a ) ) { tree name = TREE_PURPOSE ( a ) , args = TREE_VALUE ( a ) ; if ( name == get_identifier ( ) && list_length ( args ) == && TREE_CODE ( TREE_VALUE ( args ) ) == STRING_CST ) {" GCC,arc,46,"Predict the next statement of this code snippet: if ( ! current_frame_info . initialized ) ( void ) arc_compute_frame_size ( get_frame_size ( ) ) ; if ( current_frame_info . total_size == ) return ; return ;" GCC,arc,47,"Predict the next statement of this code snippet: HOST_WIDE_INT low , high ; gcc_assert ( GET_CODE ( value ) == CONST_DOUBLE ) ; low = CONST_DOUBLE_LOW ( value ) ; high = CONST_DOUBLE_HIGH ( value ) ; if ( low & ) { return ( ( ( unsigned HOST_WIDE_INT ) low <= && high == ) || ( ( ( low & - ( unsigned HOST_WIDE_INT ) ) == - ( unsigned HOST_WIDE_INT ) ) && high == - ) ) ; }" GCC,arc,48,"Predict the next statement of this code snippet: if ( get_attr_length ( trial ) == && current_frame_info . gmask == && ! reg_mentioned_p ( stack_pointer_rtx , PATTERN ( trial ) ) && ! reg_mentioned_p ( frame_pointer_rtx , PATTERN ( trial ) ) ) return ;" GCC,arc,49,"Predict the next statement of this code snippet: fprintf ( FILE , , XSTR ( SYMREF , ) , XSTR ( SYMREF , ) , arc_mangle_suffix ) ;" GCC,arc,50,"Predict the next statement of this code snippet: default_file_start ( ) ;" GCC,arc,51,"Predict the next statement of this code snippet: static void arc_file_start ( void ) { default_file_start ( ) ; fprintf ( asm_out_file , , arc_cpu_string ) ;" GCC,arc,52,"Predict the next statement of this code snippet: int insns_skipped = , fail = FALSE , succeed = FALSE ; int then_not_else = TRUE ; int next_must_be_target_label_p ; rtx this_insn = start_insn , label = ; if ( reverse ) { if ( ! seeking_return ) label = XEXP ( SET_SRC ( body ) , ) ; } else if ( GET_CODE ( XEXP ( SET_SRC ( body ) , ) ) == LABEL_REF ) label = XEXP ( XEXP ( SET_SRC ( body ) , ) , ) ; else if ( GET_CODE ( XEXP ( SET_SRC ( body ) , ) ) == LABEL_REF ) { label = XEXP ( XEXP ( SET_SRC ( body ) , ) , ) ; then_not_else = FALSE ; } else if ( GET_CODE ( XEXP ( SET_SRC ( body ) , ) ) == RETURN ) seeking_return = ; else if ( GET_CODE ( XEXP ( SET_SRC ( body ) , ) ) == RETURN ) { seeking_return = ; then_not_else = FALSE ; } else gcc_unreachable ( ) ; for ( insns_skipped = , next_must_be_target_label_p = FALSE ; ! fail && ! succeed && insns_skipped < MAX_INSNS_SKIPPED ; insns_skipped ++ ) { rtx scanbody ; this_insn = next_nonnote_insn ( this_insn ) ; if ( ! this_insn ) break ; if ( next_must_be_target_label_p ) { if ( GET_CODE ( this_insn ) == BARRIER ) continue ; if ( GET_CODE ( this_insn ) == CODE_LABEL && this_insn == label ) { arc_ccfsm_state = ; succeed = TRUE ; } else fail = TRUE ; break ; } scanbody = PATTERN ( this_insn ) ; switch ( GET_CODE ( this_insn ) ) { case CODE_LABEL : if ( this_insn == label ) { arc_ccfsm_state = ; succeed = TRUE ; } else fail = TRUE ; break ; case BARRIER : next_must_be_target_label_p = TRUE ; break ; case CALL_INSN : if ( get_attr_cond ( this_insn ) == COND_CANUSE ) next_must_be_target_label_p = TRUE ; else fail = TRUE ; break ;" GCC,arc,53,"Predict the next statement of this code snippet: case OPT_mcpu_ : return strcmp ( arg , ) == || ARC_EXTENSION_CPU ( arg ) ;" GCC,arc,54,"Predict the next statement of this code snippet: memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ; arc_punct_chars [ '*' ] = ; arc_punct_chars [ '?' ] = ; arc_punct_chars [ '!' ] = ;" GCC,arc,55,"Predict the next statement of this code snippet: void arc_initialize_trampoline ( rtx tramp ATTRIBUTE_UNUSED , rtx fnaddr ATTRIBUTE_UNUSED , rtx cxt ATTRIBUTE_UNUSED ) {" GCC,arc,56,"Predict the next statement of this code snippet: void arc_initialize_trampoline ( rtx tramp ATTRIBUTE_UNUSED , rtx fnaddr ATTRIBUTE_UNUSED , rtx cxt ATTRIBUTE_UNUSED ) {" GCC,arc,57,"Predict the next statement of this code snippet: else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) D_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) T_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) O_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_FLOAT : case MODE_COMPLEX_FLOAT : if ( GET_MODE_SIZE ( i ) <= ) arc_mode_class [ i ] = << ( int ) SF_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) DF_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) TF_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) OF_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_CC : arc_mode_class [ i ] = << ( int ) C_MODE ; break ; default :" GCC,arc,58,"Predict the next statement of this code snippet: case MODE_COMPLEX_INT : if ( GET_MODE_SIZE ( i ) <= ) arc_mode_class [ i ] = << ( int ) S_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) D_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) T_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) O_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_FLOAT : case MODE_COMPLEX_FLOAT : if ( GET_MODE_SIZE ( i ) <= ) arc_mode_class [ i ] = << ( int ) SF_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) DF_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) TF_MODE ; else if ( GET_MODE_SIZE ( i ) == ) arc_mode_class [ i ] = << ( int ) OF_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_CC : arc_mode_class [ i ] = << ( int ) C_MODE ; break ; default : arc_mode_class [ i ] = ;" GCC,arc,59,"Predict the next statement of this code snippet: static void arc_internal_label ( FILE * stream , const char * prefix , unsigned long labelno ) {" GCC,arc,60,"Predict the next statement of this code snippet: final_scan_insn ( XEXP ( epilogue_delay , ) , file , , , NULL ) ; } } { static const int regs [ ] = { , RETURN_ADDR_REGNUM , ILINK1_REGNUM , ILINK2_REGNUM } ; if ( ARC_INTERRUPT_P ( fn_type ) ) fprintf ( file , , reg_names [ regs [ fn_type ] ] ) ; else fprintf ( file , , reg_names [ regs [ fn_type ] ] ) ; } if ( ARC_INTERRUPT_P ( fn_type ) ) fprintf ( file , , sp_str , sp_str ) ; else if ( epilogue_delay != NULL_RTX ) { gcc_assert ( ! frame_pointer_needed || fp_restored_p ) ; gcc_assert ( restored >= size ) ; final_scan_insn ( XEXP ( epilogue_delay , ) , file , , , NULL ) ; } else if ( frame_pointer_needed && ! fp_restored_p ) { gcc_assert ( SMALL_INT ( frame_size ) ) ; fprintf ( file , , fp_str , sp_str , frame_size ) ; } else if ( restored < size ) { gcc_assert ( SMALL_INT ( size - restored ) ) ;" GCC,arc,61,"Predict the next statement of this code snippet: fprintf ( file , , ASM_COMMENT_START , ASM_COMMENT_START , current_frame_info . var_size , current_frame_info . reg_size / , current_frame_info . args_size , current_frame_info . extra_size ) ; size = ARC_STACK_ALIGN ( size ) ; size = ( ! current_frame_info . initialized ? arc_compute_frame_size ( size ) : current_frame_info . total_size ) ; gcc_assert ( size || ! gmask ) ; if ( current_frame_info . pretend_size != ) fprintf ( file , , sp_str , sp_str , current_frame_info . pretend_size ) ; if ( MUST_SAVE_RETURN_ADDR ) fprintf ( file , , reg_names [ RETURN_ADDR_REGNUM ] , sp_str , UNITS_PER_WORD ) ; if ( frame_pointer_needed ) { fprintf ( file , , fp_str , sp_str ) ;" GCC,arc,62,"Predict the next statement of this code snippet: fputs ( reg_names [ REGNO ( addr ) ] , file ) ; break ; case SYMBOL_REF : if ( && SYMBOL_REF_FUNCTION_P ( addr ) ) { fprintf ( file , ) ; output_addr_const ( file , addr ) ; fprintf ( file , ) ; } else output_addr_const ( file , addr ) ; break ; case PLUS : if ( GET_CODE ( XEXP ( addr , ) ) == CONST_INT ) offset = INTVAL ( XEXP ( addr , ) ) , base = XEXP ( addr , ) ; else if ( GET_CODE ( XEXP ( addr , ) ) == CONST_INT ) offset = INTVAL ( XEXP ( addr , ) ) , base = XEXP ( addr , ) ; else base = XEXP ( addr , ) , index = XEXP ( addr , ) ; gcc_assert ( GET_CODE ( base ) == REG ) ; fputs ( reg_names [ REGNO ( base ) ] , file ) ;" GCC,arc,63,"Predict the next statement of this code snippet: if ( AGGREGATE_TYPE_P ( type ) ) return true ; else { HOST_WIDE_INT size = int_size_in_bytes ( type ) ;" GCC,arc,64,"Predict the next statement of this code snippet: if ( AGGREGATE_TYPE_P ( type ) ) return true ; else {" GCC,arc,65,"Predict the next statement of this code snippet: * total = COSTS_N_INSNS ( ) ; return true ; case CONST_DOUBLE : { rtx high , low ; split_double ( x , & high , & low ) ; * total = COSTS_N_INSNS ( ! SMALL_INT ( INTVAL ( high ) ) + ! SMALL_INT ( INTVAL ( low ) ) ) ; return true ; } case ASHIFT : case ASHIFTRT :" GCC,arc,66,"Predict the next statement of this code snippet: for ( regno = ; regno <= ; regno ++ ) { if ( ( gmask & ( << regno ) ) != ) { fprintf ( file , , op , reg_names [ regno ] , base_reg , offset ) ;" GCC,arc,67,"Predict the next statement of this code snippet: if ( ( gmask & ( << regno ) ) != ) { fprintf ( file , , op , reg_names [ regno ] , base_reg , offset ) ;" GCC,arc,68,"Predict the next statement of this code snippet: return CCZNmode ; case ASHIFT : case ASHIFTRT : case LSHIFTRT : return CCZNCmode ; default : break ; } } return CCmode ;" GCC,arc,69,"Predict the next statement of this code snippet: int first_anon_arg ; gcc_assert ( mode != BLKmode ) ; first_anon_arg = * cum + ( ( GET_MODE_SIZE ( mode ) + UNITS_PER_WORD - ) / UNITS_PER_WORD ) ; if ( first_anon_arg < MAX_ARC_PARM_REGS && ! no_rtl ) { int first_reg_offset = first_anon_arg ; int size = MAX_ARC_PARM_REGS - first_reg_offset ;" GCC,arc,70,"Predict the next statement of this code snippet: void arc_va_start ( tree valist , rtx nextarg ) { if ( current_function_args_info < && ( current_function_args_info & ) ) nextarg = plus_constant ( nextarg , UNITS_PER_WORD ) ;" GCC,arc,71,"Predict the next statement of this code snippet: return ( symbolic_operand ( op , mode ) || ( GET_CODE ( op ) == CONST_INT && LEGITIMATE_CONSTANT_P ( op ) ) || ( GET_CODE ( op ) == REG ) ) ;" GCC,arc,72,"Predict the next statement of this code snippet: int call_operand ( rtx op , enum machine_mode mode ) {" GCC,arc,73,"Predict the next statement of this code snippet: if ( GET_CODE ( op ) != MEM ) return ; op = XEXP ( op , ) ; return call_address_operand ( op , mode ) ;" GCC,arc,74,"Predict the next statement of this code snippet: return ( GET_CODE ( op ) == CONST_INT && ( INTVAL ( op ) >= ( - - ) && INTVAL ( op ) <= ) ) ;" GCC,arc,75,"Predict the next statement of this code snippet: return ( GET_CODE ( op ) == CONST_INT && ( INTVAL ( op ) >= && INTVAL ( op ) <= ) ) ;" GCC,arc,76,"Predict the next statement of this code snippet: int const_uint32_operand ( rtx op , enum machine_mode mode ATTRIBUTE_UNUSED ) {" GCC,arc,77,"Predict the next statement of this code snippet: rtx cc_reg ; cc_reg = gen_rtx_REG ( mode , ) ; emit_insn ( gen_rtx_SET ( VOIDmode , cc_reg , gen_rtx_COMPARE ( mode , x , y ) ) ) ;" GCC,arc,78,"Predict the next statement of this code snippet: static int get_arc_condition_code ( rtx comparison ) { switch ( GET_CODE ( comparison ) ) { case EQ : return ; case NE : return ; case GT : return ; case LE : return ; case GE : return ; case LT : return ;" GCC,arc,79,"Predict the next statement of this code snippet: case LEU : return ; case LTU : return ; case GEU : return ; default : gcc_unreachable ( ) ; } return ( ) ;" GCC,arc,80,"Predict the next statement of this code snippet: op = XEXP ( op , ) ;" GCC,arc,81,"Predict the next statement of this code snippet: return ; case CONST_INT : return ; case CONST_DOUBLE : return ; case REG : return ; case PLUS : if ( GET_CODE ( XEXP ( op , ) ) == CONST_INT && ! SMALL_INT ( INTVAL ( XEXP ( op , ) ) ) ) return ; return ;" GCC,arc,82,"Predict the next statement of this code snippet: int long_immediate_loadstore_operand ( rtx op , enum machine_mode mode ATTRIBUTE_UNUSED ) { if ( GET_CODE ( op ) != MEM ) return ; op = XEXP ( op , ) ; switch ( GET_CODE ( op ) ) { case SYMBOL_REF : case LABEL_REF : case CONST : return ; case CONST_INT : return ;" GCC,arc,83,"Predict the next statement of this code snippet: int long_immediate_operand ( rtx op , enum machine_mode mode ATTRIBUTE_UNUSED ) { switch ( GET_CODE ( op ) ) { case SYMBOL_REF : case LABEL_REF : case CONST : return ; case CONST_INT : return ! SMALL_INT ( INTVAL ( op ) ) ; case CONST_DOUBLE :" GCC,arc,84,"Predict the next statement of this code snippet: else return register_operand ( op , mode ) ; case MEM : return address_operand ( XEXP ( op , ) , mode ) ; default : return ;" GCC,arc,85,"Predict the next statement of this code snippet: if ( GET_CODE ( SUBREG_REG ( op ) ) == MEM ) return move_double_src_operand ( SUBREG_REG ( op ) , mode ) ; else return register_operand ( op , mode ) ; case MEM : if ( GET_CODE ( XEXP ( op , ) ) == PRE_DEC || GET_CODE ( XEXP ( op , ) ) == PRE_INC ) return ; return address_operand ( XEXP ( op , ) , mode ) ;" GCC,arc,86,"Predict the next statement of this code snippet: case LABEL_REF : case CONST : return ; case CONST_INT : return ( LARGE_INT ( INTVAL ( op ) ) ) ; case CONST_DOUBLE : if ( mode == SImode ) return arc_double_limm_p ( op ) ; if ( mode == SFmode ) return GET_MODE ( op ) == SFmode ; return ; case REG : return register_operand ( op , mode ) ; case SUBREG : if ( GET_CODE ( SUBREG_REG ( op ) ) == MEM ) return address_operand ( XEXP ( SUBREG_REG ( op ) , ) , mode ) ; else return register_operand ( op , mode ) ; case MEM : return address_operand ( XEXP ( op , ) , mode ) ; default : return ;" GCC,arc,87,"Predict the next statement of this code snippet: case LABEL_REF : case CONST : return ; case CONST_INT : return ( LARGE_INT ( INTVAL ( op ) ) ) ; case CONST_DOUBLE : if ( mode == SImode ) return arc_double_limm_p ( op ) ; if ( mode == SFmode ) return GET_MODE ( op ) == SFmode ; return ; case REG : return register_operand ( op , mode ) ; case SUBREG : if ( GET_CODE ( SUBREG_REG ( op ) ) == MEM ) return address_operand ( XEXP ( SUBREG_REG ( op ) , ) , mode ) ; else return register_operand ( op , mode ) ; case MEM : return address_operand ( XEXP ( op , ) , mode ) ; default : return ; }" GCC,arc,88,"Predict the next statement of this code snippet: if ( GET_CODE ( op ) == MEM && MEM_VOLATILE_P ( op ) ) return ; return nonimmediate_operand ( op , mode ) ;" GCC,arc,89,"Predict the next statement of this code snippet: int nonvol_nonimm_operand ( rtx op , enum machine_mode mode ) {" GCC,arc,90,"Predict the next statement of this code snippet: output_asm_insn ( , operands ) ; } else output_asm_insn ( , operands ) ; goto shiftloop ; } else { int n = INTVAL ( operands [ ] ) ; if ( n < ) n = ; else if ( n > GET_MODE_BITSIZE ( mode ) ) n = GET_MODE_BITSIZE ( mode ) ; if ( n <= ) { while ( -- n >= ) output_asm_insn ( shift_one , operands ) ; } else if ( n == BITS_PER_WORD - ) { switch ( code ) { case ASHIFT : output_asm_insn ( , operands ) ; break ; case ASHIFTRT : output_asm_insn ( , operands ) ; break ; case LSHIFTRT : output_asm_insn ( , operands ) ; break ; default : break ; } } else { char buf [ ] ; if ( optimize ) output_asm_insn ( , operands ) ; else output_asm_insn ( , operands ) ; shiftloop : if ( optimize ) { if ( flag_pic ) sprintf ( buf , , ASM_COMMENT_START ) ; else sprintf ( buf , , ASM_COMMENT_START ) ; output_asm_insn ( buf , operands ) ; output_asm_insn ( , operands ) ; output_asm_insn ( , operands ) ; output_asm_insn ( , operands ) ; output_asm_insn ( , operands ) ; if ( flag_pic ) fprintf ( asm_out_file , , ASM_COMMENT_START ) ; else fprintf ( asm_out_file , , ASM_COMMENT_START ) ; output_asm_insn ( shift_one , operands ) ; fprintf ( asm_out_file , , ASM_COMMENT_START ) ; } else { fprintf ( asm_out_file , , ASM_COMMENT_START ) ; output_asm_insn ( , operands ) ; output_asm_insn ( , operands ) ; output_asm_insn ( , operands ) ; output_asm_insn ( shift_one , operands ) ; output_asm_insn ( , operands ) ; fprintf ( asm_out_file , , ASM_COMMENT_START ) ; }" GCC,arc,91,"Predict the next statement of this code snippet: if ( GET_MODE ( XEXP ( op , ) ) == CCZNmode ) return ( code == EQ || code == NE ) ; if ( GET_MODE ( XEXP ( op , ) ) == CCZNCmode ) return ( code == EQ || code == NE || code == LTU || code == GEU || code == GTU || code == LEU ) ;" GCC,arc,92,"Predict the next statement of this code snippet: static void record_cc_ref ( rtx insn ) { last_insn_set_cc_p = current_insn_set_cc_p ; switch ( get_attr_cond ( insn ) ) { case COND_SET : case COND_SET_ZN :" GCC,arc,93,"Predict the next statement of this code snippet: static void record_cc_ref ( rtx insn ) { last_insn_set_cc_p = current_insn_set_cc_p ; switch ( get_attr_cond ( insn ) ) { case COND_SET : case COND_SET_ZN : case COND_SET_ZNC : if ( get_attr_length ( insn ) == ) current_insn_set_cc_p = ; else current_insn_set_cc_p = ;" GCC,arc,94,"Predict the next statement of this code snippet: int short_immediate_operand ( rtx op , enum machine_mode mode ATTRIBUTE_UNUSED ) { if ( GET_CODE ( op ) != CONST_INT ) return ;" GCC,arc,95,"Predict the next statement of this code snippet: op = XEXP ( op , ) ;" GCC,arc,96,"Predict the next statement of this code snippet: if ( GET_CODE ( op ) != PLUS || GET_MODE ( op ) != Pmode || ! register_operand ( XEXP ( op , ) , Pmode ) || ! ( GET_CODE ( XEXP ( op , ) ) == CONST_INT && SMALL_INT ( INTVAL ( XEXP ( op , ) ) ) ) ) return ; return ;" GCC,arc,97,"Predict the next statement of this code snippet: int symbolic_memory_operand ( rtx op , enum machine_mode mode ATTRIBUTE_UNUSED ) { if ( GET_CODE ( op ) == SUBREG ) op = SUBREG_REG ( op ) ; if ( GET_CODE ( op ) != MEM ) return ; op = XEXP ( op , ) ;" GCC,arc,98,"Predict the next statement of this code snippet: op = XEXP ( op , ) ;" GCC,arc,99,"Predict the next statement of this code snippet: case LABEL_REF : case CONST : return ; default : return ; }" GCC,arc,100,"Predict the next statement of this code snippet: if ( GET_CODE ( PATTERN ( succ ) ) == SEQUENCE ) succ = as_a < rtx_sequence * > ( PATTERN ( succ ) ) -> insn ( ) ; if ( recog_memoized ( pred ) == CODE_FOR_mulsi_600 || recog_memoized ( pred ) == CODE_FOR_umul_600 || recog_memoized ( pred ) == CODE_FOR_mac_600 || recog_memoized ( pred ) == CODE_FOR_mul64_600 || recog_memoized ( pred ) == CODE_FOR_mac64_600 || recog_memoized ( pred ) == CODE_FOR_umul64_600 || recog_memoized ( pred ) == CODE_FOR_umac64_600 ) return ; subrtx_iterator :: array_type array ; FOR_EACH_SUBRTX ( iter , array , PATTERN ( pred ) , NONCONST ) { const_rtx x = * iter ; switch ( GET_CODE ( x ) ) { case SET : case POST_INC : case POST_DEC : case PRE_INC : case PRE_DEC : break ; default : continue ;" GCC,arc,101,"Predict the next statement of this code snippet: case PLUS : { register rtx plus0 = XEXP ( addr , ) ; register rtx plus1 = XEXP ( addr , ) ; if ( GET_CODE ( plus0 ) != REG && ( GET_CODE ( plus0 ) != MULT || ! CONST_INT_P ( XEXP ( plus0 , ) ) || ( INTVAL ( XEXP ( plus0 , ) ) != && INTVAL ( XEXP ( plus0 , ) ) != ) ) ) break ; switch ( GET_CODE ( plus1 ) ) { case CONST_INT : return ( ! RTX_OK_FOR_OFFSET_P ( SImode , plus1 ) ? COSTS_N_INSNS ( ) : speed ? : ( satisfies_constraint_Rcq ( plus0 ) && satisfies_constraint_O ( plus1 ) ) ? : ) ;" GCC,arc,102,"Predict the next statement of this code snippet: rtx_insn * prev = prev_nonnote_insn ( insn ) ; return ( ( LABEL_P ( prev ) || ( TARGET_ARC600 && ( JUMP_P ( prev ) || CALL_P ( prev ) || ( NONJUMP_INSN_P ( prev ) && GET_CODE ( PATTERN ( prev ) ) == SEQUENCE ) ) ) ) ? len + : len ) ; } if ( TARGET_PAD_RETURN && JUMP_P ( insn ) && GET_CODE ( PATTERN ( insn ) ) != ADDR_VEC && GET_CODE ( PATTERN ( insn ) ) != ADDR_DIFF_VEC && get_attr_type ( insn ) == TYPE_RETURN ) { rtx_insn * prev = prev_active_insn ( insn ) ; if ( ! prev || ! ( prev = prev_active_insn ( prev ) ) || ( ( NONJUMP_INSN_P ( prev ) && GET_CODE ( PATTERN ( prev ) ) == SEQUENCE ) ? CALL_ATTR ( as_a < rtx_sequence * > ( PATTERN ( prev ) ) -> insn ( ) , NON_SIBCALL ) : CALL_ATTR ( prev , NON_SIBCALL ) ) ) return len + ; } if ( TARGET_ARC600 ) { rtx_insn * succ = next_real_insn ( insn ) ; if ( succ && INSN_P ( succ ) ) len += arc600_corereg_hazard ( insn , succ ) ; }" GCC,arc,103,"Predict the next statement of this code snippet: if ( recog_memoized ( insn ) == CODE_FOR_doloop_end_i ) { rtx_insn * prev = prev_nonnote_insn ( insn ) ; return ( ( LABEL_P ( prev ) || ( TARGET_ARC600 && ( JUMP_P ( prev ) || CALL_P ( prev ) || ( NONJUMP_INSN_P ( prev ) && GET_CODE ( PATTERN ( prev ) ) == SEQUENCE ) ) ) ) ? len + : len ) ; } if ( TARGET_PAD_RETURN && JUMP_P ( insn ) && GET_CODE ( PATTERN ( insn ) ) != ADDR_VEC && GET_CODE ( PATTERN ( insn ) ) != ADDR_DIFF_VEC && get_attr_type ( insn ) == TYPE_RETURN ) {" GCC,arc,104,"Predict the next statement of this code snippet: static int arc_arg_partial_bytes ( cumulative_args_t cum_v , machine_mode mode , tree type , bool named ATTRIBUTE_UNUSED ) { CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; int bytes = ( mode == BLKmode ? int_size_in_bytes ( type ) : ( int ) GET_MODE_SIZE ( mode ) ) ;" GCC,arc,105,"Predict the next statement of this code snippet: int words = ( bytes + UNITS_PER_WORD - ) / UNITS_PER_WORD ; int arg_num = * cum ; int ret ; arg_num = ROUND_ADVANCE_CUM ( arg_num , mode , type ) ;" GCC,arc,106,"Predict the next statement of this code snippet: int in_small_data = arc_in_small_data_p ( decl ) ; if ( in_small_data ) switch_to_section ( get_named_section ( NULL , , ) ) ; else switch_to_section ( bss_section ) ; if ( globalize_p ) ( * targetm . asm_out . globalize_label ) ( stream , name ) ; ASM_OUTPUT_ALIGN ( stream , floor_log2 ( ( align ) / BITS_PER_UNIT ) ) ; ASM_OUTPUT_TYPE_DIRECTIVE ( stream , name , ) ; ASM_OUTPUT_SIZE_DIRECTIVE ( stream , name , size ) ; ASM_OUTPUT_LABEL ( stream , name ) ; if ( size != ) ASM_OUTPUT_SKIP ( stream , size ) ;" GCC,arc,107,"Predict the next statement of this code snippet: int in_small_data = arc_in_small_data_p ( decl ) ; if ( in_small_data ) switch_to_section ( get_named_section ( NULL , , ) ) ; else switch_to_section ( bss_section ) ; if ( globalize_p ) ( * targetm . asm_out . globalize_label ) ( stream , name ) ;" GCC,arc,108,"Predict the next statement of this code snippet: if ( NONJUMP_INSN_P ( insn ) ? ( GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) : JUMP_P ( insn ) ? ( GET_CODE ( PATTERN ( insn ) ) == ADDR_VEC || GET_CODE ( PATTERN ( insn ) ) == ADDR_DIFF_VEC ) : ! CALL_P ( insn ) ) return - ;" GCC,arc,109,"Predict the next statement of this code snippet: union { const rtx_insn * c ; rtx_insn * r ; } u ; u . c = follower ; if ( CROSSING_JUMP_P ( followee ) ) switch ( get_attr_type ( u . r ) ) { case TYPE_BRCC : case TYPE_BRCC_NO_DELAY_SLOT : return false ; default : return true ; } return true ;" GCC,arc,110,"Predict the next statement of this code snippet: static bool arc_can_use_doloop_p ( const widest_int & iterations , const widest_int & , unsigned int loop_depth , bool entered_at_top ) { if ( loop_depth > ) return false ;" GCC,arc,111,"Predict the next statement of this code snippet: if ( TARGET_ARC700 && ! entered_at_top && wi :: gtu_p ( iterations , ) && wi :: leu_p ( iterations , flag_pic ? : ) ) return false ;" GCC,arc,112,"Predict the next statement of this code snippet: else { rtx src = SET_SRC ( PATTERN ( insn ) ) ; arc_ccfsm_record_condition ( XEXP ( src , ) , XEXP ( src , ) == pc_rtx , insn , state ) ; } }" GCC,arc,113,"Predict the next statement of this code snippet: int interrupt_p ; struct arc_frame_info * frame_info = & cfun -> machine -> frame_info ; size = ARC_STACK_ALIGN ( size ) ; var_size = size ; args_size = crtl -> outgoing_args_size ; reg_size = ; gmask = ; fn_type = arc_compute_function_type ( cfun ) ; interrupt_p = ARC_INTERRUPT_P ( fn_type ) ; for ( regno = ; regno <= ; regno ++ ) { if ( MUST_SAVE_REGISTER ( regno , interrupt_p ) ) { reg_size += UNITS_PER_WORD ; gmask |= << regno ; } } frame_info -> save_return_addr = ( ! crtl -> is_leaf || df_regs_ever_live_p ( RETURN_ADDR_REGNUM ) ) ; if ( optimize_size && ! TARGET_NO_MILLICODE_THUNK_SET ) { if ( arc_compute_millicode_save_restore_regs ( gmask , frame_info ) ) frame_info -> save_return_addr = true ; } extra_size = ; if ( MUST_SAVE_RETURN_ADDR ) extra_size = ; if ( frame_pointer_needed ) extra_size += ; pretend_size = crtl -> args . pretend_args_size ; { unsigned int extra_plus_reg_size ; unsigned int extra_plus_reg_size_aligned ; extra_plus_reg_size = extra_size + reg_size ; extra_plus_reg_size_aligned = ARC_STACK_ALIGN ( extra_plus_reg_size ) ; reg_size = extra_plus_reg_size_aligned - extra_size ; } total_size = var_size + args_size + extra_size + pretend_size + reg_size ; total_size = ARC_STACK_ALIGN ( total_size ) ; reg_offset = ( total_size - ( pretend_size + reg_size + extra_size ) + ( frame_pointer_needed ? : ) ) ; frame_info -> total_size = total_size ; frame_info -> extra_size = extra_size ; frame_info -> pretend_size = pretend_size ; frame_info -> var_size = var_size ; frame_info -> args_size = args_size ; frame_info -> reg_size = reg_size ; frame_info -> reg_offset = reg_offset ;" GCC,arc,114,"Predict the next statement of this code snippet: fn_type = ARC_FUNCTION_NORMAL ; for ( a = DECL_ATTRIBUTES ( decl ) ; a ; a = TREE_CHAIN ( a ) ) { tree name = TREE_PURPOSE ( a ) , args = TREE_VALUE ( a ) ; if ( name == get_identifier ( ) && list_length ( args ) == && TREE_CODE ( TREE_VALUE ( args ) ) == STRING_CST ) { tree value = TREE_VALUE ( args ) ; if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type = ARC_FUNCTION_ILINK1 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type = ARC_FUNCTION_ILINK2 ; else gcc_unreachable ( ) ; break ; } }" GCC,arc,115,"Predict the next statement of this code snippet: fn_type = ARC_FUNCTION_NORMAL ; for ( a = DECL_ATTRIBUTES ( decl ) ; a ; a = TREE_CHAIN ( a ) ) { tree name = TREE_PURPOSE ( a ) , args = TREE_VALUE ( a ) ; if ( name == get_identifier ( ) && list_length ( args ) == && TREE_CODE ( TREE_VALUE ( args ) ) == STRING_CST ) { tree value = TREE_VALUE ( args ) ; if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type = ARC_FUNCTION_ILINK1 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type = ARC_FUNCTION_ILINK2 ; else gcc_unreachable ( ) ; break ; } } return fun -> machine -> fn_type = fn_type ;" GCC,arc,116,"Predict the next statement of this code snippet: for ( regno = start_reg ; regno <= end_reg && ( gmask & ( << regno ) ) ; ) regno ++ ; end_reg = regno - ; if ( regno - start_reg >= - ( crtl -> is_leaf == ) ) { frame -> millicode_start_reg = ; frame -> millicode_end_reg = regno - ; return ;" GCC,arc,117,"Predict the next statement of this code snippet: static bool arc_decl_anon_ns_mem_p ( const_tree decl ) { while ( ) { if ( decl == NULL_TREE || decl == error_mark_node ) return false ;" GCC,arc,118,"Predict the next statement of this code snippet: int arc_decl_pretend_args ( tree decl ) {" GCC,arc,119,"Predict the next statement of this code snippet: if ( x ) { if ( MEM_P ( orig_x ) ) x = replace_equiv_address_nv ( orig_x , x ) ; return x ; } return orig_x ;" GCC,arc,120,"Predict the next statement of this code snippet: } else if ( GET_CODE ( x ) == PLUS && ( ( REG_P ( gp = XEXP ( x , ) ) && REGNO ( gp ) == PIC_OFFSET_TABLE_REGNUM ) || ( GET_CODE ( gp ) == CONST && GET_CODE ( u = XEXP ( gp , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOT && GET_CODE ( XVECEXP ( u , , ) ) == SYMBOL_REF && ! strcmp ( XSTR ( XVECEXP ( u , , ) , ) , ) ) ) && GET_CODE ( XEXP ( x , ) ) == CONST && GET_CODE ( u = XEXP ( XEXP ( x , ) , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOTOFF ) return XVECEXP ( u , , ) ; else if ( GET_CODE ( x ) == PLUS && GET_CODE ( XEXP ( x , ) ) == PLUS && ( ( REG_P ( gp = XEXP ( XEXP ( x , ) , ) ) && REGNO ( gp ) == PIC_OFFSET_TABLE_REGNUM ) || ( GET_CODE ( gp ) == CONST && GET_CODE ( u = XEXP ( gp , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOT && GET_CODE ( XVECEXP ( u , , ) ) == SYMBOL_REF && ! strcmp ( XSTR ( XVECEXP ( u , , ) , ) , ) ) ) && GET_CODE ( XEXP ( x , ) ) == CONST && GET_CODE ( u = XEXP ( XEXP ( x , ) , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOTOFF ) return gen_rtx_PLUS ( GET_MODE ( x ) , XEXP ( XEXP ( x , ) , ) , XVECEXP ( u , , ) ) ;" GCC,arc,121,"Predict the next statement of this code snippet: static void arc_encode_section_info ( tree decl , rtx rtl , int first ) { default_encode_section_info ( decl , rtl , first ) ; if ( TREE_CODE ( decl ) == FUNCTION_DECL ) { rtx symbol = XEXP ( rtl , ) ; int flags = SYMBOL_REF_FLAGS ( symbol ) ; tree attr = ( TREE_TYPE ( decl ) != error_mark_node ? TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) : NULL_TREE ) ; tree long_call_attr = lookup_attribute ( , attr ) ; tree medium_call_attr = lookup_attribute ( , attr ) ; tree short_call_attr = lookup_attribute ( , attr ) ; if ( long_call_attr != NULL_TREE ) flags |= SYMBOL_FLAG_LONG_CALL ; else if ( medium_call_attr != NULL_TREE ) flags |= SYMBOL_FLAG_MEDIUM_CALL ; else if ( short_call_attr != NULL_TREE ) flags |= SYMBOL_FLAG_SHORT_CALL ;" GCC,arc,122,"Predict the next statement of this code snippet: if ( reload_completed ) { if ( ARC_INTERRUPT_P ( cfun -> machine -> fn_type ) ) { if ( ! fixed_regs [ regno ] ) return true ;" GCC,arc,123,"Predict the next statement of this code snippet: if ( sibthunk_p ) goto epilogue_done ; } if ( ( ! SMALL_INT ( first_offset ) && cfun -> machine -> frame_info . gmask && ( ( TARGET_ARC700 && ! optimize_size ) ? first_offset <= : satisfies_constraint_C2a ( GEN_INT ( first_offset ) ) ) ) || ( MUST_SAVE_RETURN_ADDR && ! SMALL_INT ( ( cfun -> machine -> frame_info . reg_size + first_offset ) >> ) && cfun -> machine -> frame_info . gmask ) ) { frame_stack_add ( first_offset ) ; first_offset = ; } if ( MUST_SAVE_RETURN_ADDR ) { rtx ra = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; int ra_offs = cfun -> machine -> frame_info . reg_size + first_offset ; rtx addr = plus_constant ( Pmode , stack_pointer_rtx , ra_offs ) ; if ( ! SMALL_INT ( ra_offs >> ) && ! cfun -> machine -> frame_info . gmask && ( ( TARGET_ARC700 && ! optimize_size ) ? ra_offs <= : satisfies_constraint_C2a ( GEN_INT ( ra_offs ) ) ) ) { size_to_deallocate -= ra_offs - first_offset ; first_offset = ; frame_stack_add ( ra_offs ) ; ra_offs = ; addr = stack_pointer_rtx ; } if ( ra_offs && ! cfun -> machine -> frame_info . gmask && ( SMALL_INT ( ra_offs ) || ! SMALL_INT ( ra_offs >> ) ) ) { addr = gen_rtx_PRE_MODIFY ( Pmode , stack_pointer_rtx , addr ) ; first_offset = ; size_to_deallocate -= cfun -> machine -> frame_info . reg_size ; } else if ( ! ra_offs && size_to_deallocate == UNITS_PER_WORD ) { addr = gen_rtx_POST_INC ( Pmode , addr ) ; size_to_deallocate = ; }" GCC,arc,124,"Predict the next statement of this code snippet: unsigned n_pieces ; int piece = align ; rtx store [ ] ; rtx tmpx [ ] ; int i ; if ( ! CONST_INT_P ( operands [ ] ) ) return false ; size = INTVAL ( operands [ ] ) ; if ( align >= ) n_pieces = ( size + ) / + ( size & ) ; else if ( align == ) n_pieces = ( size + ) / ; else n_pieces = size ; if ( n_pieces >= ( unsigned int ) ( optimize_size ? : ) ) return false ; if ( piece > ) piece = ; dst_addr = force_offsettable ( XEXP ( operands [ ] , ) , size , ) ; src_addr = force_offsettable ( XEXP ( operands [ ] , ) , size , ) ; store [ ] = store [ ] = NULL_RTX ; tmpx [ ] = tmpx [ ] = NULL_RTX ; for ( i = ; size > ; i ^= , size -= piece ) { rtx tmp ; machine_mode mode ; if ( piece > size ) piece = size & - size ; mode = smallest_mode_for_size ( piece * BITS_PER_UNIT , MODE_INT ) ; if ( && tmpx [ i ] && GET_MODE ( tmpx [ i ] ) == mode ) tmp = tmpx [ i ] ; else tmpx [ i ] = tmp = gen_reg_rtx ( mode ) ; dst_addr = force_offsettable ( dst_addr , piece , ) ; src_addr = force_offsettable ( src_addr , piece , ) ; if ( store [ i ] ) emit_insn ( store [ i ] ) ; emit_move_insn ( tmp , change_address ( src , mode , src_addr ) ) ; store [ i ] = gen_move_insn ( change_address ( dst , mode , dst_addr ) , tmp ) ; dst_addr = plus_constant ( Pmode , dst_addr , piece ) ; src_addr = plus_constant ( Pmode , src_addr , piece ) ; } if ( store [ i ] ) emit_insn ( store [ i ] ) ; if ( store [ i ^ ] ) emit_insn ( store [ i ^ ] ) ;" GCC,arc,125,"Predict the next statement of this code snippet: rtx dst = operands [ ] ; rtx src = operands [ ] ; rtx dst_addr , src_addr ; HOST_WIDE_INT size ; int align = INTVAL ( operands [ ] ) ; unsigned n_pieces ; int piece = align ; rtx store [ ] ; rtx tmpx [ ] ; int i ; if ( ! CONST_INT_P ( operands [ ] ) ) return false ; size = INTVAL ( operands [ ] ) ; if ( align >= ) n_pieces = ( size + ) / + ( size & ) ; else if ( align == ) n_pieces = ( size + ) / ; else n_pieces = size ; if ( n_pieces >= ( unsigned int ) ( optimize_size ? : ) ) return false ;" GCC,arc,126,"Predict the next statement of this code snippet: unsigned int gmask = cfun -> machine -> frame_info . gmask ; unsigned int frame_size_to_allocate ; int first_offset = ; size = ARC_STACK_ALIGN ( size ) ; size = ( ! cfun -> machine -> frame_info . initialized ? arc_compute_frame_size ( size ) : cfun -> machine -> frame_info . total_size ) ; if ( flag_stack_usage_info ) current_function_static_stack_size = size ; frame_size_to_allocate = size ; gcc_assert ( ! ( size == && gmask ) ) ; if ( cfun -> machine -> frame_info . pretend_size != ) { gcc_assert ( cfun -> machine -> frame_info . pretend_size <= ) ; frame_stack_add ( - ( HOST_WIDE_INT ) cfun -> machine -> frame_info . pretend_size ) ; frame_size_to_allocate -= cfun -> machine -> frame_info . pretend_size ; } if ( MUST_SAVE_RETURN_ADDR ) { rtx ra = gen_rtx_REG ( SImode , RETURN_ADDR_REGNUM ) ; rtx mem = gen_frame_mem ( Pmode , gen_rtx_PRE_DEC ( Pmode , stack_pointer_rtx ) ) ; frame_move_inc ( mem , ra , stack_pointer_rtx , ) ; frame_size_to_allocate -= UNITS_PER_WORD ; } if ( cfun -> machine -> frame_info . reg_size ) { first_offset = - cfun -> machine -> frame_info . reg_size ; arc_save_restore ( stack_pointer_rtx , gmask , , & first_offset ) ; frame_size_to_allocate -= cfun -> machine -> frame_info . reg_size ; } if ( frame_pointer_needed ) {" GCC,arc,127,"Predict the next statement of this code snippet: pat = gen_rtx_SYMBOL_REF ( Pmode , ) ; pat = gen_rtx_UNSPEC ( Pmode , gen_rtvec ( , pat ) , ARC_UNSPEC_GOT ) ; pat = gen_rtx_CONST ( Pmode , pat ) ;" GCC,arc,128,"Predict the next statement of this code snippet: if ( PREV_INSN ( insn ) && PREV_INSN ( NEXT_INSN ( insn ) ) == insn && arc_hazard ( prev_real_insn ( insn ) , insn ) ) { current_output_insn = emit_insn_before ( gen_nop ( ) , NEXT_INSN ( PREV_INSN ( insn ) ) ) ; final_scan_insn ( current_output_insn , asm_out_file , optimize , , NULL ) ;" GCC,arc,129,"Predict the next statement of this code snippet: extract_constrain_insn_cached ( insn ) ; if ( ! cfun -> machine -> prescan_initialized ) { memset ( & arc_ccfsm_current , , sizeof arc_ccfsm_current ) ; cfun -> machine -> prescan_initialized = ; } arc_ccfsm_advance ( insn , & arc_ccfsm_current ) ; cfun -> machine -> size_reason = ;" GCC,arc,130,"Predict the next statement of this code snippet: static bool arc_frame_pointer_required ( void ) {" GCC,arc,131,"Predict the next statement of this code snippet: const char * debstr ATTRIBUTE_UNUSED ; arg_num = ROUND_ADVANCE_CUM ( arg_num , mode , type ) ; if ( mode == VOIDmode ) { ret = const0_rtx ; debstr = ; } else if ( GPR_REST_ARG_REGS ( arg_num ) > ) { ret = gen_rtx_REG ( mode , arg_num ) ; debstr = reg_names [ arg_num ] ; } else { ret = NULL_RTX ; debstr = ; }" GCC,arc,132,"Predict the next statement of this code snippet: ret = const0_rtx ; debstr = ; } else if ( GPR_REST_ARG_REGS ( arg_num ) > ) { ret = gen_rtx_REG ( mode , arg_num ) ; debstr = reg_names [ arg_num ] ; } else { ret = NULL_RTX ; debstr = ;" GCC,arc,133,"Predict the next statement of this code snippet: int words = ( bytes + UNITS_PER_WORD - ) / UNITS_PER_WORD ; int i ; if ( words ) * cum = ROUND_ADVANCE_CUM ( * cum , mode , type ) ; for ( i = ; i < words ; i ++ ) * cum = ARC_NEXT_ARG_REG ( * cum ) ;" GCC,arc,134,"Predict the next statement of this code snippet: static void arc_function_arg_advance ( cumulative_args_t cum_v , machine_mode mode , const_tree type , bool named ATTRIBUTE_UNUSED ) { CUMULATIVE_ARGS * cum = get_cumulative_args ( cum_v ) ; int bytes = ( mode == BLKmode ? int_size_in_bytes ( type ) : ( int ) GET_MODE_SIZE ( mode ) ) ; int words = ( bytes + UNITS_PER_WORD - ) / UNITS_PER_WORD ; int i ;" GCC,arc,135,"Predict the next statement of this code snippet: if ( ARC_INTERRUPT_P ( arc_compute_function_type ( cfun ) ) ) return false ; return true ;" GCC,arc,136,"Predict the next statement of this code snippet: static bool arc_function_ok_for_sibcall ( tree decl ATTRIBUTE_UNUSED , tree exp ATTRIBUTE_UNUSED ) { if ( ARC_INTERRUPT_P ( arc_compute_function_type ( cfun ) ) ) return false ; return true ;" GCC,arc,137,"Predict the next statement of this code snippet: return cfun -> machine -> unalign ;" GCC,arc,138,"Predict the next statement of this code snippet: } else if ( strcmp ( TREE_STRING_POINTER ( value ) , ) && strcmp ( TREE_STRING_POINTER ( value ) , ) ) { warning ( OPT_Wattributes , , name ) ;" GCC,arc,139,"Predict the next statement of this code snippet: if ( TREE_CODE ( value ) != STRING_CST ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ; } else if ( strcmp ( TREE_STRING_POINTER ( value ) , ) && strcmp ( TREE_STRING_POINTER ( value ) , ) ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ;" GCC,arc,140,"Predict the next statement of this code snippet: if ( ! TARGET_ARC600 ) return ; if ( ! pred || ! INSN_P ( pred ) || ! succ || ! INSN_P ( succ ) ) return ; if ( recog_memoized ( succ ) == CODE_FOR_doloop_end_i && ( JUMP_P ( pred ) || CALL_P ( pred ) || GET_CODE ( PATTERN ( pred ) ) == SEQUENCE ) ) return ; return arc600_corereg_hazard ( pred , succ ) ;" GCC,arc,141,"Predict the next statement of this code snippet: const char * name = LABEL_NAME ( insn ) ; PUT_CODE ( insn , NOTE ) ; NOTE_KIND ( insn ) = NOTE_INSN_DELETED_LABEL ; NOTE_DELETED_LABEL_NAME ( insn ) = name ; } merge_bb = ; continue ; } case : case : if ( ! NONDEBUG_INSN_P ( insn ) ) break ; rtx_insn * prev , * pprev ; rtx * patp , pat , cond ; bool annulled ; annulled = false ; prev = PREV_INSN ( insn ) ; pprev = PREV_INSN ( prev ) ; if ( pprev && NEXT_INSN ( NEXT_INSN ( pprev ) ) == NEXT_INSN ( insn ) && JUMP_P ( prev ) && get_attr_cond ( prev ) == COND_USE ) { if ( ! INSN_ANNULLED_BRANCH_P ( prev ) ) break ; annulled = true ; } patp = & PATTERN ( insn ) ; pat = * patp ; cond = arc_get_ccfsm_cond ( statep , INSN_FROM_TARGET_P ( insn ) ) ; if ( NONJUMP_INSN_P ( insn ) || CALL_P ( insn ) ) { pat = conditionalize_nonjump ( pat , cond , insn , annulled ) ; } else if ( simplejump_p ( insn ) ) { patp = & SET_SRC ( pat ) ; pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , * patp , pc_rtx ) ; } else if ( JUMP_P ( insn ) && ANY_RETURN_P ( PATTERN ( insn ) ) ) { pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , pat , pc_rtx ) ; pat = gen_rtx_SET ( VOIDmode , pc_rtx , pat ) ; } else gcc_unreachable ( ) ; validate_change ( insn , patp , pat , ) ; if ( ! apply_change_group ( ) ) gcc_unreachable ( ) ; if ( JUMP_P ( insn ) ) { rtx_insn * next = next_nonnote_insn ( insn ) ; if ( GET_CODE ( next ) == BARRIER ) delete_insn ( next ) ; if ( statep -> state == ) continue ; } break ;" GCC,arc,142,"Predict the next statement of this code snippet: break ; } default : arc_multcost = COSTS_N_INSNS ( ) ; break ; } if ( TARGET_MUL64_SET && TARGET_ARC700 ) error ( ) ; if ( TARGET_NOMPY_SET && ! TARGET_ARC700 ) error ( ) ; if ( TARGET_MULMAC_32BY16_SET && ! ( TARGET_ARC600 || TARGET_ARC601 ) ) error ( ) ; if ( ! TARGET_DPFP && TARGET_DPFP_DISABLE_LRSR ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET && TARGET_DPFP_COMPACT_SET ) || ( TARGET_SPFP_FAST_SET && TARGET_SPFP_COMPACT_SET ) ) error ( ) ; if ( TARGET_SPFP_FAST_SET && ( TARGET_ARC600 || TARGET_ARC601 ) ) error ( ) ; if ( ( TARGET_DPFP || TARGET_SPFP ) && ! ( TARGET_ARC600 || TARGET_ARC601 || TARGET_ARC700 ) ) error ( ) ; if ( flag_pic && ! TARGET_ARC700 ) { warning ( DK_WARNING , , arc_cpu_string ) ; flag_pic = ; } arc_init_reg_tables ( ) ; memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ; arc_punct_chars [ '*' ] = ; arc_punct_chars [ '?' ] = ; arc_punct_chars [ '!' ] = ; arc_punct_chars [ '^' ] = ; arc_punct_chars [ '&' ] = ; if ( optimize > && ! TARGET_NO_COND_EXEC ) { opt_pass * pass_arc_ifcvt_4 = make_pass_arc_ifcvt ( g ) ; struct register_pass_info arc_ifcvt4_info = { pass_arc_ifcvt_4 , , , PASS_POS_INSERT_AFTER } ; struct register_pass_info arc_ifcvt5_info = { pass_arc_ifcvt_4 -> clone ( ) , , , PASS_POS_INSERT_BEFORE } ; register_pass ( & arc_ifcvt4_info ) ; register_pass ( & arc_ifcvt5_info ) ; } if ( flag_delayed_branch ) {" GCC,arc,143,"Predict the next statement of this code snippet: static void arc_initialize_trampoline ( rtx tramp , tree fndecl , rtx cxt ) { rtx fnaddr = XEXP ( DECL_RTL ( fndecl ) , ) ; emit_store_direct ( tramp , , TARGET_BIG_ENDIAN ? : ) ; emit_store_direct ( tramp , , TARGET_BIG_ENDIAN ? : ) ; emit_store_direct ( tramp , , TARGET_BIG_ENDIAN ? : ) ; emit_move_insn ( adjust_address ( tramp , SImode , ) , fnaddr ) ; emit_move_insn ( adjust_address ( tramp , SImode , ) , cxt ) ; emit_insn ( gen_flush_icache ( adjust_address ( tramp , SImode , ) ) ) ;" GCC,arc,144,"Predict the next statement of this code snippet: if ( from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM ) { return ( cfun -> machine -> frame_info . total_size - cfun -> machine -> frame_info . pretend_size ) ; } if ( ( from == FRAME_POINTER_REGNUM ) && ( to == STACK_POINTER_REGNUM ) ) { return ( cfun -> machine -> frame_info . total_size - ( cfun -> machine -> frame_info . pretend_size + cfun -> machine -> frame_info . extra_size + cfun -> machine -> frame_info . reg_size ) ) ; }" GCC,arc,145,"Predict the next statement of this code snippet: } if ( ( from == FRAME_POINTER_REGNUM ) && ( to == STACK_POINTER_REGNUM ) ) {" GCC,arc,146,"Predict the next statement of this code snippet: def_mbuiltin ( TARGET_MUL64_SET , , void_ftype_int_int , ARC_BUILTIN_MUL64 ) ; def_mbuiltin ( TARGET_MUL64_SET , , void_ftype_usint_usint , ARC_BUILTIN_MULU64 ) ; def_mbuiltin ( , , void_ftype_void , ARC_BUILTIN_RTIE ) ; def_mbuiltin ( TARGET_ARC700 , , void_ftype_void , ARC_BUILTIN_SYNC ) ; def_mbuiltin ( ( TARGET_EA_SET ) , , int_ftype_int_int , ARC_BUILTIN_DIVAW ) ; def_mbuiltin ( , , void_ftype_void , ARC_BUILTIN_BRK ) ; def_mbuiltin ( , , void_ftype_usint , ARC_BUILTIN_FLAG ) ; def_mbuiltin ( , , void_ftype_usint , ARC_BUILTIN_SLEEP ) ; def_mbuiltin ( , , void_ftype_void , ARC_BUILTIN_SWI ) ; def_mbuiltin ( , , usint_ftype_usint , ARC_BUILTIN_CORE_READ ) ; def_mbuiltin ( , , void_ftype_usint_usint , ARC_BUILTIN_CORE_WRITE ) ;" GCC,arc,147,"Predict the next statement of this code snippet: machine -> fn_type = ARC_FUNCTION_UNKNOWN ; machine -> force_short_suffix = - ;" GCC,arc,148,"Predict the next statement of this code snippet: static struct machine_function * arc_init_machine_status ( void ) { struct machine_function * machine ; machine = ggc_cleared_alloc < machine_function > ( ) ; machine -> fn_type = ARC_FUNCTION_UNKNOWN ; machine -> force_short_suffix = - ;" GCC,arc,149,"Predict the next statement of this code snippet: case MODE_PARTIAL_INT : case MODE_COMPLEX_INT : if ( GET_MODE_SIZE ( m ) <= ) arc_mode_class [ i ] = << ( int ) S_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) D_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) T_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) O_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_FLOAT : case MODE_COMPLEX_FLOAT : if ( GET_MODE_SIZE ( m ) <= ) arc_mode_class [ i ] = << ( int ) SF_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) DF_MODE ;" GCC,arc,150,"Predict the next statement of this code snippet: int i ; for ( i = ; i < NUM_MACHINE_MODES ; i ++ ) { machine_mode m = ( machine_mode ) i ; switch ( GET_MODE_CLASS ( m ) ) { case MODE_INT : case MODE_PARTIAL_INT : case MODE_COMPLEX_INT : if ( GET_MODE_SIZE ( m ) <= ) arc_mode_class [ i ] = << ( int ) S_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) D_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) T_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) O_MODE ; else arc_mode_class [ i ] = ; break ;" GCC,arc,151,"Predict the next statement of this code snippet: static void arc_insn_length_parameters ( insn_length_parameters_t * ilp ) { ilp -> align_unit_log = ; ilp -> align_base_log = ; ilp -> max_variants = ; ilp -> get_variants = arc_get_insn_variants ;" GCC,arc,152,"Predict the next statement of this code snippet: name = DECL_SECTION_NAME ( decl ) ; if ( strcmp ( name , ) != && strcmp ( name , ) != ) return false ; if ( ! DECL_EXTERNAL ( decl ) ) return true ; } else if ( ) { if ( TREE_CODE ( decl ) != VAR_DECL ) return false ; if ( TREE_READONLY ( decl ) && ! TREE_SIDE_EFFECTS ( decl ) && ( ! DECL_INITIAL ( decl ) || TREE_CONSTANT ( DECL_INITIAL ( decl ) ) ) ) return false ; if ( default_binds_local_p_1 ( decl , ) || arc_decl_anon_ns_mem_p ( decl ) ) return false ;" GCC,arc,153,"Predict the next statement of this code snippet: if ( prev && NONJUMP_INSN_P ( prev ) && GET_CODE ( PATTERN ( prev ) ) == PARALLEL && recog_memoized ( prev ) == CODE_FOR_doloop_begin_i ) return loop_align ; } if ( align_labels_log < ) { rtx_insn * next = next_nonnote_nondebug_insn ( label ) ; if ( INSN_P ( next ) && recog_memoized ( next ) >= ) return ; }" GCC,arc,154,"Predict the next statement of this code snippet: rtx_insn * prev = prev_nonnote_insn ( label ) ; if ( prev && NONJUMP_INSN_P ( prev ) && GET_CODE ( PATTERN ( prev ) ) == PARALLEL && recog_memoized ( prev ) == CODE_FOR_doloop_begin_i ) return loop_align ; } if ( align_labels_log < ) { rtx_insn * next = next_nonnote_nondebug_insn ( label ) ; if ( INSN_P ( next ) && recog_memoized ( next ) >= ) return ; } return align_labels_log ;" GCC,arc,155,"Predict the next statement of this code snippet: if ( RTX_OK_FOR_BASE_P ( x , strict ) ) return true ; if ( LEGITIMATE_OFFSET_ADDRESS_P ( mode , x , TARGET_INDEXED_LOADS , strict ) ) return true ; if ( LEGITIMATE_SCALED_ADDRESS_P ( mode , x , strict ) ) return true ; if ( LEGITIMATE_SMALL_DATA_ADDRESS_P ( x ) ) return true ; if ( GET_CODE ( x ) == CONST_INT && LARGE_INT ( INTVAL ( x ) ) ) return true ; if ( ( GET_MODE_SIZE ( mode ) != ) && ( GET_CODE ( x ) == SYMBOL_REF || GET_CODE ( x ) == LABEL_REF || GET_CODE ( x ) == CONST ) ) { if ( ! flag_pic || arc_legitimate_pic_addr_p ( x ) ) return true ; } if ( ( GET_CODE ( x ) == PRE_DEC || GET_CODE ( x ) == PRE_INC || GET_CODE ( x ) == POST_DEC || GET_CODE ( x ) == POST_INC ) && RTX_OK_FOR_BASE_P ( XEXP ( x , ) , strict ) ) return true ; if ( ( GET_CODE ( x ) == PRE_MODIFY || GET_CODE ( x ) == POST_MODIFY ) && GET_CODE ( XEXP ( ( x ) , ) ) == PLUS && rtx_equal_p ( XEXP ( ( x ) , ) , XEXP ( XEXP ( x , ) , ) ) && LEGITIMATE_OFFSET_ADDRESS_P ( QImode , XEXP ( x , ) , TARGET_AUTO_MODIFY_REG , strict ) ) return true ;" GCC,arc,156,"Predict the next statement of this code snippet: case ARC_UNSPEC_PLT : case ARC_UNSPEC_GOTOFF : case ARC_UNSPEC_GOT : case UNSPEC_PROF : return true ; default : gcc_unreachable ( ) ; } if ( arc_raw_symbolic_reference_mentioned_p ( x , false ) ) return false ; break ; case LABEL_REF : case SYMBOL_REF :" GCC,arc,157,"Predict the next statement of this code snippet: }" GCC,arc,158,"Predict the next statement of this code snippet: } return ( GET_CODE ( addr ) == UNSPEC && XVECLEN ( addr , ) == && XINT ( addr , ) == ARC_UNSPEC_GOT && GET_CODE ( XVECEXP ( addr , , ) ) == SYMBOL_REF ) ;" GCC,arc,159,"Predict the next statement of this code snippet: return ! arc_raw_symbolic_reference_mentioned_p ( x , true ) ;" GCC,arc,160,"Predict the next statement of this code snippet: if ( flag_pic && SYMBOLIC_CONST ( x ) ) ( x ) = arc_legitimize_pic_address ( x , ) ; addr = x ; if ( GET_CODE ( addr ) == CONST ) addr = XEXP ( addr , ) ; if ( GET_CODE ( addr ) == PLUS && CONST_INT_P ( XEXP ( addr , ) ) && ( ( GET_CODE ( XEXP ( addr , ) ) == SYMBOL_REF && ! SYMBOL_REF_FUNCTION_P ( XEXP ( addr , ) ) ) || ( REG_P ( XEXP ( addr , ) ) && ( INTVAL ( XEXP ( addr , ) ) & ) ) ) ) { HOST_WIDE_INT offs , upper ; int size = GET_MODE_SIZE ( mode ) ; offs = INTVAL ( XEXP ( addr , ) ) ; upper = ( offs + * size ) & ~ * size ; inner = plus_constant ( Pmode , XEXP ( addr , ) , upper ) ;" GCC,arc,161,"Predict the next statement of this code snippet: if ( oldx == orig ) oldx = NULL ; if ( GET_CODE ( addr ) == LABEL_REF ) ; else if ( GET_CODE ( addr ) == SYMBOL_REF && ( CONSTANT_POOL_ADDRESS_P ( addr ) || SYMBOL_REF_LOCAL_P ( addr ) ) ) { crtl -> uses_pic_offset_table = ; pat = gen_rtx_UNSPEC ( Pmode , gen_rtvec ( , addr ) , ARC_UNSPEC_GOTOFF ) ; pat = gen_rtx_CONST ( Pmode , pat ) ; pat = gen_rtx_PLUS ( Pmode , pic_offset_table_rtx , pat ) ; if ( oldx == NULL ) oldx = gen_reg_rtx ( Pmode ) ; if ( oldx != ) { emit_move_insn ( oldx , pat ) ; pat = oldx ; } } else if ( GET_CODE ( addr ) == SYMBOL_REF ) { pat = gen_rtx_UNSPEC ( Pmode , gen_rtvec ( , addr ) , ARC_UNSPEC_GOT ) ; pat = gen_rtx_CONST ( Pmode , pat ) ; pat = gen_const_mem ( Pmode , pat ) ; if ( oldx == ) oldx = gen_reg_rtx ( Pmode ) ; emit_move_insn ( oldx , pat ) ; pat = oldx ; } else { if ( GET_CODE ( addr ) == CONST ) { addr = XEXP ( addr , ) ;" GCC,arc,162,"Predict the next statement of this code snippet: if ( oldx == ) oldx = gen_reg_rtx ( Pmode ) ; emit_move_insn ( oldx , pat ) ; pat = oldx ; } else { if ( GET_CODE ( addr ) == CONST ) { addr = XEXP ( addr , ) ; if ( GET_CODE ( addr ) == UNSPEC ) { } else gcc_assert ( GET_CODE ( addr ) == PLUS ) ; } if ( GET_CODE ( addr ) == PLUS ) { rtx op0 = XEXP ( addr , ) , op1 = XEXP ( addr , ) ; if ( ( GET_CODE ( op0 ) == LABEL_REF || ( GET_CODE ( op0 ) == SYMBOL_REF && ( CONSTANT_POOL_ADDRESS_P ( op0 ) || SYMBOL_REF_LOCAL_P ( op0 ) ) ) ) && GET_CODE ( op1 ) == CONST_INT ) { crtl -> uses_pic_offset_table = ; pat = gen_rtx_UNSPEC ( Pmode , gen_rtvec ( , op0 ) , ARC_UNSPEC_GOTOFF ) ; pat = gen_rtx_PLUS ( Pmode , pat , op1 ) ; pat = gen_rtx_CONST ( Pmode , pat ) ; pat = gen_rtx_PLUS ( Pmode , pic_offset_table_rtx , pat ) ; if ( oldx != ) { emit_move_insn ( oldx , pat ) ; pat = oldx ; } } else { base = arc_legitimize_pic_address ( XEXP ( addr , ) , oldx ) ; pat = arc_legitimize_pic_address ( XEXP ( addr , ) , base == oldx ? NULL_RTX : oldx ) ; if ( GET_CODE ( pat ) == CONST_INT ) pat = plus_constant ( Pmode , base , INTVAL ( pat ) ) ; else { if ( GET_CODE ( pat ) == PLUS && CONSTANT_P ( XEXP ( pat , ) ) ) { base = gen_rtx_PLUS ( Pmode , base , XEXP ( pat , ) ) ; pat = XEXP ( pat , ) ; } pat = gen_rtx_PLUS ( Pmode , base , pat ) ; } }" GCC,arc,163,"Predict the next statement of this code snippet: rtx reg , sum , sum2 ; if ( scale > ) scale = ; if ( ( scale - ) & offset ) scale = ; shift = scale >> ; offset_base = ( offset + ( << shift ) ) & ( - << shift ) ; if ( GET_MODE_SIZE ( mode ) + offset - offset_base <= ( << shift ) ) { int regno ; reg = XEXP ( x , ) ; regno = REGNO ( reg ) ; sum2 = sum = plus_constant ( Pmode , reg , offset_base ) ; if ( reg_equiv_constant ( regno ) ) { sum2 = plus_constant ( Pmode , reg_equiv_constant ( regno ) , offset_base ) ; if ( GET_CODE ( sum2 ) == PLUS ) sum2 = gen_rtx_CONST ( Pmode , sum2 ) ; } * p = gen_rtx_PLUS ( Pmode , sum , GEN_INT ( offset - offset_base ) ) ; push_reload ( sum2 , NULL_RTX , & XEXP ( * p , ) , NULL , BASE_REG_CLASS , Pmode , VOIDmode , , , opnum , type ) ; return true ; }" GCC,arc,164,"Predict the next statement of this code snippet: shift = scale >> ; offset_base = ( offset + ( << shift ) ) & ( - << shift ) ; if ( GET_MODE_SIZE ( mode ) + offset - offset_base <= ( << shift ) ) { int regno ; reg = XEXP ( x , ) ; regno = REGNO ( reg ) ; sum2 = sum = plus_constant ( Pmode , reg , offset_base ) ; if ( reg_equiv_constant ( regno ) ) { sum2 = plus_constant ( Pmode , reg_equiv_constant ( regno ) , offset_base ) ; if ( GET_CODE ( sum2 ) == PLUS ) sum2 = gen_rtx_CONST ( Pmode , sum2 ) ; } * p = gen_rtx_PLUS ( Pmode , sum , GEN_INT ( offset - offset_base ) ) ; push_reload ( sum2 , NULL_RTX , & XEXP ( * p , ) , NULL , BASE_REG_CLASS , Pmode , VOIDmode , , , opnum , type ) ; return true ;" GCC,arc,165,"Predict the next statement of this code snippet: static bool arc_lra_p ( void ) { return ! TARGET_NO_LRA ;" GCC,arc,166,"Predict the next statement of this code snippet: static bool arc_lra_p ( void ) {" GCC,arc,167,"Predict the next statement of this code snippet: if ( GET_CODE ( addr ) == PLUS && ( GET_CODE ( XEXP ( ( addr ) , ) ) == MULT || ( CONST_INT_P ( XEXP ( ( addr ) , ) ) && ! SMALL_INT ( INTVAL ( XEXP ( ( addr ) , ) ) ) ) ) ) return true ; return false ;" GCC,arc,168,"Predict the next statement of this code snippet: static rtx_insn * arc_next_active_insn ( rtx_insn * insn , struct arc_ccfsm * statep ) { rtx pat ; do { if ( statep ) arc_ccfsm_post_advance ( insn , statep ) ; insn = NEXT_INSN ( insn ) ; if ( ! insn || BARRIER_P ( insn ) ) return NULL ; if ( statep ) arc_ccfsm_advance ( insn , statep ) ; } while ( NOTE_P ( insn ) || ( cfun -> machine -> arc_reorg_started && LABEL_P ( insn ) && ! label_to_alignment ( insn ) ) || ( NONJUMP_INSN_P ( insn ) && ( GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) ) ) ; if ( ! LABEL_P ( insn ) ) { gcc_assert ( INSN_P ( insn ) ) ; pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) == ADDR_VEC || GET_CODE ( pat ) == ADDR_DIFF_VEC ) return NULL ; if ( GET_CODE ( pat ) == SEQUENCE ) return as_a < rtx_insn * > ( XVECEXP ( pat , , ) ) ; } return insn ;" GCC,arc,169,"Predict the next statement of this code snippet: do { if ( statep ) arc_ccfsm_post_advance ( insn , statep ) ; insn = NEXT_INSN ( insn ) ; if ( ! insn || BARRIER_P ( insn ) ) return NULL ; if ( statep ) arc_ccfsm_advance ( insn , statep ) ; } while ( NOTE_P ( insn ) || ( cfun -> machine -> arc_reorg_started && LABEL_P ( insn ) && ! label_to_alignment ( insn ) ) || ( NONJUMP_INSN_P ( insn ) && ( GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) ) ) ; if ( ! LABEL_P ( insn ) ) { gcc_assert ( INSN_P ( insn ) ) ; pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) == ADDR_VEC || GET_CODE ( pat ) == ADDR_DIFF_VEC ) return NULL ; if ( GET_CODE ( pat ) == SEQUENCE ) return as_a < rtx_insn * > ( XVECEXP ( pat , , ) ) ; }" GCC,arc,170,"Predict the next statement of this code snippet: int intval = ( REG_P ( operands [ ] ) ? : CONST_INT_P ( operands [ ] ) ? INTVAL ( operands [ ] ) : ) ; int neg_intval = - intval ; int short_0 = satisfies_constraint_Rcq ( operands [ ] ) ; int short_p = ( ! cond_p && short_0 && satisfies_constraint_Rcq ( operands [ ] ) ) ; int ret = ;" GCC,arc,171,"Predict the next statement of this code snippet: if ( TARGET_LONG_CALLS_SET || ( TARGET_MEDIUM_CALLS && arc_ccfsm_cond_exec_p ( ) ) ) { if ( flag_pic ) sprintf ( buf , , fname ) ; else sprintf ( buf , , fname ) ;" GCC,arc,172,"Predict the next statement of this code snippet: if ( flag_pic ) sprintf ( buf , , fname ) ; else sprintf ( buf , , fname ) ; }" GCC,arc,173,"Predict the next statement of this code snippet: while ( mi_delta != ) { if ( ( mi_delta & ( << shift ) ) == ) shift += ; else { asm_fprintf ( file , , mi_op , reg_names [ this_regno ] , reg_names [ this_regno ] , mi_delta & ( << shift ) ) ; mi_delta &= ~ ( << shift ) ; shift += ; } } if ( vcall_offset != ) { asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG , reg_names [ this_regno ] ) ; asm_fprintf ( file , HOST_WIDE_INT_PRINT_DEC , ARC_TEMP_SCRATCH_REG , ARC_TEMP_SCRATCH_REG , vcall_offset ) ; asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG , ARC_TEMP_SCRATCH_REG ) ; asm_fprintf ( file , , reg_names [ this_regno ] , reg_names [ this_regno ] , ARC_TEMP_SCRATCH_REG ) ; }" GCC,arc,174,"Predict the next statement of this code snippet: } else output_operand_lossage ( ) ; break ; case PLUS : if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT ) { arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; } else if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT ) { arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; if ( INTVAL ( XEXP ( x , ) ) >= ) fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; } else gcc_unreachable ( ) ; break ; case MINUS : x = simplify_subtraction ( x ) ; if ( GET_CODE ( x ) != MINUS ) goto restart ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT && INTVAL ( XEXP ( x , ) ) < ) { fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; } else arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case ZERO_EXTEND : case SIGN_EXTEND : arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case UNSPEC : gcc_assert ( XVECLEN ( x , ) == ) ; if ( XINT ( x , ) == ARC_UNSPEC_GOT ) fputs ( , file ) ; arc_output_pic_addr_const ( file , XVECEXP ( x , , ) , code ) ; switch ( XINT ( x , ) ) { case ARC_UNSPEC_GOT : fputs ( , file ) ; break ; case ARC_UNSPEC_GOTOFF : fputs ( , file ) ; break ; case ARC_UNSPEC_PLT : fputs ( , file ) ;" GCC,arc,175,"Predict the next statement of this code snippet: case PC : if ( flag_pic ) putc ( '.' , file ) ; else gcc_unreachable ( ) ; break ; case SYMBOL_REF : output_addr_const ( file , x ) ; if ( code == 'P' && ! SYMBOL_REF_LOCAL_P ( x ) ) fputs ( , file ) ; break ; case LABEL_REF : ASM_GENERATE_INTERNAL_LABEL ( buf , , CODE_LABEL_NUMBER ( XEXP ( x , ) ) ) ; assemble_name ( file , buf ) ; break ; case CODE_LABEL : ASM_GENERATE_INTERNAL_LABEL ( buf , , CODE_LABEL_NUMBER ( x ) ) ; assemble_name ( file , buf ) ; break ; case CONST_INT : fprintf ( file , HOST_WIDE_INT_PRINT_DEC , INTVAL ( x ) ) ; break ; case CONST : arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case CONST_DOUBLE : if ( GET_MODE ( x ) == VOIDmode ) { if ( CONST_DOUBLE_HIGH ( x ) ) fprintf ( file , HOST_WIDE_INT_PRINT_DOUBLE_HEX , CONST_DOUBLE_HIGH ( x ) , CONST_DOUBLE_LOW ( x ) ) ; else if ( CONST_DOUBLE_LOW ( x ) < ) fprintf ( file , HOST_WIDE_INT_PRINT_HEX , CONST_DOUBLE_LOW ( x ) ) ; else fprintf ( file , HOST_WIDE_INT_PRINT_DEC , CONST_DOUBLE_LOW ( x ) ) ; } else output_operand_lossage ( ) ; break ; case PLUS : if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT ) { arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; } else if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT ) { arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; if ( INTVAL ( XEXP ( x , ) ) >= ) fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; } else gcc_unreachable ( ) ; break ; case MINUS : x = simplify_subtraction ( x ) ; if ( GET_CODE ( x ) != MINUS ) goto restart ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT && INTVAL ( XEXP ( x , ) ) < ) { fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; } else arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case ZERO_EXTEND : case SIGN_EXTEND : arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ;" GCC,arc,176,"Predict the next statement of this code snippet: if ( flag_pic ) target_flags |= MASK_NO_SDATA_SET ; if ( flag_no_common == ) flag_no_common = ! TARGET_NO_SDATA_SET ; \ if ( TARGET_MIXED_CODE ) TARGET_Q_CLASS = ; if ( ! TARGET_Q_CLASS ) TARGET_COMPACT_CASESI = ; if ( TARGET_COMPACT_CASESI ) TARGET_CASE_VECTOR_PC_RELATIVE = ; arc_init ( ) ;" GCC,arc,177,"Predict the next statement of this code snippet: want_long = ; } if ( final_sequence && ! INSN_ANNULLED_BRANCH_P ( insn ) && ( get_attr_cond ( insn ) != COND_USE || ! reg_set_p ( gen_rtx_REG ( CCmode , CC_REG ) , XVECEXP ( final_sequence , , ) ) ) ) { prev = as_a < rtx_insn * > ( XVECEXP ( final_sequence , , ) ) ; gcc_assert ( ! prev_real_insn ( insn ) || ! arc_hazard ( prev_real_insn ( insn ) , prev ) ) ; cfun -> machine -> force_short_suffix = ! want_long ; rtx save_pred = current_insn_predicate ; final_scan_insn ( prev , asm_out_file , optimize , , NULL ) ; cfun -> machine -> force_short_suffix = - ; prev -> set_deleted ( ) ; current_output_insn = insn ; current_insn_predicate = save_pred ; }" GCC,arc,178,"Predict the next statement of this code snippet: enum reg_class arc_preferred_reload_class ( rtx , enum reg_class cl ) {" GCC,arc,179,"Predict the next statement of this code snippet: arc_print_operand_address ( file , base ) ; if ( CONSTANT_P ( base ) && CONST_INT_P ( index ) ) fputc ( '+' , file ) ; else fputc ( ',' , file ) ; gcc_assert ( OBJECT_P ( index ) ) ; arc_print_operand_address ( file , index ) ; break ; case CONST : { rtx c = XEXP ( addr , ) ; gcc_assert ( GET_CODE ( XEXP ( c , ) ) == SYMBOL_REF ) ; gcc_assert ( GET_CODE ( XEXP ( c , ) ) == CONST_INT ) ; output_address ( XEXP ( addr , ) ) ; break ;" GCC,arc,180,"Predict the next statement of this code snippet: rtx destHigh = simplify_gen_subreg ( SImode , dest , DFmode , ) ; rtx destLow = simplify_gen_subreg ( SImode , dest , DFmode , ) ; emit_insn ( gen_rtx_SET ( VOIDmode , destHigh , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_LR_HIGH ) ) ) ; emit_insn ( gen_rtx_SET ( VOIDmode , destLow , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_LR ) ) ) ; } } else if ( state == destDx ) { rtx srcHigh = simplify_gen_subreg ( SImode , src , DFmode , ) ; rtx srcLow = simplify_gen_subreg ( SImode , src , DFmode , ) ; emit_insn ( gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , dest , srcHigh , srcLow ) , VUNSPEC_DEXCL_NORES ) ) ; } else gcc_unreachable ( ) ;" GCC,arc,181,"Predict the next statement of this code snippet: if ( GET_CODE ( op ) == SYMBOL_REF ) { tree decl = SYMBOL_REF_DECL ( op ) ; return ! skip_local || ! decl || ! default_binds_local_p ( decl ) ; } fmt = GET_RTX_FORMAT ( GET_CODE ( op ) ) ; for ( i = GET_RTX_LENGTH ( GET_CODE ( op ) ) - ; i >= ; i -- ) { if ( fmt [ i ] == 'E' ) { register int j ; for ( j = XVECLEN ( op , i ) - ; j >= ; j -- ) if ( arc_raw_symbolic_reference_mentioned_p ( XVECEXP ( op , i , j ) , skip_local ) ) return true ;" GCC,arc,182,"Predict the next statement of this code snippet: register const char * fmt ; register int i ; if ( GET_CODE ( op ) == UNSPEC ) return false ; if ( GET_CODE ( op ) == SYMBOL_REF ) { tree decl = SYMBOL_REF_DECL ( op ) ; return ! skip_local || ! decl || ! default_binds_local_p ( decl ) ; } fmt = GET_RTX_FORMAT ( GET_CODE ( op ) ) ; for ( i = GET_RTX_LENGTH ( GET_CODE ( op ) ) - ; i >= ; i -- ) { if ( fmt [ i ] == 'E' ) { register int j ; for ( j = XVECLEN ( op , i ) - ; j >= ; j -- ) if ( arc_raw_symbolic_reference_mentioned_p ( XVECEXP ( op , i , j ) , skip_local ) ) return true ; } else if ( fmt [ i ] == 'e' && arc_raw_symbolic_reference_mentioned_p ( XEXP ( op , i ) , skip_local ) ) return true ;" GCC,arc,183,"Predict the next statement of this code snippet: else if ( to_class == LPCOUNT_REG ) return ; else if ( to_class == WRITABLE_CORE_REGS ) return ; } if ( TARGET_ARC700 && ( from_class == LPCOUNT_REG || from_class == ALL_CORE_REGS || from_class == WRITABLE_CORE_REGS ) ) return ;" GCC,arc,184,"Predict the next statement of this code snippet: HOST_WIDE_INT size = int_size_in_bytes ( type ) ; return ( size == - || size > ) ; }" GCC,arc,185,"Predict the next statement of this code snippet: struct arc_frame_info * afi = & cfun -> machine -> frame_info ;" GCC,arc,186,"Predict the next statement of this code snippet: int arc_return_slot_offset ( ) { struct arc_frame_info * afi = & cfun -> machine -> frame_info ; return ( afi -> save_return_addr ? afi -> total_size - afi -> pretend_size - afi -> extra_size : - ) ;" GCC,arc,187,"Predict the next statement of this code snippet: if ( loc != & op ) { if ( GET_CODE ( op ) == MEM && & XEXP ( op , ) == loc ) ; else if ( GET_CODE ( op ) == MEM && GET_CODE ( XEXP ( op , ) ) == PLUS && GET_CODE ( XEXP ( XEXP ( op , ) , ) ) == MULT ) * loc = force_reg ( Pmode , * loc ) ;" GCC,arc,188,"Predict the next statement of this code snippet: if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT ) x = XEXP ( x , ) ; } return ( GET_CODE ( x ) == SYMBOL_REF && SYMBOL_REF_SMALL_P ( x ) ) ;" GCC,arc,189,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) == PLUS ) {" GCC,arc,190,"Predict the next statement of this code snippet: * total = COSTS_N_INSNS ( INTVAL ( XEXP ( ( x ) , ) ) ) ; if ( * total < ) * total = ; } return false ; case DIV : case UDIV : if ( speed ) * total = COSTS_N_INSNS ( ) ; else * total = COSTS_N_INSNS ( ) ; return false ; case MULT : if ( ( TARGET_DPFP && GET_MODE ( x ) == DFmode ) ) * total = COSTS_N_INSNS ( ) ; else if ( speed ) * total = arc_multcost ; else if ( TARGET_MUL64_SET || ( TARGET_ARC700 && ! TARGET_NOMPY_SET ) ) * total = COSTS_N_INSNS ( ) ; else * total = COSTS_N_INSNS ( ) ; return false ; case PLUS : if ( GET_CODE ( XEXP ( x , ) ) == MULT && _2_4_8_operand ( XEXP ( XEXP ( x , ) , ) , VOIDmode ) ) { * total += ( rtx_cost ( XEXP ( x , ) , PLUS , , speed ) + rtx_cost ( XEXP ( XEXP ( x , ) , ) , PLUS , , speed ) ) ; return true ; } return false ; case MINUS : if ( GET_CODE ( XEXP ( x , ) ) == MULT && _2_4_8_operand ( XEXP ( XEXP ( x , ) , ) , VOIDmode ) ) { * total += ( rtx_cost ( XEXP ( x , ) , PLUS , , speed ) + rtx_cost ( XEXP ( XEXP ( x , ) , ) , PLUS , , speed ) ) ; return true ; } return false ; case COMPARE : { rtx op0 = XEXP ( x , ) ; rtx op1 = XEXP ( x , ) ; if ( GET_CODE ( op0 ) == ZERO_EXTRACT && op1 == const0_rtx && XEXP ( op0 , ) == const1_rtx ) { * total = ( rtx_cost ( XEXP ( op0 , ) , SET , , speed ) + rtx_cost ( XEXP ( op0 , ) , SET , , speed ) ) ;" GCC,arc,191,"Predict the next statement of this code snippet: rtx sibthunk_insn = NULL_RTX ; if ( gmask ) { if ( epilogue_p == || frame -> millicode_end_reg > ) { int start_call = frame -> millicode_start_reg ; int end_call = frame -> millicode_end_reg ; int n_regs = end_call - start_call + ; int i = , r , off = ; rtx insn ; rtx ret_addr = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; if ( * first_offset ) { gcc_assert ( epilogue_p || abs ( * first_offset ) <= ) ; frame_add ( base_reg , * first_offset ) ; * first_offset = ; } insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( ( epilogue_p == ) + n_regs + ) ) ; if ( epilogue_p == ) i += ; else XVECEXP ( insn , , n_regs ) = gen_rtx_CLOBBER ( VOIDmode , ret_addr ) ; for ( r = start_call ; r <= end_call ; r ++ , off += UNITS_PER_WORD , i ++ ) { rtx reg = gen_rtx_REG ( SImode , r ) ; rtx mem = gen_frame_mem ( SImode , plus_constant ( Pmode , base_reg , off ) ) ; if ( epilogue_p ) XVECEXP ( insn , , i ) = gen_rtx_SET ( VOIDmode , reg , mem ) ; else XVECEXP ( insn , , i ) = gen_rtx_SET ( VOIDmode , mem , reg ) ; gmask = gmask & ~ ( << r ) ; } if ( epilogue_p == ) sibthunk_insn = insn ; else frame_insn ( insn ) ; offset += off ; } for ( regno = ; regno <= ; regno ++ ) { if ( ( gmask & ( << regno ) ) != ) { rtx reg = gen_rtx_REG ( SImode , regno ) ; rtx addr , mem ; if ( * first_offset ) { gcc_assert ( ! offset ) ; addr = plus_constant ( Pmode , base_reg , * first_offset ) ; addr = gen_rtx_PRE_MODIFY ( Pmode , base_reg , addr ) ; * first_offset = ; } else {" GCC,arc,192,"Predict the next statement of this code snippet: if ( * first_offset ) { gcc_assert ( epilogue_p || abs ( * first_offset ) <= ) ; frame_add ( base_reg , * first_offset ) ; * first_offset = ; } insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( ( epilogue_p == ) + n_regs + ) ) ; if ( epilogue_p == ) i += ; else XVECEXP ( insn , , n_regs ) = gen_rtx_CLOBBER ( VOIDmode , ret_addr ) ; for ( r = start_call ; r <= end_call ; r ++ , off += UNITS_PER_WORD , i ++ ) { rtx reg = gen_rtx_REG ( SImode , r ) ; rtx mem = gen_frame_mem ( SImode , plus_constant ( Pmode , base_reg , off ) ) ; if ( epilogue_p ) XVECEXP ( insn , , i ) = gen_rtx_SET ( VOIDmode , reg , mem ) ; else XVECEXP ( insn , , i ) = gen_rtx_SET ( VOIDmode , mem , reg ) ; gmask = gmask & ~ ( << r ) ; } if ( epilogue_p == ) sibthunk_insn = insn ; else frame_insn ( insn ) ; offset += off ; } for ( regno = ; regno <= ; regno ++ ) { if ( ( gmask & ( << regno ) ) != ) { rtx reg = gen_rtx_REG ( SImode , regno ) ; rtx addr , mem ; if ( * first_offset ) { gcc_assert ( ! offset ) ; addr = plus_constant ( Pmode , base_reg , * first_offset ) ; addr = gen_rtx_PRE_MODIFY ( Pmode , base_reg , addr ) ; * first_offset = ; } else {" GCC,arc,193,"Predict the next statement of this code snippet: machine_mode mode = GET_MODE ( x ) ; rtx x1 ; if ( GET_MODE_CLASS ( mode ) == MODE_INT && y == const0_rtx && ( op == EQ || op == NE || ( ( op == LT || op == GE ) && GET_MODE_SIZE ( GET_MODE ( x ) ) <= ) ) ) return CC_ZNmode ; if ( mode == SImode && GET_CODE ( y ) == NEG && ( op == EQ || op == NE ) ) return CC_ZNmode ; if ( mode == SImode && ( op == EQ || op == NE ) && CONST_INT_P ( y ) && ( ( INTVAL ( y ) - ) & INTVAL ( y ) ) == && INTVAL ( y ) ) return CC_Zmode ; if ( mode == SImode && ( op == EQ || op == NE ) && CONST_INT_P ( y ) && GET_CODE ( x ) == AND && CONST_INT_P ( ( x1 = XEXP ( x , ) ) ) && ( ( INTVAL ( x1 ) + ) & INTVAL ( x1 ) ) == && ( ~ INTVAL ( x1 ) | INTVAL ( y ) ) < && ( ~ INTVAL ( x1 ) | INTVAL ( y ) ) > - ) return CC_Zmode ; if ( GET_MODE ( x ) == SImode && ( op == LTU || op == GEU ) && GET_CODE ( x ) == PLUS && ( rtx_equal_p ( XEXP ( x , ) , y ) || rtx_equal_p ( XEXP ( x , ) , y ) ) ) return CC_Cmode ; if ( TARGET_ARGONAUT_SET && ( ( mode == SFmode && TARGET_SPFP ) || ( mode == DFmode && TARGET_DPFP ) ) ) switch ( op ) {" GCC,arc,194,"Predict the next statement of this code snippet: next_cum = * get_cumulative_args ( args_so_far ) ; arc_function_arg_advance ( pack_cumulative_args ( & next_cum ) , mode , type , ) ; first_anon_arg = next_cum ; if ( first_anon_arg < MAX_ARC_PARM_REGS ) { int first_reg_offset = first_anon_arg ;" GCC,arc,195,"Predict the next statement of this code snippet: if ( ! no_rtl ) { rtx regblock = gen_rtx_MEM ( BLKmode , plus_constant ( Pmode , arg_pointer_rtx , FIRST_PARM_OFFSET ( ) ) ) ; move_block_from_reg ( first_reg_offset , regblock , MAX_ARC_PARM_REGS - first_reg_offset ) ; } * pretend_size = ( ( MAX_ARC_PARM_REGS - first_reg_offset ) * UNITS_PER_WORD ) ; }" GCC,arc,196,"Predict the next statement of this code snippet: void arc_set_default_type_attributes ( tree type ATTRIBUTE_UNUSED ) { gcc_unreachable ( ) ;" GCC,arc,197,"Predict the next statement of this code snippet: case POST_MODIFY : o = XEXP ( XEXP ( addr , ) , ) ; post_modify : code = POST_MODIFY ; swap = ; break ; default : gcc_unreachable ( ) ; } r = XEXP ( addr , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , gen_rtx_fmt_ee ( code , Pmode , r , gen_rtx_PLUS ( Pmode , r , o ) ) , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , plus_constant ( Pmode , r , ) , ) ; } else { xop [ + i ] = operand_subword ( operands [ i ] , , , mode ) ; xop [ + i ] = operand_subword ( operands [ i ] , , , mode ) ; } } if ( reg_overlap_mentioned_p ( xop [ ] , xop [ ] ) ) { swap = ; gcc_assert ( ! reg_overlap_mentioned_p ( xop [ ] , xop [ ] ) ) ; } operands [ + swap ] = xop [ ] ; operands [ + swap ] = xop [ ] ; operands [ - swap ] = xop [ ] ; operands [ - swap ] = xop [ ] ; start_sequence ( ) ; emit_insn ( gen_rtx_SET ( VOIDmode , operands [ ] , operands [ ] ) ) ; emit_insn ( gen_rtx_SET ( VOIDmode , operands [ ] , operands [ ] ) ) ;" GCC,arc,198,"Predict the next statement of this code snippet: enum rtx_code code ; gcc_assert ( ! reg_overlap_mentioned_p ( operands [ ] , addr ) ) ; switch ( GET_CODE ( addr ) ) { case PRE_DEC : o = GEN_INT ( - ) ; goto pre_modify ; case PRE_INC : o = GEN_INT ( ) ; goto pre_modify ; case PRE_MODIFY : o = XEXP ( XEXP ( addr , ) , ) ; pre_modify : code = PRE_MODIFY ; break ; case POST_DEC : o = GEN_INT ( - ) ; goto post_modify ; case POST_INC : o = GEN_INT ( ) ; goto post_modify ; case POST_MODIFY : o = XEXP ( XEXP ( addr , ) , ) ; post_modify : code = POST_MODIFY ; swap = ; break ; default : gcc_unreachable ( ) ; } r = XEXP ( addr , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , gen_rtx_fmt_ee ( code , Pmode , r , gen_rtx_PLUS ( Pmode , r , o ) ) , ) ; xop [ + i ] = adjust_automodify_address_nv ( operands [ i ] , SImode , plus_constant ( Pmode , r , ) , ) ; } else { xop [ + i ] = operand_subword ( operands [ i ] , , , mode ) ; xop [ + i ] = operand_subword ( operands [ i ] , , , mode ) ; } } if ( reg_overlap_mentioned_p ( xop [ ] , xop [ ] ) ) { swap = ; gcc_assert ( ! reg_overlap_mentioned_p ( xop [ ] , xop [ ] ) ) ; } operands [ + swap ] = xop [ ] ; operands [ + swap ] = xop [ ] ; operands [ - swap ] = xop [ ] ; operands [ - swap ] = xop [ ] ; start_sequence ( ) ; emit_insn ( gen_rtx_SET ( VOIDmode , operands [ ] , operands [ ] ) ) ; emit_insn ( gen_rtx_SET ( VOIDmode , operands [ ] , operands [ ] ) ) ; val = get_insns ( ) ; end_sequence ( ) ; return val ;" GCC,arc,199,"Predict the next statement of this code snippet: return plus_constant ( Pmode , addr , ) ;" GCC,arc,200,"Predict the next statement of this code snippet: static rtx arc_trampoline_adjust_address ( rtx addr ) {" GCC,arc,201,"Predict the next statement of this code snippet: default_promote_function_mode_always_promote arc_use_by_pieces_infrastructure_p static int arc_sched_adjust_priority ( rtx_insn * insn , int priority ) { rtx set = single_set ( insn ) ; if ( set && GET_MODE ( SET_SRC ( set ) ) == DFmode && GET_CODE ( SET_SRC ( set ) ) == REG ) { return priority + ; } return priority ;" GCC,arc,202,"Predict the next statement of this code snippet: enum attr_iscompact iscompact ; struct machine_function * machine ; if ( check_attr > ) { iscompact = get_attr_iscompact ( insn ) ;" GCC,arc,203,"Predict the next statement of this code snippet: int branch_dest ( rtx branch ) { rtx pat = PATTERN ( branch ) ;" GCC,arc,204,"Predict the next statement of this code snippet: int dest_uid ; if ( GET_CODE ( dest ) == IF_THEN_ELSE ) dest = XEXP ( dest , XEXP ( dest , ) == pc_rtx ? : ) ;" GCC,arc,205,"Predict the next statement of this code snippet: bool check_if_valid_regno_const ( rtx * operands , int opno ) { switch ( GET_CODE ( operands [ opno ] ) ) {" GCC,arc,206,"Predict the next statement of this code snippet: switch ( GET_CODE ( operands [ opno ] ) ) { case SYMBOL_REF : case CONST : case CONST_INT :" GCC,arc,207,"Predict the next statement of this code snippet: case CONST : case CONST_INT : if ( UNSIGNED_INT6 ( INTVAL ( operands [ opno ] ) ) ) return true ; default :" GCC,arc,208,"Predict the next statement of this code snippet: rtx addr ; int size ; if ( GET_CODE ( op ) != MEM ) return false ; if ( mode == VOIDmode ) mode = GET_MODE ( op ) ;" GCC,arc,209,"Predict the next statement of this code snippet: size = GET_MODE_SIZE ( mode ) ; if ( size > UNITS_PER_WORD ) return false ; addr = XEXP ( op , ) ; return LEGITIMATE_SMALL_DATA_ADDRESS_P ( addr ) ;" GCC,arc,210,"Predict the next statement of this code snippet: if ( COMMUTATIVE_P ( src ) ) { rtx src0 = XEXP ( src , ) ; rtx src1 = XEXP ( src , ) ; rtx dst = SET_DEST ( pat ) ; if ( rtx_equal_p ( src1 , dst ) && ! rtx_equal_p ( src0 , dst ) && REG_P ( src0 ) ) pat = gen_rtx_SET ( VOIDmode , dst , gen_rtx_fmt_ee ( GET_CODE ( src ) , GET_MODE ( src ) , src1 , src0 ) ) ; } } if ( RTX_FRAME_RELATED_P ( insn ) ) {" GCC,arc,211,"Predict the next statement of this code snippet: void emit_pic_move ( rtx * operands , machine_mode ) { rtx temp = reload_in_progress ? operands [ ] : gen_reg_rtx ( Pmode ) ;" GCC,arc,212,"Predict the next statement of this code snippet: rtx temp = reload_in_progress ? operands [ ] : gen_reg_rtx ( Pmode ) ; if ( GET_CODE ( operands [ ] ) == MEM && SYMBOLIC_CONST ( operands [ ] ) ) operands [ ] = force_reg ( Pmode , operands [ ] ) ;" GCC,arc,213,"Predict the next statement of this code snippet: static void emit_store_direct ( rtx block , int offset , int value ) {" GCC,arc,214,"Predict the next statement of this code snippet: } if ( ! REG_P ( base ) || ( REGNO ( base ) != STACK_POINTER_REGNUM && REGNO_PTR_FRAME_P ( REGNO ( addr ) ) ) || ! CONST_INT_P ( offs ) || ! SMALL_INT ( INTVAL ( offs ) ) || ! SMALL_INT ( INTVAL ( offs ) + size ) ) { if ( reuse ) emit_insn ( gen_add2_insn ( addr , offs ) ) ; else addr = copy_to_mode_reg ( Pmode , addr ) ;" GCC,arc,215,"Predict the next statement of this code snippet: FOR_EACH_SUBRTX ( iter , array , op , ALL ) {" GCC,arc,216,"Predict the next statement of this code snippet: if ( ! register_operand ( x , SImode ) ) { if ( register_operand ( y , SImode ) ) { tmp = x ; x = y ; y = tmp ; code = swap_condition ( code ) ; } else x = copy_to_mode_reg ( SImode , x ) ; } if ( GET_CODE ( y ) == SYMBOL_REF && flag_pic ) y = copy_to_mode_reg ( SImode , y ) ; } else { x = force_reg ( cmode , x ) ; y = force_reg ( cmode , y ) ; } mode = SELECT_CC_MODE ( code , x , y ) ; cc_reg = gen_rtx_REG ( mode , CC_REG ) ; if ( TARGET_ARGONAUT_SET && ( ( cmode == SFmode && TARGET_SPFP ) || ( cmode == DFmode && TARGET_DPFP ) ) ) { switch ( code ) { case NE : case EQ : case LT : case UNGE : case LE : case UNGT : case UNEQ : case LTGT : case ORDERED : case UNORDERED : break ; case GT : case UNLE : case GE : case UNLT : code = swap_condition ( code ) ; tmp = x ; x = y ; y = tmp ; break ; default : gcc_unreachable ( ) ; } if ( cmode == SFmode ) { emit_insn ( gen_cmpsfpx_raw ( x , y ) ) ; } else { emit_insn ( gen_cmpdfpx_raw ( x , y ) ) ; } if ( mode != CC_FPXmode ) emit_insn ( gen_rtx_SET ( VOIDmode , cc_reg , gen_rtx_COMPARE ( mode , gen_rtx_REG ( CC_FPXmode , ) , const0_rtx ) ) ) ; } else if ( GET_MODE_CLASS ( cmode ) == MODE_FLOAT && TARGET_OPTFPE ) { rtx op0 = gen_rtx_REG ( cmode , ) ; rtx op1 = gen_rtx_REG ( cmode , GET_MODE_SIZE ( cmode ) / UNITS_PER_WORD ) ; switch ( code ) { case NE : case EQ : case GT : case UNLE : case GE : case UNLT : case UNEQ : case LTGT : case ORDERED : case UNORDERED : break ; case LT : case UNGE : case LE : case UNGT : code = swap_condition ( code ) ; tmp = x ; x = y ;" GCC,arc,217,"Predict the next statement of this code snippet: rtx gen_mlo ( void ) { return gen_rtx_REG ( SImode , TARGET_BIG_ENDIAN ? : ) ;" GCC,arc,218,"Predict the next statement of this code snippet: default : gcc_unreachable ( ) ; } case CC_FP_GTmode : if ( TARGET_ARGONAUT_SET && TARGET_SPFP ) switch ( GET_CODE ( comparison ) ) { case GT : return ARC_CC_N ; case UNLE : return ARC_CC_P ; default : gcc_unreachable ( ) ; } else switch ( GET_CODE ( comparison ) ) { case GT : return ARC_CC_HI ; case UNLE : return ARC_CC_LS ; default : gcc_unreachable ( ) ; } case CC_FP_GEmode : switch ( GET_CODE ( comparison ) ) { case GE : return ARC_CC_HS ; case UNLT : return ARC_CC_LO ; default : gcc_unreachable ( ) ; } case CC_FP_UNEQmode : switch ( GET_CODE ( comparison ) ) { case UNEQ : return ARC_CC_EQ ; case LTGT : return ARC_CC_NE ; default : gcc_unreachable ( ) ; } case CC_FP_ORDmode : switch ( GET_CODE ( comparison ) ) { case UNORDERED : return ARC_CC_C ; case ORDERED : return ARC_CC_NC ; default : gcc_unreachable ( ) ; } case CC_FPXmode : switch ( GET_CODE ( comparison ) ) { case EQ : return ARC_CC_EQ ; case NE : return ARC_CC_NE ; case UNORDERED : return ARC_CC_C ; case ORDERED : return ARC_CC_NC ; case LTGT : return ARC_CC_HI ; case UNEQ : return ARC_CC_LS ; default : gcc_unreachable ( ) ; } default : gcc_unreachable ( ) ;" GCC,arc,219,"Predict the next statement of this code snippet: if ( arc_verify_short ( insn , cfun -> machine -> unalign , ) ) { fprintf ( file , ) ; cfun -> machine -> unalign ^= ;" GCC,arc,220,"Predict the next statement of this code snippet: pass_arc_ifcvt ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_arc_ifcvt , ctxt ) {" GCC,arc,221,"Predict the next statement of this code snippet: pass_arc_ifcvt ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_arc_ifcvt , ctxt ) {" GCC,arc,222,"Predict the next statement of this code snippet: else if ( mode == SImode && flag_pic && SYMBOLIC_CONST ( operands [ ] ) ) { emit_pic_move ( operands , SImode ) ; } else if ( GET_CODE ( operands [ ] ) != MEM && ! TARGET_NO_SDATA_SET && small_data_pattern ( operands [ ] , Pmode ) ) { operands [ ] = arc_rewrite_small_data ( operands [ ] ) ; emit_insn ( gen_rtx_SET ( mode , operands [ ] , operands [ ] ) ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , operands [ ] ) ; emit_move_insn ( operands [ ] , operands [ ] ) ; return true ; } } if ( MEM_P ( operands [ ] ) && ! ( reload_in_progress || reload_completed ) ) { operands [ ] = force_reg ( mode , operands [ ] ) ; if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ; if ( pat ) { pat = change_address ( operands [ ] , mode , pat ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } } } if ( MEM_P ( operands [ ] ) && ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ;" GCC,arc,223,"Predict the next statement of this code snippet: if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ; if ( pat ) { pat = change_address ( operands [ ] , mode , pat ) ;" GCC,arc,224,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) == PLUS && rtx_equal_p ( XEXP ( x , ) , pic_offset_table_rtx ) ) iter . skip_subrtxes ( ) ; else if ( arc_rewrite_small_data_p ( x ) ) return true ;" GCC,arc,225,"Predict the next statement of this code snippet: FOR_EACH_SUBRTX ( iter , array , op , ALL ) { const_rtx x = * iter ; if ( GET_CODE ( x ) == PLUS && rtx_equal_p ( XEXP ( x , ) , pic_offset_table_rtx ) ) iter . skip_subrtxes ( ) ; else if ( arc_rewrite_small_data_p ( x ) ) return true ; } return false ;" GCC,arc,226,"Predict the next statement of this code snippet: const_rtx u0 = ( const_rtx ) x ; const_rtx u1 = ( const_rtx ) y ; const_rtx s01 = XVECEXP ( u0 , , ) ; const_rtx s11 = XVECEXP ( u1 , , ) ; return ( ! strcmp ( XSTR ( XVECEXP ( u0 , , ) , ) , XSTR ( XVECEXP ( u1 , , ) , ) ) && rtx_equal_p ( s01 , s11 ) ) ;" GCC,arc,227,"Predict the next statement of this code snippet: return ( ! strcmp ( XSTR ( XVECEXP ( u0 , , ) , ) , XSTR ( XVECEXP ( u1 , , ) , ) ) && rtx_equal_p ( s01 , s11 ) ) ;" GCC,arc,228,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) == COND_EXEC ) x = COND_EXEC_CODE ( x ) ; if ( GET_CODE ( x ) == SET || GET_CODE ( x ) == CLOBBER ) { rtx dest = SET_DEST ( x ) ; while ( ( GET_CODE ( dest ) == SUBREG && ( ! REG_P ( SUBREG_REG ( dest ) ) || REGNO ( SUBREG_REG ( dest ) ) >= FIRST_PSEUDO_REGISTER ) ) || GET_CODE ( dest ) == ZERO_EXTRACT || GET_CODE ( dest ) == STRICT_LOW_PART ) dest = XEXP ( dest , ) ; if ( GET_CODE ( dest ) == PARALLEL ) { for ( i = XVECLEN ( dest , ) - ; i >= ; i -- ) if ( XEXP ( XVECEXP ( dest , , i ) , ) != ) ( * fun ) ( XEXP ( XVECEXP ( dest , , i ) , ) , x , data ) ; } else ( * fun ) ( dest , x , data ) ; } else if ( GET_CODE ( x ) == PARALLEL ) for ( i = XVECLEN ( x , ) - ; i >= ; i -- ) walk_stores ( XVECEXP ( x , , i ) , fun , data ) ;" GCC,arc,229,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) == SET || GET_CODE ( x ) == CLOBBER ) { rtx dest = SET_DEST ( x ) ; while ( ( GET_CODE ( dest ) == SUBREG && ( ! REG_P ( SUBREG_REG ( dest ) ) || REGNO ( SUBREG_REG ( dest ) ) >= FIRST_PSEUDO_REGISTER ) ) || GET_CODE ( dest ) == ZERO_EXTRACT || GET_CODE ( dest ) == STRICT_LOW_PART ) dest = XEXP ( dest , ) ; if ( GET_CODE ( dest ) == PARALLEL ) {" GCC,arc,230,"Predict the next statement of this code snippet: output_asm_insn ( , & XVECEXP ( src , , ) ) ; } slot = ( rtx * ) htab_find_slot ( htab , src , INSERT ) ; if ( * slot == HTAB_EMPTY_ENTRY ) { static int count_nr ; char buf [ ] ; rtx count ; * slot = src ; sprintf ( buf , , count_nr ++ ) ; count = gen_rtx_SYMBOL_REF ( Pmode , xstrdup ( buf ) ) ;" GCC,arc,231,"Predict the next statement of this code snippet: slot = ( rtx * ) htab_find_slot ( htab , src , INSERT ) ; if ( * slot == HTAB_EMPTY_ENTRY ) { static int count_nr ; char buf [ ] ; rtx count ; * slot = src ; sprintf ( buf , , count_nr ++ ) ; count = gen_rtx_SYMBOL_REF ( Pmode , xstrdup ( buf ) ) ; XVECEXP ( src , , ) = count ; output_asm_insn ( , & XVECEXP ( src , , ) ) ; * srcp = count ; } else * srcp = XVECEXP ( * slot , , ) ;" GCC,arc,232,"Predict the next statement of this code snippet: for ( a = DECL_ATTRIBUTES ( decl ) ; a ; a = TREE_CHAIN ( a ) ) { tree name = TREE_PURPOSE ( a ) , args = TREE_VALUE ( a ) ; if ( name == get_identifier ( ) && list_length ( args ) == && TREE_CODE ( TREE_VALUE ( args ) ) == STRING_CST ) {" GCC,arc,233,"Predict the next statement of this code snippet: enum arc_function_type arc_compute_function_type ( struct function * fun ) { tree decl = fun -> decl ; tree a ; enum arc_function_type fn_type = fun -> machine -> fn_type ; if ( fn_type != ARC_FUNCTION_UNKNOWN ) return fn_type ; fn_type = ARC_FUNCTION_NORMAL ; for ( a = DECL_ATTRIBUTES ( decl ) ; a ; a = TREE_CHAIN ( a ) ) { tree name = TREE_PURPOSE ( a ) , args = TREE_VALUE ( a ) ; if ( name == get_identifier ( ) && list_length ( args ) == && TREE_CODE ( TREE_VALUE ( args ) ) == STRING_CST ) { tree value = TREE_VALUE ( args ) ; if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) || ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type = ARC_FUNCTION_ILINK1 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type = ARC_FUNCTION_ILINK2 ; else gcc_unreachable ( ) ; break ; } } return fun -> machine -> fn_type = fn_type ;" GCC,arc,234,"Predict the next statement of this code snippet: XVECEXP ( p , , ) = gen_rtx_REG ( SImode , regno ) ;" GCC,arc,235,"Predict the next statement of this code snippet: rtx op0 = expand_expr ( arg0 , NULL_RTX , VOIDmode , EXPAND_NORMAL ) ; rtx op1 = expand_expr ( arg1 , NULL_RTX , VOIDmode , EXPAND_NORMAL ) ; if ( ! CONST_INT_P ( op1 ) ) { if ( optimize ) warning ( , ) ; } else { HOST_WIDE_INT alignTest = INTVAL ( op1 ) ; if ( alignTest <= || alignTest != ( alignTest & - alignTest ) ) { error ( ) ; return NULL_RTX ;" GCC,arc,236,"Predict the next statement of this code snippet: } if ( millicode_p ) { int sibthunk_p = ( ! sibcall_p && fn_type == ARC_FUNCTION_NORMAL && ! cfun -> machine -> frame_info . pretend_size ) ; gcc_assert ( ! ( cfun -> machine -> frame_info . gmask & ( FRAME_POINTER_MASK | RETURN_ADDR_MASK ) ) ) ; arc_save_restore ( stack_pointer_rtx , cfun -> machine -> frame_info . gmask , + sibthunk_p , & first_offset ) ; if ( sibthunk_p ) return ; } if ( ( ! SMALL_INT ( first_offset ) && cfun -> machine -> frame_info . gmask && ( ( TARGET_ARC700 && ! optimize_size ) ? first_offset <= : satisfies_constraint_C2a ( GEN_INT ( first_offset ) ) ) ) || ( MUST_SAVE_RETURN_ADDR && ! SMALL_INT ( ( cfun -> machine -> frame_info . reg_size + first_offset ) >> ) && cfun -> machine -> frame_info . gmask ) ) { frame_stack_add ( first_offset ) ; first_offset = ; } if ( MUST_SAVE_RETURN_ADDR ) { rtx ra = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; int ra_offs = cfun -> machine -> frame_info . reg_size + first_offset ; rtx addr = plus_constant ( Pmode , stack_pointer_rtx , ra_offs ) ; HOST_WIDE_INT cfa_adjust = ; if ( ! SMALL_INT ( ra_offs >> ) && ! cfun -> machine -> frame_info . gmask && ( ( TARGET_ARC700 && ! optimize_size ) ? ra_offs <= : satisfies_constraint_C2a ( GEN_INT ( ra_offs ) ) ) ) { size_to_deallocate -= ra_offs - first_offset ; first_offset = ; frame_stack_add ( ra_offs ) ; ra_offs = ; addr = stack_pointer_rtx ; } if ( ra_offs && ! cfun -> machine -> frame_info . gmask && ( SMALL_INT ( ra_offs ) || ! SMALL_INT ( ra_offs >> ) ) ) { addr = gen_rtx_PRE_MODIFY ( Pmode , stack_pointer_rtx , addr ) ; cfa_adjust = ra_offs ; first_offset = ; size_to_deallocate -= cfun -> machine -> frame_info . reg_size ; } else if ( ! ra_offs && size_to_deallocate == UNITS_PER_WORD ) {" GCC,arc,237,"Predict the next statement of this code snippet: rtx ra = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; int ra_offs = cfun -> machine -> frame_info . reg_size + first_offset ; rtx addr = plus_constant ( Pmode , stack_pointer_rtx , ra_offs ) ; HOST_WIDE_INT cfa_adjust = ; if ( ! SMALL_INT ( ra_offs >> ) && ! cfun -> machine -> frame_info . gmask && ( ( TARGET_ARC700 && ! optimize_size ) ? ra_offs <= : satisfies_constraint_C2a ( GEN_INT ( ra_offs ) ) ) ) { size_to_deallocate -= ra_offs - first_offset ; first_offset = ; frame_stack_add ( ra_offs ) ; ra_offs = ; addr = stack_pointer_rtx ; } if ( ra_offs && ! cfun -> machine -> frame_info . gmask && ( SMALL_INT ( ra_offs ) || ! SMALL_INT ( ra_offs >> ) ) ) { addr = gen_rtx_PRE_MODIFY ( Pmode , stack_pointer_rtx , addr ) ; cfa_adjust = ra_offs ; first_offset = ; size_to_deallocate -= cfun -> machine -> frame_info . reg_size ; } else if ( ! ra_offs && size_to_deallocate == UNITS_PER_WORD ) { addr = gen_rtx_POST_INC ( Pmode , addr ) ; cfa_adjust = GET_MODE_SIZE ( Pmode ) ; size_to_deallocate = ; } insn = frame_move_inc ( ra , gen_frame_mem ( Pmode , addr ) , stack_pointer_rtx , addr ) ; if ( cfa_adjust ) { enum reg_note note = REG_CFA_ADJUST_CFA ; add_reg_note ( insn , note , gen_rtx_SET ( stack_pointer_rtx , plus_constant ( SImode , stack_pointer_rtx , cfa_adjust ) ) ) ; } add_reg_note ( insn , REG_CFA_RESTORE , ra ) ; } if ( ! millicode_p ) { if ( cfun -> machine -> frame_info . reg_size ) arc_save_restore ( stack_pointer_rtx , cfun -> machine -> frame_info . gmask & ~ ( FRAME_POINTER_MASK | RETURN_ADDR_MASK ) , , & first_offset ) ; } size_to_deallocate += first_offset ; restored = size - size_to_deallocate ; if ( size > restored ) frame_stack_add ( size - restored ) ;" GCC,arc,238,"Predict the next statement of this code snippet: while ( piece > size ) piece >>= ; mode = smallest_mode_for_size ( piece * BITS_PER_UNIT , MODE_INT ) ; if ( && tmpx [ i ] && GET_MODE ( tmpx [ i ] ) == mode ) tmp = tmpx [ i ] ; else tmpx [ i ] = tmp = gen_reg_rtx ( mode ) ; dst_addr = force_offsettable ( dst_addr , piece , ) ; src_addr = force_offsettable ( src_addr , piece , ) ; if ( store [ i ] ) emit_insn ( store [ i ] ) ; emit_move_insn ( tmp , change_address ( src , mode , src_addr ) ) ; store [ i ] = gen_move_insn ( change_address ( dst , mode , dst_addr ) , tmp ) ; dst_addr = plus_constant ( Pmode , dst_addr , piece ) ;" GCC,arc,239,"Predict the next statement of this code snippet: if ( crtl -> uses_pic_offset_table == ) return ; gcc_assert ( flag_pic != ) ; pat = gen_rtx_SYMBOL_REF ( Pmode , ) ; pat = gen_rtx_UNSPEC ( Pmode , gen_rtvec ( , pat ) , ARC_UNSPEC_GOT ) ; pat = gen_rtx_CONST ( Pmode , pat ) ;" GCC,arc,240,"Predict the next statement of this code snippet: if ( TREE_CODE ( value ) != STRING_CST ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ; }" GCC,arc,241,"Predict the next statement of this code snippet: * no_add_attrs = true ; } else if ( strcmp ( TREE_STRING_POINTER ( value ) , ) && strcmp ( TREE_STRING_POINTER ( value ) , ) && ! TARGET_V2 ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ; } else if ( TARGET_V2 && strcmp ( TREE_STRING_POINTER ( value ) , ) ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ;" GCC,arc,242,"Predict the next statement of this code snippet: int arc_hazard ( rtx_insn * pred , rtx_insn * succ ) { if ( ! pred || ! INSN_P ( pred ) || ! succ || ! INSN_P ( succ ) ) return ; if ( arc_loop_hazard ( pred , succ ) ) return ; if ( TARGET_ARC600 ) return arc600_corereg_hazard ( pred , succ ) ; return ;" GCC,arc,243,"Predict the next statement of this code snippet: merge_blocks ( merge_bb , succ_bb ) ; } else { PUT_CODE ( insn , NOTE ) ; NOTE_KIND ( insn ) = NOTE_INSN_DELETED ; } continue ; } case : if ( LABEL_P ( insn ) && statep -> target_label == CODE_LABEL_NUMBER ( insn ) ) { arc_ccfsm_post_advance ( insn , statep ) ; basic_block succ_bb = BLOCK_FOR_INSN ( insn ) ; if ( merge_bb && succ_bb ) merge_blocks ( merge_bb , succ_bb ) ; else if ( -- LABEL_NUSES ( insn ) == ) { const char * name = LABEL_NAME ( insn ) ; PUT_CODE ( insn , NOTE ) ; NOTE_KIND ( insn ) = NOTE_INSN_DELETED_LABEL ; NOTE_DELETED_LABEL_NAME ( insn ) = name ; } merge_bb = ; continue ; } case : case : if ( ! NONDEBUG_INSN_P ( insn ) ) break ; rtx_insn * prev , * pprev ; rtx * patp , pat , cond ; bool annulled ; annulled = false ; prev = PREV_INSN ( insn ) ; pprev = PREV_INSN ( prev ) ; if ( pprev && NEXT_INSN ( NEXT_INSN ( pprev ) ) == NEXT_INSN ( insn ) && JUMP_P ( prev ) && get_attr_cond ( prev ) == COND_USE ) { if ( ! INSN_ANNULLED_BRANCH_P ( prev ) ) break ; annulled = true ; } patp = & PATTERN ( insn ) ; pat = * patp ; cond = arc_get_ccfsm_cond ( statep , INSN_FROM_TARGET_P ( insn ) ) ; if ( NONJUMP_INSN_P ( insn ) || CALL_P ( insn ) ) { pat = conditionalize_nonjump ( pat , cond , insn , annulled ) ; } else if ( simplejump_p ( insn ) ) { patp = & SET_SRC ( pat ) ; pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , * patp , pc_rtx ) ; } else if ( JUMP_P ( insn ) && ANY_RETURN_P ( PATTERN ( insn ) ) ) { pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , pat , pc_rtx ) ; pat = gen_rtx_SET ( pc_rtx , pat ) ; } else gcc_unreachable ( ) ; validate_change ( insn , patp , pat , ) ; if ( ! apply_change_group ( ) ) gcc_unreachable ( ) ; if ( JUMP_P ( insn ) ) { rtx_insn * next = next_nonnote_insn ( insn ) ; if ( GET_CODE ( next ) == BARRIER ) delete_insn ( next ) ; if ( statep -> state == ) continue ; } break ; default :" GCC,arc,244,"Predict the next statement of this code snippet: NOTE_KIND ( insn ) = NOTE_INSN_DELETED_LABEL ; NOTE_DELETED_LABEL_NAME ( insn ) = name ; } merge_bb = ; continue ; } case : case : if ( ! NONDEBUG_INSN_P ( insn ) ) break ; rtx_insn * prev , * pprev ; rtx * patp , pat , cond ; bool annulled ; annulled = false ; prev = PREV_INSN ( insn ) ; pprev = PREV_INSN ( prev ) ; if ( pprev && NEXT_INSN ( NEXT_INSN ( pprev ) ) == NEXT_INSN ( insn ) && JUMP_P ( prev ) && get_attr_cond ( prev ) == COND_USE ) { if ( ! INSN_ANNULLED_BRANCH_P ( prev ) ) break ; annulled = true ; } patp = & PATTERN ( insn ) ; pat = * patp ; cond = arc_get_ccfsm_cond ( statep , INSN_FROM_TARGET_P ( insn ) ) ; if ( NONJUMP_INSN_P ( insn ) || CALL_P ( insn ) ) { pat = conditionalize_nonjump ( pat , cond , insn , annulled ) ; } else if ( simplejump_p ( insn ) ) { patp = & SET_SRC ( pat ) ; pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , * patp , pc_rtx ) ; } else if ( JUMP_P ( insn ) && ANY_RETURN_P ( PATTERN ( insn ) ) ) { pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , pat , pc_rtx ) ; pat = gen_rtx_SET ( pc_rtx , pat ) ; } else gcc_unreachable ( ) ; validate_change ( insn , patp , pat , ) ; if ( ! apply_change_group ( ) ) gcc_unreachable ( ) ; if ( JUMP_P ( insn ) ) { rtx_insn * next = next_nonnote_insn ( insn ) ; if ( GET_CODE ( next ) == BARRIER ) delete_insn ( next ) ; if ( statep -> state == ) continue ; } break ; default : gcc_unreachable ( ) ; } arc_ccfsm_post_advance ( insn , statep ) ; } return ;" GCC,arc,245,"Predict the next statement of this code snippet: case PROCESSOR_ARC601 : arc_cpu_string = ; tune_dflt = TUNE_ARC600 ; break ; case PROCESSOR_ARC700 : arc_cpu_string = ; tune_dflt = TUNE_ARC700_4_2_STD ; break ; case PROCESSOR_ARCEM : arc_cpu_string = ; break ; case PROCESSOR_ARCHS : arc_cpu_string = ; break ; default : gcc_unreachable ( ) ; } if ( arc_tune == TUNE_NONE ) arc_tune = tune_dflt ; if ( arc_multcost < ) switch ( arc_tune ) { case TUNE_ARC700_4_2_STD : arc_multcost = COSTS_N_INSNS ( ) ; if ( TARGET_NOMPY_SET ) arc_multcost = COSTS_N_INSNS ( ) ; break ; case TUNE_ARC700_4_2_XMAC : arc_multcost = COSTS_N_INSNS ( ) ; if ( TARGET_NOMPY_SET ) arc_multcost = COSTS_N_INSNS ( ) ; break ; case TUNE_ARC600 : if ( TARGET_MUL64_SET ) { arc_multcost = COSTS_N_INSNS ( ) ; break ; } default : arc_multcost = COSTS_N_INSNS ( ) ; break ; } if ( TARGET_MUL64_SET && ( ! TARGET_ARC600_FAMILY ) ) error ( ) ; if ( TARGET_NOMPY_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( TARGET_MULMAC_32BY16_SET && ( ! TARGET_ARC600_FAMILY ) ) error ( ) ; if ( ! TARGET_DPFP && TARGET_DPFP_DISABLE_LRSR ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET && TARGET_DPFP_COMPACT_SET ) || ( TARGET_SPFP_FAST_SET && TARGET_SPFP_COMPACT_SET ) ) error ( ) ; if ( TARGET_SPFP_FAST_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ( TARGET_DPFP || TARGET_SPFP ) && ( ! TARGET_ARCOMPACT_FAMILY && ! TARGET_EM ) ) error ( ) ; if ( ( TARGET_DPFP || TARGET_SPFP ) && TARGET_HARD_FLOAT && TARGET_HS ) error ( ) ; if ( TARGET_HS && ( ( arc_mpy_option > && arc_mpy_option < ) || ( arc_mpy_option == ) ) ) error ( ) ; if ( flag_pic && TARGET_ARC600_FAMILY ) { warning ( DK_WARNING , , arc_cpu_string ) ; flag_pic = ; } if ( TARGET_ATOMIC && ! ( TARGET_ARC700 || TARGET_HS ) ) error ( ) ; if ( TARGET_LL64 && ! TARGET_HS ) error ( ) ; if ( TARGET_HARD_FLOAT ) { if ( TARGET_EM && ( arc_fpu_build & ~ ( FPU_SP | FPU_SF | FPU_SC | FPU_SD | FPX_DP ) ) ) error ( ) ; if ( TARGET_HS && ( arc_fpu_build & FPX_DP ) ) error ( ) ; if ( ! TARGET_HS && ! TARGET_EM ) error ( ) ; } arc_init_reg_tables ( ) ; memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ;" GCC,arc,246,"Predict the next statement of this code snippet: else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) OF_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_VECTOR_INT : arc_mode_class [ i ] = ( << ( int ) V_MODE ) ; break ; case MODE_CC : default : if ( i == ( int ) CCmode || i == ( int ) CC_ZNmode || i == ( int ) CC_Zmode || i == ( int ) CC_Cmode || i == CC_FP_GTmode || i == CC_FP_GEmode || i == CC_FP_ORDmode || i == CC_FPUmode || i == CC_FPU_UNEQmode ) arc_mode_class [ i ] = << ( int ) C_MODE ; else arc_mode_class [ i ] = ; break ; } }" GCC,arc,247,"Predict the next statement of this code snippet: else return false ; if ( ( GET_CODE ( PATTERN ( jump ) ) == PARALLEL ) && ( XVECEXP ( PATTERN ( jump ) , , ) == ret_rtx ) ) return false ; label_rtx = JUMP_LABEL ( jump ) ; if ( ! label_rtx ) return false ; if ( ANY_RETURN_P ( label_rtx ) ) return false ; label = safe_as_a < rtx_insn * > ( label_rtx ) ; succ_bb = BLOCK_FOR_INSN ( label ) ; if ( ! succ_bb ) { gcc_assert ( NEXT_INSN ( label ) ) ; if ( NOTE_INSN_BASIC_BLOCK_P ( NEXT_INSN ( label ) ) ) succ_bb = NOTE_BASIC_BLOCK ( NEXT_INSN ( label ) ) ; else succ_bb = BLOCK_FOR_INSN ( NEXT_INSN ( label ) ) ;" GCC,arc,248,"Predict the next statement of this code snippet: if ( arc_size_opt_level == ) optimize_size = ; if ( flag_pic ) target_flags |= MASK_NO_SDATA_SET ;" GCC,arc,249,"Predict the next statement of this code snippet: case SYMBOL_REF : output_addr_const ( file , addr ) ; if ( SYMBOL_REF_SMALL_P ( addr ) ) fprintf ( file , ) ; break ; case PLUS : if ( GET_CODE ( XEXP ( addr , ) ) == MULT ) index = XEXP ( XEXP ( addr , ) , ) , base = XEXP ( addr , ) ; else if ( CONST_INT_P ( XEXP ( addr , ) ) ) index = XEXP ( addr , ) , base = XEXP ( addr , ) ; else base = XEXP ( addr , ) , index = XEXP ( addr , ) ;" GCC,arc,250,"Predict the next statement of this code snippet: output_addr_const ( file , addr ) ; if ( SYMBOL_REF_SMALL_P ( addr ) ) fprintf ( file , ) ; break ; case PLUS : if ( GET_CODE ( XEXP ( addr , ) ) == MULT ) index = XEXP ( XEXP ( addr , ) , ) , base = XEXP ( addr , ) ; else if ( CONST_INT_P ( XEXP ( addr , ) ) ) index = XEXP ( addr , ) , base = XEXP ( addr , ) ;" GCC,arc,251,"Predict the next statement of this code snippet: gcc_assert ( state == none ) ; state = destDx ; } if ( state == none ) return false ; if ( state == srcDx ) { if ( TARGET_DPFP_DISABLE_LRSR ) { rtx set = gen_rtx_SET ( dest , src ) ; rtx use1 = gen_rtx_USE ( VOIDmode , const1_rtx ) ; emit_insn ( gen_rtx_PARALLEL ( VOIDmode , gen_rtvec ( , set , use1 ) ) ) ; } else { rtx destHigh = simplify_gen_subreg ( SImode , dest , DFmode , ) ; rtx destLow = simplify_gen_subreg ( SImode , dest , DFmode , ) ; emit_insn ( gen_rtx_SET ( destHigh , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_ARC_LR_HIGH ) ) ) ; emit_insn ( gen_rtx_SET ( destLow , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_ARC_LR ) ) ) ; } } else if ( state == destDx ) { rtx srcHigh = simplify_gen_subreg ( SImode , src , DFmode , ) ;" GCC,arc,252,"Predict the next statement of this code snippet: if ( refers_to_regno_p ( , , src , ) ) state = srcDx ; if ( refers_to_regno_p ( , , dest , ) ) { gcc_assert ( state == none ) ; state = destDx ; } if ( state == none ) return false ; if ( state == srcDx ) { if ( TARGET_DPFP_DISABLE_LRSR ) { rtx set = gen_rtx_SET ( dest , src ) ; rtx use1 = gen_rtx_USE ( VOIDmode , const1_rtx ) ; emit_insn ( gen_rtx_PARALLEL ( VOIDmode , gen_rtvec ( , set , use1 ) ) ) ; }" GCC,arc,253,"Predict the next statement of this code snippet: struct arc_frame_info * frame = & cfun -> machine -> frame_info ; rtx sibthunk_insn = NULL_RTX ; if ( gmask ) { if ( epilogue_p == || frame -> millicode_end_reg > ) { int start_call = frame -> millicode_start_reg ; int end_call = frame -> millicode_end_reg ; int n_regs = end_call - start_call + ; int i = , r , off = ; rtx insn ; rtx ret_addr = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; if ( * first_offset ) { gcc_assert ( epilogue_p || abs ( * first_offset ) <= ) ; frame_add ( base_reg , * first_offset ) ; * first_offset = ; } insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( ( epilogue_p == ) + n_regs + ) ) ; if ( epilogue_p == ) i += ; else XVECEXP ( insn , , n_regs ) = gen_rtx_CLOBBER ( VOIDmode , ret_addr ) ; for ( r = start_call ; r <= end_call ; r ++ , off += UNITS_PER_WORD , i ++ ) { rtx reg = gen_rtx_REG ( SImode , r ) ; rtx mem = gen_frame_mem ( SImode , plus_constant ( Pmode , base_reg , off ) ) ; if ( epilogue_p ) XVECEXP ( insn , , i ) = gen_rtx_SET ( reg , mem ) ; else XVECEXP ( insn , , i ) = gen_rtx_SET ( mem , reg ) ; gmask = gmask & ~ ( << r ) ; } if ( epilogue_p == ) sibthunk_insn = insn ; else { insn = frame_insn ( insn ) ; if ( epilogue_p ) for ( r = start_call ; r <= end_call ; r ++ ) { rtx reg = gen_rtx_REG ( SImode , r ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ;" GCC,arc,254,"Predict the next statement of this code snippet: CUMULATIVE_ARGS next_cum ; next_cum = * get_cumulative_args ( args_so_far ) ; arc_function_arg_advance ( pack_cumulative_args ( & next_cum ) , mode , type , true ) ; first_anon_arg = next_cum ; if ( FUNCTION_ARG_REGNO_P ( first_anon_arg ) ) { int first_reg_offset = first_anon_arg ; if ( ! no_rtl ) { rtx regblock = gen_rtx_MEM ( BLKmode , plus_constant ( Pmode , arg_pointer_rtx , FIRST_PARM_OFFSET ( ) ) ) ; move_block_from_reg ( first_reg_offset , regblock , MAX_ARC_PARM_REGS - first_reg_offset ) ; } * pretend_size = ( ( MAX_ARC_PARM_REGS - first_reg_offset ) * UNITS_PER_WORD ) ;" GCC,arc,255,"Predict the next statement of this code snippet: insn = emit_jump_insn ( insn ) ;" GCC,arc,256,"Predict the next statement of this code snippet: static void emit_unlikely_jump ( rtx insn ) {" GCC,arc,257,"Predict the next statement of this code snippet: if ( GET_CODE ( y ) == SYMBOL_REF && flag_pic ) y = copy_to_mode_reg ( SImode , y ) ; } else { x = force_reg ( cmode , x ) ; y = force_reg ( cmode , y ) ; } mode = SELECT_CC_MODE ( code , x , y ) ; cc_reg = gen_rtx_REG ( mode , CC_REG ) ; if ( TARGET_ARGONAUT_SET && ( ( cmode == SFmode && TARGET_SPFP ) || ( cmode == DFmode && TARGET_DPFP ) ) ) { switch ( code ) { case NE : case EQ : case LT : case UNGE : case LE : case UNGT : case UNEQ : case LTGT : case ORDERED : case UNORDERED : break ; case GT : case UNLE : case GE : case UNLT : code = swap_condition ( code ) ; tmp = x ; x = y ; y = tmp ; break ; default : gcc_unreachable ( ) ; } if ( cmode == SFmode ) { emit_insn ( gen_cmpsfpx_raw ( x , y ) ) ; } else { emit_insn ( gen_cmpdfpx_raw ( x , y ) ) ; } if ( mode != CC_FPXmode ) emit_insn ( gen_rtx_SET ( cc_reg , gen_rtx_COMPARE ( mode , gen_rtx_REG ( CC_FPXmode , ) , const0_rtx ) ) ) ; } else if ( TARGET_HARD_FLOAT && ( ( cmode == SFmode && TARGET_FP_SP_BASE ) || ( cmode == DFmode && TARGET_FP_DP_BASE ) ) ) emit_insn ( gen_rtx_SET ( cc_reg , gen_rtx_COMPARE ( mode , x , y ) ) ) ; else if ( GET_MODE_CLASS ( cmode ) == MODE_FLOAT && TARGET_OPTFPE ) { rtx op0 = gen_rtx_REG ( cmode , ) ; rtx op1 = gen_rtx_REG ( cmode , GET_MODE_SIZE ( cmode ) / UNITS_PER_WORD ) ; bool swap = false ; switch ( code ) { case NE : case EQ : case GT : case UNLE : case GE : case UNLT : case UNEQ : case LTGT : case ORDERED : case UNORDERED : break ; case LT : case UNGE : case LE : case UNGT : code = swap_condition ( code ) ; swap = true ; break ; default : gcc_unreachable ( ) ;" GCC,arc,258,"Predict the next statement of this code snippet: operands [ ] = gen_rtx_fmt_e ( code , omode , arc_rewrite_small_data ( operands [ ] ) ) ; emit_insn ( gen_rtx_SET ( operands [ ] , operands [ ] ) ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , operands [ ] ) ; emit_move_insn ( operands [ ] , operands [ ] ) ; return true ; }" GCC,arc,259,"Predict the next statement of this code snippet: emit_pic_move ( operands , SImode ) ; } else if ( GET_CODE ( operands [ ] ) != MEM && ! TARGET_NO_SDATA_SET && small_data_pattern ( operands [ ] , Pmode ) ) { operands [ ] = arc_rewrite_small_data ( operands [ ] ) ; emit_insn ( gen_rtx_SET ( operands [ ] , operands [ ] ) ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , operands [ ] ) ; emit_move_insn ( operands [ ] , operands [ ] ) ; return true ; } } if ( MEM_P ( operands [ ] ) && ! ( reload_in_progress || reload_completed ) ) { operands [ ] = force_reg ( mode , operands [ ] ) ; if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ; if ( pat ) {" GCC,arc,260,"Predict the next statement of this code snippet: if ( MEM_P ( operands [ ] ) && ! ( reload_in_progress || reload_completed ) ) { operands [ ] = force_reg ( mode , operands [ ] ) ; if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ;" GCC,arc,261,"Predict the next statement of this code snippet: for ( insn = get_insns ( ) ; insn ; insn = NEXT_INSN ( insn ) ) { succ0 = next_real_insn ( insn ) ; if ( arc_hazard ( insn , succ0 ) ) { emit_insn_before ( gen_nopv ( ) , succ0 ) ;" GCC,arc,262,"Predict the next statement of this code snippet: if ( arc_hazard ( insn , succ0 ) ) { emit_insn_before ( gen_nopv ( ) , succ0 ) ;" GCC,arc,263,"Predict the next statement of this code snippet: case SYMBOL_REF : case CONST : if ( TARGET_NPS_CMEM && cmem_address ( addr , SImode ) ) return ; return COSTS_N_INSNS ( ) ; case PLUS : { register rtx plus0 = XEXP ( addr , ) ; register rtx plus1 = XEXP ( addr , ) ; if ( GET_CODE ( plus0 ) != REG && ( GET_CODE ( plus0 ) != MULT || ! CONST_INT_P ( XEXP ( plus0 , ) ) || ( INTVAL ( XEXP ( plus0 , ) ) != && INTVAL ( XEXP ( plus0 , ) ) != ) ) ) break ;" GCC,arc,264,"Predict the next statement of this code snippet: else if ( GET_CODE ( XEXP ( SET_SRC ( body ) , ) ) == LABEL_REF ) { label = XEXP ( XEXP ( SET_SRC ( body ) , ) , ) ; then_not_else = FALSE ; } else if ( GET_CODE ( XEXP ( SET_SRC ( body ) , ) ) == SIMPLE_RETURN ) seeking_return = ; else if ( GET_CODE ( XEXP ( SET_SRC ( body ) , ) ) == SIMPLE_RETURN ) { seeking_return = ; then_not_else = FALSE ; } else gcc_unreachable ( ) ; if ( NEXT_INSN ( PREV_INSN ( insn ) ) != insn && state -> state == && ! INSN_ANNULLED_BRANCH_P ( insn ) ) { this_insn = NEXT_INSN ( this_insn ) ; gcc_assert ( NEXT_INSN ( NEXT_INSN ( PREV_INSN ( start_insn ) ) ) == NEXT_INSN ( this_insn ) ) ; } for ( insns_skipped = , next_must_be_target_label_p = FALSE ; ! fail && ! succeed && insns_skipped < MAX_INSNS_SKIPPED ; insns_skipped ++ ) { rtx scanbody ; this_insn = next_nonnote_insn ( this_insn ) ; if ( ! this_insn ) break ; if ( next_must_be_target_label_p ) { if ( GET_CODE ( this_insn ) == BARRIER ) continue ; if ( GET_CODE ( this_insn ) == CODE_LABEL && this_insn == label ) { state -> state = ; succeed = TRUE ; } else fail = TRUE ; break ; } switch ( GET_CODE ( this_insn ) ) { case CODE_LABEL : if ( this_insn == label ) { state -> state = ; succeed = TRUE ; } else fail = TRUE ; break ; case BARRIER : next_must_be_target_label_p = TRUE ; break ; case CALL_INSN : if ( get_attr_cond ( this_insn ) == COND_CANUSE ) next_must_be_target_label_p = TRUE ; else fail = TRUE ; break ; case JUMP_INSN : scanbody = PATTERN ( this_insn ) ; if ( GET_CODE ( scanbody ) == SET && GET_CODE ( SET_DEST ( scanbody ) ) == PC ) { if ( GET_CODE ( SET_SRC ( scanbody ) ) == LABEL_REF && XEXP ( SET_SRC ( scanbody ) , ) == label && ! reverse ) { state -> state = ; succeed = TRUE ; } else if ( GET_CODE ( SET_SRC ( scanbody ) ) == IF_THEN_ELSE ) fail = TRUE ;" GCC,arc,265,"Predict the next statement of this code snippet: else if ( GET_CODE ( x ) == PLUS && ( ( REG_P ( gp = XEXP ( x , ) ) && REGNO ( gp ) == PIC_OFFSET_TABLE_REGNUM ) || ( GET_CODE ( gp ) == CONST && GET_CODE ( u = XEXP ( gp , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOT && GET_CODE ( XVECEXP ( u , , ) ) == SYMBOL_REF && ! strcmp ( XSTR ( XVECEXP ( u , , ) , ) , ) ) ) && GET_CODE ( XEXP ( x , ) ) == CONST && GET_CODE ( u = XEXP ( XEXP ( x , ) , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOTOFF ) return XVECEXP ( u , , ) ; else if ( GET_CODE ( x ) == PLUS && GET_CODE ( XEXP ( x , ) ) == PLUS && ( ( REG_P ( gp = XEXP ( XEXP ( x , ) , ) ) && REGNO ( gp ) == PIC_OFFSET_TABLE_REGNUM ) || ( GET_CODE ( gp ) == CONST && GET_CODE ( u = XEXP ( gp , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOT && GET_CODE ( XVECEXP ( u , , ) ) == SYMBOL_REF && ! strcmp ( XSTR ( XVECEXP ( u , , ) , ) , ) ) ) && GET_CODE ( XEXP ( x , ) ) == CONST && GET_CODE ( u = XEXP ( XEXP ( x , ) , ) ) == UNSPEC && XINT ( u , ) == ARC_UNSPEC_GOTOFF ) return gen_rtx_PLUS ( GET_MODE ( x ) , XEXP ( XEXP ( x , ) , ) , XVECEXP ( u , , ) ) ;" GCC,arc,266,"Predict the next statement of this code snippet: RTL_PURE_CALL_P ( call_insn ) = ; add_function_usage_to ( call_insn , call_fusage ) ; rtx_insn * insns = get_insns ( ) ; end_sequence ( ) ; rtx dest = gen_reg_rtx ( Pmode ) ;" GCC,arc,267,"Predict the next statement of this code snippet: pat = gen_rtx_SYMBOL_REF ( Pmode , ) ; pat = arc_unspec_offset ( pat , ARC_UNSPEC_GOT ) ; pat = gen_rtx_SET ( baseptr_rtx , pat ) ; emit_insn ( pat ) ;" GCC,arc,268,"Predict the next statement of this code snippet: pat = arc_unspec_offset ( pat , ARC_UNSPEC_GOT ) ; pat = gen_rtx_SET ( baseptr_rtx , pat ) ;" GCC,arc,269,"Predict the next statement of this code snippet: static rtx arc_get_tp ( void ) { if ( arc_tp_regno != - ) return gen_rtx_REG ( Pmode , arc_tp_regno ) ; rtx reg = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_tls_load_tp_soft ( ) ) ; emit_move_insn ( reg , gen_rtx_REG ( Pmode , R0_REG ) ) ; return reg ;" GCC,arc,270,"Predict the next statement of this code snippet: rtx reg = gen_reg_rtx ( Pmode ) ; emit_insn ( gen_tls_load_tp_soft ( ) ) ; emit_move_insn ( reg , gen_rtx_REG ( Pmode , R0_REG ) ) ; return reg ;" GCC,arc,271,"Predict the next statement of this code snippet: if ( ! TARGET_DPFP && TARGET_DPFP_DISABLE_LRSR ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET && TARGET_DPFP_COMPACT_SET ) || ( TARGET_SPFP_FAST_SET && TARGET_SPFP_COMPACT_SET ) ) error ( ) ; if ( TARGET_SPFP_FAST_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET || TARGET_DPFP_COMPACT_SET || TARGET_SPFP ) && TARGET_HARD_FLOAT ) error ( ) ; if ( flag_pic && TARGET_ARC600_FAMILY ) { warning ( DK_WARNING , , arc_cpu_string ) ; flag_pic = ; } arc_init_reg_tables ( ) ; memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ; arc_punct_chars [ '*' ] = ; arc_punct_chars [ '?' ] = ; arc_punct_chars [ '!' ] = ; arc_punct_chars [ '^' ] = ; arc_punct_chars [ '&' ] = ; arc_punct_chars [ '+' ] = ; arc_punct_chars [ '_' ] = ; if ( optimize > && ! TARGET_NO_COND_EXEC ) { opt_pass * pass_arc_ifcvt_4 = make_pass_arc_ifcvt ( g ) ; struct register_pass_info arc_ifcvt4_info = { pass_arc_ifcvt_4 , , , PASS_POS_INSERT_AFTER } ; struct register_pass_info arc_ifcvt5_info = { pass_arc_ifcvt_4 -> clone ( ) , , , PASS_POS_INSERT_BEFORE } ;" GCC,arc,272,"Predict the next statement of this code snippet: arc_init_reg_tables ( ) ; memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ; arc_punct_chars [ '*' ] = ; arc_punct_chars [ '?' ] = ; arc_punct_chars [ '!' ] = ; arc_punct_chars [ '^' ] = ; arc_punct_chars [ '&' ] = ; arc_punct_chars [ '+' ] = ; arc_punct_chars [ '_' ] = ; if ( optimize > && ! TARGET_NO_COND_EXEC ) { opt_pass * pass_arc_ifcvt_4 = make_pass_arc_ifcvt ( g ) ; struct register_pass_info arc_ifcvt4_info = { pass_arc_ifcvt_4 , , , PASS_POS_INSERT_AFTER } ; struct register_pass_info arc_ifcvt5_info = { pass_arc_ifcvt_4 -> clone ( ) , , , PASS_POS_INSERT_BEFORE } ; register_pass ( & arc_ifcvt4_info ) ;" GCC,arc,273,"Predict the next statement of this code snippet: case MODE_COMPLEX_INT : if ( GET_MODE_SIZE ( m ) <= ) arc_mode_class [ i ] = << ( int ) S_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) D_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) T_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) O_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_FLOAT : case MODE_COMPLEX_FLOAT : if ( GET_MODE_SIZE ( m ) <= ) arc_mode_class [ i ] = << ( int ) SF_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) DF_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) TF_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) OF_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_VECTOR_INT : if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = ( << ( int ) S_MODE ) ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = ( << ( int ) D_MODE ) ;" GCC,arc,274,"Predict the next statement of this code snippet: if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = ( << ( int ) S_MODE ) ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = ( << ( int ) D_MODE ) ; else arc_mode_class [ i ] = ( << ( int ) V_MODE ) ; break ; case MODE_CC : default : if ( i == ( int ) CCmode || i == ( int ) CC_ZNmode || i == ( int ) CC_Zmode || i == ( int ) CC_Cmode || i == CC_FP_GTmode || i == CC_FP_GEmode || i == CC_FP_ORDmode || i == CC_FPUmode || i == CC_FPU_UNEQmode ) arc_mode_class [ i ] = << ( int ) C_MODE ; else arc_mode_class [ i ] = ; break ; } }" GCC,arc,275,"Predict the next statement of this code snippet: int arc_label_align ( rtx_insn * label ) { int loop_align = LOOP_ALIGN ( LABEL ) ; if ( loop_align > align_labels_log ) { rtx_insn * prev = prev_nonnote_insn ( label ) ; if ( prev && NONJUMP_INSN_P ( prev ) && GET_CODE ( PATTERN ( prev ) ) == PARALLEL && recog_memoized ( prev ) == CODE_FOR_doloop_begin_i ) return loop_align ; } if ( align_labels_log < ) { rtx_insn * next = next_nonnote_nondebug_insn ( label ) ;" GCC,arc,276,"Predict the next statement of this code snippet: if ( LEGITIMATE_SMALL_DATA_ADDRESS_P ( x ) ) return true ; if ( GET_CODE ( x ) == CONST_INT && LARGE_INT ( INTVAL ( x ) ) ) return true ; if ( ! flag_pic && optimize_size && ! reload_completed && ( GET_CODE ( x ) == CONST ) && ( GET_CODE ( XEXP ( x , ) ) == PLUS ) && ( GET_CODE ( XEXP ( XEXP ( x , ) , ) ) == SYMBOL_REF ) && SYMBOL_REF_TLS_MODEL ( XEXP ( XEXP ( x , ) , ) ) == && ! SYMBOL_REF_FUNCTION_P ( XEXP ( XEXP ( x , ) , ) ) ) { rtx addend = XEXP ( XEXP ( x , ) , ) ; gcc_assert ( CONST_INT_P ( addend ) ) ; HOST_WIDE_INT offset = INTVAL ( addend ) ; return ! ( offset > - && offset < ) ; } if ( ( GET_MODE_SIZE ( mode ) != ) && CONSTANT_P ( x ) ) {" GCC,arc,277,"Predict the next statement of this code snippet: if ( ( GET_CODE ( x ) == PRE_DEC || GET_CODE ( x ) == PRE_INC || GET_CODE ( x ) == POST_DEC || GET_CODE ( x ) == POST_INC ) && RTX_OK_FOR_BASE_P ( XEXP ( x , ) , strict ) ) return true ; if ( ( GET_CODE ( x ) == PRE_MODIFY || GET_CODE ( x ) == POST_MODIFY ) && GET_CODE ( XEXP ( ( x ) , ) ) == PLUS && rtx_equal_p ( XEXP ( ( x ) , ) , XEXP ( XEXP ( x , ) , ) ) && LEGITIMATE_OFFSET_ADDRESS_P ( QImode , XEXP ( x , ) , TARGET_AUTO_MODIFY_REG , strict ) ) return true ; return false ;" GCC,arc,278,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL ( x ) ) return false ; if ( ! flag_pic && mode != Pmode ) return true ; switch ( GET_CODE ( x ) ) { case CONST : x = XEXP ( x , ) ; if ( GET_CODE ( x ) == PLUS ) { if ( flag_pic ? GET_CODE ( XEXP ( x , ) ) != CONST_INT : ! arc_legitimate_constant_p ( mode , XEXP ( x , ) ) ) return false ;" GCC,arc,279,"Predict the next statement of this code snippet: switch ( GET_CODE ( x ) ) { case CONST : x = XEXP ( x , ) ; if ( GET_CODE ( x ) == PLUS ) { if ( flag_pic ? GET_CODE ( XEXP ( x , ) ) != CONST_INT : ! arc_legitimate_constant_p ( mode , XEXP ( x , ) ) ) return false ; x = XEXP ( x , ) ; } if ( GET_CODE ( x ) == UNSPEC ) switch ( XINT ( x , ) ) { case ARC_UNSPEC_PLT : case ARC_UNSPEC_GOTOFF : case ARC_UNSPEC_GOTOFFPC :" GCC,arc,280,"Predict the next statement of this code snippet: bool arc_legitimate_pc_offset_p ( rtx addr ) { if ( GET_CODE ( addr ) != CONST ) return false ;" GCC,arc,281,"Predict the next statement of this code snippet: bool arc_legitimate_pc_offset_p ( rtx addr ) { if ( GET_CODE ( addr ) != CONST ) return false ; return arc_needs_pcl_p ( addr ) ;" GCC,arc,282,"Predict the next statement of this code snippet: if ( GET_CODE ( addr ) != UNSPEC || XVECLEN ( addr , ) != ) return false ;" GCC,arc,283,"Predict the next statement of this code snippet: static rtx arc_legitimize_address ( rtx orig_x , rtx oldx , machine_mode mode ) { if ( GET_CODE ( orig_x ) == SYMBOL_REF ) { enum tls_model model = SYMBOL_REF_TLS_MODEL ( orig_x ) ; if ( model != ) return arc_legitimize_tls_address ( orig_x , model ) ; } rtx new_x = arc_legitimize_address_0 ( orig_x , oldx , mode ) ;" GCC,arc,284,"Predict the next statement of this code snippet: static rtx arc_legitimize_address ( rtx orig_x , rtx oldx , machine_mode mode ) { if ( GET_CODE ( orig_x ) == SYMBOL_REF ) { enum tls_model model = SYMBOL_REF_TLS_MODEL ( orig_x ) ; if ( model != ) return arc_legitimize_tls_address ( orig_x , model ) ;" GCC,arc,285,"Predict the next statement of this code snippet: emit_insn ( gen_rtx_SET ( oldx , gen_rtx_MINUS ( SImode , op0 , oldx ) ) ) ; return oldx ; } else if ( GET_CODE ( addr ) != PLUS ) { rtx tmp = XEXP ( addr , ) ; enum rtx_code code = GET_CODE ( addr ) ; gcc_assert ( UNARY_P ( addr ) ) ; gcc_assert ( GET_CODE ( tmp ) == UNSPEC ) ; gcc_assert ( oldx ) ; emit_move_insn ( oldx , gen_rtx_CONST ( SImode , arc_legitimize_pic_address ( tmp , NULL_RTX ) ) ) ; emit_insn ( gen_rtx_SET ( oldx , gen_rtx_fmt_ee ( code , SImode , oldx , const0_rtx ) ) ) ; return oldx ; } else { gcc_assert ( GET_CODE ( addr ) == PLUS ) ; if ( GET_CODE ( XEXP ( addr , ) ) == UNSPEC ) return orig ; } } if ( GET_CODE ( addr ) == PLUS ) { rtx op0 = XEXP ( addr , ) , op1 = XEXP ( addr , ) ; base = arc_legitimize_pic_address ( op0 , oldx ) ; pat = arc_legitimize_pic_address ( op1 , base == oldx ? NULL_RTX : oldx ) ; if ( base == op0 && pat == op1 ) return orig ; if ( GET_CODE ( pat ) == CONST_INT ) pat = plus_constant ( Pmode , base , INTVAL ( pat ) ) ;" GCC,arc,286,"Predict the next statement of this code snippet: base_name = DTPOFF_ZERO_SYM ; if ( decl && bss_initializer_p ( decl ) ) base_name = ; base = gen_rtx_SYMBOL_REF ( Pmode , base_name ) ; if ( strcmp ( base_name , DTPOFF_ZERO_SYM ) == ) { if ( ! flag_pic ) goto local_exec ; v = gen_rtvec ( , addr ) ; } else v = gen_rtvec ( , addr , base ) ;" GCC,arc,287,"Predict the next statement of this code snippet: if ( recog_memoized ( succ ) != CODE_FOR_doloop_end_i ) return false ; if ( TARGET_ARC600 || TARGET_HS ) if ( JUMP_P ( pred ) || CALL_P ( pred ) || arc_asm_insn_p ( PATTERN ( pred ) ) || GET_CODE ( PATTERN ( pred ) ) == SEQUENCE ) return true ; if ( JUMP_P ( pred ) ) jump = pred ; else if ( GET_CODE ( PATTERN ( pred ) ) == SEQUENCE && JUMP_P ( XVECEXP ( PATTERN ( pred ) , , ) ) ) jump = as_a < rtx_insn * > ( XVECEXP ( PATTERN ( pred ) , , ) ) ; else return false ; if ( ( GET_CODE ( PATTERN ( jump ) ) == PARALLEL ) && ( XVECEXP ( PATTERN ( jump ) , , ) == ret_rtx ) ) return false ; label_rtx = JUMP_LABEL ( jump ) ; if ( ! label_rtx ) return false ; if ( ANY_RETURN_P ( label_rtx ) ) return false ; label = safe_as_a < rtx_insn * > ( label_rtx ) ; succ_bb = BLOCK_FOR_INSN ( label ) ; if ( ! succ_bb ) { gcc_assert ( NEXT_INSN ( label ) ) ; if ( NOTE_INSN_BASIC_BLOCK_P ( NEXT_INSN ( label ) ) ) succ_bb = NOTE_BASIC_BLOCK ( NEXT_INSN ( label ) ) ;" GCC,arc,288,"Predict the next statement of this code snippet: register int i , j ; if ( ( GET_CODE ( x ) == UNSPEC ) && ( XVECLEN ( x , ) == ) && ( GET_CODE ( XVECEXP ( x , , ) ) == SYMBOL_REF ) ) switch ( XINT ( x , ) ) { case ARC_UNSPEC_GOT : case ARC_UNSPEC_GOTOFFPC : case UNSPEC_TLS_GD :" GCC,arc,289,"Predict the next statement of this code snippet: register int i , j ; if ( ( GET_CODE ( x ) == UNSPEC ) && ( XVECLEN ( x , ) == ) && ( GET_CODE ( XVECEXP ( x , , ) ) == SYMBOL_REF ) ) switch ( XINT ( x , ) ) { case ARC_UNSPEC_GOT : case ARC_UNSPEC_GOTOFFPC : case UNSPEC_TLS_GD : case UNSPEC_TLS_IE : return true ; default : break ; } fmt = GET_RTX_FORMAT ( GET_CODE ( x ) ) ; for ( i = GET_RTX_LENGTH ( GET_CODE ( x ) ) - ; i >= ; i -- ) { if ( fmt [ i ] == 'e' ) { if ( arc_needs_pcl_p ( XEXP ( x , i ) ) ) return true ; } else if ( fmt [ i ] == 'E' ) for ( j = XVECLEN ( x , i ) - ; j >= ; j -- ) if ( arc_needs_pcl_p ( XVECEXP ( x , i , j ) ) ) return true ; }" GCC,arc,290,"Predict the next statement of this code snippet: int match = operands_match_p ( operands [ ] , operands [ ] ) ; int match2 = operands_match_p ( operands [ ] , operands [ ] ) ; int intval = ( REG_P ( operands [ ] ) ? : CONST_INT_P ( operands [ ] ) ? INTVAL ( operands [ ] ) : ) ;" GCC,arc,291,"Predict the next statement of this code snippet: gcc_assert ( ! CONSTANT_P ( operands [ ] ) ) ; switch ( commutative_op ) { case AND : if ( satisfies_constraint_C1p ( operands [ ] ) ) pat = ; else if ( satisfies_constraint_C2p ( operands [ ] ) ) { operands [ ] = GEN_INT ( ( ~ INTVAL ( operands [ ] ) ) ) ; pat = ; }" GCC,arc,292,"Predict the next statement of this code snippet: arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; } else if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT ) { arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; if ( INTVAL ( XEXP ( x , ) ) >= ) fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; } else gcc_unreachable ( ) ; break ; case MINUS : x = simplify_subtraction ( x ) ; if ( GET_CODE ( x ) != MINUS ) goto restart ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT && INTVAL ( XEXP ( x , ) ) < ) { fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; } else arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case ZERO_EXTEND : case SIGN_EXTEND : arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case UNSPEC : const char * suffix ; bool pcrel ; pcrel = false ; rtx base ; base = NULL ; gcc_assert ( XVECLEN ( x , ) >= ) ; switch ( XINT ( x , ) ) { case ARC_UNSPEC_GOT : suffix = , pcrel = true ; break ; case ARC_UNSPEC_GOTOFF : suffix = ; break ; case ARC_UNSPEC_GOTOFFPC : suffix = , pcrel = true ; break ; case ARC_UNSPEC_PLT : suffix = ; break ; case UNSPEC_TLS_GD : suffix = , pcrel = true ; break ; case UNSPEC_TLS_IE : suffix = , pcrel = true ; break ; case UNSPEC_TLS_OFF : if ( XVECLEN ( x , ) == ) base = XVECEXP ( x , , ) ; if ( SYMBOL_REF_TLS_MODEL ( XVECEXP ( x , , ) ) == TLS_MODEL_LOCAL_EXEC || ( ! flag_pic && ! base ) ) suffix = ; else suffix = ; break ;" GCC,arc,293,"Predict the next statement of this code snippet: return TARGET_PLUS_QMACW ? V4HImode : V2HImode ; case SImode : return V2SImode ; default : return word_mode ; }" GCC,arc,294,"Predict the next statement of this code snippet: if ( ( GET_CODE ( c ) == UNSPEC && ( XINT ( c , ) == UNSPEC_TLS_OFF || XINT ( c , ) == UNSPEC_TLS_IE ) ) || ( GET_CODE ( c ) == PLUS && GET_CODE ( XEXP ( c , ) ) == UNSPEC && ( XINT ( XEXP ( c , ) , ) == UNSPEC_TLS_OFF || XINT ( XEXP ( c , ) , ) == ARC_UNSPEC_GOTOFFPC ) ) ) { arc_output_pic_addr_const ( file , c , ) ; break ; } gcc_assert ( GET_CODE ( c ) == PLUS ) ; gcc_assert ( GET_CODE ( XEXP ( c , ) ) == SYMBOL_REF ) ; gcc_assert ( GET_CODE ( XEXP ( c , ) ) == CONST_INT ) ;" GCC,arc,295,"Predict the next statement of this code snippet: arc_print_operand_address ( file , base ) ; if ( CONSTANT_P ( base ) && CONST_INT_P ( index ) ) fputc ( '+' , file ) ; else fputc ( ',' , file ) ; gcc_assert ( OBJECT_P ( index ) ) ; arc_print_operand_address ( file , index ) ; break ; case CONST : { rtx c = XEXP ( addr , ) ; if ( ( GET_CODE ( c ) == UNSPEC && ( XINT ( c , ) == UNSPEC_TLS_OFF || XINT ( c , ) == UNSPEC_TLS_IE ) ) || ( GET_CODE ( c ) == PLUS && GET_CODE ( XEXP ( c , ) ) == UNSPEC && ( XINT ( XEXP ( c , ) , ) == UNSPEC_TLS_OFF || XINT ( XEXP ( c , ) , ) == ARC_UNSPEC_GOTOFFPC ) ) ) { arc_output_pic_addr_const ( file , c , ) ; break ;" GCC,arc,296,"Predict the next statement of this code snippet: else { rtx destHigh = simplify_gen_subreg ( SImode , dest , DFmode , TARGET_BIG_ENDIAN ? : ) ; rtx destLow = simplify_gen_subreg ( SImode , dest , DFmode , TARGET_BIG_ENDIAN ? : ) ; emit_insn ( gen_rtx_SET ( destHigh , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_ARC_LR_HIGH ) ) ) ; emit_insn ( gen_rtx_SET ( destLow , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_ARC_LR ) ) ) ; } } else if ( state == destDx ) { rtx srcHigh = simplify_gen_subreg ( SImode , src , DFmode , TARGET_BIG_ENDIAN ? : ) ;" GCC,arc,297,"Predict the next statement of this code snippet: if ( TARGET_ARC700 && ( from_class == LPCOUNT_REG || from_class == ALL_CORE_REGS || from_class == WRITABLE_CORE_REGS ) ) return ;" GCC,arc,298,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) == SYMBOL_REF && SYMBOL_REF_SMALL_P ( x ) ) { gcc_assert ( SYMBOL_REF_TLS_MODEL ( x ) == ) ; return true ; } return false ;" GCC,arc,299,"Predict the next statement of this code snippet: static bool arc_rewrite_small_data_p ( const_rtx x ) { if ( GET_CODE ( x ) == CONST ) x = XEXP ( x , ) ; if ( GET_CODE ( x ) == PLUS ) { if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT ) x = XEXP ( x , ) ; } if ( GET_CODE ( x ) == SYMBOL_REF && SYMBOL_REF_SMALL_P ( x ) ) { gcc_assert ( SYMBOL_REF_TLS_MODEL ( x ) == ) ; return true ; } return false ;" GCC,arc,300,"Predict the next statement of this code snippet: case SYMBOL_REF : * total = COSTS_N_INSNS ( ) ; return true ; case CONST_DOUBLE : { rtx first , second ; if ( TARGET_DPFP ) { * total = COSTS_N_INSNS ( ) ; return true ; } split_double ( x , & first , & second ) ; * total = COSTS_N_INSNS ( ! SMALL_INT ( INTVAL ( first ) ) + ! SMALL_INT ( INTVAL ( second ) ) ) ; return true ; } case ASHIFT : case ASHIFTRT : case LSHIFTRT : if ( TARGET_BARREL_SHIFTER ) { if ( CONSTANT_P ( XEXP ( x , ) ) ) { * total += ( COSTS_N_INSNS ( ) + rtx_cost ( XEXP ( x , ) , mode , ( enum rtx_code ) code , , speed ) ) ; return true ; } * total = COSTS_N_INSNS ( ) ; } else if ( GET_CODE ( XEXP ( x , ) ) != CONST_INT ) * total = COSTS_N_INSNS ( ) ; else { * total = COSTS_N_INSNS ( INTVAL ( XEXP ( ( x ) , ) ) ) ; if ( * total < ) * total = ; } return false ; case DIV : case UDIV : if ( speed ) * total = COSTS_N_INSNS ( ) ; else * total = COSTS_N_INSNS ( ) ; return false ; case MULT : if ( ( TARGET_DPFP && GET_MODE ( x ) == DFmode ) ) * total = COSTS_N_INSNS ( ) ; else if ( speed ) * total = arc_multcost ; else if ( TARGET_MUL64_SET || TARGET_ARC700_MPY ) * total = COSTS_N_INSNS ( ) ; else * total = COSTS_N_INSNS ( ) ; return false ; case PLUS : if ( GET_CODE ( XEXP ( x , ) ) == MULT && _2_4_8_operand ( XEXP ( XEXP ( x , ) , ) , VOIDmode ) ) { * total += ( rtx_cost ( XEXP ( x , ) , mode , PLUS , , speed ) + rtx_cost ( XEXP ( XEXP ( x , ) , ) , mode , PLUS , , speed ) ) ; return true ; } return false ; case MINUS : if ( GET_CODE ( XEXP ( x , ) ) == MULT && _2_4_8_operand ( XEXP ( XEXP ( x , ) , ) , VOIDmode ) ) {" GCC,arc,301,"Predict the next statement of this code snippet: rtx in_set , out_set ; rtx out_addr , in_addr ; if ( ! producer ) return false ; if ( ! consumer ) return false ; out_set = single_set ( producer ) ; if ( out_set ) { out_addr = SET_DEST ( out_set ) ; if ( ! out_addr ) return false ; if ( GET_CODE ( out_addr ) == ZERO_EXTEND || GET_CODE ( out_addr ) == SIGN_EXTEND ) out_addr = XEXP ( out_addr , ) ; if ( ! MEM_P ( out_addr ) ) return false ; in_set = single_set ( consumer ) ; if ( in_set ) { in_addr = SET_SRC ( in_set ) ; if ( ! in_addr ) return false ; if ( GET_CODE ( in_addr ) == ZERO_EXTEND || GET_CODE ( in_addr ) == SIGN_EXTEND ) in_addr = XEXP ( in_addr , ) ; if ( ! MEM_P ( in_addr ) ) return false ; in_addr = XEXP ( in_addr , ) ; out_addr = XEXP ( out_addr , ) ; return exp_equiv_p ( in_addr , out_addr , , true ) ; }" GCC,arc,302,"Predict the next statement of this code snippet: if ( GET_CODE ( out_addr ) == ZERO_EXTEND || GET_CODE ( out_addr ) == SIGN_EXTEND ) out_addr = XEXP ( out_addr , ) ; if ( ! MEM_P ( out_addr ) ) return false ; in_set = single_set ( consumer ) ; if ( in_set ) { in_addr = SET_SRC ( in_set ) ; if ( ! in_addr ) return false ; if ( GET_CODE ( in_addr ) == ZERO_EXTEND || GET_CODE ( in_addr ) == SIGN_EXTEND ) in_addr = XEXP ( in_addr , ) ; if ( ! MEM_P ( in_addr ) ) return false ; in_addr = XEXP ( in_addr , ) ; out_addr = XEXP ( out_addr , ) ; return exp_equiv_p ( in_addr , out_addr , , true ) ; } } return false ;" GCC,arc,303,"Predict the next statement of this code snippet: case V2HImode : return TARGET_PLUS_DMPY ; case V4HImode : case V2SImode : return TARGET_PLUS_QMACW ; case V4SImode : case V8HImode : return TARGET_SIMD_SET ; default : return false ;" GCC,arc,304,"Predict the next statement of this code snippet: static void emit_unlikely_jump ( rtx insn ) {" GCC,arc,305,"Predict the next statement of this code snippet: rtx_insn * jump = emit_jump_insn ( insn ) ;" GCC,arc,306,"Predict the next statement of this code snippet: if ( MEM_P ( operands [ ] ) && ! ( reload_in_progress || reload_completed ) ) { operands [ ] = force_reg ( mode , operands [ ] ) ; if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ; if ( pat ) {" GCC,arc,307,"Predict the next statement of this code snippet: static void prepare_pic_move ( rtx * operands , machine_mode ) { if ( GET_CODE ( operands [ ] ) == MEM && SYMBOLIC_CONST ( operands [ ] ) && flag_pic ) operands [ ] = force_reg ( Pmode , operands [ ] ) ; else { rtx temp = ( reload_in_progress ? operands [ ] : flag_pic ? gen_reg_rtx ( Pmode ) : NULL_RTX ) ;" GCC,arc,308,"Predict the next statement of this code snippet: emit_insn_after ( gen_nopv ( ) , insn ) ; emit_insn_after ( gen_nopv ( ) , insn ) ; continue ; } succ1 = next_real_insn ( succ0 ) ; if ( succ0 && ! JUMP_P ( succ0 ) && ! CALL_P ( succ0 ) && arc_store_addr_hazard_p ( insn , succ1 ) ) emit_insn_after ( gen_nopv ( ) , insn ) ; } }" GCC,arc,309,"Predict the next statement of this code snippet: static void arc_autovectorize_vector_sizes ( vector_sizes * sizes ) { if ( TARGET_PLUS_QMACW ) { sizes -> quick_push ( ) ; sizes -> quick_push ( ) ; }" GCC,arc,310,"Predict the next statement of this code snippet: sizes -> quick_push ( ) ; sizes -> quick_push ( ) ;" GCC,arc,311,"Predict the next statement of this code snippet: static rtx arc_builtin_setjmp_frame_value ( void ) { return gen_raw_REG ( Pmode , FRAME_POINTER_REGNUM ) ;" GCC,arc,312,"Predict the next statement of this code snippet: static rtx arc_builtin_setjmp_frame_value ( void ) {" GCC,arc,313,"Predict the next statement of this code snippet: return ( ( to == FRAME_POINTER_REGNUM ) || ! arc_frame_pointer_needed ( ) ) ;" GCC,arc,314,"Predict the next statement of this code snippet: static bool arc_can_eliminate ( const int from ATTRIBUTE_UNUSED , const int to ) { return ( ( to == FRAME_POINTER_REGNUM ) || ! arc_frame_pointer_needed ( ) ) ;" GCC,arc,315,"Predict the next statement of this code snippet: int size ; if ( cfun -> machine -> frame_info . initialized ) return cfun -> machine -> frame_info . total_size ; frame_info = & cfun -> machine -> frame_info ; size = ARC_STACK_ALIGN ( get_frame_size ( ) ) ; var_size = size ; args_size = crtl -> outgoing_args_size ; reg_size = ; gmask = ; for ( regno = ; regno <= ; regno ++ ) { if ( arc_must_save_register ( regno , cfun ) ) { reg_size += UNITS_PER_WORD ; gmask |= << regno ; } } if ( crtl -> calls_eh_return ) for ( regno = ; EH_RETURN_DATA_REGNO ( regno ) != INVALID_REGNUM ; regno ++ ) { reg_size += UNITS_PER_WORD ; gmask |= << regno ; } frame_info -> save_return_addr = ( ! crtl -> is_leaf || df_regs_ever_live_p ( RETURN_ADDR_REGNUM ) || crtl -> calls_eh_return ) ; if ( optimize_size && ! TARGET_NO_MILLICODE_THUNK_SET && ! crtl -> calls_eh_return ) { if ( arc_compute_millicode_save_restore_regs ( gmask , frame_info ) ) frame_info -> save_return_addr = true ; } extra_size = ; if ( arc_must_save_return_addr ( cfun ) ) extra_size = ; if ( arc_frame_pointer_needed ( ) ) extra_size += ; pretend_size = crtl -> args . pretend_args_size ; { unsigned int extra_plus_reg_size ; unsigned int extra_plus_reg_size_aligned ; extra_plus_reg_size = extra_size + reg_size ; extra_plus_reg_size_aligned = ARC_STACK_ALIGN ( extra_plus_reg_size ) ; reg_size = extra_plus_reg_size_aligned - extra_size ; } total_size = var_size + args_size + extra_size + pretend_size + reg_size ; gcc_assert ( total_size == ARC_STACK_ALIGN ( total_size ) ) ; reg_offset = ( total_size - ( pretend_size + reg_size + extra_size ) + ( arc_frame_pointer_needed ( ) ? : ) ) ; frame_info -> total_size = total_size ; frame_info -> extra_size = extra_size ; frame_info -> pretend_size = pretend_size ; frame_info -> var_size = var_size ; frame_info -> args_size = args_size ; frame_info -> reg_size = reg_size ; frame_info -> reg_offset = reg_offset ;" GCC,arc,316,"Predict the next statement of this code snippet: value = TREE_VALUE ( args ) ; gcc_assert ( TREE_CODE ( value ) == STRING_CST ) ; if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) || ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_ILINK1 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_ILINK2 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_FIRQ ; else gcc_unreachable ( ) ; } return fun -> machine -> fn_type = fn_type ;" GCC,arc,317,"Predict the next statement of this code snippet: rtx mem ; int offset ; struct arc_frame_info * afi ; arc_compute_frame_size ( ) ; afi = & cfun -> machine -> frame_info ;" GCC,arc,318,"Predict the next statement of this code snippet: if ( reload_completed ) { if ( ARC_INTERRUPT_P ( cfun -> machine -> fn_type ) ) {" GCC,arc,319,"Predict the next statement of this code snippet: if ( ! fixed_regs [ regno ] ) return true ; return ( ( regno == arc_return_address_register ( fn_type ) ) || ( regno == RETURN_ADDR_REGNUM ) ) ; } else return regno == RETURN_ADDR_REGNUM ;" GCC,arc,320,"Predict the next statement of this code snippet: if ( ! can_trust_sp_p ) gcc_assert ( arc_frame_pointer_needed ( ) ) ; if ( frame_size ) { if ( arc_frame_pointer_needed ( ) ) frame_move ( stack_pointer_rtx , frame_pointer_rtx ) ; else first_offset = frame_size ; size_to_deallocate -= frame_size ; } else if ( ! can_trust_sp_p ) frame_stack_add ( - frame_size ) ; if ( arc_frame_pointer_needed ( ) && ! ARC_AUTOFP_IRQ_P ( fn_type ) ) { rtx addr = gen_rtx_POST_INC ( Pmode , stack_pointer_rtx ) ; insn = frame_move_inc ( frame_pointer_rtx , gen_frame_mem ( Pmode , addr ) , stack_pointer_rtx , ) ; add_reg_note ( insn , REG_CFA_RESTORE , frame_pointer_rtx ) ; add_reg_note ( insn , REG_CFA_DEF_CFA , plus_constant ( SImode , stack_pointer_rtx , ) ) ; size_to_deallocate -= UNITS_PER_WORD ; } if ( millicode_p ) { int sibthunk_p = ( ! sibcall_p && fn_type == ARC_FUNCTION_NORMAL && ! cfun -> machine -> frame_info . pretend_size ) ; gcc_assert ( ! ( cfun -> machine -> frame_info . gmask & ( FRAME_POINTER_MASK | RETURN_ADDR_MASK ) ) ) ; arc_save_restore ( stack_pointer_rtx , cfun -> machine -> frame_info . gmask , + sibthunk_p , & first_offset ) ; if ( sibthunk_p ) return ; } if ( ( ! SMALL_INT ( first_offset ) && cfun -> machine -> frame_info . gmask && ( ( TARGET_ARC700 && ! optimize_size ) ? first_offset <= : satisfies_constraint_C2a ( GEN_INT ( first_offset ) ) ) ) || ( arc_must_save_return_addr ( cfun ) && ! SMALL_INT ( ( cfun -> machine -> frame_info . reg_size + first_offset ) >> ) && cfun -> machine -> frame_info . gmask ) ) { frame_stack_add ( first_offset ) ; first_offset = ; } if ( arc_must_save_return_addr ( cfun ) && ! ARC_AUTOBLINK_IRQ_P ( fn_type ) ) { rtx ra = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; int ra_offs = cfun -> machine -> frame_info . reg_size + first_offset ; rtx addr = plus_constant ( Pmode , stack_pointer_rtx , ra_offs ) ; HOST_WIDE_INT cfa_adjust = ; if ( ! SMALL_INT ( ra_offs >> ) && ! cfun -> machine -> frame_info . gmask && ( ( TARGET_ARC700 && ! optimize_size ) ? ra_offs <= : satisfies_constraint_C2a ( GEN_INT ( ra_offs ) ) ) ) { size_to_deallocate -= ra_offs - first_offset ; first_offset = ; frame_stack_add ( ra_offs ) ; ra_offs = ;" GCC,arc,321,"Predict the next statement of this code snippet: rtx src = operands [ ] ; rtx dst_addr , src_addr ; HOST_WIDE_INT size ; int align = INTVAL ( operands [ ] ) ; unsigned n_pieces ; int piece = align ; rtx store [ ] ; rtx tmpx [ ] ; int i ; if ( ! CONST_INT_P ( operands [ ] ) ) return false ; size = INTVAL ( operands [ ] ) ; if ( align >= ) { if ( TARGET_LL64 ) n_pieces = ( size + ) / + ( ( size >> ) & ) + ( size & ) ; else n_pieces = ( size + ) / + ( size & ) ; } else if ( align == ) n_pieces = ( size + ) / ; else n_pieces = size ; if ( n_pieces >= ( unsigned int ) ( optimize_size ? : ) ) return false ; if ( TARGET_LL64 && ( piece >= ) && ( size >= ) ) piece = ; else if ( piece > ) piece = ; dst_addr = force_offsettable ( XEXP ( operands [ ] , ) , size , ) ;" GCC,arc,322,"Predict the next statement of this code snippet: store [ ] = store [ ] = NULL_RTX ; tmpx [ ] = tmpx [ ] = NULL_RTX ; for ( i = ; size > ; i ^= , size -= piece ) { rtx tmp ; machine_mode mode ; while ( piece > size ) piece >>= ; mode = smallest_int_mode_for_size ( piece * BITS_PER_UNIT ) ; if ( && tmpx [ i ] && GET_MODE ( tmpx [ i ] ) == mode ) tmp = tmpx [ i ] ; else tmpx [ i ] = tmp = gen_reg_rtx ( mode ) ; dst_addr = force_offsettable ( dst_addr , piece , ) ; src_addr = force_offsettable ( src_addr , piece , ) ; if ( store [ i ] ) emit_insn ( store [ i ] ) ; emit_move_insn ( tmp , change_address ( src , mode , src_addr ) ) ; store [ i ] = gen_move_insn ( change_address ( dst , mode , dst_addr ) , tmp ) ;" GCC,arc,323,"Predict the next statement of this code snippet: asm_fprintf ( asm_out_file , , ATTRIBUTE_PCS ) ; asm_fprintf ( asm_out_file , , TARGET_RF16 ? : ) ; asm_fprintf ( asm_out_file , , flag_pic ? : ) ;" GCC,arc,324,"Predict the next statement of this code snippet: asm_fprintf ( asm_out_file , , ATTRIBUTE_PCS ) ; asm_fprintf ( asm_out_file , , TARGET_RF16 ? : ) ; asm_fprintf ( asm_out_file , , flag_pic ? : ) ; asm_fprintf ( asm_out_file , , ( arc_tp_regno != - ) ? : ) ; asm_fprintf ( asm_out_file , , TARGET_NO_SDATA_SET ? : ) ;" GCC,arc,325,"Predict the next statement of this code snippet: if ( ! cfun -> machine -> prescan_initialized ) { memset ( & arc_ccfsm_current , , sizeof arc_ccfsm_current ) ; cfun -> machine -> prescan_initialized = ;" GCC,arc,326,"Predict the next statement of this code snippet: } if ( TREE_CODE ( * node ) == VAR_DECL ) { tree fntype = TREE_TYPE ( * node ) ; if ( fntype && TREE_CODE ( fntype ) == POINTER_TYPE ) { tree attrs = tree_cons ( get_identifier ( ) , NULL_TREE , TYPE_ATTRIBUTES ( fntype ) ) ; TYPE_ATTRIBUTES ( fntype ) = attrs ; } } }" GCC,arc,327,"Predict the next statement of this code snippet: tree arg = TREE_VALUE ( args ) ; if ( TREE_CODE ( arg ) != INTEGER_CST ) { warning ( , , name ) ; * no_add_attrs = true ; } } if ( TREE_CODE ( * node ) == VAR_DECL ) { tree fntype = TREE_TYPE ( * node ) ; if ( fntype && TREE_CODE ( fntype ) == POINTER_TYPE ) { tree attrs = tree_cons ( get_identifier ( ) , NULL_TREE , TYPE_ATTRIBUTES ( fntype ) ) ; TYPE_ATTRIBUTES ( fntype ) = attrs ; } } }" GCC,arc,328,"Predict the next statement of this code snippet: if ( from == ARG_POINTER_REGNUM && to == FRAME_POINTER_REGNUM ) { return ( cfun -> machine -> frame_info . extra_size + cfun -> machine -> frame_info . reg_size ) ; } if ( from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM ) { return ( cfun -> machine -> frame_info . total_size - cfun -> machine -> frame_info . pretend_size ) ; }" GCC,arc,329,"Predict the next statement of this code snippet: if ( from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM ) { return ( cfun -> machine -> frame_info . total_size - cfun -> machine -> frame_info . pretend_size ) ; }" GCC,arc,330,"Predict the next statement of this code snippet: struct mem_attrs * refattrs ; if ( ! MEM_P ( pat ) ) return false ; refattrs = MEM_ATTRS ( pat ) ; if ( ! refattrs || ! refattrs -> expr ) return false ; ttype = TREE_TYPE ( refattrs -> expr ) ; if ( ! ttype ) return false ; attrs = TYPE_ATTRIBUTES ( ttype ) ; if ( lookup_attribute ( , attrs ) ) return true ;" GCC,arc,331,"Predict the next statement of this code snippet: if ( INSN_P ( next ) && recog_memoized ( next ) >= ) return ; }" GCC,arc,332,"Predict the next statement of this code snippet: if ( align_labels_log < ) {" GCC,arc,333,"Predict the next statement of this code snippet: } if ( ( GET_CODE ( x ) == PRE_DEC || GET_CODE ( x ) == PRE_INC || GET_CODE ( x ) == POST_DEC || GET_CODE ( x ) == POST_INC ) && RTX_OK_FOR_BASE_P ( XEXP ( x , ) , strict ) ) return true ; if ( ( GET_CODE ( x ) == PRE_MODIFY || GET_CODE ( x ) == POST_MODIFY ) && GET_CODE ( XEXP ( ( x ) , ) ) == PLUS && rtx_equal_p ( XEXP ( ( x ) , ) , XEXP ( XEXP ( x , ) , ) ) && legitimate_offset_address_p ( QImode , XEXP ( x , ) , TARGET_AUTO_MODIFY_REG , strict ) ) return true ;" GCC,arc,334,"Predict the next statement of this code snippet: gcc_assert ( CONST_INT_P ( addend ) ) ; HOST_WIDE_INT offset = INTVAL ( addend ) ; return ! ( offset > - && offset < ) ; } if ( ( GET_MODE_SIZE ( mode ) != ) && CONSTANT_P ( x ) ) { return arc_legitimate_constant_p ( mode , x ) ; } if ( ( GET_CODE ( x ) == PRE_DEC || GET_CODE ( x ) == PRE_INC || GET_CODE ( x ) == POST_DEC || GET_CODE ( x ) == POST_INC ) && RTX_OK_FOR_BASE_P ( XEXP ( x , ) , strict ) ) return true ; if ( ( GET_CODE ( x ) == PRE_MODIFY || GET_CODE ( x ) == POST_MODIFY ) && GET_CODE ( XEXP ( ( x ) , ) ) == PLUS && rtx_equal_p ( XEXP ( ( x ) , ) , XEXP ( XEXP ( x , ) , ) ) && legitimate_offset_address_p ( QImode , XEXP ( x , ) , TARGET_AUTO_MODIFY_REG , strict ) ) return true ; return false ;" GCC,arc,335,"Predict the next statement of this code snippet: break ; case : firq_auto_save_p &= ( ( regno < ) || ( ( regno > ) && ( regno < ) ) || ( ( regno > ) && ( regno < ) ) || ( ( regno > ) && ( regno < ) ) ) ; break ; case : firq_auto_save_p &= ( regno != ) && ( regno < ) ; break ; default : firq_auto_save_p = false ;" GCC,arc,336,"Predict the next statement of this code snippet: int shift = ; int this_regno = aggregate_value_p ( TREE_TYPE ( TREE_TYPE ( function ) ) , function ) ? : ; rtx fnaddr ; if ( mi_delta < ) mi_delta = - mi_delta ; while ( mi_delta != ) { if ( ( mi_delta & ( << shift ) ) == ) shift += ; else { asm_fprintf ( file , , mi_op , reg_names [ this_regno ] , reg_names [ this_regno ] , mi_delta & ( << shift ) ) ; mi_delta &= ~ ( << shift ) ; shift += ; } } if ( vcall_offset != ) { asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG , reg_names [ this_regno ] ) ; asm_fprintf ( file , HOST_WIDE_INT_PRINT_DEC , ARC_TEMP_SCRATCH_REG , ARC_TEMP_SCRATCH_REG , vcall_offset ) ; asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG , ARC_TEMP_SCRATCH_REG ) ; asm_fprintf ( file , , reg_names [ this_regno ] , reg_names [ this_regno ] , ARC_TEMP_SCRATCH_REG ) ; } fnaddr = XEXP ( DECL_RTL ( function ) , ) ; if ( arc_is_longcall_p ( fnaddr ) ) { if ( flag_pic ) { asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG ) ; assemble_name ( file , XSTR ( fnaddr , ) ) ; fputs ( , file ) ; asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG ) ; } else { fputs ( , file ) ; assemble_name ( file , XSTR ( fnaddr , ) ) ; } }" GCC,arc,337,"Predict the next statement of this code snippet: int arc_register_move_cost ( machine_mode , enum reg_class from_class , enum reg_class to_class ) { if ( TARGET_ARC600 ) { if ( to_class == MPY_WRITABLE_CORE_REGS ) return ;" GCC,arc,338,"Predict the next statement of this code snippet: else { rtx op , cc_clob_rtx , op0 , op1 , brcc_insn , note ; rtx cmp0 , cmp1 ; op = XEXP ( pc_target , ) ; op0 = cmp0 = XEXP ( SET_SRC ( pat ) , ) ; op1 = cmp1 = XEXP ( SET_SRC ( pat ) , ) ; if ( GET_CODE ( op0 ) == ZERO_EXTRACT && XEXP ( op0 , ) == const1_rtx && ( GET_CODE ( op ) == EQ || GET_CODE ( op ) == NE ) ) { op0 = XEXP ( cmp0 , ) ; op1 = XEXP ( cmp0 , ) ; } else if ( ! register_operand ( op0 , VOIDmode ) || ! general_operand ( op1 , VOIDmode ) ) continue ; else if ( TARGET_SPFP && GET_MODE ( op0 ) == SFmode && GET_MODE ( op1 ) == SFmode ) continue ; if ( reg_set_between_p ( op0 , link_insn , insn ) ) continue ; if ( reg_set_between_p ( op1 , link_insn , insn ) ) continue ; if ( ( reg_set_between_p ( SET_DEST ( pat ) , link_insn , insn ) ) || ( reg_used_between_p ( SET_DEST ( pat ) , link_insn , insn ) ) ) continue ; if ( ! find_regno_note ( insn , REG_DEAD , CC_REG ) ) continue ; op = gen_rtx_fmt_ee ( GET_CODE ( op ) , GET_MODE ( op ) , cmp0 , cmp1 ) ; if ( ! brcc_nolimm_operator ( op , VOIDmode ) && ! long_immediate_operand ( op1 , VOIDmode ) && ( TARGET_ARC700 || next_active_insn ( link_insn ) != insn ) ) continue ; if ( op0 != cmp0 ) cc_clob_rtx = gen_rtx_REG ( CC_ZNmode , CC_REG ) ; else if ( ( offset >= - && offset < ) && rtx_equal_p ( op1 , const0_rtx ) && compact_register_operand ( op0 , VOIDmode ) && ( GET_CODE ( op ) == EQ || GET_CODE ( op ) == NE ) ) cc_clob_rtx = gen_rtx_REG ( CC_Zmode , CC_REG ) ; else cc_clob_rtx = gen_rtx_REG ( CCmode , CC_REG ) ; brcc_insn = gen_rtx_IF_THEN_ELSE ( VOIDmode , op , label , pc_rtx ) ; brcc_insn = gen_rtx_SET ( pc_rtx , brcc_insn ) ; cc_clob_rtx = gen_rtx_CLOBBER ( VOIDmode , cc_clob_rtx ) ; brcc_insn = gen_rtx_PARALLEL ( VOIDmode , gen_rtvec ( , brcc_insn , cc_clob_rtx ) ) ; brcc_insn = emit_jump_insn_before ( brcc_insn , insn ) ; JUMP_LABEL ( brcc_insn ) = JUMP_LABEL ( insn ) ; note = find_reg_note ( insn , REG_BR_PROB , ) ; if ( note ) { XEXP ( note , ) = REG_NOTES ( brcc_insn ) ; REG_NOTES ( brcc_insn ) = note ;" GCC,arc,339,"Predict the next statement of this code snippet: if ( ( ( fn_type & ARC_FUNCTION_ILINK1 ) | ARC_FUNCTION_FIRQ ) != ) regno = ILINK1_REGNUM ; else if ( ( fn_type & ARC_FUNCTION_ILINK2 ) != ) regno = ILINK2_REGNUM ; else gcc_unreachable ( ) ;" GCC,arc,340,"Predict the next statement of this code snippet: rtx arc_rewrite_small_data ( rtx op ) { op = arc_rewrite_small_data_1 ( op ) ; if ( MEM_P ( op ) && ! LEGITIMATE_SMALL_DATA_ADDRESS_P ( XEXP ( op , ) ) ) { rtx addr = XEXP ( op , ) ; rtx tmp = gen_reg_rtx ( Pmode ) ; emit_move_insn ( tmp , addr ) ; op = replace_equiv_address_nv ( op , tmp ) ; } return op ;" GCC,arc,341,"Predict the next statement of this code snippet: iter . skip_subrtxes ( ) ; } else if ( GET_CODE ( * loc ) == PLUS && rtx_equal_p ( XEXP ( * loc , ) , rgp ) ) iter . skip_subrtxes ( ) ; }" GCC,arc,342,"Predict the next statement of this code snippet: rtx addr = NULL_RTX ; x = SUBREG_REG ( x ) ; if ( REG_P ( x ) ) { int regno = REGNO ( x ) ; if ( regno >= FIRST_PSEUDO_REGISTER ) regno = reg_renumber [ regno ] ; if ( regno != - ) return NO_REGS ; if ( reg_equiv_mem ( REGNO ( x ) ) ) { rtx mem = reg_equiv_mem ( REGNO ( x ) ) ; addr = find_replacement ( & XEXP ( mem , ) ) ; } } else { gcc_assert ( MEM_P ( x ) ) ; addr = XEXP ( x , ) ; addr = simplify_rtx ( addr ) ; } if ( addr && GET_CODE ( addr ) == PLUS && CONST_INT_P ( XEXP ( addr , ) ) && ( ! RTX_OK_FOR_OFFSET_P ( mode , XEXP ( addr , ) ) ) ) { switch ( mode ) { case E_QImode : sri -> icode = in_p ? CODE_FOR_reload_qi_load : CODE_FOR_reload_qi_store ;" GCC,arc,343,"Predict the next statement of this code snippet: machine = cfun -> machine ; if ( machine -> force_short_suffix >= ) return machine -> force_short_suffix ; return ( get_attr_length ( insn ) & ) != ;" GCC,arc,344,"Predict the next statement of this code snippet: static int arc_verify_short ( rtx_insn * insn , int , int check_attr ) { enum attr_iscompact iscompact ; struct machine_function * machine ; if ( check_attr > ) { iscompact = get_attr_iscompact ( insn ) ; if ( iscompact == ISCOMPACT_FALSE ) return ; }" GCC,arc,345,"Predict the next statement of this code snippet: size = GET_MODE_SIZE ( mode ) ; if ( size > UNITS_PER_WORD ) return false ; addr = XEXP ( op , ) ; if ( ! LEGITIMATE_SMALL_DATA_ADDRESS_P ( addr ) ) return false ; if ( ! short_p || size == ) return true ; if ( GET_CODE ( XEXP ( addr , ) ) == SYMBOL_REF ) decl = SYMBOL_REF_DECL ( XEXP ( addr , ) ) ; else if ( GET_CODE ( XEXP ( XEXP ( XEXP ( addr , ) , ) , ) ) == SYMBOL_REF ) decl = SYMBOL_REF_DECL ( XEXP ( XEXP ( XEXP ( addr , ) , ) , ) ) ; if ( decl ) align = DECL_ALIGN ( decl ) ; align = align / BITS_PER_UNIT ; switch ( mode ) { case E_HImode : mask = ; break ; default : mask = ;" GCC,arc,346,"Predict the next statement of this code snippet: FOR_EACH_SUBRTX ( iter , array , op , ALL ) { const_rtx x = * iter ;" GCC,arc,347,"Predict the next statement of this code snippet: } case E_CC_Cmode : switch ( GET_CODE ( comparison ) ) { case LTU : return ARC_CC_C ; case GEU : return ARC_CC_NC ; default : gcc_unreachable ( ) ; } case E_CC_FP_GTmode : if ( TARGET_ARGONAUT_SET && TARGET_SPFP ) switch ( GET_CODE ( comparison ) ) { case GT : return ARC_CC_N ; case UNLE : return ARC_CC_P ; default : gcc_unreachable ( ) ; } else switch ( GET_CODE ( comparison ) ) { case GT : return ARC_CC_HI ; case UNLE : return ARC_CC_LS ; default : gcc_unreachable ( ) ; } case E_CC_FP_GEmode : switch ( GET_CODE ( comparison ) ) { case GE : return ARC_CC_HS ; case UNLT : return ARC_CC_LO ; default : gcc_unreachable ( ) ; } case E_CC_FP_UNEQmode : switch ( GET_CODE ( comparison ) ) { case UNEQ : return ARC_CC_EQ ; case LTGT : return ARC_CC_NE ; default : gcc_unreachable ( ) ; } case E_CC_FP_ORDmode : switch ( GET_CODE ( comparison ) ) { case UNORDERED : return ARC_CC_C ; case ORDERED : return ARC_CC_NC ; default : gcc_unreachable ( ) ; } case E_CC_FPXmode : switch ( GET_CODE ( comparison ) ) { case EQ : return ARC_CC_EQ ; case NE : return ARC_CC_NE ; case UNORDERED : return ARC_CC_C ;" GCC,arc,348,"Predict the next statement of this code snippet: return ; } if ( ! ( last & ) ) { warning ( , , dash + ) ; return ; } * dash = '-' ; if ( first > last ) { warning ( , , str , dash + ) ; return ; } while ( comma ) { * comma = ',' ; str = comma + ; comma = strchr ( str , ',' ) ; if ( comma ) * comma = '\0' ; xreg = decode_reg_name ( str ) ; switch ( xreg ) { case : blink = ; break ; case : lpcount = ; break ; default : warning ( , , str ) ; return ; }" GCC,arc,349,"Predict the next statement of this code snippet: } if ( ! strcmp ( dash + , ) ) last = ; else last = decode_reg_name ( dash + ) ; if ( last < ) { warning ( , , dash + ) ; return ; } if ( ! ( last & ) ) { warning ( , , dash + ) ; return ; } * dash = '-' ; if ( first > last ) { warning ( , , str , dash + ) ; return ; } while ( comma ) { * comma = ',' ; str = comma + ; comma = strchr ( str , ',' ) ; if ( comma ) * comma = '\0' ; xreg = decode_reg_name ( str ) ; switch ( xreg ) { case :" GCC,arc,350,"Predict the next statement of this code snippet: static void parse_mrgf_banked_regs_option ( const char * arg ) { long int val ; char * end_ptr ; errno = ; val = strtol ( arg , & end_ptr , ) ; if ( errno != || * arg == '\0' || * end_ptr != '\0' || ( val != && val != && val != && val != && val != ) ) { error ( , arg ) ;" GCC,arc,351,"Predict the next statement of this code snippet: val = strtol ( arg , & end_ptr , ) ; if ( errno != || * arg == '\0' || * end_ptr != '\0' || ( val != && val != && val != && val != && val != ) ) { error ( , arg ) ;" GCC,arc,352,"Predict the next statement of this code snippet: tmp = XEXP ( operands [ ] , ) ; } operands [ ] = force_reg ( SImode , operands [ ] ) ; emit_insn ( gen_rtx_UNSPEC_VOLATILE ( VOIDmode , gen_rtvec ( , operands [ ] , tmp ) , VUNSPEC_ARC_SR ) ) ; return true ; } if ( MEM_P ( operands [ ] ) && arc_is_aux_reg_p ( operands [ ] ) ) { if ( arc_get_aux_arg ( operands [ ] , & auxr ) ) { tmp = gen_reg_rtx ( SImode ) ; emit_move_insn ( tmp , GEN_INT ( auxr ) ) ; } else { tmp = XEXP ( operands [ ] , ) ; gcc_assert ( GET_CODE ( tmp ) == SYMBOL_REF ) ; } gcc_assert ( REG_P ( operands [ ] ) ) ; emit_insn ( gen_rtx_SET ( operands [ ] , gen_rtx_UNSPEC_VOLATILE ( SImode , gen_rtvec ( , tmp ) , VUNSPEC_ARC_LR ) ) ) ; return true ; } } if ( ! TARGET_NO_SDATA_SET && small_data_pattern ( operands [ ] , Pmode ) ) operands [ ] = arc_rewrite_small_data ( operands [ ] ) ; if ( mode == SImode && SYMBOLIC_CONST ( operands [ ] ) ) { prepare_pic_move ( operands , SImode ) ; } if ( GET_CODE ( operands [ ] ) != MEM && ! TARGET_NO_SDATA_SET && small_data_pattern ( operands [ ] , Pmode ) ) { operands [ ] = arc_rewrite_small_data ( operands [ ] ) ; emit_insn ( gen_rtx_SET ( operands [ ] , operands [ ] ) ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , operands [ ] ) ; emit_move_insn ( operands [ ] , operands [ ] ) ; return true ; } if ( MEM_P ( operands [ ] ) && ! ( reload_in_progress || reload_completed ) ) { operands [ ] = force_reg ( mode , operands [ ] ) ; if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ; if ( pat ) { pat = change_address ( operands [ ] , mode , pat ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } } } if ( MEM_P ( operands [ ] ) && ! cse_not_expected ) {" GCC,arc,353,"Predict the next statement of this code snippet: if ( ! TARGET_NO_SDATA_SET && small_data_pattern ( operands [ ] , Pmode ) ) operands [ ] = arc_rewrite_small_data ( operands [ ] ) ; if ( mode == SImode && SYMBOLIC_CONST ( operands [ ] ) ) { prepare_pic_move ( operands , SImode ) ; } if ( GET_CODE ( operands [ ] ) != MEM && ! TARGET_NO_SDATA_SET && small_data_pattern ( operands [ ] , Pmode ) ) { operands [ ] = arc_rewrite_small_data ( operands [ ] ) ; emit_insn ( gen_rtx_SET ( operands [ ] , operands [ ] ) ) ; set_unique_reg_note ( get_last_insn ( ) , REG_EQUAL , operands [ ] ) ; emit_move_insn ( operands [ ] , operands [ ] ) ; return true ; } if ( MEM_P ( operands [ ] ) && ! ( reload_in_progress || reload_completed ) ) { operands [ ] = force_reg ( mode , operands [ ] ) ; if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ; if ( pat ) { pat = change_address ( operands [ ] , mode , pat ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; }" GCC,arc,354,"Predict the next statement of this code snippet: const_rtx x = * iter ;" GCC,arc,355,"Predict the next statement of this code snippet: static rtx arc_builtin_setjmp_frame_value ( void ) {" GCC,arc,356,"Predict the next statement of this code snippet: if ( cfun -> machine -> frame_info . initialized ) return cfun -> machine -> frame_info . total_size ; frame_info = & cfun -> machine -> frame_info ; size = ARC_STACK_ALIGN ( get_frame_size ( ) ) ; var_size = size ; args_size = crtl -> outgoing_args_size ; reg_size = ; gmask = ; for ( regno = ; regno <= ; regno ++ ) { if ( arc_must_save_register ( regno , cfun ) ) { reg_size += UNITS_PER_WORD ; gmask |= << regno ; } } if ( crtl -> calls_eh_return ) for ( regno = ; EH_RETURN_DATA_REGNO ( regno ) != INVALID_REGNUM ; regno ++ ) { reg_size += UNITS_PER_WORD ; gmask |= << regno ; } frame_info -> save_return_addr = ( ! crtl -> is_leaf || df_regs_ever_live_p ( RETURN_ADDR_REGNUM ) || crtl -> calls_eh_return ) ; if ( TARGET_MILLICODE_THUNK_SET && ! crtl -> calls_eh_return ) { if ( arc_compute_millicode_save_restore_regs ( gmask , frame_info ) ) frame_info -> save_return_addr = true ; } extra_size = ; if ( arc_must_save_return_addr ( cfun ) ) extra_size = ;" GCC,arc,357,"Predict the next statement of this code snippet: gmask |= << regno ; } frame_info -> save_return_addr = ( ! crtl -> is_leaf || df_regs_ever_live_p ( RETURN_ADDR_REGNUM ) || crtl -> calls_eh_return ) ; if ( TARGET_MILLICODE_THUNK_SET && ! crtl -> calls_eh_return ) { if ( arc_compute_millicode_save_restore_regs ( gmask , frame_info ) ) frame_info -> save_return_addr = true ; } extra_size = ; if ( arc_must_save_return_addr ( cfun ) ) extra_size = ; if ( arc_frame_pointer_needed ( ) ) extra_size += ; pretend_size = crtl -> args . pretend_args_size ; extra_plus_reg_size = extra_size + reg_size ; extra_plus_reg_size_aligned = ARC_STACK_ALIGN ( extra_plus_reg_size ) ; reg_size = extra_plus_reg_size_aligned - extra_size ; total_size = var_size + args_size + extra_size + pretend_size + reg_size ; gcc_assert ( total_size == ARC_STACK_ALIGN ( total_size ) ) ; frame_info -> total_size = total_size ; frame_info -> extra_size = extra_size ; frame_info -> pretend_size = pretend_size ;" GCC,arc,358,"Predict the next statement of this code snippet: for ( i = R16_REG ; i <= R25_REG ; i ++ ) fixed_regs [ i ] = call_used_regs [ i ] = ; } if ( TARGET_HS ) for ( regno = R1_REG ; regno < R32_REG ; regno += ) arc_hard_regno_modes [ regno ] = S_MODES ; for ( i = ; i < FIRST_PSEUDO_REGISTER ; i ++ ) if ( i < ILINK1_REG ) { if ( ( TARGET_Q_CLASS || TARGET_RRQ_CLASS ) && ( ( i <= R3_REG ) || ( ( i >= R12_REG ) && ( i <= R15_REG ) ) ) ) arc_regno_reg_class [ i ] = ARCOMPACT16_REGS ; else arc_regno_reg_class [ i ] = GENERAL_REGS ; } else if ( i < LP_COUNT ) arc_regno_reg_class [ i ] = GENERAL_REGS ; else arc_regno_reg_class [ i ] = NO_REGS ; arc_regno_reg_class [ CC_REG ] = NO_REGS ; arc_regno_reg_class [ FRAME_POINTER_REGNUM ] = GENERAL_REGS ; arc_regno_reg_class [ ARG_POINTER_REGNUM ] = GENERAL_REGS ; if ( TARGET_DPFP ) for ( i = R40_REG ; i < R44_REG ; ++ i ) { arc_regno_reg_class [ i ] = DOUBLE_REGS ; if ( ! TARGET_ARGONAUT_SET ) CLEAR_HARD_REG_BIT ( reg_class_contents [ GENERAL_REGS ] , i ) ; } else { arc_regno_reg_class [ R40_REG ] = ALL_REGS ; arc_regno_reg_class [ R41_REG ] = ALL_REGS ; arc_regno_reg_class [ R42_REG ] = ALL_REGS ; arc_regno_reg_class [ R43_REG ] = ALL_REGS ; fixed_regs [ R40_REG ] = ; fixed_regs [ R41_REG ] = ; fixed_regs [ R42_REG ] = ; fixed_regs [ R43_REG ] = ; arc_hard_regno_modes [ R40_REG ] = ; arc_hard_regno_modes [ R42_REG ] = ; } if ( TARGET_SIMD_SET ) { gcc_assert ( ARC_FIRST_SIMD_VR_REG == ) ; gcc_assert ( ARC_LAST_SIMD_VR_REG == ) ; for ( i = ARC_FIRST_SIMD_VR_REG ; i <= ARC_LAST_SIMD_VR_REG ; i ++ ) arc_regno_reg_class [ i ] = SIMD_VR_REGS ; gcc_assert ( ARC_FIRST_SIMD_DMA_CONFIG_REG == ) ; gcc_assert ( ARC_FIRST_SIMD_DMA_CONFIG_IN_REG == ) ; gcc_assert ( ARC_FIRST_SIMD_DMA_CONFIG_OUT_REG == ) ; gcc_assert ( ARC_LAST_SIMD_DMA_CONFIG_REG == ) ; for ( i = ARC_FIRST_SIMD_DMA_CONFIG_REG ; i <= ARC_LAST_SIMD_DMA_CONFIG_REG ; i ++ ) arc_regno_reg_class [ i ] = SIMD_DMA_CONFIG_REGS ; } arc_regno_reg_class [ PCL_REG ] = NO_REGS ;" GCC,arc,359,"Predict the next statement of this code snippet: static bool arc_enter_leave_p ( unsigned int gmask ) { int regno ; unsigned int rmask = ; if ( ! gmask ) return false ; for ( regno = ENTER_LEAVE_START_REG ; regno <= ENTER_LEAVE_END_REG && ( gmask & ( << regno ) ) ; regno ++ ) rmask |= << regno ; if ( rmask ^ gmask ) return false ; return true ;" GCC,arc,360,"Predict the next statement of this code snippet: if ( ! gmask ) return false ; for ( regno = ENTER_LEAVE_START_REG ; regno <= ENTER_LEAVE_END_REG && ( gmask & ( << regno ) ) ; regno ++ ) rmask |= << regno ; if ( rmask ^ gmask ) return false ;" GCC,arc,361,"Predict the next statement of this code snippet: int can_trust_sp_p = ! cfun -> calls_alloca ; int first_offset ; bool restore_fp = arc_frame_pointer_needed ( ) && ! ARC_AUTOFP_IRQ_P ( fn_type ) ; bool restore_blink = arc_must_save_return_addr ( cfun ) && ! ARC_AUTOBLINK_IRQ_P ( fn_type ) ; unsigned int gmask = cfun -> machine -> frame_info . gmask ; bool return_p = ! sibcall_p && fn_type == ARC_FUNCTION_NORMAL && ! cfun -> machine -> frame_info . pretend_size ; struct arc_frame_info * frame = & cfun -> machine -> frame_info ; if ( ARC_NAKED_P ( fn_type ) ) return ; size = arc_compute_frame_size ( ) ; size_to_deallocate = size ; first_offset = size - ( frame -> pretend_size + frame -> reg_size + frame -> extra_size ) ; if ( ! can_trust_sp_p ) gcc_assert ( arc_frame_pointer_needed ( ) ) ; if ( size ) emit_insn ( gen_blockage ( ) ) ; if ( TARGET_CODE_DENSITY && TARGET_CODE_DENSITY_FRAME && ! ARC_AUTOFP_IRQ_P ( fn_type ) && ! ARC_AUTOBLINK_IRQ_P ( fn_type ) && ! ARC_INTERRUPT_P ( fn_type ) && arc_enter_leave_p ( gmask ) ) { size_to_deallocate -= arc_restore_callee_leave ( gmask , restore_blink , restore_fp , return_p , first_offset ) ; if ( return_p ) { gcc_assert ( size_to_deallocate == ) ; return ; } } else if ( frame -> millicode_end_reg > ) { size_to_deallocate -= arc_restore_callee_milli ( gmask , restore_blink , restore_fp , return_p , first_offset ) ; if ( return_p ) { gcc_assert ( size_to_deallocate == ) ; return ; }" GCC,arc,362,"Predict the next statement of this code snippet: if ( TARGET_CODE_DENSITY && TARGET_CODE_DENSITY_FRAME && ! ARC_AUTOFP_IRQ_P ( fn_type ) && ! ARC_AUTOBLINK_IRQ_P ( fn_type ) && ! ARC_INTERRUPT_P ( fn_type ) && arc_enter_leave_p ( gmask ) ) { size_to_deallocate -= arc_restore_callee_leave ( gmask , restore_blink , restore_fp , return_p , first_offset ) ; if ( return_p ) { gcc_assert ( size_to_deallocate == ) ; return ; } } else if ( frame -> millicode_end_reg > ) { size_to_deallocate -= arc_restore_callee_milli ( gmask , restore_blink , restore_fp , return_p , first_offset ) ; if ( return_p ) { gcc_assert ( size_to_deallocate == ) ; return ; }" GCC,arc,363,"Predict the next statement of this code snippet: frame_size_to_allocate = size ; gcc_assert ( ! ( size == && gmask ) ) ; if ( frame -> pretend_size != ) first_offset = - frame -> pretend_size ; if ( ARC_AUTO_IRQ_P ( fn_type ) && ! ARC_FAST_INTERRUPT_P ( fn_type ) ) { frame_stack_add ( first_offset ) ; first_offset = ; arc_dwarf_emit_irq_save_regs ( ) ; } save_blink = arc_must_save_return_addr ( cfun ) && ! ARC_AUTOBLINK_IRQ_P ( fn_type ) ; save_fp = arc_frame_pointer_needed ( ) && ! ARC_AUTOFP_IRQ_P ( fn_type ) ; if ( TARGET_CODE_DENSITY && TARGET_CODE_DENSITY_FRAME && ! ARC_AUTOFP_IRQ_P ( fn_type ) && ! ARC_AUTOBLINK_IRQ_P ( fn_type ) && ! ARC_INTERRUPT_P ( fn_type ) && arc_enter_leave_p ( gmask ) ) frame_size_to_allocate -= arc_save_callee_enter ( gmask , save_blink , save_fp , first_offset ) ; else if ( frame -> millicode_end_reg > ) frame_size_to_allocate -= arc_save_callee_milli ( gmask , save_blink , save_fp , first_offset , frame -> reg_size ) ; else frame_size_to_allocate -= arc_save_callee_saves ( gmask , save_blink , save_fp , first_offset ) ; if ( frame_size_to_allocate > ) frame_stack_add ( ( HOST_WIDE_INT ) - frame_size_to_allocate ) ;" GCC,arc,364,"Predict the next statement of this code snippet: arc_punct_chars [ '&' ] = ; arc_punct_chars [ '+' ] = ; arc_punct_chars [ '_' ] = ; if ( optimize > && ! TARGET_NO_COND_EXEC ) { opt_pass * pass_arc_ifcvt_4 = make_pass_arc_ifcvt ( g ) ; struct register_pass_info arc_ifcvt4_info = { pass_arc_ifcvt_4 , , , PASS_POS_INSERT_AFTER } ; struct register_pass_info arc_ifcvt5_info = { pass_arc_ifcvt_4 -> clone ( ) , , , PASS_POS_INSERT_BEFORE } ; register_pass ( & arc_ifcvt4_info ) ; register_pass ( & arc_ifcvt5_info ) ; } if ( flag_delayed_branch ) { opt_pass * pass_arc_predicate_delay_insns = make_pass_arc_predicate_delay_insns ( g ) ;" GCC,arc,365,"Predict the next statement of this code snippet: arc_multcost = COSTS_N_INSNS ( ) ; if ( TARGET_NOMPY_SET ) arc_multcost = COSTS_N_INSNS ( ) ; break ; case ARC_TUNE_ARC700_4_2_XMAC : arc_multcost = COSTS_N_INSNS ( ) ; if ( TARGET_NOMPY_SET ) arc_multcost = COSTS_N_INSNS ( ) ; break ; case ARC_TUNE_ARC600 : if ( TARGET_MUL64_SET ) { arc_multcost = COSTS_N_INSNS ( ) ; break ; } default : arc_multcost = COSTS_N_INSNS ( ) ; break ; } if ( TARGET_NOMPY_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ! TARGET_DPFP && TARGET_DPFP_DISABLE_LRSR ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET && TARGET_DPFP_COMPACT_SET ) || ( TARGET_SPFP_FAST_SET && TARGET_SPFP_COMPACT_SET ) ) error ( ) ; if ( TARGET_SPFP_FAST_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET || TARGET_DPFP_COMPACT_SET || TARGET_SPFP ) && TARGET_HARD_FLOAT ) error ( ) ; if ( flag_pic && TARGET_ARC600_FAMILY ) { warning ( , , arc_cpu_string ) ; flag_pic = ; } arc_init_reg_tables ( ) ; memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ; arc_punct_chars [ '*' ] = ; arc_punct_chars [ '?' ] = ; arc_punct_chars [ '!' ] = ; arc_punct_chars [ '^' ] = ; arc_punct_chars [ '&' ] = ; arc_punct_chars [ '+' ] = ; arc_punct_chars [ '_' ] = ;" GCC,arc,366,"Predict the next statement of this code snippet: attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; if ( lookup_attribute ( , attrs ) ) return true ; } if ( TREE_CODE ( addr ) == COMPONENT_REF ) { attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; if ( lookup_attribute ( , attrs ) ) return true ;" GCC,arc,367,"Predict the next statement of this code snippet: if ( ( GET_MODE_SIZE ( mode ) != ) && CONSTANT_P ( x ) ) { return arc_legitimate_constant_p ( mode , x ) ; } if ( ( GET_CODE ( x ) == PRE_DEC || GET_CODE ( x ) == PRE_INC || GET_CODE ( x ) == POST_DEC || GET_CODE ( x ) == POST_INC ) && RTX_OK_FOR_BASE_P ( XEXP ( x , ) , strict ) ) return true ; if ( ( GET_CODE ( x ) == PRE_MODIFY || GET_CODE ( x ) == POST_MODIFY ) && GET_CODE ( XEXP ( ( x ) , ) ) == PLUS && rtx_equal_p ( XEXP ( ( x ) , ) , XEXP ( XEXP ( x , ) , ) ) && legitimate_offset_address_p ( QImode , XEXP ( x , ) , TARGET_AUTO_MODIFY_REG , strict ) ) return true ;" GCC,arc,368,"Predict the next statement of this code snippet: HOST_WIDE_INT offset = INTVAL ( addend ) ; return ! ( offset > - && offset < ) ; } if ( ( GET_MODE_SIZE ( mode ) != ) && CONSTANT_P ( x ) ) { return arc_legitimate_constant_p ( mode , x ) ; } if ( ( GET_CODE ( x ) == PRE_DEC || GET_CODE ( x ) == PRE_INC || GET_CODE ( x ) == POST_DEC || GET_CODE ( x ) == POST_INC ) && RTX_OK_FOR_BASE_P ( XEXP ( x , ) , strict ) ) return true ;" GCC,arc,369,"Predict the next statement of this code snippet: bool firq_auto_save_p = ARC_FAST_INTERRUPT_P ( fn_type ) ; switch ( rgf_banked_register_count ) { case : firq_auto_save_p &= ( regno < ) ; break ; case : firq_auto_save_p &= ( ( regno < ) || ( ( regno > ) && ( regno < ) ) ) ; break ; case :" GCC,arc,370,"Predict the next statement of this code snippet: reg = gen_rtx_SET ( stack_pointer_rtx , plus_constant ( Pmode , stack_pointer_rtx , offset + nregs * UNITS_PER_WORD ) ) ; RTX_FRAME_RELATED_P ( reg ) = ; XVECEXP ( insn , , indx ++ ) = reg ; off = nregs * UNITS_PER_WORD ; if ( restore_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( reg , mem ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ; } for ( regno = start_reg ; regno <= end_reg ; regno ++ , indx ++ , off -= UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( reg , mem ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ) ) = ; gmask = gmask & ~ ( << regno ) ; } if ( restore_fp ) { mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( hard_frame_pointer_rtx , mem ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ; } gcc_assert ( off == ) ; if ( return_p ) { insn = emit_jump_insn ( insn ) ; RTX_FRAME_RELATED_P ( insn ) = ; } else insn = frame_insn ( insn ) ; add_reg_note ( insn , REG_INC , stack_pointer_rtx ) ; if ( restore_fp ) { add_reg_note ( insn , REG_CFA_RESTORE , hard_frame_pointer_rtx ) ; add_reg_note ( insn , REG_CFA_DEF_CFA , plus_constant ( Pmode , stack_pointer_rtx , offset + nregs * UNITS_PER_WORD ) ) ; } else { add_reg_note ( insn , REG_CFA_ADJUST_CFA , gen_rtx_SET ( stack_pointer_rtx , plus_constant ( Pmode , stack_pointer_rtx , nregs * UNITS_PER_WORD ) ) ) ;" GCC,arc,371,"Predict the next statement of this code snippet: regno <= end_reg ; regno ++ , indx ++ , off += UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( reg , mem ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ) ) = ; gmask = gmask & ~ ( << regno ) ; } for ( regno = ; regno <= ; regno ++ ) { if ( ( gmask & ( << regno ) ) == ) continue ; reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; rtx tmp = frame_move_inc ( reg , mem , stack_pointer_rtx , ) ; add_reg_note ( tmp , REG_CFA_RESTORE , reg ) ; off += UNITS_PER_WORD ; } if ( return_p ) { reg = gen_rtx_REG ( Pmode , ) ; frame_insn ( gen_rtx_SET ( reg , GEN_INT ( off ) ) ) ; frame_allocated += off ; insn = emit_jump_insn ( insn ) ; RTX_FRAME_RELATED_P ( insn ) = ; } else insn = frame_insn ( insn ) ; for ( regno = start_reg ; regno <= end_reg ; regno ++ ) { reg = gen_rtx_REG ( SImode , regno ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ; } if ( restore_blink && ! return_p ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; insn = frame_insn ( gen_rtx_SET ( reg , mem ) ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ;" GCC,arc,372,"Predict the next statement of this code snippet: HOST_WIDE_INT offs = cfun -> machine -> frame_info . reg_size ; bool early_blink_restore ; if ( arc_frame_pointer_needed ( ) && offset ) { frame_move ( stack_pointer_rtx , hard_frame_pointer_rtx ) ; frame_deallocated += offset ; offset = ; } if ( restore_fp ) { gcc_assert ( offset == ) ; frame_deallocated += frame_restore_reg ( hard_frame_pointer_rtx , ) ; } if ( offset ) { frame_stack_add ( offset ) ; frame_deallocated += offset ; offset = ; } early_blink_restore = restore_blink && ! optimize_size && offs ; if ( early_blink_restore ) { rtx addr = plus_constant ( Pmode , stack_pointer_rtx , offs ) ; reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; rtx insn = frame_move_inc ( reg , gen_frame_mem ( Pmode , addr ) , stack_pointer_rtx , NULL_RTX ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ; restore_blink = false ; } if ( gmask ) for ( int i = ; i <= GMASK_LEN ; i ++ ) { machine_mode restore_mode = SImode ; if ( TARGET_LL64 && ( ( i % ) == ) && ( ( gmask & ( << i ) ) != ) && ( ( gmask & ( << ( i + ) ) ) != ) ) restore_mode = DImode ; else if ( ( gmask & ( << i ) ) == ) continue ; reg = gen_rtx_REG ( restore_mode , i ) ; offs = ; switch ( restore_mode ) { case E_DImode : if ( ( GMASK_LEN - __builtin_clz ( gmask ) ) == ( i + ) && early_blink_restore ) offs = ; break ; case E_SImode : if ( ( GMASK_LEN - __builtin_clz ( gmask ) ) == i && early_blink_restore ) offs = ; break ; default : offs = ; } frame_deallocated += frame_restore_reg ( reg , offs ) ;" GCC,arc,373,"Predict the next statement of this code snippet: gcc_assert ( offset == ) ; frame_deallocated += frame_restore_reg ( hard_frame_pointer_rtx , ) ; } if ( offset ) { frame_stack_add ( offset ) ; frame_deallocated += offset ; offset = ; } early_blink_restore = restore_blink && ! optimize_size && offs ; if ( early_blink_restore ) { rtx addr = plus_constant ( Pmode , stack_pointer_rtx , offs ) ; reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; rtx insn = frame_move_inc ( reg , gen_frame_mem ( Pmode , addr ) , stack_pointer_rtx , NULL_RTX ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ; restore_blink = false ; } if ( gmask ) for ( int i = ; i <= GMASK_LEN ; i ++ ) { machine_mode restore_mode = SImode ; if ( TARGET_LL64 && ( ( i % ) == ) && ( ( gmask & ( << i ) ) != ) && ( ( gmask & ( << ( i + ) ) ) != ) ) restore_mode = DImode ; else if ( ( gmask & ( << i ) ) == ) continue ; reg = gen_rtx_REG ( restore_mode , i ) ;" GCC,arc,374,"Predict the next statement of this code snippet: if ( ( fn_type & ( ARC_FUNCTION_ILINK1 | ARC_FUNCTION_FIRQ ) ) != ) regno = ILINK1_REG ; else if ( ( fn_type & ARC_FUNCTION_ILINK2 ) != ) regno = ILINK2_REG ; else gcc_unreachable ( ) ; } else if ( ARC_NORMAL_P ( fn_type ) || ARC_NAKED_P ( fn_type ) ) regno = RETURN_ADDR_REGNUM ;" GCC,arc,375,"Predict the next statement of this code snippet: else gcc_unreachable ( ) ; } else if ( ARC_NORMAL_P ( fn_type ) || ARC_NAKED_P ( fn_type ) ) regno = RETURN_ADDR_REGNUM ;" GCC,arc,376,"Predict the next statement of this code snippet: int start_reg = ENTER_LEAVE_START_REG ; int end_reg = ENTER_LEAVE_END_REG ; int regno , indx , off , nregs ; rtx insn , reg , mem ; int frame_allocated = ; for ( regno = start_reg ; regno <= end_reg && ( gmask & ( << regno ) ) ; ) regno ++ ; end_reg = regno - ; nregs = end_reg - start_reg + ; nregs += save_blink ? : ; nregs += save_fp ? : ; if ( offset ) frame_stack_add ( offset ) ; insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( nregs + ( save_fp ? : ) + ) ) ; indx = ; reg = gen_rtx_SET ( stack_pointer_rtx , plus_constant ( Pmode , stack_pointer_rtx , - nregs * UNITS_PER_WORD ) ) ; RTX_FRAME_RELATED_P ( reg ) = ; XVECEXP ( insn , , indx ++ ) = reg ; off = nregs * UNITS_PER_WORD ; if ( save_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ;" GCC,arc,377,"Predict the next statement of this code snippet: int end_reg = ; int regno , indx , off , nregs ; rtx insn , reg , mem ; int frame_allocated = ; for ( regno = start_reg ; regno <= end_reg && ( gmask & ( << regno ) ) ; ) regno ++ ; end_reg = regno - ; nregs = end_reg - start_reg + ; gcc_assert ( end_reg > ) ; if ( save_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; frame_allocated += frame_save_reg ( reg , offset ) ; offset = ; } if ( reg_size || offset ) { frame_stack_add ( offset - reg_size ) ; frame_allocated += nregs * UNITS_PER_WORD - offset ; offset = ; } insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( nregs + ) ) ; indx = ; XVECEXP ( insn , , nregs ) = gen_rtx_CLOBBER ( VOIDmode , gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ) ; for ( regno = start_reg , indx = , off = ; regno <= end_reg ; regno ++ , indx ++ , off += UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ;" GCC,arc,378,"Predict the next statement of this code snippet: RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ) ) = ; gmask = gmask & ~ ( << regno ) ; } insn = frame_insn ( insn ) ; for ( regno = start_reg , off = ; regno <= end_reg ; regno ++ , off += UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_rtx_MEM ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; add_reg_note ( insn , REG_CFA_OFFSET , gen_rtx_SET ( mem , reg ) ) ; } if ( arc_must_save_return_addr ( cfun ) ) { emit_insn ( gen_rtx_SET ( gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) , gen_rtx_MEM ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , reg_size ) ) ) ) ; } for ( regno = ; regno <= ; regno ++ ) {" GCC,arc,379,"Predict the next statement of this code snippet: if ( gmask ) for ( int i = ; i >= ; i -- ) { machine_mode save_mode = SImode ; if ( TARGET_LL64 && ( ( i - ) % == ) && ( ( gmask & ( << i ) ) != ) && ( ( gmask & ( << ( i - ) ) ) != ) ) { save_mode = DImode ; -- i ; } else if ( ( gmask & ( << i ) ) == ) continue ; reg = gen_rtx_REG ( save_mode , i ) ; frame_allocated += frame_save_reg ( reg , offset ) ; offset = ; } if ( save_fp ) {" GCC,arc,380,"Predict the next statement of this code snippet: machine_mode save_mode = SImode ; if ( TARGET_LL64 && ( ( i - ) % == ) && ( ( gmask & ( << i ) ) != ) && ( ( gmask & ( << ( i - ) ) ) != ) ) { save_mode = DImode ; -- i ; }" GCC,arc,381,"Predict the next statement of this code snippet: if ( GET_CODE ( op ) != MEM ) return false ; if ( mode == VOIDmode ) mode = GET_MODE ( op ) ; size = GET_MODE_SIZE ( mode ) ; if ( size > UNITS_PER_WORD ) return false ; addr = XEXP ( op , ) ; if ( ! legitimate_small_data_address_p ( addr ) ) return false ; if ( ! short_p || size == ) return true ; align = get_symbol_alignment ( addr ) ; switch ( mode ) { case E_HImode : mask = ; break ; default :" GCC,arc,382,"Predict the next statement of this code snippet: case : if ( INTVAL ( XEXP ( XEXP ( op , ) , ) ) != ) return false ; default : return false ; } if ( RTX_OK_FOR_BASE_P ( XEXP ( op , ) , ( strict ) ) ) return true ; if ( flag_pic ) { if ( CONST_INT_P ( XEXP ( op , ) ) ) return true ; return false ; } if ( legitimate_small_data_address_p ( op ) ) return false ; if ( CONSTANT_P ( XEXP ( op , ) ) ) return true ; return false ;" GCC,arc,383,"Predict the next statement of this code snippet: switch ( GET_CODE ( x ) ) { case CONST : return legitimate_small_data_address_p ( XEXP ( x , ) ) ; case SYMBOL_REF : return SYMBOL_REF_SMALL_P ( x ) ; case PLUS : { bool p0 = ( GET_CODE ( XEXP ( x , ) ) == SYMBOL_REF ) && SYMBOL_REF_SMALL_P ( XEXP ( x , ) ) ; bool p1 = CONST_INT_P ( XEXP ( x , ) ) && ( INTVAL ( XEXP ( x , ) ) <= g_switch_value ) ; return p0 && p1 ; } default :" GCC,arc,384,"Predict the next statement of this code snippet: static bool legitimate_small_data_address_p ( rtx x ) { switch ( GET_CODE ( x ) ) { case CONST : return legitimate_small_data_address_p ( XEXP ( x , ) ) ; case SYMBOL_REF : return SYMBOL_REF_SMALL_P ( x ) ; case PLUS : { bool p0 = ( GET_CODE ( XEXP ( x , ) ) == SYMBOL_REF ) && SYMBOL_REF_SMALL_P ( XEXP ( x , ) ) ; bool p1 = CONST_INT_P ( XEXP ( x , ) ) && ( INTVAL ( XEXP ( x , ) ) <= g_switch_value ) ; return p0 && p1 ; } default : return false ; }" GCC,arc,385,"Predict the next statement of this code snippet: } if ( MEM_P ( operands [ ] ) && arc_is_aux_reg_p ( operands [ ] ) ) { if ( arc_get_aux_arg ( operands [ ] , & auxr ) ) { tmp = gen_reg_rtx ( SImode ) ; emit_move_insn ( tmp , GEN_INT ( auxr ) ) ; } else { tmp = XEXP ( operands [ ] , ) ; gcc_assert ( GET_CODE ( tmp ) == SYMBOL_REF ) ; } gcc_assert ( REG_P ( operands [ ] ) ) ; emit_insn ( gen_rtx_SET ( operands [ ] , gen_rtx_UNSPEC_VOLATILE ( SImode , gen_rtvec ( , tmp ) , VUNSPEC_ARC_LR ) ) ) ; return true ; } } if ( mode == SImode && SYMBOLIC_CONST ( operands [ ] ) ) { prepare_pic_move ( operands , SImode ) ; } if ( MEM_P ( operands [ ] ) && ! ( reload_in_progress || reload_completed ) ) { operands [ ] = force_reg ( mode , operands [ ] ) ; if ( ! move_dest_operand ( operands [ ] , mode ) ) { rtx addr = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx pat = change_address ( operands [ ] , mode , addr ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } if ( ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ; if ( pat ) { pat = change_address ( operands [ ] , mode , pat ) ; MEM_COPY_ATTRIBUTES ( pat , operands [ ] ) ; operands [ ] = pat ; } } } if ( MEM_P ( operands [ ] ) && ! cse_not_expected ) { rtx pat = XEXP ( operands [ ] , ) ; pat = arc_legitimize_address_0 ( pat , pat , mode ) ;" GCC,arc,386,"Predict the next statement of this code snippet: return GEN_FCN ( icode ) ( arg [ ] ) ; case : return GEN_FCN ( icode ) ( arg [ ] , arg [ ] ) ; case :" GCC,arc,387,"Predict the next statement of this code snippet: return GEN_FCN ( icode ) ( arg [ ] , arg [ ] ) ; case : return GEN_FCN ( icode ) ( arg [ ] , arg [ ] , arg [ ] ) ; case : return GEN_FCN ( icode ) ( arg [ ] , arg [ ] , arg [ ] , arg [ ] ) ; case : return GEN_FCN ( icode ) ( arg [ ] , arg [ ] , arg [ ] , arg [ ] , arg [ ] ) ; default : gcc_unreachable ( ) ;" GCC,arc,388,"Predict the next statement of this code snippet: static int arc600_corereg_hazard ( rtx_insn * pred , rtx_insn * succ ) { if ( ! TARGET_ARC600 ) return ; if ( GET_CODE ( PATTERN ( pred ) ) == SEQUENCE ) pred = as_a < rtx_sequence * > ( PATTERN ( pred ) ) -> insn ( ) ; if ( GET_CODE ( PATTERN ( succ ) ) == SEQUENCE ) succ = as_a < rtx_sequence * > ( PATTERN ( succ ) ) -> insn ( ) ; if ( recog_memoized ( pred ) == CODE_FOR_mulsi_600 || recog_memoized ( pred ) == CODE_FOR_umul_600 || recog_memoized ( pred ) == CODE_FOR_mac_600 || recog_memoized ( pred ) == CODE_FOR_mul64_600 || recog_memoized ( pred ) == CODE_FOR_mac64_600 || recog_memoized ( pred ) == CODE_FOR_umul64_600 || recog_memoized ( pred ) == CODE_FOR_umac64_600 ) return ; subrtx_iterator :: array_type array ; FOR_EACH_SUBRTX ( iter , array , PATTERN ( pred ) , NONCONST ) { const_rtx x = * iter ; switch ( GET_CODE ( x ) ) { case SET : case POST_INC : case POST_DEC : case PRE_INC : case PRE_DEC : break ; default : continue ; } rtx dest = XEXP ( x , ) ; if ( REG_P ( dest ) && REGNO ( dest ) >= && REGNO ( dest ) < && ( refers_to_regno_p ( REGNO ( dest ) , REGNO ( dest ) + ( GET_MODE_SIZE ( GET_MODE ( dest ) ) + ) / , PATTERN ( succ ) , ) ) ) return ;" GCC,arc,389,"Predict the next statement of this code snippet: insn = NEXT_INSN ( insn ) ; if ( insn == || ( active_insn_p ( insn ) && NONDEBUG_INSN_P ( insn ) && ! NOTE_P ( insn ) && GET_CODE ( PATTERN ( insn ) ) != UNSPEC_VOLATILE && GET_CODE ( PATTERN ( insn ) ) != PARALLEL ) ) break ; }" GCC,arc,390,"Predict the next statement of this code snippet: rtx plus1 = XEXP ( addr , ) ; if ( GET_CODE ( plus0 ) != REG && ( GET_CODE ( plus0 ) != MULT || ! CONST_INT_P ( XEXP ( plus0 , ) ) || ( INTVAL ( XEXP ( plus0 , ) ) != && INTVAL ( XEXP ( plus0 , ) ) != ) ) ) break ; switch ( GET_CODE ( plus1 ) ) { case CONST_INT : return ( ! RTX_OK_FOR_OFFSET_P ( SImode , plus1 ) ? COSTS_N_INSNS ( ) : speed ? : ( satisfies_constraint_Rcq ( plus0 ) && satisfies_constraint_O ( plus1 ) ) ? : ) ; case REG : return ( speed < ? : ( satisfies_constraint_Rcq ( plus0 ) && satisfies_constraint_Rcq ( plus1 ) ) ? : ) ; case CONST : case SYMBOL_REF : case LABEL_REF : return COSTS_N_INSNS ( ) ; default : break ; } break ;" GCC,arc,391,"Predict the next statement of this code snippet: arc_jli_section * sec = arc_jli_sections , * new_section ; tree decl = SYMBOL_REF_DECL ( pat ) ; if ( ! pat ) return ; if ( decl ) { attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ; if ( lookup_attribute ( , attrs ) ) return ; } name = XSTR ( pat , ) ; while ( sec != NULL ) { if ( strcmp ( name , sec -> name ) == ) return ; sec = sec -> next ; } new_section = ( arc_jli_section * ) xmalloc ( sizeof ( arc_jli_section ) ) ;" GCC,arc,392,"Predict the next statement of this code snippet: if ( strcmp ( name , sec -> name ) == ) return ; sec = sec -> next ; } new_section = ( arc_jli_section * ) xmalloc ( sizeof ( arc_jli_section ) ) ; gcc_assert ( new_section != NULL ) ; new_section -> name = name ;" GCC,arc,393,"Predict the next statement of this code snippet: void arc_adjust_reg_alloc_order ( void ) { const int arc_default_alloc_order [ ] = REG_ALLOC_ORDER ; memcpy ( reg_alloc_order , arc_default_alloc_order , sizeof ( reg_alloc_order ) ) ;" GCC,arc,394,"Predict the next statement of this code snippet: void arc_adjust_reg_alloc_order ( void ) {" GCC,arc,395,"Predict the next statement of this code snippet: static bool arc_allocate_stack_slots_for_args ( void ) {" GCC,arc,396,"Predict the next statement of this code snippet: return ! ARC_NAKED_P ( fn_type ) ;" GCC,arc,397,"Predict the next statement of this code snippet: int bytes = arg . promoted_size_in_bytes ( ) ; int words = ( bytes + UNITS_PER_WORD - ) / UNITS_PER_WORD ; int arg_num = * cum ; int ret ; arg_num = ROUND_ADVANCE_CUM ( arg_num , arg . mode , arg . type ) ; ret = GPR_REST_ARG_REGS ( arg_num ) ; ret = ( ret >= words ? : ret * UNITS_PER_WORD ) ;" GCC,arc,398,"Predict the next statement of this code snippet: return ; case SET : return arc_asm_insn_p ( SET_SRC ( x ) ) ; case PARALLEL : j = ; for ( i = XVECLEN ( x , ) - ; i >= ; i -- ) j += arc_asm_insn_p ( XVECEXP ( x , , i ) ) ; if ( j > ) return ; break ;" GCC,arc,399,"Predict the next statement of this code snippet: for ( i = XVECLEN ( x , ) - ; i >= ; i -- ) j += arc_asm_insn_p ( XVECEXP ( x , , i ) ) ; if ( j > ) return ; break ;" GCC,arc,400,"Predict the next statement of this code snippet: if ( globalize_p ) ( * targetm . asm_out . globalize_label ) ( stream , name ) ; ASM_OUTPUT_ALIGN ( stream , floor_log2 ( ( align ) / BITS_PER_UNIT ) ) ; ASM_OUTPUT_TYPE_DIRECTIVE ( stream , name , ) ; ASM_OUTPUT_SIZE_DIRECTIVE ( stream , name , size ) ; ASM_OUTPUT_LABEL ( stream , name ) ; if ( size != ) ASM_OUTPUT_SKIP ( stream , size ) ;" GCC,arc,401,"Predict the next statement of this code snippet: static void arc_asm_trampoline_template ( FILE * f ) { asm_fprintf ( f , , ARC_TEMP_SCRATCH_REG ) ; asm_fprintf ( f , , reg_names [ STATIC_CHAIN_REGNUM ] ) ; asm_fprintf ( f , , ARC_TEMP_SCRATCH_REG ) ; assemble_aligned_integer ( UNITS_PER_WORD , const0_rtx ) ;" GCC,arc,402,"Predict the next statement of this code snippet: asm_fprintf ( f , , reg_names [ STATIC_CHAIN_REGNUM ] ) ; asm_fprintf ( f , , ARC_TEMP_SCRATCH_REG ) ; assemble_aligned_integer ( UNITS_PER_WORD , const0_rtx ) ; assemble_aligned_integer ( UNITS_PER_WORD , const0_rtx ) ;" GCC,arc,403,"Predict the next statement of this code snippet: static int arc_attr_type ( rtx_insn * insn ) { if ( NONJUMP_INSN_P ( insn ) ? ( GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) : JUMP_P ( insn ) ? ( GET_CODE ( PATTERN ( insn ) ) == ADDR_VEC || GET_CODE ( PATTERN ( insn ) ) == ADDR_DIFF_VEC ) : ! CALL_P ( insn ) ) return - ; return get_attr_type ( insn ) ;" GCC,arc,404,"Predict the next statement of this code snippet: static int arc_attr_type ( rtx_insn * insn ) { if ( NONJUMP_INSN_P ( insn ) ? ( GET_CODE ( PATTERN ( insn ) ) == USE || GET_CODE ( PATTERN ( insn ) ) == CLOBBER ) : JUMP_P ( insn ) ? ( GET_CODE ( PATTERN ( insn ) ) == ADDR_VEC || GET_CODE ( PATTERN ( insn ) ) == ADDR_DIFF_VEC ) : ! CALL_P ( insn ) ) return - ; return get_attr_type ( insn ) ;" GCC,arc,405,"Predict the next statement of this code snippet: static unsigned int arc_autovectorize_vector_modes ( vector_modes * modes , bool ) { if ( TARGET_PLUS_QMACW ) { modes -> quick_push ( V4HImode ) ; modes -> quick_push ( V2HImode ) ; }" GCC,arc,406,"Predict the next statement of this code snippet: return ! optimize_size && arc_reorg_in_progress ;" GCC,arc,407,"Predict the next statement of this code snippet: if ( ! arc_tls_symbol ) arc_tls_symbol = init_one_libfunc ( ) ; emit_move_insn ( arg , ti ) ; fn = gen_rtx_MEM ( SImode , arc_tls_symbol ) ; insn = emit_call_insn ( gen_call_value ( ret , fn , const0_rtx ) ) ; RTL_CONST_CALL_P ( insn ) = ; use_reg ( & CALL_INSN_FUNCTION_USAGE ( insn ) , ret ) ; use_reg ( & CALL_INSN_FUNCTION_USAGE ( insn ) , arg ) ; return ret ;" GCC,arc,408,"Predict the next statement of this code snippet: emit_move_insn ( arg , ti ) ; fn = gen_rtx_MEM ( SImode , arc_tls_symbol ) ; insn = emit_call_insn ( gen_call_value ( ret , fn , const0_rtx ) ) ; RTL_CONST_CALL_P ( insn ) = ; use_reg ( & CALL_INSN_FUNCTION_USAGE ( insn ) , ret ) ; use_reg ( & CALL_INSN_FUNCTION_USAGE ( insn ) , arg ) ;" GCC,arc,409,"Predict the next statement of this code snippet: return ! arc_legitimate_constant_p ( mode , x ) ;" GCC,arc,410,"Predict the next statement of this code snippet: static bool arc_cannot_substitute_mem_equiv_p ( rtx ) {" GCC,arc,411,"Predict the next statement of this code snippet: return ( ( to == HARD_FRAME_POINTER_REGNUM ) || ( to == STACK_POINTER_REGNUM ) ) ;" GCC,arc,412,"Predict the next statement of this code snippet: return ( ( to == HARD_FRAME_POINTER_REGNUM ) || ( to == STACK_POINTER_REGNUM ) ) ;" GCC,arc,413,"Predict the next statement of this code snippet: if ( CROSSING_JUMP_P ( followee ) ) switch ( get_attr_type ( u . r ) ) { case TYPE_BRANCH : if ( get_attr_length ( u . r ) != ) break ; case TYPE_BRCC : case TYPE_BRCC_NO_DELAY_SLOT :" GCC,arc,414,"Predict the next statement of this code snippet: if ( loop_depth > || ! entered_at_top ) return false ; if ( arc_lpcwidth != && ( wi :: gtu_p ( iterations_max , ( ( << arc_lpcwidth ) - ) ) || wi :: eq_p ( iterations_max , ) ) ) return false ;" GCC,arc,415,"Predict the next statement of this code snippet: bool arc_can_use_return_insn ( void ) {" GCC,arc,416,"Predict the next statement of this code snippet: int reverse = ; int seeking_return = ; rtx_insn * start_insn = insn ; enum attr_type jump_insn_type ; if ( optimize < || TARGET_NO_COND_EXEC ) return ; if ( ! INSN_P ( insn ) ) return ; body = PATTERN ( insn ) ; if ( state -> state == ) { if ( insn == state -> target_insn ) { state -> target_insn = NULL ; state -> state = ; } return ; } if ( state -> state == ) { if ( simplejump_p ( insn ) ) { start_insn = next_nonnote_insn ( start_insn ) ; if ( GET_CODE ( start_insn ) == BARRIER ) { start_insn = next_nonnote_insn ( start_insn ) ; } if ( GET_CODE ( start_insn ) == CODE_LABEL && CODE_LABEL_NUMBER ( start_insn ) == state -> target_label && LABEL_NUSES ( start_insn ) == ) reverse = TRUE ; else return ; } else if ( GET_CODE ( body ) == SIMPLE_RETURN ) { start_insn = next_nonnote_insn ( start_insn ) ; if ( GET_CODE ( start_insn ) == BARRIER ) start_insn = next_nonnote_insn ( start_insn ) ; if ( GET_CODE ( start_insn ) == CODE_LABEL && CODE_LABEL_NUMBER ( start_insn ) == state -> target_label && LABEL_NUSES ( start_insn ) == ) { reverse = TRUE ; seeking_return = ; } else return ; } else return ; } if ( GET_CODE ( insn ) != JUMP_INSN || GET_CODE ( PATTERN ( insn ) ) == ADDR_VEC || GET_CODE ( PATTERN ( insn ) ) == ADDR_DIFF_VEC ) return ; jump_insn_type = get_attr_type ( insn ) ; if ( jump_insn_type == TYPE_BRCC || jump_insn_type == TYPE_BRCC_NO_DELAY_SLOT || jump_insn_type == TYPE_LOOP_END || ( jump_insn_type == TYPE_CALL && ! get_attr_predicable ( insn ) ) ) return ; if ( GET_CODE ( body ) == PARALLEL && XVECLEN ( body , ) > ) body = XVECEXP ( body , , ) ; if ( reverse || ( GET_CODE ( body ) == SET && GET_CODE ( SET_DEST ( body ) ) == PC && GET_CODE ( SET_SRC ( body ) ) == IF_THEN_ELSE ) ) { int insns_skipped = , fail = FALSE , succeed = FALSE ; int then_not_else = TRUE ; int next_must_be_target_label_p ; rtx_insn * this_insn = start_insn ;" GCC,arc,417,"Predict the next statement of this code snippet: static void arc_ccfsm_at_label ( const char * prefix , int num , struct arc_ccfsm * state ) {" GCC,arc,418,"Predict the next statement of this code snippet: bool arc_ccfsm_branch_deleted_p ( void ) { return ARC_CCFSM_BRANCH_DELETED_P ( & arc_ccfsm_current ) ;" GCC,arc,419,"Predict the next statement of this code snippet: bool arc_ccfsm_branch_deleted_p ( void ) { return ARC_CCFSM_BRANCH_DELETED_P ( & arc_ccfsm_current ) ;" GCC,arc,420,"Predict the next statement of this code snippet: bool arc_ccfsm_cond_exec_p ( void ) {" GCC,arc,421,"Predict the next statement of this code snippet: enum attr_type type ; if ( LABEL_P ( insn ) ) arc_ccfsm_at_label ( , CODE_LABEL_NUMBER ( insn ) , state ) ;" GCC,arc,422,"Predict the next statement of this code snippet: if ( ARC_CCFSM_BRANCH_DELETED_P ( state ) ) ARC_CCFSM_RECORD_BRANCH_DELETED ( state ) ; else { rtx src = SET_SRC ( PATTERN ( insn ) ) ; arc_ccfsm_record_condition ( XEXP ( src , ) , XEXP ( src , ) == pc_rtx , insn , state ) ; } }" GCC,arc,423,"Predict the next statement of this code snippet: ARC_CCFSM_RECORD_BRANCH_DELETED ( & arc_ccfsm_current ) ;" GCC,arc,424,"Predict the next statement of this code snippet: if ( ! as_a < rtx_insn * > ( insn ) -> deleted ( ) && INSN_ANNULLED_BRANCH_P ( jump ) && ( TARGET_AT_DBR_CONDEXEC || INSN_FROM_TARGET_P ( insn ) ) ) { state -> cond = cond ; state -> cc = get_arc_condition_code ( cond ) ; if ( ! reverse ) arc_ccfsm_current . cc = ARC_INVERSE_CONDITION_CODE ( state -> cc ) ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) == COND_EXEC ) gcc_assert ( ( INSN_FROM_TARGET_P ( insn ) ? ARC_INVERSE_CONDITION_CODE ( state -> cc ) : state -> cc ) == get_arc_condition_code ( XEXP ( pat , ) ) ) ; else state -> state = ;" GCC,arc,425,"Predict the next statement of this code snippet: if ( ! reverse ) arc_ccfsm_current . cc = ARC_INVERSE_CONDITION_CODE ( state -> cc ) ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) == COND_EXEC ) gcc_assert ( ( INSN_FROM_TARGET_P ( insn ) ? ARC_INVERSE_CONDITION_CODE ( state -> cc ) : state -> cc ) == get_arc_condition_code ( XEXP ( pat , ) ) ) ; else state -> state = ; }" GCC,arc,426,"Predict the next statement of this code snippet: bool arc_check_ior_const ( HOST_WIDE_INT ival ) { unsigned int mask = ( unsigned int ) ( ival & ) ; if ( UNSIGNED_INT6 ( ival ) || IS_POWEROF2_P ( mask ) ) return false ; if ( __builtin_popcount ( mask ) <= ) return true ;" GCC,arc,427,"Predict the next statement of this code snippet: if ( load_p == ) { if ( len < || len > ) return ; load_p = ; } else { rtx elt = XVECEXP ( op , , -- len ) ; if ( GET_CODE ( elt ) != CLOBBER || ! REG_P ( XEXP ( elt , ) ) || REGNO ( XEXP ( elt , ) ) != RETURN_ADDR_REGNUM || len < || len > ) return ; } for ( i = ; i < len ; i ++ ) { rtx elt = XVECEXP ( op , , i + offset ) ; rtx reg , mem , addr ; if ( GET_CODE ( elt ) != SET ) return ; mem = XEXP ( elt , load_p ) ; reg = XEXP ( elt , - load_p ) ; if ( ! REG_P ( reg ) || REGNO ( reg ) != + i || ! MEM_P ( mem ) ) return ;" GCC,arc,428,"Predict the next statement of this code snippet: ival = ival & ; if ( SIGNED_INT12 ( ival ) ) return false ; if ( ( ival & ~ ) == ) return true ; if ( IS_POWEROF2_P ( ival + ) ) return true ; if ( ! TARGET_BARREL_SHIFTER ) return false ; if ( ( ( ival >> ( __builtin_ffs ( ival ) - ) ) & ) == ) return true ; if ( ( ival & ~ ) == ) return true ;" GCC,arc,429,"Predict the next statement of this code snippet: if ( ( ival & ~ ) == ) return true ; if ( ( ival & ~ ) == ) return true ; if ( ( ival & ~ ) == ) return true ;" GCC,arc,430,"Predict the next statement of this code snippet: HOST_WIDE_INT len = XVECLEN ( op , ) ; unsigned int regno , i , start ; unsigned int memp = push_p ? : ; rtx elt ; if ( len <= ) return false ; start = ; elt = XVECEXP ( op , , ) ; if ( ! push_p && GET_CODE ( elt ) == RETURN ) start = ; for ( i = start , regno = ENTER_LEAVE_START_REG ; i < len ; i ++ , regno ++ ) { rtx elt = XVECEXP ( op , , i ) ; rtx reg , mem , addr ; if ( GET_CODE ( elt ) != SET ) return false ; mem = XEXP ( elt , memp ) ; reg = XEXP ( elt , - memp ) ; if ( ! REG_P ( reg ) || ! MEM_P ( mem ) ) return false ; if ( REGNO ( reg ) == RETURN_ADDR_REGNUM && i == start ) regno = ; else if ( REGNO ( reg ) == HARD_FRAME_POINTER_REGNUM ) ++ i ; else if ( REGNO ( reg ) != regno ) return false ; addr = XEXP ( mem , ) ; if ( GET_CODE ( addr ) == PLUS ) { if ( ! rtx_equal_p ( stack_pointer_rtx , XEXP ( addr , ) ) || ! CONST_INT_P ( XEXP ( addr , ) ) ) return false ;" GCC,arc,431,"Predict the next statement of this code snippet: void arc_clear_unalign ( void ) {" GCC,arc,432,"Predict the next statement of this code snippet: void arc_clear_unalign ( void ) {" GCC,arc,433,"Predict the next statement of this code snippet: reg_size += UNITS_PER_WORD ; gmask |= << regno ; } frame_info -> save_return_addr = ( ! crtl -> is_leaf || df_regs_ever_live_p ( RETURN_ADDR_REGNUM ) || crtl -> calls_eh_return ) ; if ( TARGET_MILLICODE_THUNK_SET && ! ARC_INTERRUPT_P ( fn_type ) && ! crtl -> calls_eh_return ) { if ( arc_compute_millicode_save_restore_regs ( gmask , frame_info ) ) frame_info -> save_return_addr = true ; } if ( arc_lpcwidth != && arc_must_save_register ( LP_COUNT , cfun , true ) ) reg_size += UNITS_PER_WORD * ; if ( arc_must_save_register ( TARGET_BIG_ENDIAN ? R41_REG : R40_REG , cfun , TARGET_DPFP ) ) reg_size += UNITS_PER_WORD * ; if ( arc_must_save_register ( TARGET_BIG_ENDIAN ? R43_REG : R42_REG , cfun , TARGET_DPFP ) ) reg_size += UNITS_PER_WORD * ; if ( arc_must_save_register ( R58_REG , cfun , true ) ) reg_size += UNITS_PER_WORD * ; extra_size = ; if ( arc_must_save_return_addr ( cfun ) ) extra_size = ; if ( arc_frame_pointer_needed ( ) && ! ARC_AUTOFP_IRQ_P ( fn_type ) ) extra_size += ; pretend_size = crtl -> args . pretend_args_size ; extra_plus_reg_size = extra_size + reg_size ;" GCC,arc,434,"Predict the next statement of this code snippet: tree value , args = TREE_VALUE ( attr ) ; gcc_assert ( list_length ( args ) == ) ; value = TREE_VALUE ( args ) ; gcc_assert ( TREE_CODE ( value ) == STRING_CST ) ; if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) || ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_ILINK1 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_ILINK2 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_FIRQ ; else gcc_unreachable ( ) ;" GCC,arc,435,"Predict the next statement of this code snippet: tree value , args = TREE_VALUE ( attr ) ; gcc_assert ( list_length ( args ) == ) ; value = TREE_VALUE ( args ) ; gcc_assert ( TREE_CODE ( value ) == STRING_CST ) ; if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) || ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_ILINK1 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_ILINK2 ; else if ( ! strcmp ( TREE_STRING_POINTER ( value ) , ) ) fn_type |= ARC_FUNCTION_FIRQ ; else gcc_unreachable ( ) ; }" GCC,arc,436,"Predict the next statement of this code snippet: int regno ; int start_reg = , end_reg = ; for ( regno = start_reg ; regno <= end_reg && ( gmask & ( << regno ) ) ; ) regno ++ ; end_reg = regno - ; if ( regno - start_reg >= - ( crtl -> is_leaf == ) ) { frame -> millicode_start_reg = ;" GCC,arc,437,"Predict the next statement of this code snippet: for ( regno = start_reg ; regno <= end_reg && ( gmask & ( << regno ) ) ; ) regno ++ ; end_reg = regno - ; if ( regno - start_reg >= - ( crtl -> is_leaf == ) ) { frame -> millicode_start_reg = ; frame -> millicode_end_reg = regno - ; return ; }" GCC,arc,438,"Predict the next statement of this code snippet: m2 = lookup_attribute ( , TYPE_ATTRIBUTES ( type2 ) ) != NULL ; s1 = lookup_attribute ( , TYPE_ATTRIBUTES ( type1 ) ) != NULL ; s2 = lookup_attribute ( , TYPE_ATTRIBUTES ( type2 ) ) != NULL ; if ( l1 | l2 | m1 | m2 | s1 | s2 ) {" GCC,arc,439,"Predict the next statement of this code snippet: arc_regno_reg_class [ R30_REG ] = GENERAL_REGS ; } } if ( TARGET_MUL64_SET ) { fix_start = R57_REG ; fix_end = R59_REG ; strcpy ( rname57 , ) ; strcpy ( rname58 , ) ; strcpy ( rname59 , ) ; } if ( arc_tp_regno != - ) fixed_regs [ arc_tp_regno ] = call_used_regs [ arc_tp_regno ] = ; if ( TARGET_MULMAC_32BY16_SET ) { fix_start = MUL32x16_REG ; fix_end = fix_end > R57_REG ? fix_end : R57_REG ; strcpy ( rname56 , TARGET_BIG_ENDIAN ? : ) ; strcpy ( rname57 , TARGET_BIG_ENDIAN ? : ) ; } for ( regno = fix_start ; regno <= fix_end ; regno ++ ) { if ( ! fixed_regs [ regno ] ) warning ( , , regno ) ; fixed_regs [ regno ] = call_used_regs [ regno ] = ; } if ( TARGET_RF16 ) { for ( i = R4_REG ; i <= R9_REG ; i ++ ) fixed_regs [ i ] = call_used_regs [ i ] = ; for ( i = R16_REG ; i <= R25_REG ; i ++ ) fixed_regs [ i ] = call_used_regs [ i ] = ; } if ( TARGET_HS ) for ( regno = R1_REG ; regno < R32_REG ; regno += ) arc_hard_regno_modes [ regno ] = S_MODES ; for ( i = ; i < FIRST_PSEUDO_REGISTER ; i ++ ) if ( i < ILINK1_REG ) { if ( ( i <= R3_REG ) || ( ( i >= R12_REG ) && ( i <= R15_REG ) ) ) arc_regno_reg_class [ i ] = ARCOMPACT16_REGS ; else arc_regno_reg_class [ i ] = GENERAL_REGS ; } else if ( i < LP_COUNT ) arc_regno_reg_class [ i ] = GENERAL_REGS ; else arc_regno_reg_class [ i ] = NO_REGS ; arc_regno_reg_class [ CC_REG ] = NO_REGS ; arc_regno_reg_class [ FRAME_POINTER_REGNUM ] = GENERAL_REGS ; arc_regno_reg_class [ ARG_POINTER_REGNUM ] = GENERAL_REGS ; if ( TARGET_DPFP ) for ( i = R40_REG ; i < R44_REG ; ++ i ) { arc_regno_reg_class [ i ] = DOUBLE_REGS ; if ( ! TARGET_ARGONAUT_SET ) CLEAR_HARD_REG_BIT ( reg_class_contents [ GENERAL_REGS ] , i ) ; } else { arc_regno_reg_class [ R40_REG ] = ALL_REGS ; arc_regno_reg_class [ R41_REG ] = ALL_REGS ; arc_regno_reg_class [ R42_REG ] = ALL_REGS ; arc_regno_reg_class [ R43_REG ] = ALL_REGS ; fixed_regs [ R40_REG ] = ; fixed_regs [ R41_REG ] = ; fixed_regs [ R42_REG ] = ; fixed_regs [ R43_REG ] = ; arc_hard_regno_modes [ R40_REG ] = ; arc_hard_regno_modes [ R42_REG ] = ; } if ( TARGET_SIMD_SET ) { gcc_assert ( ARC_FIRST_SIMD_VR_REG == ) ; gcc_assert ( ARC_LAST_SIMD_VR_REG == ) ; for ( i = ARC_FIRST_SIMD_VR_REG ; i <= ARC_LAST_SIMD_VR_REG ; i ++ ) arc_regno_reg_class [ i ] = SIMD_VR_REGS ;" GCC,arc,440,"Predict the next statement of this code snippet: if ( MEM_P ( x ) ) x = XEXP ( x , ) ; x = arc_delegitimize_address_0 ( x ) ; if ( ! x ) return orig_x ; if ( MEM_P ( orig_x ) ) x = replace_equiv_address_nv ( orig_x , x ) ;" GCC,arc,441,"Predict the next statement of this code snippet: if ( ! x ) return orig_x ; if ( MEM_P ( orig_x ) ) x = replace_equiv_address_nv ( orig_x , x ) ; return x ;" GCC,arc,442,"Predict the next statement of this code snippet: rtx t1 = arc_delegitimize_address_0 ( XEXP ( op , ) ) ; rtx t2 = XEXP ( op , ) ; if ( t1 && t2 ) return gen_rtx_PLUS ( GET_MODE ( op ) , t1 , t2 ) ; break ; } default : break ; }" GCC,arc,443,"Predict the next statement of this code snippet: case ARC_UNSPEC_GOTOFFPC : return XVECEXP ( op , , ) ; default : break ; } break ; case PLUS : { rtx t1 = arc_delegitimize_address_0 ( XEXP ( op , ) ) ; rtx t2 = XEXP ( op , ) ; if ( t1 && t2 ) return gen_rtx_PLUS ( GET_MODE ( op ) , t1 , t2 ) ; break ; }" GCC,arc,444,"Predict the next statement of this code snippet: if ( TARGET_DPFP ) return true ; low = CONST_DOUBLE_LOW ( value ) ; high = CONST_DOUBLE_HIGH ( value ) ; if ( low & ) { return ( ( ( unsigned HOST_WIDE_INT ) low <= && high == ) || ( ( ( low & - ( unsigned HOST_WIDE_INT ) ) == - ( unsigned HOST_WIDE_INT ) ) && high == - ) ) ; }" GCC,arc,445,"Predict the next statement of this code snippet: offset = UNITS_PER_WORD * ( irq_ctrl_saved . irq_save_last_reg + + irq_ctrl_saved . irq_save_blink + irq_ctrl_saved . irq_save_lpcount ) ; tmp = plus_constant ( Pmode , stack_pointer_rtx , - * offset ) ; tmp = gen_rtx_SET ( stack_pointer_rtx , tmp ) ; RTX_FRAME_RELATED_P ( tmp ) = ; XVECEXP ( par , , j ++ ) = tmp ; offset -= UNITS_PER_WORD ; if ( irq_ctrl_saved . irq_save_lpcount ) { reg = gen_rtx_REG ( SImode , ) ; tmp = plus_constant ( Pmode , stack_pointer_rtx , offset ) ; tmp = gen_frame_mem ( SImode , tmp ) ;" GCC,arc,446,"Predict the next statement of this code snippet: static rtx arc_dwarf_register_span ( rtx rtl ) { machine_mode mode = GET_MODE ( rtl ) ; unsigned regno ; rtx p ; if ( GET_MODE_SIZE ( mode ) != ) return NULL_RTX ; p = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( ) ) ;" GCC,arc,447,"Predict the next statement of this code snippet: machine_mode mode = GET_MODE ( rtl ) ; unsigned regno ; rtx p ; if ( GET_MODE_SIZE ( mode ) != ) return NULL_RTX ; p = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( ) ) ; regno = REGNO ( rtl ) ; XVECEXP ( p , , ) = gen_rtx_REG ( SImode , regno ) ;" GCC,arc,448,"Predict the next statement of this code snippet: afi = & cfun -> machine -> frame_info ; gcc_assert ( crtl -> calls_eh_return ) ; gcc_assert ( afi -> save_return_addr ) ; gcc_assert ( afi -> extra_size >= ) ; offset = afi -> reg_size + afi -> extra_size - ; mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , hard_frame_pointer_rtx , offset ) ) ; MEM_VOLATILE_P ( mem ) = true ;" GCC,arc,449,"Predict the next statement of this code snippet: rtx mem ; int offset ; struct arc_frame_info * afi ; arc_compute_frame_size ( ) ; afi = & cfun -> machine -> frame_info ; gcc_assert ( crtl -> calls_eh_return ) ; gcc_assert ( afi -> save_return_addr ) ;" GCC,arc,450,"Predict the next statement of this code snippet: static void arc_encode_section_info ( tree decl , rtx rtl , int first ) { default_encode_section_info ( decl , rtl , first ) ; if ( TREE_CODE ( decl ) == FUNCTION_DECL ) { rtx symbol = XEXP ( rtl , ) ; int flags = SYMBOL_REF_FLAGS ( symbol ) ; tree attr = ( TREE_TYPE ( decl ) != error_mark_node ? TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) : NULL_TREE ) ; tree long_call_attr = lookup_attribute ( , attr ) ; tree medium_call_attr = lookup_attribute ( , attr ) ; tree short_call_attr = lookup_attribute ( , attr ) ; if ( long_call_attr != NULL_TREE ) flags |= SYMBOL_FLAG_LONG_CALL ; else if ( medium_call_attr != NULL_TREE ) flags |= SYMBOL_FLAG_MEDIUM_CALL ; else if ( short_call_attr != NULL_TREE ) flags |= SYMBOL_FLAG_SHORT_CALL ; SYMBOL_REF_FLAGS ( symbol ) = flags ; } else if ( TREE_CODE ( decl ) == VAR_DECL ) { rtx symbol = XEXP ( rtl , ) ; tree attr = ( TREE_TYPE ( decl ) != error_mark_node ? DECL_ATTRIBUTES ( decl ) : NULL_TREE ) ; tree sec_attr = lookup_attribute ( , attr ) ; if ( sec_attr ) { const char * sec_name = TREE_STRING_POINTER ( TREE_VALUE ( TREE_VALUE ( sec_attr ) ) ) ;" GCC,arc,451,"Predict the next statement of this code snippet: int regno ; unsigned int rmask = ; if ( ! gmask ) return false ; for ( regno = ENTER_LEAVE_START_REG ;" GCC,arc,452,"Predict the next statement of this code snippet: static bool arc_enter_leave_p ( uint64_t gmask ) { int regno ; unsigned int rmask = ; if ( ! gmask ) return false ; for ( regno = ENTER_LEAVE_START_REG ;" GCC,arc,453,"Predict the next statement of this code snippet: if ( regno == arc_tp_regno ) return true ; if ( regno == RETURN_ADDR_REGNUM ) return true ; if ( regno == arc_return_address_register ( fn_type ) ) return true ; if ( epilogue_completed && ARC_INTERRUPT_P ( fn_type ) ) { if ( df_regs_ever_live_p ( regno ) || call_used_or_fixed_reg_p ( regno ) ) return true ; }" GCC,arc,454,"Predict the next statement of this code snippet: emit_label ( label ) ; label = gen_rtx_LABEL_REF ( VOIDmode , label ) ; if ( before == NULL_RTX ) before = gen_reg_rtx ( mode ) ; if ( after == NULL_RTX ) after = gen_reg_rtx ( mode ) ; emit_insn ( gen_arc_load_exclusivesi ( before , mem ) ) ; switch ( code ) { case NOT : x = gen_rtx_AND ( mode , before , val ) ; emit_insn ( gen_rtx_SET ( after , x ) ) ; x = gen_rtx_NOT ( mode , after ) ; emit_insn ( gen_rtx_SET ( after , x ) ) ; break ; case MINUS : if ( CONST_INT_P ( val ) ) { val = GEN_INT ( - INTVAL ( val ) ) ; code = PLUS ; } default : x = gen_rtx_fmt_ee ( code , mode , before , val ) ; emit_insn ( gen_rtx_SET ( after , x ) ) ; break ; } emit_insn ( gen_arc_store_exclusivesi ( mem , after ) ) ; cond = gen_rtx_REG ( CC_Zmode , CC_REG ) ; x = gen_rtx_NE ( VOIDmode , cond , const0_rtx ) ; x = gen_rtx_IF_THEN_ELSE ( VOIDmode , x , label , pc_rtx ) ; emit_unlikely_jump ( gen_rtx_SET ( pc_rtx , x ) ) ;" GCC,arc,455,"Predict the next statement of this code snippet: HOST_WIDE_INT alignTest = INTVAL ( op1 ) ; if ( alignTest <= || alignTest != ( alignTest & - alignTest ) ) { error ( ) ; return NULL_RTX ; } if ( CONST_INT_P ( op0 ) ) { HOST_WIDE_INT pnt = INTVAL ( op0 ) ; if ( ( pnt & ( alignTest - ) ) == ) return const1_rtx ; } else {" GCC,arc,456,"Predict the next statement of this code snippet: if ( GET_MODE ( mem ) == QImode ) mask = force_reg ( SImode , GEN_INT ( ) ) ; else mask = force_reg ( SImode , GEN_INT ( ) ) ; emit_insn ( gen_rtx_SET ( mask , gen_rtx_ASHIFT ( SImode , mask , off ) ) ) ; emit_insn ( gen_rtx_SET ( val , gen_rtx_AND ( SImode , gen_rtx_NOT ( SImode , mask ) , val ) ) ) ; oldval = gen_lowpart ( SImode , oldval ) ; emit_insn ( gen_rtx_SET ( oldv , gen_rtx_ASHIFT ( SImode , oldval , off ) ) ) ; newval = gen_lowpart_common ( SImode , newval ) ; emit_insn ( gen_rtx_SET ( newv , gen_rtx_ASHIFT ( SImode , newval , off ) ) ) ; emit_insn ( gen_rtx_SET ( oldv , gen_rtx_AND ( SImode , oldv , mask ) ) ) ; emit_insn ( gen_rtx_SET ( newv , gen_rtx_AND ( SImode , newv , mask ) ) ) ; if ( ! is_weak ) { end_label = gen_label_rtx ( ) ; loop_label = gen_label_rtx ( ) ; emit_label ( loop_label ) ; } emit_insn ( gen_rtx_SET ( oldvalue , gen_rtx_IOR ( SImode , oldv , val ) ) ) ; emit_insn ( gen_rtx_SET ( newvalue , gen_rtx_IOR ( SImode , newv , val ) ) ) ; emit_insn ( gen_atomic_compare_and_swapsi_1 ( res , memsi , oldvalue , newvalue , weak , mod_s , mod_f ) ) ;" GCC,arc,457,"Predict the next statement of this code snippet: emit_insn ( gen_rtx_SET ( off , gen_rtx_AND ( SImode , addr1 , GEN_INT ( ) ) ) ) ; if ( TARGET_BIG_ENDIAN ) emit_insn ( gen_rtx_SET ( off , gen_rtx_MINUS ( SImode , ( GET_MODE ( mem ) == QImode ) ? GEN_INT ( ) : GEN_INT ( ) , off ) ) ) ; memsi = gen_rtx_MEM ( SImode , addr ) ; set_mem_alias_set ( memsi , ALIAS_SET_MEMORY_BARRIER ) ; MEM_VOLATILE_P ( memsi ) = MEM_VOLATILE_P ( mem ) ; val = copy_to_reg ( memsi ) ; emit_insn ( gen_rtx_SET ( off , gen_rtx_ASHIFT ( SImode , off , GEN_INT ( ) ) ) ) ; if ( GET_MODE ( mem ) == QImode ) mask = force_reg ( SImode , GEN_INT ( ) ) ; else mask = force_reg ( SImode , GEN_INT ( ) ) ; emit_insn ( gen_rtx_SET ( mask , gen_rtx_ASHIFT ( SImode , mask , off ) ) ) ; emit_insn ( gen_rtx_SET ( val , gen_rtx_AND ( SImode , gen_rtx_NOT ( SImode , mask ) , val ) ) ) ; oldval = gen_lowpart ( SImode , oldval ) ; emit_insn ( gen_rtx_SET ( oldv , gen_rtx_ASHIFT ( SImode , oldval , off ) ) ) ; newval = gen_lowpart_common ( SImode , newval ) ; emit_insn ( gen_rtx_SET ( newv , gen_rtx_ASHIFT ( SImode , newval , off ) ) ) ; emit_insn ( gen_rtx_SET ( oldv , gen_rtx_AND ( SImode , oldv , mask ) ) ) ; emit_insn ( gen_rtx_SET ( newv , gen_rtx_AND ( SImode , newv , mask ) ) ) ;" GCC,arc,458,"Predict the next statement of this code snippet: fprintf ( asm_out_file , ) ; assemble_name ( asm_out_file , sec -> name ) ; fprintf ( asm_out_file , ) ; fprintf ( asm_out_file , ) ; fprintf ( asm_out_file , ) ; assemble_name ( asm_out_file , sec -> name ) ; fprintf ( asm_out_file , ) ; assemble_name ( asm_out_file , sec -> name ) ; fprintf ( asm_out_file , ) ; assemble_name ( asm_out_file , sec -> name ) ; fprintf ( asm_out_file , ) ; sec = sec -> next ; }" GCC,arc,459,"Predict the next statement of this code snippet: asm_fprintf ( asm_out_file , , TARGET_OPTFPE ? : ) ; if ( TARGET_V2 ) asm_fprintf ( asm_out_file , , ( arc_tune < ARC_TUNE_CORE_3 ) ? :" GCC,arc,460,"Predict the next statement of this code snippet: asm_fprintf ( asm_out_file , , ( arc_tp_regno != - ) ? : ) ; asm_fprintf ( asm_out_file , , TARGET_NO_SDATA_SET ? : ) ; asm_fprintf ( asm_out_file , , TARGET_OPTFPE ? : ) ; if ( TARGET_V2 ) asm_fprintf ( asm_out_file , , ( arc_tune < ARC_TUNE_CORE_3 ) ? :" GCC,arc,461,"Predict the next statement of this code snippet: if ( TARGET_DUMPISIZE ) fprintf ( asm_out_file , , INSN_ADDRESSES ( INSN_UID ( insn ) ) ) ; if ( ! cfun -> machine -> prescan_initialized ) {" GCC,arc,462,"Predict the next statement of this code snippet: if ( TARGET_DUMPISIZE ) fprintf ( asm_out_file , , INSN_ADDRESSES ( INSN_UID ( insn ) ) ) ; if ( ! cfun -> machine -> prescan_initialized ) { memset ( & arc_ccfsm_current , , sizeof arc_ccfsm_current ) ; cfun -> machine -> prescan_initialized = ;" GCC,arc,463,"Predict the next statement of this code snippet: static bool arc_frame_pointer_needed ( void ) {" GCC,arc,464,"Predict the next statement of this code snippet: rtx ret ; const char * debstr ATTRIBUTE_UNUSED ; arg_num = ROUND_ADVANCE_CUM ( arg_num , arg . mode , arg . type ) ; if ( arg . end_marker_p ( ) ) { ret = const0_rtx ;" GCC,arc,465,"Predict the next statement of this code snippet: if ( words ) * cum = ROUND_ADVANCE_CUM ( * cum , arg . mode , arg . type ) ;" GCC,arc,466,"Predict the next statement of this code snippet: if ( decl ) { attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ; if ( lookup_attribute ( , attrs ) ) return false ;" GCC,arc,467,"Predict the next statement of this code snippet: if ( decl ) { attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ; if ( lookup_attribute ( , attrs ) ) return false ;" GCC,arc,468,"Predict the next statement of this code snippet: int unsignedp ATTRIBUTE_UNUSED ; unsignedp = TYPE_UNSIGNED ( valtype ) ; if ( INTEGRAL_TYPE_P ( valtype ) || TREE_CODE ( valtype ) == OFFSET_TYPE ) PROMOTE_MODE ( mode , unsignedp , valtype ) ; return gen_rtx_REG ( mode , ) ;" GCC,arc,469,"Predict the next statement of this code snippet: unsignedp = TYPE_UNSIGNED ( valtype ) ; if ( INTEGRAL_TYPE_P ( valtype ) || TREE_CODE ( valtype ) == OFFSET_TYPE ) PROMOTE_MODE ( mode , unsignedp , valtype ) ;" GCC,arc,470,"Predict the next statement of this code snippet: gcc_assert ( ARC_INVERSE_CONDITION_CODE ( raw_cc ) == statep -> cc ) ; machine_mode ccm = GET_MODE ( XEXP ( cond , ) ) ; enum rtx_code code = reverse_condition ( GET_CODE ( cond ) ) ; if ( code == UNKNOWN || ccm == CC_FP_GTmode || ccm == CC_FP_GEmode ) code = reverse_condition_maybe_unordered ( GET_CODE ( cond ) ) ; return gen_rtx_fmt_ee ( code , GET_MODE ( cond ) , copy_rtx ( XEXP ( cond , ) ) , copy_rtx ( XEXP ( cond , ) ) ) ;" GCC,arc,471,"Predict the next statement of this code snippet: machine_mode ccm = GET_MODE ( XEXP ( cond , ) ) ; enum rtx_code code = reverse_condition ( GET_CODE ( cond ) ) ;" GCC,arc,472,"Predict the next statement of this code snippet: if ( TREE_CODE ( arg ) != INTEGER_CST ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ; } } if ( TREE_CODE ( * node ) == VAR_DECL ) { tree fntype = TREE_TYPE ( * node ) ; if ( fntype && TREE_CODE ( fntype ) == POINTER_TYPE ) { tree attrs = tree_cons ( get_identifier ( ) , NULL_TREE , TYPE_ATTRIBUTES ( fntype ) ) ; TYPE_ATTRIBUTES ( fntype ) = attrs ; } } }" GCC,arc,473,"Predict the next statement of this code snippet: } else if ( args ) { if ( TREE_CODE ( TREE_VALUE ( args ) ) == NON_LVALUE_EXPR ) TREE_VALUE ( args ) = TREE_OPERAND ( TREE_VALUE ( args ) , ) ; tree arg = TREE_VALUE ( args ) ; if ( TREE_CODE ( arg ) != INTEGER_CST ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ; } } if ( TREE_CODE ( * node ) == VAR_DECL ) { tree fntype = TREE_TYPE ( * node ) ; if ( fntype && TREE_CODE ( fntype ) == POINTER_TYPE ) { tree attrs = tree_cons ( get_identifier ( ) , NULL_TREE , TYPE_ATTRIBUTES ( fntype ) ) ; TYPE_ATTRIBUTES ( fntype ) = attrs ; }" GCC,arc,474,"Predict the next statement of this code snippet: static tree arc_handle_fndecl_attribute ( tree * node , tree name , tree args ATTRIBUTE_UNUSED , int flags ATTRIBUTE_UNUSED , bool * no_add_attrs ) { if ( TREE_CODE ( * node ) != FUNCTION_DECL ) {" GCC,arc,475,"Predict the next statement of this code snippet: static tree arc_handle_fndecl_attribute ( tree * node , tree name , tree args ATTRIBUTE_UNUSED , int flags ATTRIBUTE_UNUSED , bool * no_add_attrs ) {" GCC,arc,476,"Predict the next statement of this code snippet: * no_add_attrs = true ; } else if ( ! TARGET_V2 && strcmp ( TREE_STRING_POINTER ( value ) , ) && strcmp ( TREE_STRING_POINTER ( value ) , ) ) { warning ( OPT_Wattributes , , name ) ; * no_add_attrs = true ;" GCC,arc,477,"Predict the next statement of this code snippet: if ( DECL_P ( * node ) && TREE_CODE ( * node ) != TYPE_DECL ) { error ( , name ) ;" GCC,arc,478,"Predict the next statement of this code snippet: static bool arc_hard_regno_mode_ok ( unsigned int regno , machine_mode mode ) {" GCC,arc,479,"Predict the next statement of this code snippet: if ( GET_MODE_SIZE ( mode ) == && regno >= ARC_FIRST_SIMD_VR_REG && regno <= ARC_LAST_SIMD_VR_REG ) return ;" GCC,arc,480,"Predict the next statement of this code snippet: int arc_hazard ( rtx_insn * pred , rtx_insn * succ ) { if ( ! pred || ! INSN_P ( pred ) || ! succ || ! INSN_P ( succ ) ) return ; if ( TARGET_ARC600 ) return arc600_corereg_hazard ( pred , succ ) ; return ;" GCC,arc,481,"Predict the next statement of this code snippet: gcc_assert ( ! IN_RANGE ( statep -> state , , ) ) ; rtx_insn * seq = NEXT_INSN ( PREV_INSN ( insn ) ) ; if ( GET_CODE ( PATTERN ( seq ) ) == SEQUENCE ) { rtx slot = XVECEXP ( PATTERN ( seq ) , , ) ; rtx pat = PATTERN ( slot ) ; if ( INSN_ANNULLED_BRANCH_P ( insn ) ) { rtx cond = arc_get_ccfsm_cond ( statep , INSN_FROM_TARGET_P ( slot ) ) ; pat = gen_rtx_COND_EXEC ( VOIDmode , cond , pat ) ; } if ( ! validate_change ( seq , & PATTERN ( seq ) , pat , ) ) gcc_unreachable ( ) ; PUT_CODE ( slot , NOTE ) ; NOTE_KIND ( slot ) = NOTE_INSN_DELETED ; } else { set_insn_deleted ( insn ) ; } continue ; } case : if ( LABEL_P ( insn ) && statep -> target_label == CODE_LABEL_NUMBER ( insn ) ) { arc_ccfsm_post_advance ( insn , statep ) ; if ( -- LABEL_NUSES ( insn ) == ) delete_insn ( insn ) ; continue ; } case : case : if ( ! NONDEBUG_INSN_P ( insn ) ) break ; rtx_insn * prev , * pprev ; rtx * patp , pat , cond ; bool annulled ; annulled = false ; prev = PREV_INSN ( insn ) ; pprev = PREV_INSN ( prev ) ; if ( pprev && NEXT_INSN ( NEXT_INSN ( pprev ) ) == NEXT_INSN ( insn ) && JUMP_P ( prev ) && get_attr_cond ( prev ) == COND_USE ) { if ( ! INSN_ANNULLED_BRANCH_P ( prev ) ) break ; annulled = true ; } patp = & PATTERN ( insn ) ; pat = * patp ; cond = arc_get_ccfsm_cond ( statep , INSN_FROM_TARGET_P ( insn ) ) ; if ( NONJUMP_INSN_P ( insn ) || CALL_P ( insn ) ) { pat = conditionalize_nonjump ( pat , cond , insn , annulled ) ; } else if ( simplejump_p ( insn ) ) { patp = & SET_SRC ( pat ) ; pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , * patp , pc_rtx ) ; } else if ( JUMP_P ( insn ) && ANY_RETURN_P ( PATTERN ( insn ) ) ) { pat = gen_rtx_IF_THEN_ELSE ( VOIDmode , cond , pat , pc_rtx ) ; pat = gen_rtx_SET ( pc_rtx , pat ) ; } else gcc_unreachable ( ) ; validate_change ( insn , patp , pat , ) ; if ( ! apply_change_group ( ) ) gcc_unreachable ( ) ; if ( JUMP_P ( insn ) ) {" GCC,arc,482,"Predict the next statement of this code snippet: if ( TARGET_NOMPY_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ! TARGET_DPFP && TARGET_DPFP_DISABLE_LRSR ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET && TARGET_DPFP_COMPACT_SET ) || ( TARGET_SPFP_FAST_SET && TARGET_SPFP_COMPACT_SET ) ) error ( ) ; if ( TARGET_SPFP_FAST_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET || TARGET_DPFP_COMPACT_SET || TARGET_SPFP ) && TARGET_HARD_FLOAT ) error ( ) ; if ( flag_pic && TARGET_ARC600_FAMILY ) { warning ( , , arc_cpu_string ) ; flag_pic = ; } arc_init_reg_tables ( ) ; memset ( arc_punct_chars , , sizeof ( arc_punct_chars ) ) ; arc_punct_chars [ '#' ] = ; arc_punct_chars [ '*' ] = ; arc_punct_chars [ '?' ] = ; arc_punct_chars [ '!' ] = ; arc_punct_chars [ '^' ] = ; arc_punct_chars [ '&' ] = ;" GCC,arc,483,"Predict the next statement of this code snippet: arc_multcost = COSTS_N_INSNS ( ) ; if ( TARGET_NOMPY_SET ) arc_multcost = COSTS_N_INSNS ( ) ; break ; case ARC_TUNE_ARC600 : if ( TARGET_MUL64_SET ) { arc_multcost = COSTS_N_INSNS ( ) ; break ; } default : arc_multcost = COSTS_N_INSNS ( ) ; break ; } if ( TARGET_NOMPY_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ! TARGET_DPFP && TARGET_DPFP_DISABLE_LRSR ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET && TARGET_DPFP_COMPACT_SET ) || ( TARGET_SPFP_FAST_SET && TARGET_SPFP_COMPACT_SET ) ) error ( ) ; if ( TARGET_SPFP_FAST_SET && TARGET_ARC600_FAMILY ) error ( ) ; if ( ( TARGET_DPFP_FAST_SET || TARGET_DPFP_COMPACT_SET || TARGET_SPFP ) && TARGET_HARD_FLOAT ) error ( ) ;" GCC,arc,484,"Predict the next statement of this code snippet: rtx fnaddr = XEXP ( DECL_RTL ( fndecl ) , ) ; emit_block_move ( tramp , assemble_trampoline_template ( ) , GEN_INT ( TRAMPOLINE_SIZE ) , BLOCK_OP_NORMAL ) ;" GCC,arc,485,"Predict the next statement of this code snippet: if ( from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM ) { return ( cfun -> machine -> frame_info . total_size - cfun -> machine -> frame_info . pretend_size ) ; } if ( ( from == FRAME_POINTER_REGNUM ) && ( to == STACK_POINTER_REGNUM ) ) { return ( cfun -> machine -> frame_info . total_size - ( cfun -> machine -> frame_info . pretend_size + cfun -> machine -> frame_info . extra_size + cfun -> machine -> frame_info . reg_size ) ) ; } if ( ( from == FRAME_POINTER_REGNUM ) && ( to == HARD_FRAME_POINTER_REGNUM ) ) return ;" GCC,arc,486,"Predict the next statement of this code snippet: init_machine_status = arc_init_machine_status ;" GCC,arc,487,"Predict the next statement of this code snippet: static struct machine_function * arc_init_machine_status ( void ) { struct machine_function * machine ; machine = ggc_cleared_alloc < machine_function > ( ) ; machine -> fn_type = ARC_FUNCTION_UNKNOWN ; return machine ;" GCC,arc,488,"Predict the next statement of this code snippet: for ( i = ; i < NUM_MACHINE_MODES ; i ++ ) { machine_mode m = ( machine_mode ) i ; switch ( GET_MODE_CLASS ( m ) ) { case MODE_INT : case MODE_PARTIAL_INT : case MODE_COMPLEX_INT : if ( GET_MODE_SIZE ( m ) <= ) arc_mode_class [ i ] = << ( int ) S_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) D_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) T_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) O_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_FLOAT : case MODE_COMPLEX_FLOAT : if ( GET_MODE_SIZE ( m ) <= ) arc_mode_class [ i ] = << ( int ) SF_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) DF_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) TF_MODE ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = << ( int ) OF_MODE ; else arc_mode_class [ i ] = ; break ; case MODE_VECTOR_INT : if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = ( << ( int ) S_MODE ) ; else if ( GET_MODE_SIZE ( m ) == ) arc_mode_class [ i ] = ( << ( int ) D_MODE ) ; else arc_mode_class [ i ] = ( << ( int ) V_MODE ) ; break ; case MODE_CC : default : if ( i == ( int ) CCmode || i == ( int ) CC_ZNmode || i == ( int ) CC_Zmode || i == ( int ) CC_Cmode || i == CC_FP_GTmode || i == CC_FP_GEmode || i == CC_FP_ORDmode || i == CC_FPUmode || i == CC_FPUEmode || i == CC_FPU_UNEQmode ) arc_mode_class [ i ] = << ( int ) C_MODE ; else arc_mode_class [ i ] = ; break ; } }" GCC,arc,489,"Predict the next statement of this code snippet: static int arc_insn_cost ( rtx_insn * insn , bool speed ) { int cost ; if ( recog_memoized ( insn ) < ) return ; if ( ! speed ) return get_attr_length ( insn ) ; cost = get_attr_cost ( insn ) ; if ( cost > ) return cost ; enum attr_type type = get_attr_type ( insn ) ;" GCC,arc,490,"Predict the next statement of this code snippet: static void arc_internal_label ( FILE * stream , const char * prefix , unsigned long labelno ) { if ( cfun ) arc_ccfsm_at_label ( prefix , labelno , & arc_ccfsm_current ) ;" GCC,arc,491,"Predict the next statement of this code snippet: if ( cfun ) arc_ccfsm_at_label ( prefix , labelno , & arc_ccfsm_current ) ; default_internal_label ( stream , prefix , labelno ) ;" GCC,arc,492,"Predict the next statement of this code snippet: static const char * arc_invalid_within_doloop ( const rtx_insn * insn ) { if ( CALL_P ( insn ) ) return ; return NULL ;" GCC,arc,493,"Predict the next statement of this code snippet: static bool arc_in_small_data_p ( const_tree decl ) { HOST_WIDE_INT size ; tree attr ; if ( TREE_CODE ( decl ) != VAR_DECL ) return false ; if ( TARGET_NO_SDATA_SET ) return false ; if ( DECL_WEAK ( decl ) ) return false ; if ( TREE_READONLY ( decl ) ) return false ; if ( ! TARGET_VOLATILE_CACHE_SET && TREE_THIS_VOLATILE ( decl ) ) return false ; attr = TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ; if ( lookup_attribute ( , attr ) ) return false ; attr = DECL_ATTRIBUTES ( decl ) ; if ( lookup_attribute ( , attr ) ) return false ;" GCC,arc,494,"Predict the next statement of this code snippet: if ( TREE_READONLY ( decl ) ) return false ; if ( ! TARGET_VOLATILE_CACHE_SET && TREE_THIS_VOLATILE ( decl ) ) return false ; attr = TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ; if ( lookup_attribute ( , attr ) ) return false ; attr = DECL_ATTRIBUTES ( decl ) ; if ( lookup_attribute ( , attr ) ) return false ; if ( DECL_SECTION_NAME ( decl ) != ) {" GCC,arc,495,"Predict the next statement of this code snippet: else if ( TREE_CODE ( addr ) == MEM_REF ) attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; else return false ; if ( lookup_attribute ( , attrs ) ) return true ; return false ;" GCC,arc,496,"Predict the next statement of this code snippet: if ( ! addr ) return false ; if ( TREE_CODE ( addr ) == VAR_DECL ) attrs = DECL_ATTRIBUTES ( addr ) ; else if ( TREE_CODE ( addr ) == MEM_REF ) attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; else return false ; if ( lookup_attribute ( , attrs ) ) return true ; return false ;" GCC,arc,497,"Predict the next statement of this code snippet: if ( lookup_attribute ( , attrs ) ) return true ; if ( lookup_attribute ( , attrs ) ) return true ; return TARGET_JLI_ALWAYS ;" GCC,arc,498,"Predict the next statement of this code snippet: if ( lookup_attribute ( , attrs ) ) return true ; if ( lookup_attribute ( , attrs ) ) return true ; return TARGET_JLI_ALWAYS ;" GCC,arc,499,"Predict the next statement of this code snippet: if ( GET_CODE ( sym_ref ) != SYMBOL_REF ) return false ; return ( SYMBOL_REF_LONG_CALL_P ( sym_ref ) || ( TARGET_LONG_CALLS_SET && ! SYMBOL_REF_SHORT_CALL_P ( sym_ref ) && ! SYMBOL_REF_MEDIUM_CALL_P ( sym_ref ) ) ) ;" GCC,arc,500,"Predict the next statement of this code snippet: if ( GET_CODE ( sym_ref ) != SYMBOL_REF ) return false ;" GCC,arc,501,"Predict the next statement of this code snippet: attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ; if ( lookup_attribute ( , attrs ) ) return true ;" GCC,arc,502,"Predict the next statement of this code snippet: if ( ! decl ) return false ; attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( decl ) ) ;" GCC,arc,503,"Predict the next statement of this code snippet: bool arc_is_shortcall_p ( rtx sym_ref ) { if ( GET_CODE ( sym_ref ) != SYMBOL_REF ) return false ; return ( SYMBOL_REF_SHORT_CALL_P ( sym_ref ) || ( ! TARGET_LONG_CALLS_SET && ! TARGET_MEDIUM_CALLS && ! SYMBOL_REF_LONG_CALL_P ( sym_ref ) && ! SYMBOL_REF_MEDIUM_CALL_P ( sym_ref ) ) ) ;" GCC,arc,504,"Predict the next statement of this code snippet: tree addr ; if ( ! MEM_P ( pat ) ) return false ; addr = MEM_EXPR ( pat ) ; if ( ! addr ) return false ; if ( TREE_CODE ( addr ) == MEM_REF || TREE_CODE ( addr ) == VAR_DECL ) { attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( addr ) ) ; if ( lookup_attribute ( , attrs ) ) return true ; } if ( TREE_CODE ( addr ) == MEM_REF ) { attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; if ( lookup_attribute ( , attrs ) ) return true ; attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; if ( lookup_attribute ( , attrs ) ) return true ;" GCC,arc,505,"Predict the next statement of this code snippet: if ( TREE_CODE ( addr ) == COMPONENT_REF ) { attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( addr ) ) ; if ( lookup_attribute ( , attrs ) ) return true ; attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; if ( lookup_attribute ( , attrs ) ) return true ; attrs = TYPE_ATTRIBUTES ( TREE_TYPE ( TREE_OPERAND ( addr , ) ) ) ; if ( lookup_attribute ( , attrs ) ) return true ;" GCC,arc,506,"Predict the next statement of this code snippet: if ( align_labels . levels [ ] . log < ) { rtx_insn * next = next_nonnote_nondebug_insn ( label ) ; if ( INSN_P ( next ) && recog_memoized ( next ) >= ) return ; }" GCC,arc,507,"Predict the next statement of this code snippet: int arc_label_align ( rtx_insn * label ) { if ( align_labels . levels [ ] . log < ) { rtx_insn * next = next_nonnote_nondebug_insn ( label ) ; if ( INSN_P ( next ) && recog_memoized ( next ) >= ) return ; } return align_labels . levels [ ] . log ;" GCC,arc,508,"Predict the next statement of this code snippet: static bool arc_legitimate_address_p ( machine_mode mode , rtx x , bool strict ) { if ( RTX_OK_FOR_BASE_P ( x , strict ) ) return true ; if ( legitimate_offset_address_p ( mode , x , TARGET_INDEXED_LOADS , strict ) ) return true ; if ( legitimate_scaled_address_p ( mode , x , strict ) ) return true ; if ( legitimate_small_data_address_p ( x , mode ) ) return true ; if ( GET_CODE ( x ) == CONST_INT && LARGE_INT ( INTVAL ( x ) ) ) return true ; if ( ! flag_pic && optimize_size && ! reload_completed && ( GET_CODE ( x ) == CONST ) && ( GET_CODE ( XEXP ( x , ) ) == PLUS ) && ( GET_CODE ( XEXP ( XEXP ( x , ) , ) ) == SYMBOL_REF ) && SYMBOL_REF_TLS_MODEL ( XEXP ( XEXP ( x , ) , ) ) == && ! SYMBOL_REF_FUNCTION_P ( XEXP ( XEXP ( x , ) , ) ) ) {" GCC,arc,509,"Predict the next statement of this code snippet: case CONST_DOUBLE : return true ; case NEG : return arc_legitimate_constant_p ( mode , XEXP ( x , ) ) ; case PLUS : case MINUS : { bool t1 = arc_legitimate_constant_p ( mode , XEXP ( x , ) ) ; bool t2 = arc_legitimate_constant_p ( mode , XEXP ( x , ) ) ; return ( t1 && t2 ) ; } case CONST_VECTOR : switch ( mode ) { case E_V2HImode : return TARGET_PLUS_DMPY ;" GCC,arc,510,"Predict the next statement of this code snippet: if ( GET_CODE ( XEXP ( addr , ) ) != CONST_INT ) return false ; addr = XEXP ( addr , ) ; } if ( GET_CODE ( addr ) != UNSPEC || XVECLEN ( addr , ) != ) return false ; if ( XINT ( addr , ) != ARC_UNSPEC_GOT && XINT ( addr , ) != ARC_UNSPEC_GOTOFF && XINT ( addr , ) != ARC_UNSPEC_GOTOFFPC && XINT ( addr , ) != UNSPEC_TLS_GD && XINT ( addr , ) != UNSPEC_TLS_IE ) return false ;" GCC,arc,511,"Predict the next statement of this code snippet: static rtx arc_legitimize_address ( rtx orig_x , rtx oldx , machine_mode mode ) {" GCC,arc,512,"Predict the next statement of this code snippet: static rtx arc_legitimize_address ( rtx orig_x , rtx oldx , machine_mode mode ) { rtx new_x = arc_legitimize_address_0 ( orig_x , oldx , mode ) ; if ( new_x ) return new_x ;" GCC,arc,513,"Predict the next statement of this code snippet: int size = GET_MODE_SIZE ( mode ) ; offs = INTVAL ( XEXP ( addr , ) ) ; upper = ( offs + * size ) & ~ * size ; inner = plus_constant ( Pmode , XEXP ( addr , ) , upper ) ; if ( GET_CODE ( x ) == CONST ) inner = gen_rtx_CONST ( Pmode , inner ) ; addr = plus_constant ( Pmode , force_reg ( Pmode , inner ) , offs - upper ) ; x = addr ; }" GCC,arc,514,"Predict the next statement of this code snippet: addr = x ; if ( GET_CODE ( addr ) == CONST ) addr = XEXP ( addr , ) ; if ( GET_CODE ( addr ) == PLUS && CONST_INT_P ( XEXP ( addr , ) ) && ( ( GET_CODE ( XEXP ( addr , ) ) == SYMBOL_REF && ! SYMBOL_REF_FUNCTION_P ( XEXP ( addr , ) ) ) || ( REG_P ( XEXP ( addr , ) ) && ( INTVAL ( XEXP ( addr , ) ) & ) ) ) ) {" GCC,arc,515,"Predict the next statement of this code snippet: case SYMBOL_REF : if ( SYMBOL_REF_TLS_MODEL ( addr ) ) return addr ; if ( ! arc_symbol_binds_local_p ( addr ) ) return gen_const_mem ( Pmode , arc_unspec_offset ( addr , ARC_UNSPEC_GOT ) ) ; case LABEL_REF : return arc_unspec_offset ( addr , ARC_UNSPEC_GOTOFFPC ) ; default : break ; } return addr ;" GCC,arc,516,"Predict the next statement of this code snippet: offset_base = ( ( offset + ( << shift ) ) & ( ( HOST_WIDE_INT ) ( ( unsigned HOST_WIDE_INT ) - << shift ) ) ) ; if ( GET_MODE_SIZE ( mode ) + offset - offset_base <= ( << shift ) ) { int regno ; reg = XEXP ( x , ) ; regno = REGNO ( reg ) ; sum2 = sum = plus_constant ( Pmode , reg , offset_base ) ; if ( reg_equiv_constant ( regno ) ) { sum2 = plus_constant ( Pmode , reg_equiv_constant ( regno ) , offset_base ) ; if ( GET_CODE ( sum2 ) == PLUS ) sum2 = gen_rtx_CONST ( Pmode , sum2 ) ; } * p = gen_rtx_PLUS ( Pmode , sum , GEN_INT ( offset - offset_base ) ) ; push_reload ( sum2 , NULL_RTX , & XEXP ( * p , ) , NULL , BASE_REG_CLASS , Pmode , VOIDmode , , , opnum , type ) ; return true ; } } else if ( GET_CODE ( x ) == PLUS && GET_CODE ( XEXP ( x , ) ) == PLUS && CONST_INT_P ( XEXP ( XEXP ( x , ) , ) ) && REG_P ( XEXP ( XEXP ( x , ) , ) ) && CONST_INT_P ( XEXP ( x , ) ) ) { push_reload ( XEXP ( x , ) , NULL_RTX , & XEXP ( x , ) , NULL , BASE_REG_CLASS , Pmode , VOIDmode , , , opnum , type ) ; return true ; }" GCC,arc,517,"Predict the next statement of this code snippet: if ( ! flag_pic && model == TLS_MODEL_LOCAL_DYNAMIC ) model = TLS_MODEL_LOCAL_EXEC ; gcc_assert ( arc_tp_regno != - ) ; switch ( model ) { case TLS_MODEL_GLOBAL_DYNAMIC : tmp = gen_reg_rtx ( Pmode ) ; emit_move_insn ( tmp , arc_unspec_offset ( addr , UNSPEC_TLS_GD ) ) ; return arc_call_tls_get_addr ( tmp ) ; case TLS_MODEL_LOCAL_DYNAMIC : rtx base ; tree decl ; const char * base_name ; decl = SYMBOL_REF_DECL ( addr ) ; base_name = DTPOFF_ZERO_SYM ; if ( decl && bss_initializer_p ( decl ) ) base_name = ; base = gen_rtx_SYMBOL_REF ( Pmode , base_name ) ; tmp = gen_reg_rtx ( Pmode ) ; emit_move_insn ( tmp , arc_unspec_offset ( base , UNSPEC_TLS_GD ) ) ;" GCC,arc,518,"Predict the next statement of this code snippet: return gen_rtx_PLUS ( Pmode , force_reg ( Pmode , base ) , arc_unspec_offset ( addr , UNSPEC_TLS_OFF ) ) ; case TLS_MODEL_INITIAL_EXEC : addr = arc_unspec_offset ( addr , UNSPEC_TLS_IE ) ; addr = copy_to_mode_reg ( Pmode , gen_const_mem ( Pmode , addr ) ) ; return gen_rtx_PLUS ( Pmode , gen_rtx_REG ( Pmode , arc_tp_regno ) , addr ) ; case TLS_MODEL_LOCAL_EXEC : addr = arc_unspec_offset ( addr , UNSPEC_TLS_OFF ) ;" GCC,arc,519,"Predict the next statement of this code snippet: bool arc_lra_p ( void ) {" GCC,arc,520,"Predict the next statement of this code snippet: return arc_lra_flag ;" GCC,arc,521,"Predict the next statement of this code snippet: static int arc_memory_move_cost ( machine_mode mode , reg_class_t rclass ATTRIBUTE_UNUSED , bool in ATTRIBUTE_UNUSED ) { if ( ( GET_MODE_SIZE ( mode ) <= UNITS_PER_WORD ) || ( ( GET_MODE_SIZE ( mode ) <= UNITS_PER_WORD * ) && TARGET_LL64 ) ) return ;" GCC,arc,522,"Predict the next statement of this code snippet: return ( GET_MODE_CLASS ( mode1 ) == MODE_INT && GET_MODE_CLASS ( mode2 ) == MODE_INT && GET_MODE_SIZE ( mode1 ) <= UNITS_PER_WORD && GET_MODE_SIZE ( mode2 ) <= UNITS_PER_WORD ) ;" GCC,arc,523,"Predict the next statement of this code snippet: if ( GET_CODE ( addr ) == PLUS && GET_CODE ( XEXP ( ( addr ) , ) ) == MULT ) return true ; return false ;" GCC,arc,524,"Predict the next statement of this code snippet: static bool arc_must_save_return_addr ( struct function * func ) { if ( func -> machine -> frame_info . save_return_addr ) return true ; return false ;" GCC,arc,525,"Predict the next statement of this code snippet: bool arc_need_delay ( rtx_insn * insn ) { rtx_insn * next ; if ( ! flag_delayed_branch ) return false ;" GCC,arc,526,"Predict the next statement of this code snippet: return true ;" GCC,arc,527,"Predict the next statement of this code snippet: return true ;" GCC,arc,528,"Predict the next statement of this code snippet: int match = operands_match_p ( operands [ ] , operands [ ] ) ; int match2 = operands_match_p ( operands [ ] , operands [ ] ) ; int intval = ( REG_P ( operands [ ] ) ? : CONST_INT_P ( operands [ ] ) ? INTVAL ( operands [ ] ) : ) ; int neg_intval = - intval ; int short_0 = satisfies_constraint_Rcq ( operands [ ] ) ; int short_p = ( ! cond_p && short_0 && satisfies_constraint_Rcq ( operands [ ] ) ) ; int ret = ;" GCC,arc,529,"Predict the next statement of this code snippet: int match2 = operands_match_p ( operands [ ] , operands [ ] ) ; int intval = ( REG_P ( operands [ ] ) ? : CONST_INT_P ( operands [ ] ) ? INTVAL ( operands [ ] ) : ) ; int neg_intval = - intval ;" GCC,arc,530,"Predict the next statement of this code snippet: unsigned len = strlen ( fname ) ; static char buf [ ] ; gcc_assert ( len < sizeof buf - ) ; if ( TARGET_LONG_CALLS_SET || ( TARGET_MEDIUM_CALLS && arc_ccfsm_cond_exec_p ( ) ) ) { if ( flag_pic ) sprintf ( buf , , fname ) ; else sprintf ( buf , , fname ) ;" GCC,arc,531,"Predict the next statement of this code snippet: const char * arc_output_libcall ( const char * fname ) { unsigned len = strlen ( fname ) ; static char buf [ ] ; gcc_assert ( len < sizeof buf - ) ; if ( TARGET_LONG_CALLS_SET || ( TARGET_MEDIUM_CALLS && arc_ccfsm_cond_exec_p ( ) ) ) { if ( flag_pic ) sprintf ( buf , , fname ) ; else sprintf ( buf , , fname ) ; } else sprintf ( buf , , fname ) ;" GCC,arc,532,"Predict the next statement of this code snippet: asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG , ARC_TEMP_SCRATCH_REG ) ; asm_fprintf ( file , , reg_names [ this_regno ] , reg_names [ this_regno ] , ARC_TEMP_SCRATCH_REG ) ; } fnaddr = XEXP ( DECL_RTL ( function ) , ) ; if ( arc_is_longcall_p ( fnaddr ) ) { if ( flag_pic ) { asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG ) ; assemble_name ( file , XSTR ( fnaddr , ) ) ; fputs ( , file ) ; asm_fprintf ( file , , ARC_TEMP_SCRATCH_REG ) ; } else { fputs ( , file ) ; assemble_name ( file , XSTR ( fnaddr , ) ) ;" GCC,arc,533,"Predict the next statement of this code snippet: if ( INTVAL ( XEXP ( x , ) ) >= ) fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; } else gcc_unreachable ( ) ; break ; case MINUS : x = simplify_subtraction ( x ) ; if ( GET_CODE ( x ) != MINUS ) goto restart ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; if ( GET_CODE ( XEXP ( x , ) ) == CONST_INT && INTVAL ( XEXP ( x , ) ) < ) { fprintf ( file , ) ; arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; fprintf ( file , ) ; } else arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case ZERO_EXTEND : case SIGN_EXTEND : arc_output_pic_addr_const ( file , XEXP ( x , ) , code ) ; break ; case UNSPEC : const char * suffix ; bool pcrel ; pcrel = false ; rtx base ; base = NULL ; gcc_assert ( XVECLEN ( x , ) >= ) ; switch ( XINT ( x , ) ) { case ARC_UNSPEC_GOT : suffix = , pcrel = true ; break ; case ARC_UNSPEC_GOTOFF : suffix = ; break ; case ARC_UNSPEC_GOTOFFPC : suffix = , pcrel = true ; break ; case ARC_UNSPEC_PLT : suffix = ; break ; case UNSPEC_TLS_GD : suffix = , pcrel = true ; break ; case UNSPEC_TLS_IE : suffix = , pcrel = true ; break ; case UNSPEC_TLS_OFF : if ( XVECLEN ( x , ) == ) base = XVECEXP ( x , , ) ; if ( SYMBOL_REF_TLS_MODEL ( XVECEXP ( x , , ) ) == TLS_MODEL_LOCAL_EXEC || ( ! flag_pic && ! base ) ) suffix = ; else suffix = ; break ; default : suffix = ; output_operand_lossage ( , XINT ( x , ) ) ;" GCC,arc,534,"Predict the next statement of this code snippet: static bool arc_pass_by_reference ( cumulative_args_t , const function_arg_info & arg ) {" GCC,arc,535,"Predict the next statement of this code snippet: static void arc_post_atomic_barrier ( enum memmodel model ) {" GCC,arc,536,"Predict the next statement of this code snippet: static void arc_post_atomic_barrier ( enum memmodel model ) { if ( need_atomic_barrier_p ( model , false ) ) emit_insn ( gen_memory_barrier ( ) ) ;" GCC,arc,537,"Predict the next statement of this code snippet: jump = XVECEXP ( pat , , ) ; dlay = XVECEXP ( pat , , ) ; if ( ! JUMP_P ( jump ) || ! INSN_ANNULLED_BRANCH_P ( jump ) ) continue ; if ( ! TARGET_AT_DBR_CONDEXEC && ! INSN_FROM_TARGET_P ( dlay ) ) continue ; gcc_assert ( GET_CODE ( PATTERN ( jump ) ) == SET ) ; gcc_assert ( SET_DEST ( PATTERN ( jump ) ) == pc_rtx ) ; src = SET_SRC ( PATTERN ( jump ) ) ; gcc_assert ( GET_CODE ( src ) == IF_THEN_ELSE ) ; cond = XEXP ( src , ) ; if ( XEXP ( src , ) == pc_rtx ) reverse = ; else if ( XEXP ( src , ) == pc_rtx ) reverse = ; else gcc_unreachable ( ) ; if ( reverse != ! INSN_FROM_TARGET_P ( dlay ) ) { machine_mode ccm = GET_MODE ( XEXP ( cond , ) ) ;" GCC,arc,538,"Predict the next statement of this code snippet: enum reg_class arc_preferred_reload_class ( rtx , enum reg_class cl ) {" GCC,arc,539,"Predict the next statement of this code snippet: static machine_mode arc_preferred_simd_mode ( scalar_mode mode ) {" GCC,arc,540,"Predict the next statement of this code snippet: static void arc_pre_atomic_barrier ( enum memmodel model ) { if ( need_atomic_barrier_p ( model , true ) ) emit_insn ( gen_memory_barrier ( ) ) ;" GCC,arc,541,"Predict the next statement of this code snippet: if ( need_atomic_barrier_p ( model , true ) ) emit_insn ( gen_memory_barrier ( ) ) ;" GCC,arc,542,"Predict the next statement of this code snippet: if ( output_sdata ) fputs ( , file ) ; output_sdata = ; break ; case PLUS : if ( GET_CODE ( XEXP ( addr , ) ) == MULT ) index = XEXP ( XEXP ( addr , ) , ) , base = XEXP ( addr , ) ; else if ( CONST_INT_P ( XEXP ( addr , ) ) ) index = XEXP ( addr , ) , base = XEXP ( addr , ) ; else base = XEXP ( addr , ) , index = XEXP ( addr , ) ; gcc_assert ( OBJECT_P ( base ) ) ; arc_print_operand_address ( file , base ) ; if ( CONSTANT_P ( base ) && CONST_INT_P ( index ) ) fputc ( '+' , file ) ; else fputc ( ',' , file ) ; gcc_assert ( OBJECT_P ( index ) ) ; arc_print_operand_address ( file , index ) ; break ;" GCC,arc,543,"Predict the next statement of this code snippet: if ( refers_to_regno_p ( , , dest , ) ) { gcc_assert ( REG_P ( src ) ) ; gcc_assert ( state == none ) ; state = destDx ; } if ( state == none ) return false ; if ( state == srcDx ) { if ( TARGET_DPFP_DISABLE_LRSR ) { rtx set = gen_rtx_SET ( dest , src ) ; rtx use1 = gen_rtx_USE ( VOIDmode , const1_rtx ) ; emit_insn ( gen_rtx_PARALLEL ( VOIDmode , gen_rtvec ( , set , use1 ) ) ) ; } else { rtx destHigh = simplify_gen_subreg ( SImode , dest , DFmode , TARGET_BIG_ENDIAN ? : ) ; rtx destLow = simplify_gen_subreg ( SImode , dest , DFmode , TARGET_BIG_ENDIAN ? : ) ; emit_insn ( gen_rtx_SET ( destHigh , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_ARC_LR_HIGH ) ) ) ; emit_insn ( gen_rtx_SET ( destLow , gen_rtx_UNSPEC_VOLATILE ( Pmode , gen_rtvec ( , src ) , VUNSPEC_ARC_LR ) ) ) ;" GCC,arc,544,"Predict the next statement of this code snippet: if ( SYMBOL_REF_TLS_MODEL ( op ) ) return true ; if ( ! flag_pic ) return false ; tree decl = SYMBOL_REF_DECL ( op ) ; return ! skip_local || ! decl || ! default_binds_local_p ( decl ) ; } fmt = GET_RTX_FORMAT ( GET_CODE ( op ) ) ; for ( i = GET_RTX_LENGTH ( GET_CODE ( op ) ) - ; i >= ; i -- ) { if ( fmt [ i ] == 'E' ) { int j ; for ( j = XVECLEN ( op , i ) - ; j >= ; j -- ) if ( arc_raw_symbolic_reference_mentioned_p ( XVECEXP ( op , i , j ) , skip_local ) ) return true ; } else if ( fmt [ i ] == 'e' && arc_raw_symbolic_reference_mentioned_p ( XEXP ( op , i ) , skip_local ) ) return true ;" GCC,arc,545,"Predict the next statement of this code snippet: return ( ( ( ( r & ) ^ ) - ) & ) == r ; default : gcc_unreachable ( ) ;" GCC,arc,546,"Predict the next statement of this code snippet: if ( REG_P ( x ) && refers_to_regno_p ( regno , x ) ) return x ; fmt = GET_RTX_FORMAT ( GET_CODE ( x ) ) ; for ( i = GET_RTX_LENGTH ( GET_CODE ( x ) ) - ; i >= ; i -- ) { if ( fmt [ i ] == 'e' ) { if ( ( tem = regno_use_in ( regno , XEXP ( x , i ) ) ) ) return tem ; } else if ( fmt [ i ] == 'E' ) for ( j = XVECLEN ( x , i ) - ; j >= ; j -- ) if ( ( tem = regno_use_in ( regno , XVECEXP ( x , i , j ) ) ) ) return tem ; } return NULL_RTX ;" GCC,arc,547,"Predict the next statement of this code snippet: int i , j ; rtx tem ; if ( REG_P ( x ) && refers_to_regno_p ( regno , x ) ) return x ; fmt = GET_RTX_FORMAT ( GET_CODE ( x ) ) ; for ( i = GET_RTX_LENGTH ( GET_CODE ( x ) ) - ; i >= ; i -- ) { if ( fmt [ i ] == 'e' ) { if ( ( tem = regno_use_in ( regno , XEXP ( x , i ) ) ) ) return tem ; } else if ( fmt [ i ] == 'E' ) for ( j = XVECLEN ( x , i ) - ; j >= ; j -- ) if ( ( tem = regno_use_in ( regno , XVECEXP ( x , i , j ) ) ) ) return tem ; }" GCC,arc,548,"Predict the next statement of this code snippet: if ( ! link_insn ) continue ; else { rtx op , cc_clob_rtx , op0 , op1 , brcc_insn , note ; rtx cmp0 , cmp1 ; if ( find_reg_note ( link_insn , REG_SAVE_NOTE , GEN_INT ( ) ) ) continue ; op = XEXP ( pc_target , ) ; op0 = cmp0 = XEXP ( SET_SRC ( pat ) , ) ; op1 = cmp1 = XEXP ( SET_SRC ( pat ) , ) ; if ( GET_CODE ( op0 ) == ZERO_EXTRACT && XEXP ( op0 , ) == const1_rtx && ( GET_CODE ( op ) == EQ || GET_CODE ( op ) == NE ) ) { op0 = XEXP ( cmp0 , ) ; op1 = XEXP ( cmp0 , ) ; } else if ( ! register_operand ( op0 , VOIDmode ) || ! general_operand ( op1 , VOIDmode ) ) continue ; else if ( TARGET_SPFP && GET_MODE ( op0 ) == SFmode && GET_MODE ( op1 ) == SFmode ) continue ; if ( reg_set_between_p ( op0 , link_insn , insn ) ) continue ; if ( reg_set_between_p ( op1 , link_insn , insn ) ) continue ; if ( ( reg_set_between_p ( SET_DEST ( pat ) , link_insn , insn ) ) || ( reg_used_between_p ( SET_DEST ( pat ) , link_insn , insn ) ) ) continue ; if ( ! find_regno_note ( insn , REG_DEAD , CC_REG ) ) continue ; op = gen_rtx_fmt_ee ( GET_CODE ( op ) , GET_MODE ( op ) , cmp0 , cmp1 ) ; if ( ! brcc_nolimm_operator ( op , VOIDmode ) && ! long_immediate_operand ( op1 , VOIDmode ) && ( TARGET_ARC700 || ( TARGET_V2 && optimize_size ) || next_active_insn ( link_insn ) != insn ) ) continue ; if ( op0 != cmp0 ) cc_clob_rtx = gen_rtx_REG ( CC_ZNmode , CC_REG ) ; else if ( ( offset >= - && offset < ) && rtx_equal_p ( op1 , const0_rtx ) && compact_register_operand ( op0 , VOIDmode ) && ( GET_CODE ( op ) == EQ || GET_CODE ( op ) == NE ) ) cc_clob_rtx = gen_rtx_REG ( CC_Zmode , CC_REG ) ;" GCC,arc,549,"Predict the next statement of this code snippet: static void arc_reorg_loops ( void ) {" GCC,arc,550,"Predict the next statement of this code snippet: reorg_loops ( true , & arc_doloop_hooks ) ;" GCC,arc,551,"Predict the next statement of this code snippet: gcc_assert ( end_reg > ) ; if ( arc_frame_pointer_needed ( ) && offset ) { frame_move ( stack_pointer_rtx , hard_frame_pointer_rtx ) ; frame_allocated = offset ; offset = ; } if ( restore_fp ) frame_allocated += frame_restore_reg ( hard_frame_pointer_rtx , ) ; if ( offset ) { frame_stack_add ( offset ) ; frame_allocated += offset ; offset = ; } insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( ( return_p ? : ) + nregs + ) ) ; indx = ; if ( return_p ) { reg = gen_rtx_REG ( Pmode , ) ; XVECEXP ( insn , , indx ++ ) = ret_rtx ; XVECEXP ( insn , , indx ++ ) = gen_rtx_SET ( stack_pointer_rtx , gen_rtx_PLUS ( Pmode , stack_pointer_rtx , reg ) ) ; frame_allocated += UNITS_PER_WORD ; } else { XVECEXP ( insn , , nregs ) = gen_rtx_CLOBBER ( VOIDmode , gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ) ; } for ( regno = start_reg , off = ; regno <= end_reg ; regno ++ , indx ++ , off += UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ;" GCC,arc,552,"Predict the next statement of this code snippet: if ( early_blink_restore ) { rtx addr = plus_constant ( Pmode , stack_pointer_rtx , offs ) ; reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; rtx insn = frame_move_inc ( reg , gen_frame_mem ( Pmode , addr ) , stack_pointer_rtx , NULL_RTX ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ; restore_blink = false ; } if ( gmask ) for ( i = ; i <= GMASK_LEN ; i ++ ) { machine_mode restore_mode = SImode ; if ( TARGET_LL64 && ( ( i % ) == ) && ( ( gmask & ( << i ) ) != ) && ( ( gmask & ( << ( i + ) ) ) != ) ) restore_mode = DImode ; else if ( ( gmask & ( << i ) ) == ) continue ; reg = gen_rtx_REG ( restore_mode , i ) ; offs = ; switch ( restore_mode ) { case E_DImode : if ( ( GMASK_LEN - __builtin_clzll ( gmask ) ) == ( i + ) && early_blink_restore ) offs = ; break ; case E_SImode : if ( ( GMASK_LEN - __builtin_clzll ( gmask ) ) == i && early_blink_restore ) offs = ; break ;" GCC,arc,553,"Predict the next statement of this code snippet: else if ( ( fn_type & ARC_FUNCTION_ILINK2 ) != ) regno = ILINK2_REG ; else gcc_unreachable ( ) ; } else if ( ARC_NORMAL_P ( fn_type ) || ARC_NAKED_P ( fn_type ) ) regno = RETURN_ADDR_REGNUM ; gcc_assert ( regno != ) ;" GCC,arc,554,"Predict the next statement of this code snippet: if ( count != ) return const0_rtx ;" GCC,arc,555,"Predict the next statement of this code snippet: rtx arc_return_addr_rtx ( int count , ATTRIBUTE_UNUSED rtx frame ) {" GCC,arc,556,"Predict the next statement of this code snippet: else { HOST_WIDE_INT size = int_size_in_bytes ( type ) ; return ( size == - || size > ( TARGET_V2 ? : ) ) ; }" GCC,arc,557,"Predict the next statement of this code snippet: insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( nregs + ( save_fp ? : ) + ) ) ; indx = ; reg = gen_rtx_SET ( stack_pointer_rtx , plus_constant ( Pmode , stack_pointer_rtx , - nregs * UNITS_PER_WORD ) ) ; RTX_FRAME_RELATED_P ( reg ) = ; XVECEXP ( insn , , indx ++ ) = reg ; off = nregs * UNITS_PER_WORD ; if ( save_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ; save_blink = false ; } for ( regno = start_reg ; regno <= end_reg ; regno ++ , indx ++ , off -= UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ) ) = ; gmask = gmask & ~ ( << regno ) ; } if ( save_fp ) { mem = gen_frame_mem ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , hard_frame_pointer_rtx ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ++ ) ) = ; off -= UNITS_PER_WORD ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( hard_frame_pointer_rtx , stack_pointer_rtx ) ;" GCC,arc,558,"Predict the next statement of this code snippet: if ( save_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; frame_allocated += frame_save_reg ( reg , offset ) ; offset = ; } if ( reg_size || offset ) { frame_stack_add ( offset - reg_size ) ; frame_allocated += nregs * UNITS_PER_WORD - offset ; offset = ; } insn = gen_rtx_PARALLEL ( VOIDmode , rtvec_alloc ( nregs + ) ) ; indx = ; XVECEXP ( insn , , nregs ) = gen_rtx_CLOBBER ( VOIDmode , gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ) ; for ( regno = start_reg , indx = , off = ; regno <= end_reg ; regno ++ , indx ++ , off += UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_frame_mem ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; XVECEXP ( insn , , indx ) = gen_rtx_SET ( mem , reg ) ; RTX_FRAME_RELATED_P ( XVECEXP ( insn , , indx ) ) = ; gmask = gmask & ~ ( << regno ) ; } insn = frame_insn ( insn ) ; for ( regno = start_reg , off = ; regno <= end_reg ; regno ++ , off += UNITS_PER_WORD ) { reg = gen_rtx_REG ( SImode , regno ) ; mem = gen_rtx_MEM ( SImode , plus_constant ( Pmode , stack_pointer_rtx , off ) ) ; add_reg_note ( insn , REG_CFA_OFFSET , gen_rtx_SET ( mem , reg ) ) ; } if ( arc_must_save_return_addr ( cfun ) ) { emit_insn ( gen_rtx_SET ( gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) , gen_rtx_MEM ( Pmode , plus_constant ( Pmode , stack_pointer_rtx , reg_size ) ) ) ) ; } for ( regno = ; regno <= GMASK_LEN ; regno ++ ) {" GCC,arc,559,"Predict the next statement of this code snippet: int frame_allocated = ; int i ; if ( save_blink ) { reg = gen_rtx_REG ( Pmode , RETURN_ADDR_REGNUM ) ; frame_allocated += frame_save_reg ( reg , offset ) ; offset = ; } if ( gmask ) for ( i = GMASK_LEN ; i >= ; i -- ) { machine_mode save_mode = SImode ; if ( TARGET_LL64 && ( ( i - ) % == ) && ( ( gmask & ( << i ) ) != ) && ( ( gmask & ( << ( i - ) ) ) != ) ) { save_mode = DImode ; -- i ; } else if ( ( gmask & ( << i ) ) == ) continue ;" GCC,arc,560,"Predict the next statement of this code snippet: if ( gmask ) for ( i = GMASK_LEN ; i >= ; i -- ) { machine_mode save_mode = SImode ;" GCC,arc,561,"Predict the next statement of this code snippet: bool arc_scheduling_not_expected ( void ) { return cfun -> machine -> arc_reorg_started ;" GCC,arc,562,"Predict the next statement of this code snippet: rtx set = single_set ( insn ) ; if ( set && GET_MODE ( SET_SRC ( set ) ) == DFmode && GET_CODE ( SET_SRC ( set ) ) == REG ) { return priority + ; }" GCC,arc,563,"Predict the next statement of this code snippet: if ( set && GET_MODE ( SET_SRC ( set ) ) == DFmode && GET_CODE ( SET_SRC ( set ) ) == REG ) { return priority + ; }" GCC,arc,564,"Predict the next statement of this code snippet: case TUNE_ARCHS4XD : return ; default : break ; }" GCC,arc,565,"Predict the next statement of this code snippet: addr = find_replacement ( & XEXP ( mem , ) ) ; } } else { gcc_assert ( MEM_P ( x ) ) ; addr = XEXP ( x , ) ; addr = simplify_rtx ( addr ) ; } if ( addr && GET_CODE ( addr ) == PLUS && CONST_INT_P ( XEXP ( addr , ) ) && ( ! RTX_OK_FOR_OFFSET_P ( mode , XEXP ( addr , ) ) ) ) { switch ( mode ) { case E_QImode : sri -> icode = in_p ? CODE_FOR_reload_qi_load : CODE_FOR_reload_qi_store ; break ; case E_HImode : sri -> icode = in_p ? CODE_FOR_reload_hi_load : CODE_FOR_reload_hi_store ; break ;" GCC,arc,566,"Predict the next statement of this code snippet: void arc_secondary_reload_conv ( rtx reg , rtx mem , rtx scratch , bool store_p ) { rtx addr ; gcc_assert ( GET_CODE ( mem ) == MEM ) ; addr = XEXP ( mem , ) ;" GCC,arc,567,"Predict the next statement of this code snippet: gcc_assert ( GET_CODE ( mem ) == MEM ) ; addr = XEXP ( mem , ) ; emit_move_insn ( scratch , addr ) ; mem = replace_equiv_address_nv ( mem , scratch ) ; if ( store_p ) emit_insn ( gen_rtx_SET ( mem , reg ) ) ;" GCC,arc,568,"Predict the next statement of this code snippet: machine_mode arc_select_cc_mode ( enum rtx_code op , rtx x , rtx y ) { machine_mode mode = GET_MODE ( x ) ; rtx x1 ; if ( GET_MODE_CLASS ( mode ) == MODE_INT && y == const0_rtx && ( op == EQ || op == NE || ( ( op == LT || op == GE ) && GET_MODE_SIZE ( GET_MODE ( x ) ) <= ) ) ) return CC_ZNmode ; if ( mode == SImode && GET_CODE ( y ) == NEG && ( op == EQ || op == NE ) ) return CC_ZNmode ; if ( mode == SImode && ( op == EQ || op == NE ) && CONST_INT_P ( y ) && ( ( INTVAL ( y ) - ) & INTVAL ( y ) ) == && INTVAL ( y ) ) return CC_Zmode ; if ( mode == SImode && ( op == EQ || op == NE ) && CONST_INT_P ( y ) && GET_CODE ( x ) == AND && CONST_INT_P ( ( x1 = XEXP ( x , ) ) ) && ( ( INTVAL ( x1 ) + ) & INTVAL ( x1 ) ) == && ( ~ INTVAL ( x1 ) | INTVAL ( y ) ) < && ( ~ INTVAL ( x1 ) | INTVAL ( y ) ) > - ) return CC_Zmode ; if ( GET_MODE ( x ) == SImode && ( op == LTU || op == GEU ) && GET_CODE ( x ) == PLUS && ( rtx_equal_p ( XEXP ( x , ) , y ) || rtx_equal_p ( XEXP ( x , ) , y ) ) ) return CC_Cmode ; if ( TARGET_ARGONAUT_SET && ( ( mode == SFmode && TARGET_SPFP ) || ( mode == DFmode && TARGET_DPFP ) ) ) switch ( op ) { case EQ : case NE : case UNEQ : case LTGT : case ORDERED : case UNORDERED : return CC_FPXmode ; case LT : case UNGE : case GT : case UNLE : return CC_FP_GTmode ; case LE : case UNGT : case GE : case UNLT : return CC_FP_GEmode ; default : gcc_unreachable ( ) ; } else if ( TARGET_HARD_FLOAT && ( ( mode == SFmode && TARGET_FP_SP_BASE ) || ( mode == DFmode && TARGET_FP_DP_BASE ) ) ) switch ( op ) { case EQ : case NE : case UNORDERED : case ORDERED : case UNLT : case UNLE : case UNGT : case UNGE : return CC_FPUmode ; case LT : case LE : case GT : case GE : return CC_FPUEmode ; case LTGT : case UNEQ : return CC_FPU_UNEQmode ; default : gcc_unreachable ( ) ; } else if ( GET_MODE_CLASS ( mode ) == MODE_FLOAT && TARGET_OPTFPE ) { switch ( op ) { case EQ : case NE : return CC_Zmode ; case LT : case UNGE :" GCC,arc,569,"Predict the next statement of this code snippet: bool arc_sets_cc_p ( rtx_insn * insn ) { if ( NONJUMP_INSN_P ( insn ) ) if ( rtx_sequence * seq = dyn_cast < rtx_sequence * > ( PATTERN ( insn ) ) ) insn = seq -> insn ( seq -> len ( ) - ) ; return arc_attr_type ( insn ) == TYPE_COMPARE ;" GCC,arc,570,"Predict the next statement of this code snippet: if ( FUNCTION_ARG_REGNO_P ( first_anon_arg ) ) { int first_reg_offset = first_anon_arg ; if ( ! no_rtl ) { rtx regblock = gen_rtx_MEM ( BLKmode , plus_constant ( Pmode , arg_pointer_rtx , FIRST_PARM_OFFSET ( ) ) ) ;" GCC,arc,571,"Predict the next statement of this code snippet: switch ( get_arc_condition_code ( comparison ) ) { case ARC_CC_EQ : case ARC_CC_NE : return offset >= - && offset <= ;" GCC,arc,572,"Predict the next statement of this code snippet: int is_short = arc_verify_short ( insn , cfun -> machine -> unalign , - ) ;" GCC,arc,573,"Predict the next statement of this code snippet: const char * arc_short_long ( rtx_insn * insn , const char * s_tmpl , const char * l_tmpl ) {" GCC,arc,574,"Predict the next statement of this code snippet: static reg_class_t arc_spill_class ( reg_class_t , machine_mode ) {" GCC,arc,575,"Predict the next statement of this code snippet: return GENERAL_REGS ;" GCC,arc,576,"Predict the next statement of this code snippet: label1 = gen_label_rtx ( ) ; emit_label ( label1 ) ; } label2 = gen_label_rtx ( ) ; emit_insn ( gen_arc_load_exclusivesi ( rval , mem ) ) ; mode = SELECT_CC_MODE ( NE , rval , oldval ) ; cond = gen_rtx_REG ( mode , CC_REG ) ; emit_insn ( gen_rtx_SET ( cond , gen_rtx_COMPARE ( mode , rval , oldval ) ) ) ; x = gen_rtx_NE ( VOIDmode , cond , const0_rtx ) ; x = gen_rtx_IF_THEN_ELSE ( VOIDmode , x , gen_rtx_LABEL_REF ( Pmode , label2 ) , pc_rtx ) ; emit_unlikely_jump ( gen_rtx_SET ( pc_rtx , x ) ) ; emit_insn ( gen_arc_store_exclusivesi ( mem , newval ) ) ; if ( ! is_weak ) { cond = gen_rtx_REG ( CC_Zmode , CC_REG ) ; x = gen_rtx_NE ( VOIDmode , cond , const0_rtx ) ; x = gen_rtx_IF_THEN_ELSE ( VOIDmode , x , gen_rtx_LABEL_REF ( Pmode , label1 ) , pc_rtx ) ; emit_unlikely_jump ( gen_rtx_SET ( pc_rtx , x ) ) ; } if ( mod_f != MEMMODEL_RELAXED ) emit_label ( label2 ) ; arc_post_atomic_barrier ( mod_s ) ; if ( mod_f == MEMMODEL_RELAXED ) emit_label ( label2 ) ;" GCC,arc,577,"Predict the next statement of this code snippet: case : maskx = << ( __builtin_ffs ( mask ) - ) ; emit_insn ( gen_rtx_SET ( operands [ ] , gen_rtx_IOR ( SImode , op1 , GEN_INT ( maskx ) ) ) ) ; mask &= ~ maskx ; op1 = operands [ ] ; case : maskx = << ( __builtin_ffs ( mask ) - ) ; emit_insn ( gen_rtx_SET ( operands [ ] , gen_rtx_IOR ( SImode , op1 , GEN_INT ( maskx ) ) ) ) ; break ; case :" GCC,arc,578,"Predict the next statement of this code snippet: if ( GET_MODE ( operands [ ] ) == V2SImode ) { intval0 = INTVAL ( XVECEXP ( operands [ ] , , ) ) ; intval1 = INTVAL ( XVECEXP ( operands [ ] , , ) ) ; } else { intval1 = INTVAL ( XVECEXP ( operands [ ] , , ) ) << ; intval1 |= INTVAL ( XVECEXP ( operands [ ] , , ) ) & ; intval0 = INTVAL ( XVECEXP ( operands [ ] , , ) ) << ; intval0 |= INTVAL ( XVECEXP ( operands [ ] , , ) ) & ; } xop [ ] = gen_rtx_REG ( SImode , REGNO ( operands [ ] ) ) ; xop [ ] = gen_rtx_REG ( SImode , REGNO ( operands [ ] ) + ) ; xop [ ] = GEN_INT ( trunc_int_for_mode ( intval0 , SImode ) ) ; xop [ ] = GEN_INT ( trunc_int_for_mode ( intval1 , SImode ) ) ; emit_move_insn ( xop [ ] , xop [ ] ) ; emit_move_insn ( xop [ ] , xop [ ] ) ; return ; } for ( i = ; i < ; i ++ ) {" GCC,arc,579,"Predict the next statement of this code snippet: HOST_WIDE_INT shift = __builtin_ffs ( ival ) ; shimm = ( ival >> ( shift - ) ) & ; emit_insn ( gen_rtx_SET ( operands [ ] , GEN_INT ( shimm ) ) ) ; emit_insn ( gen_rtx_SET ( operands [ ] , gen_rtx_ASHIFT ( mode , operands [ ] , GEN_INT ( shift - ) ) ) ) ; return true ; } if ( ( ival & ~ ) == ) { shimm = ( ival * + ) & ; emit_insn ( gen_rtx_SET ( operands [ ] , gen_rtx_ROTATERT ( mode , GEN_INT ( shimm ) , const1_rtx ) ) ) ; return true ; } if ( IS_POWEROF2_P ( ival + ) ) {" GCC,arc,580,"Predict the next statement of this code snippet: rtx out_addr , in_addr ; if ( ! producer ) return false ; if ( ! consumer ) return false ; out_set = single_set ( producer ) ; if ( out_set ) { out_addr = SET_DEST ( out_set ) ; if ( ! out_addr ) return false ; if ( GET_CODE ( out_addr ) == ZERO_EXTEND || GET_CODE ( out_addr ) == SIGN_EXTEND ) out_addr = XEXP ( out_addr , ) ;" GCC,arc,581,"Predict the next statement of this code snippet: if ( out_set ) { out_addr = SET_DEST ( out_set ) ; if ( ! out_addr ) return false ; if ( GET_CODE ( out_addr ) == ZERO_EXTEND || GET_CODE ( out_addr ) == SIGN_EXTEND ) out_addr = XEXP ( out_addr , ) ; if ( ! MEM_P ( out_addr ) ) return false ; in_set = single_set ( consumer ) ; if ( in_set ) { in_addr = SET_SRC ( in_set ) ; if ( ! in_addr ) return false ; if ( GET_CODE ( in_addr ) == ZERO_EXTEND || GET_CODE ( in_addr ) == SIGN_EXTEND ) in_addr = XEXP ( in_addr , ) ; if ( ! MEM_P ( in_addr ) ) return false ; in_addr = XEXP ( in_addr , ) ; out_addr = XEXP ( out_addr , ) ; return exp_equiv_p ( in_addr , out_addr , , true ) ;" GCC,arc,582,"Predict the next statement of this code snippet: bool arc_store_addr_hazard_p ( rtx_insn * producer , rtx_insn * consumer ) { if ( TARGET_ARC700 && ( arc_tune != ARC_TUNE_ARC7XX ) ) return true ;" GCC,arc,583,"Predict the next statement of this code snippet: static bool arc_symbol_binds_local_p ( const_rtx x ) {" GCC,arc,584,"Predict the next statement of this code snippet: next = next_nonnote_insn ( label ) ;" GCC,arc,585,"Predict the next statement of this code snippet: gcc_assert ( GET_CODE ( label ) == CODE_LABEL || ( GET_CODE ( label ) == NOTE && NOTE_KIND ( label ) == NOTE_INSN_DELETED_LABEL ) ) ;" GCC,arc,586,"Predict the next statement of this code snippet: void arc_toggle_unalign ( void ) {" GCC,arc,587,"Predict the next statement of this code snippet: void arc_toggle_unalign ( void ) {" GCC,arc,588,"Predict the next statement of this code snippet: char * lo0 = lo ; for ( ; * up ; up ++ , lo ++ ) * lo = TOLOWER ( * up ) ; * lo = '\0' ; return lo0 ;" GCC,arc,589,"Predict the next statement of this code snippet: int arc_unalign_branch_p ( rtx branch ) { rtx note ; if ( ! TARGET_UNALIGN_BRANCH ) return ; if ( get_attr_delay_slot_filled ( branch ) == DELAY_SLOT_FILLED_YES && ! NEXT_INSN ( branch ) -> deleted ( ) ) return ; note = find_reg_note ( branch , REG_BR_PROB , ) ;" GCC,arc,590,"Predict the next statement of this code snippet: int arc_unalign_branch_p ( rtx branch ) { rtx note ; if ( ! TARGET_UNALIGN_BRANCH ) return ; if ( get_attr_delay_slot_filled ( branch ) == DELAY_SLOT_FILLED_YES && ! NEXT_INSN ( branch ) -> deleted ( ) ) return ; note = find_reg_note ( branch , REG_BR_PROB , ) ;" GCC,arc,591,"Predict the next statement of this code snippet: static rtx arc_unspec_offset ( rtx loc , int unspec ) { return gen_rtx_CONST ( Pmode , gen_rtx_UNSPEC ( Pmode , gen_rtvec ( , loc ) , unspec ) ) ;" GCC,arc,592,"Predict the next statement of this code snippet: if ( flag_pic ) return false ; if ( SYMBOL_REF_SMALL_P ( symbol ) ) return false ; return default_use_anchors_for_symbol_p ( symbol ) ;" GCC,arc,593,"Predict the next statement of this code snippet: if ( op == MOVE_BY_PIECES ) return false ;" GCC,arc,594,"Predict the next statement of this code snippet: if ( op == MOVE_BY_PIECES ) return false ; return default_use_by_pieces_infrastructure_p ( size , align , op , speed_p ) ;" GCC,arc,595,"Predict the next statement of this code snippet: case E_V2SImode : return TARGET_PLUS_QMACW ; case E_V4SImode : case E_V8HImode : return TARGET_SIMD_SET ; default : return false ;" GCC,arc,596,"Predict the next statement of this code snippet: static bool arc_vector_mode_supported_p ( machine_mode mode ) { switch ( mode ) { case E_V2HImode : return TARGET_PLUS_DMPY ; case E_V4HImode : case E_V2SImode : return TARGET_PLUS_QMACW ; case E_V4SImode :" GCC,arc,597,"Predict the next statement of this code snippet: static int arc_verify_short ( rtx_insn * insn , int , int check_attr ) { enum attr_iscompact iscompact ; if ( check_attr > ) { iscompact = get_attr_iscompact ( insn ) ; if ( iscompact == ISCOMPACT_FALSE ) return ; } return ( get_attr_length ( insn ) & ) != ;" GCC,arc,598,"Predict the next statement of this code snippet: static bool arc_warn_func_return ( tree decl ) {" GCC,arc,599,"Predict the next statement of this code snippet: int arc_write_ext_corereg ( rtx insn ) { subrtx_iterator :: array_type array ; FOR_EACH_SUBRTX ( iter , array , PATTERN ( insn ) , NONCONST ) { const_rtx x = * iter ; switch ( GET_CODE ( x ) ) {" GCC,arc,600,"Predict the next statement of this code snippet: if ( GET_CODE ( dest ) == IF_THEN_ELSE ) dest = XEXP ( dest , XEXP ( dest , ) == pc_rtx ? : ) ;" GCC,arc,601,"Predict the next statement of this code snippet: rtx dest = ( GET_CODE ( pat ) == PARALLEL ? SET_SRC ( XVECEXP ( pat , , ) ) : SET_SRC ( pat ) ) ; int dest_uid ; if ( GET_CODE ( dest ) == IF_THEN_ELSE ) dest = XEXP ( dest , XEXP ( dest , ) == pc_rtx ? : ) ;" GCC,arc,602,"Predict the next statement of this code snippet: case CONST : case CONST_INT : return true ; default : error ( ) ; break ; }" GCC,arc,603,"Predict the next statement of this code snippet: return new pass_arc_ifcvt ( m_ctxt ) ;" GCC,arc,604,"Predict the next statement of this code snippet: addr = XEXP ( op , ) ; if ( ! legitimate_small_data_address_p ( addr , mode ) ) return false ; if ( ! short_p || size == ) return true ; align = get_symbol_alignment ( addr ) ; switch ( mode ) {" GCC,arc,605,"Predict the next statement of this code snippet: if ( GET_CODE ( pat ) == SET ) { rtx src = SET_SRC ( pat ) ; if ( COMMUTATIVE_P ( src ) ) { rtx src0 = XEXP ( src , ) ; rtx src1 = XEXP ( src , ) ; rtx dst = SET_DEST ( pat ) ; if ( rtx_equal_p ( src1 , dst ) && ! rtx_equal_p ( src0 , dst ) && REG_P ( src0 ) ) pat = gen_rtx_SET ( dst , gen_rtx_fmt_ee ( GET_CODE ( src ) , GET_MODE ( src ) , src1 , src0 ) ) ; } } if ( RTX_FRAME_RELATED_P ( insn ) ) { gcc_assert ( annulled ) ; rtx note = alloc_reg_note ( REG_FRAME_RELATED_EXPR , pat , REG_NOTES ( insn ) ) ; validate_change ( insn , & REG_NOTES ( insn ) , note , ) ;" GCC,arc,606,"Predict the next statement of this code snippet: return simplify_gen_subreg ( SImode , in , DImode , TARGET_BIG_ENDIAN ? : ) ;" GCC,arc,607,"Predict the next statement of this code snippet: rtx disi_highpart ( rtx in ) {" GCC,arc,608,"Predict the next statement of this code snippet: void emit_shift ( enum rtx_code code , rtx op0 , rtx op1 , rtx op2 ) {" GCC,arc,609,"Predict the next statement of this code snippet: void emit_shift ( enum rtx_code code , rtx op0 , rtx op1 , rtx op2 ) { rtx shift = gen_rtx_fmt_ee ( code , SImode , op1 , op2 ) ; rtx pat = ( ( shift4_operator ( shift , SImode ) ? gen_shift_si3 : gen_shift_si3_loop ) ( op0 , op1 , op2 , shift ) ) ;" GCC,arc,610,"Predict the next statement of this code snippet: add_reg_br_prob_note ( jump , profile_probability :: very_unlikely ( ) ) ;" GCC,arc,611,"Predict the next statement of this code snippet: add_reg_br_prob_note ( jump , profile_probability :: very_unlikely ( ) ) ;" GCC,arc,612,"Predict the next statement of this code snippet: return arc_predicate_delay_insns ( ) ;" GCC,arc,613,"Predict the next statement of this code snippet: virtual unsigned int execute ( function * ) { return arc_predicate_delay_insns ( ) ;" GCC,arc,614,"Predict the next statement of this code snippet: const_rtx dest = XEXP ( x , ) ;" GCC,arc,615,"Predict the next statement of this code snippet: if ( ( reg = decode_reg_name_and_count ( opt -> arg , & nregs ) ) >= ) for ( j = reg ; j < reg + nregs ; j ++ ) SET_HARD_REG_BIT ( overrideregs , j ) ; break ;" GCC,arc,616,"Predict the next statement of this code snippet: gcc_assert ( ( offset & ) == ) ; if ( ! offset ) return NULL_RTX ;" GCC,arc,617,"Predict the next statement of this code snippet: gcc_assert ( ( offset & ) == ) ; if ( ! offset ) return NULL_RTX ; return frame_move ( reg , plus_constant ( Pmode , reg , offset ) ) ;" GCC,arc,618,"Predict the next statement of this code snippet: x = emit_insn ( x ) ; RTX_FRAME_RELATED_P ( x ) = ; return x ;" GCC,arc,619,"Predict the next statement of this code snippet: RTX_FRAME_RELATED_P ( tmp ) = ;" GCC,arc,620,"Predict the next statement of this code snippet: if ( ! addr || GET_CODE ( addr ) == PRE_DEC || GET_CODE ( addr ) == POST_INC || GET_CODE ( addr ) == PRE_MODIFY || GET_CODE ( addr ) == POST_MODIFY ) add_reg_note ( insn , REG_INC , reg ) ; return insn ;" GCC,arc,621,"Predict the next statement of this code snippet: } else addr = gen_frame_mem ( GET_MODE ( reg ) , gen_rtx_POST_INC ( Pmode , stack_pointer_rtx ) ) ; insn = frame_move_inc ( reg , addr , stack_pointer_rtx , ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ; if ( reg == hard_frame_pointer_rtx ) add_reg_note ( insn , REG_CFA_DEF_CFA , plus_constant ( Pmode , stack_pointer_rtx , GET_MODE_SIZE ( GET_MODE ( reg ) ) + offset ) ) ;" GCC,arc,622,"Predict the next statement of this code snippet: rtx tmp = plus_constant ( Pmode , stack_pointer_rtx , offset + GET_MODE_SIZE ( GET_MODE ( reg ) ) ) ; addr = gen_frame_mem ( GET_MODE ( reg ) , gen_rtx_POST_MODIFY ( Pmode , stack_pointer_rtx , tmp ) ) ; } else addr = gen_frame_mem ( GET_MODE ( reg ) , gen_rtx_POST_INC ( Pmode , stack_pointer_rtx ) ) ; insn = frame_move_inc ( reg , addr , stack_pointer_rtx , ) ; add_reg_note ( insn , REG_CFA_RESTORE , reg ) ; if ( reg == hard_frame_pointer_rtx ) add_reg_note ( insn , REG_CFA_DEF_CFA , plus_constant ( Pmode , stack_pointer_rtx , GET_MODE_SIZE ( GET_MODE ( reg ) ) + offset ) ) ; else add_reg_note ( insn , REG_CFA_ADJUST_CFA , gen_rtx_SET ( stack_pointer_rtx , plus_constant ( Pmode , stack_pointer_rtx , GET_MODE_SIZE ( GET_MODE ( reg ) ) + offset ) ) ) ;" GCC,arc,623,"Predict the next statement of this code snippet: rtx tmp = plus_constant ( Pmode , stack_pointer_rtx , offset - GET_MODE_SIZE ( GET_MODE ( reg ) ) ) ; addr = gen_frame_mem ( GET_MODE ( reg ) , gen_rtx_PRE_MODIFY ( Pmode , stack_pointer_rtx , tmp ) ) ; } else addr = gen_frame_mem ( GET_MODE ( reg ) , gen_rtx_PRE_DEC ( Pmode , stack_pointer_rtx ) ) ;" GCC,arc,624,"Predict the next statement of this code snippet: static int frame_save_reg ( rtx reg , HOST_WIDE_INT offset ) { rtx addr ; if ( offset ) { rtx tmp = plus_constant ( Pmode , stack_pointer_rtx , offset - GET_MODE_SIZE ( GET_MODE ( reg ) ) ) ; addr = gen_frame_mem ( GET_MODE ( reg ) , gen_rtx_PRE_MODIFY ( Pmode , stack_pointer_rtx , tmp ) ) ; } else addr = gen_frame_mem ( GET_MODE ( reg ) , gen_rtx_PRE_DEC ( Pmode , stack_pointer_rtx ) ) ;" GCC,arc,625,"Predict the next statement of this code snippet: return frame_add ( stack_pointer_rtx , offset ) ;" GCC,arc,626,"Predict the next statement of this code snippet: static rtx frame_stack_add ( HOST_WIDE_INT offset ) {" GCC,arc,627,"Predict the next statement of this code snippet: virtual bool gate ( function * ) { return flag_delayed_branch ;" GCC,arc,628,"Predict the next statement of this code snippet: virtual bool gate ( function * ) {" GCC,arc,629,"Predict the next statement of this code snippet: rtx gen_acc1 ( void ) {" GCC,arc,630,"Predict the next statement of this code snippet: return gen_rtx_REG ( SImode , TARGET_BIG_ENDIAN ? : ) ;" GCC,arc,631,"Predict the next statement of this code snippet: rtx gen_acc2 ( void ) { return gen_rtx_REG ( SImode , TARGET_BIG_ENDIAN ? : ) ;" GCC,arc,632,"Predict the next statement of this code snippet: if ( GET_CODE ( operands [ i ] ) == SUBREG ) { tmp = SUBREG_REG ( operands [ i ] ) ; gcc_assert ( GET_MODE ( operands [ i ] ) == GET_MODE ( tmp ) ) ; operands [ i ] = tmp ; } } if ( load && REGNO ( operands [ ] ) == REGNO ( base ) ) return false ; if ( load && REGNO ( operands [ ] ) == REGNO ( operands [ ] ) ) return false ; if ( offsets [ ] > offsets [ ] ) { gap = offsets [ ] - offsets [ ] ; offset = offsets [ ] ; std :: swap ( operands [ ] , operands [ ] ) ; std :: swap ( operands [ ] , operands [ ] ) ; } else { gap = offsets [ ] - offsets [ ] ; offset = offsets [ ] ; }" GCC,arc,633,"Predict the next statement of this code snippet: rtx cur_base , cur_offset , tmp ; rtx base = NULL_RTX ; for ( i = ; i < nops ; i ++ ) { if ( ! mem_ok_for_ldd_std ( operands [ nops + i ] , & cur_base , & cur_offset ) ) return false ; if ( i == ) base = cur_base ; else if ( REGNO ( base ) != REGNO ( cur_base ) ) return false ; offsets [ i ] = INTVAL ( cur_offset ) ; if ( GET_CODE ( operands [ i ] ) == SUBREG ) { tmp = SUBREG_REG ( operands [ i ] ) ; gcc_assert ( GET_MODE ( operands [ i ] ) == GET_MODE ( tmp ) ) ; operands [ i ] = tmp ; } } if ( load && REGNO ( operands [ ] ) == REGNO ( base ) ) return false ;" GCC,arc,634,"Predict the next statement of this code snippet: case GEU : return ARC_CC_HS ; default : gcc_unreachable ( ) ; } case E_CC_ZNmode : switch ( GET_CODE ( comparison ) ) { case EQ : return ARC_CC_EQ ; case NE : return ARC_CC_NE ; case GE : return ARC_CC_P ; case LT : return ARC_CC_N ; case GT : return ARC_CC_PNZ ; default : gcc_unreachable ( ) ; } case E_CC_Zmode : switch ( GET_CODE ( comparison ) ) { case EQ : return ARC_CC_EQ ; case NE : return ARC_CC_NE ; default : gcc_unreachable ( ) ; } case E_CC_Cmode : switch ( GET_CODE ( comparison ) ) { case LTU : return ARC_CC_C ; case GEU : return ARC_CC_NC ; default : gcc_unreachable ( ) ; } case E_CC_FP_GTmode : if ( TARGET_ARGONAUT_SET && TARGET_SPFP ) switch ( GET_CODE ( comparison ) ) { case GT : return ARC_CC_N ; case UNLE : return ARC_CC_P ; default : gcc_unreachable ( ) ; } else switch ( GET_CODE ( comparison ) ) { case GT : return ARC_CC_HI ; case UNLE : return ARC_CC_LS ; default : gcc_unreachable ( ) ; } case E_CC_FP_GEmode : switch ( GET_CODE ( comparison ) ) { case GE : return ARC_CC_HS ; case UNLT : return ARC_CC_LO ; default : gcc_unreachable ( ) ; } case E_CC_FP_UNEQmode : switch ( GET_CODE ( comparison ) ) { case UNEQ : return ARC_CC_EQ ; case LTGT : return ARC_CC_NE ; default : gcc_unreachable ( ) ;" GCC,arc,635,"Predict the next statement of this code snippet: case CONST : return get_symbol_alignment ( XEXP ( x , ) ) ; case PLUS : gcc_assert ( CONST_INT_P ( XEXP ( x , ) ) ) ; return get_symbol_alignment ( XEXP ( x , ) ) ; default : return ; } if ( decl ) align = DECL_ALIGN ( decl ) ;" GCC,arc,636,"Predict the next statement of this code snippet: switch ( GET_CODE ( x ) ) { case SYMBOL_REF : decl = SYMBOL_REF_DECL ( x ) ; break ; case CONST : return get_symbol_alignment ( XEXP ( x , ) ) ; case PLUS :" GCC,arc,637,"Predict the next statement of this code snippet: else { emit_insn_before ( gen_addsi3 ( loop -> iter_reg , loop -> iter_reg , constm1_rtx ) , loop -> loop_end ) ; test = gen_rtx_NE ( VOIDmode , loop -> iter_reg , const0_rtx ) ; insn = emit_jump_insn_before ( gen_cbranchsi4 ( test , loop -> iter_reg , const0_rtx , loop -> start_label ) , loop -> loop_end ) ; } JUMP_LABEL ( insn ) = loop -> start_label ;" GCC,arc,638,"Predict the next statement of this code snippet: last_insn = emit_insn_after ( gen_nopv ( ) , last_insn ) ; } add_reg_note ( last_insn , REG_SAVE_NOTE , GEN_INT ( ) ) ; loop -> last_insn = last_insn ; iter_reg = loop -> iter_reg ; gcc_assert ( REG_P ( iter_reg ) ) ; entry_edge = NULL ; FOR_EACH_VEC_SAFE_ELT ( loop -> incoming , i , entry_edge ) if ( entry_edge -> flags & EDGE_FALLTHRU ) break ; if ( entry_edge == NULL ) { if ( dump_file ) fprintf ( dump_file , , loop -> loop_no ) ; return false ; } end_label = gen_label_rtx ( ) ; loop -> end_label = end_label ; entry_bb = entry_edge -> src ; start_sequence ( ) ; if ( need_fix ) { emit_insn ( gen_rtx_SET ( lp_reg , iter_reg ) ) ; SET_HARD_REG_BIT ( loop -> regs_set_in_loop , LP_COUNT ) ; iter_reg = lp_reg ; if ( dump_file ) { fprintf ( dump_file , , loop -> loop_no ) ; } } insn = emit_insn ( gen_arc_lp ( loop -> start_label , loop -> end_label ) ) ; seq = get_insns ( ) ; end_sequence ( ) ; entry_after = BB_END ( entry_bb ) ; if ( ! single_succ_p ( entry_bb ) || vec_safe_length ( loop -> incoming ) > || ! entry_after ) { basic_block new_bb ; edge e ; edge_iterator ei ; emit_insn_before ( seq , BB_HEAD ( loop -> head ) ) ; seq = emit_label_before ( gen_label_rtx ( ) , seq ) ; new_bb = create_basic_block ( seq , insn , entry_bb ) ; FOR_EACH_EDGE ( e , ei , loop -> incoming ) { if ( ! ( e -> flags & EDGE_FALLTHRU ) ) redirect_edge_and_branch_force ( e , new_bb ) ; else redirect_edge_succ ( e , new_bb ) ; } make_edge ( new_bb , loop -> head , ) ; } else { while ( DEBUG_INSN_P ( entry_after ) || ( NOTE_P ( entry_after ) && NOTE_KIND ( entry_after ) != NOTE_INSN_BASIC_BLOCK && NOTE_KIND ( entry_after ) != NOTE_INSN_CALL_ARG_LOCATION ) ) entry_after = NEXT_INSN ( entry_after ) ; entry_after = next_nonnote_insn_bb ( entry_after ) ;" GCC,arc,639,"Predict the next statement of this code snippet: rtx reg ; if ( ! JUMP_P ( insn ) || recog_memoized ( insn ) != CODE_FOR_loop_end ) return NULL_RTX ; reg = SET_DEST ( XVECEXP ( PATTERN ( insn ) , , ) ) ; if ( ! REG_P ( reg ) ) return NULL_RTX ;" GCC,arc,640,"Predict the next statement of this code snippet: if ( ! JUMP_P ( insn ) || recog_memoized ( insn ) != CODE_FOR_loop_end ) return NULL_RTX ; reg = SET_DEST ( XVECEXP ( PATTERN ( insn ) , , ) ) ;" GCC,arc,641,"Predict the next statement of this code snippet: i = strlen ( cstr ) ; str = ( char * ) alloca ( i + ) ; memcpy ( str , cstr , i + ) ; blink = - ; lpcount = - ; dash = strchr ( str , '-' ) ; if ( ! dash ) { warning ( OPT_mirq_ctrl_saved_ , ) ; return ; } * dash = '\0' ; comma = strchr ( dash + , ',' ) ; if ( comma ) * comma = '\0' ; first = decode_reg_name ( str ) ; if ( first != ) { warning ( OPT_mirq_ctrl_saved_ , ) ; return ; } if ( ! strcmp ( dash + , ) ) last = ; else last = decode_reg_name ( dash + ) ; if ( last < ) { warning ( OPT_mirq_ctrl_saved_ , , dash + ) ; return ; } if ( ! ( last & ) ) { warning ( OPT_mirq_ctrl_saved_ , , dash + ) ; return ; } * dash = '-' ; if ( first > last ) { warning ( OPT_mirq_ctrl_saved_ , , str , dash + ) ; return ; } while ( comma ) { * comma = ',' ; str = comma + ; comma = strchr ( str , ',' ) ; if ( comma ) * comma = '\0' ; xreg = decode_reg_name ( str ) ; switch ( xreg ) { case : blink = ; break ;" GCC,arc,642,"Predict the next statement of this code snippet: if ( ! strcmp ( dash + , ) ) last = ; else last = decode_reg_name ( dash + ) ; if ( last < ) { warning ( OPT_mirq_ctrl_saved_ , , dash + ) ; return ; } if ( ! ( last & ) ) { warning ( OPT_mirq_ctrl_saved_ , , dash + ) ; return ; } * dash = '-' ; if ( first > last ) { warning ( OPT_mirq_ctrl_saved_ , , str , dash + ) ; return ; } while ( comma ) { * comma = ',' ; str = comma + ; comma = strchr ( str , ',' ) ; if ( comma ) * comma = '\0' ; xreg = decode_reg_name ( str ) ; switch ( xreg ) { case : blink = ; break ; case : lpcount = ; break ; default : warning ( OPT_mirq_ctrl_saved_ , , str ) ;" GCC,arc,643,"Predict the next statement of this code snippet: rtx_insn * insn ; for ( insn = get_insns ( ) ; insn ; insn = NEXT_INSN ( insn ) ) { if ( ! CALL_P ( insn ) ) continue ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) == COND_EXEC ) pat = COND_EXEC_CODE ( pat ) ;" GCC,arc,644,"Predict the next statement of this code snippet: if ( ! CALL_P ( insn ) ) continue ; rtx pat = PATTERN ( insn ) ; if ( GET_CODE ( pat ) == COND_EXEC ) pat = COND_EXEC_CODE ( pat ) ; pat = XVECEXP ( pat , , ) ; if ( GET_CODE ( pat ) == SET ) pat = SET_SRC ( pat ) ; pat = XEXP ( XEXP ( pat , ) , ) ; if ( GET_CODE ( pat ) == SYMBOL_REF && arc_is_jli_call_p ( pat ) ) arc_add_jli_section ( pat ) ; }" GCC,arc,645,"Predict the next statement of this code snippet: if ( GET_CODE ( x ) != PLUS ) return false ; if ( ! RTX_OK_FOR_BASE_P ( XEXP ( x , ) , ( strict ) ) ) return false ; if ( ( ( index && RTX_OK_FOR_INDEX_P ( XEXP ( x , ) , ( strict ) ) && GET_MODE_SIZE ( ( mode ) ) <= ) || RTX_OK_FOR_OFFSET_P ( mode , XEXP ( x , ) ) ) ) return true ; if ( ! flag_pic && ( GET_CODE ( XEXP ( x , ) ) == SYMBOL_REF ) && ( GET_MODE_SIZE ( mode ) <= ) && ( ! SYMBOL_REF_SMALL_P ( XEXP ( x , ) ) ) ) return true ;" GCC,arc,646,"Predict the next statement of this code snippet: if ( INTVAL ( XEXP ( XEXP ( op , ) , ) ) != ) return false ; break ; case : if ( ! TARGET_LL64 ) return false ; case : if ( INTVAL ( XEXP ( XEXP ( op , ) , ) ) != ) return false ; default : return false ; } if ( RTX_OK_FOR_BASE_P ( XEXP ( op , ) , ( strict ) ) ) return true ;" GCC,arc,647,"Predict the next statement of this code snippet: rtl_opt_pass * make_pass_arc_ifcvt ( gcc :: context * ctxt ) {" GCC,arc,648,"Predict the next statement of this code snippet: rtl_opt_pass * make_pass_arc_predicate_delay_insns ( gcc :: context * ctxt ) { return new pass_arc_predicate_delay_insns ( ctxt ) ;" GCC,arc,649,"Predict the next statement of this code snippet: gcc_assert ( MEM_P ( mem ) ) ; * offset = const0_rtx ; addr = XEXP ( mem , ) ; if ( ! arc_legitimate_address_p ( DImode , addr , reload_in_progress || reload_completed ) ) return false ; if ( REG_P ( addr ) ) {" GCC,arc,650,"Predict the next statement of this code snippet: if ( insn == || ! NOTE_P ( insn ) ) break ; if ( NOTE_INSN_BASIC_BLOCK_P ( insn ) ) return NULL ; }" GCC,arc,651,"Predict the next statement of this code snippet: insn = NEXT_INSN ( insn ) ; if ( insn == || ! NOTE_P ( insn ) ) break ; if ( NOTE_INSN_BASIC_BLOCK_P ( insn ) ) return NULL ; }" GCC,arc,652,"Predict the next statement of this code snippet: static bool operands_ok_ldd_std ( rtx rt , rtx rt2 , HOST_WIDE_INT offset ) { unsigned int t , t2 ; if ( ! reload_completed ) return true ; if ( ! ( SMALL_INT_RANGE ( offset , ( GET_MODE_SIZE ( DImode ) - ) & ( ~ ) , ( offset & ( GET_MODE_SIZE ( DImode ) - ) & ? : - ( - GET_MODE_SIZE ( DImode ) | ( ~ ) ) >> ) ) ) ) return false ;" GCC,arc,653,"Predict the next statement of this code snippet: if ( ! ( SMALL_INT_RANGE ( offset , ( GET_MODE_SIZE ( DImode ) - ) & ( ~ ) , ( offset & ( GET_MODE_SIZE ( DImode ) - ) & ? : - ( - GET_MODE_SIZE ( DImode ) | ( ~ ) ) >> ) ) ) ) return false ; t = REGNO ( rt ) ;" GCC,arc,654,"Predict the next statement of this code snippet: case LSHIFTRT : output_asm_insn ( , operands ) ; break ; default : break ; } } else if ( n == BITS_PER_WORD - && dest_reg_operand ( operands [ ] , SImode ) ) { switch ( code ) { case ASHIFT : output_asm_insn ( , operands ) ; break ; case ASHIFTRT : output_asm_insn ( , operands ) ; output_asm_insn ( , operands ) ; break ; case LSHIFTRT : output_asm_insn ( , operands ) ; output_asm_insn ( , operands ) ; break ; default : break ; } } else if ( n == BITS_PER_WORD - && code == ASHIFT ) output_asm_insn ( , operands ) ; else { operands [ ] = GEN_INT ( n ) ; output_asm_insn ( , operands ) ; shiftloop :" GCC,arc,655,"Predict the next statement of this code snippet: if ( ! insn ) return ; if ( arc_verify_short ( insn , cfun -> machine -> unalign , ) ) {" GCC,arc,656,"Predict the next statement of this code snippet: static void output_short_suffix ( FILE * file ) { rtx_insn * insn = current_output_insn ; if ( ! insn ) return ; if ( arc_verify_short ( insn , cfun -> machine -> unalign , ) ) {" GCC,arc,657,"Predict the next statement of this code snippet: add_reg_note ( prev0 , REG_SAVE_NOTE , GEN_INT ( ) ) ; emit_insn_before ( gen_nopv ( ) , insn ) ; continue ; } offset = get_attr_length ( prev0 ) ; if ( get_attr_length ( prev0 ) == && get_attr_iscompact ( prev0 ) != ISCOMPACT_TRUE ) { wantlong = true ; offset += ; } rtx_insn * prev = prev_active_insn ( prev0 ) ; if ( prev ) offset += get_attr_length ( prev ) ; prev = prev_active_insn ( prev ) ; if ( prev ) offset += get_attr_length ( prev ) ; switch ( offset ) { case :" GCC,arc,658,"Predict the next statement of this code snippet: static void parse_mrgf_banked_regs_option ( const char * arg ) { long int val ; char * end_ptr ; errno = ; val = strtol ( arg , & end_ptr , ) ; if ( errno != || * arg == '\0' || * end_ptr != '\0' || ( val != && val != && val != && val != && val != ) ) {" GCC,arc,659,"Predict the next statement of this code snippet: pass_arc_ifcvt ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_arc_ifcvt , ctxt ) {" GCC,arc,660,"Predict the next statement of this code snippet: pass_arc_ifcvt ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_arc_ifcvt , ctxt ) {" GCC,arc,661,"Predict the next statement of this code snippet: pass_arc_predicate_delay_insns ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_arc_predicate_delay_insns , ctxt ) {" GCC,arc,662,"Predict the next statement of this code snippet: pass_arc_predicate_delay_insns ( gcc :: context * ctxt ) : rtl_opt_pass ( pass_data_arc_predicate_delay_insns , ctxt ) {" GCC,arc,663,"Predict the next statement of this code snippet: rtx stkslot = gen_rtx_MEM ( GET_MODE ( reg ) , gen_rtx_POST_INC ( Pmode , stack_pointer_rtx ) ) ; rtx insn = emit_move_insn ( reg , stkslot ) ; RTX_FRAME_RELATED_P ( insn ) = ; add_reg_note ( insn , REG_CFA_ADJUST_CFA , gen_rtx_SET ( stack_pointer_rtx , plus_constant ( Pmode , stack_pointer_rtx , GET_MODE_SIZE ( GET_MODE ( reg ) ) ) ) ) ;" GCC,arc,664,"Predict the next statement of this code snippet: if ( MEM_P ( operands [ ] ) ) tmp = gen_reg_rtx ( mode ) ; emit_insn ( gen_rtx_SET ( tmp , gen_rtx_UNSPEC_VOLATILE ( mode , gen_rtvec ( , operands [ ] ) , VUNSPEC_ARC_LDDI ) ) ) ; if ( MEM_P ( operands [ ] ) ) { operands [ ] = tmp ; return false ; } return true ; } } if ( GET_CODE ( operands [ ] ) == SYMBOL_REF ) { enum tls_model model = SYMBOL_REF_TLS_MODEL ( operands [ ] ) ; if ( MEM_P ( operands [ ] ) ) operands [ ] = force_reg ( mode , operands [ ] ) ; else if ( model ) operands [ ] = arc_legitimize_tls_address ( operands [ ] , model ) ; } operands [ ] = arc_legitimize_pic_address ( operands [ ] ) ; if ( MEM_P ( operands [ ] ) && ! move_dest_operand ( operands [ ] , mode ) ) { rtx tmp0 = copy_to_mode_reg ( Pmode , XEXP ( operands [ ] , ) ) ; rtx tmp1 = change_address ( operands [ ] , mode , tmp0 ) ; MEM_COPY_ATTRIBUTES ( tmp1 , operands [ ] ) ; operands [ ] = tmp1 ; } if ( CONSTANT_P ( operands [ ] ) && ! arc_legitimate_constant_p ( mode , operands [ ] ) ) operands [ ] = force_reg ( mode , XEXP ( operands [ ] , ) ) ; else if ( MEM_P ( operands [ ] ) && ( ( CONSTANT_P ( operands [ ] ) && ! satisfies_constraint_Cm3 ( operands [ ] ) ) || MEM_P ( operands [ ] ) ) ) operands [ ] = force_reg ( mode , operands [ ] ) ;" GCC,arc,665,"Predict the next statement of this code snippet: int val = INTVAL ( operands [ ] ) ; if ( val > && val <= && satisfies_constraint_Rcq ( operands [ ] ) ) { operands [ ] = operands [ ] ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ; } else { operands [ ] = operands [ ] ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ;" GCC,arc,666,"Predict the next statement of this code snippet: operands [ ] = operands [ ] ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ;" GCC,arc,667,"Predict the next statement of this code snippet: if ( val >= - && val <= ) { operands [ ] = gen_rtx_NEG ( SImode , operands [ ] ) ; operands [ ] = gen_rtx_PLUS ( SImode , operands [ ] , operands [ ] ) ; return ; } else if ( val >= && val < ) { operands [ ] = operands [ ] ; operands [ ] = gen_rtx_MINUS ( SImode , operands [ ] , operands [ ] ) ;" GCC,arc,668,"Predict the next statement of this code snippet: for ( j = XVECLEN ( op , i ) - ; j >= ; j -- ) if ( symbolic_reference_mentioned_p ( XVECEXP ( op , i , j ) ) ) return true ; } else if ( fmt [ i ] == 'e' && symbolic_reference_mentioned_p ( XEXP ( op , i ) ) ) return true ; }" GCC,arc,669,"Predict the next statement of this code snippet: } switch ( arc_selected_cpu -> arch_info -> arch_id ) { case BASE_ARCH_em : if ( arc_selected_cpu -> flags & FL_CD ) name = ; else name = ; if ( arc_selected_cpu -> flags & FL_FPUDA ) name = concat ( , name , NULL ) ; if ( arc_selected_cpu -> flags & FL_SPFP ) name = concat ( , name , NULL ) ; if ( arc_selected_cpu -> flags & FL_DPFP ) name = concat ( , name , NULL ) ; return concat ( , name , NULL ) ; case BASE_ARCH_hs : return ; case BASE_ARCH_700 : if ( arc_selected_cpu -> processor == PROCESSOR_nps400 ) return ; else return ; case BASE_ARCH_6xx : if ( arc_selected_cpu -> flags & FL_MUL64 ) return ; if ( arc_selected_cpu -> flags & FL_MUL32x16 ) return ;" GCC,arc,670,"Predict the next statement of this code snippet: func_ptr * p ; for ( p = __CTOR_END__ - ; * p != ( func_ptr ) - ; p -- ) ( * p ) ( ) ;" GCC,arc,671,"Predict the next statement of this code snippet: static void __do_global_ctors ( void ) { func_ptr * p ; for ( p = __CTOR_END__ - ; * p != ( func_ptr ) - ; p -- ) ( * p ) ( ) ;" GCC,arc,672,"Predict the next statement of this code snippet: for ( p = __DTOR_LIST__ + ; * p ; p ++ ) ( * p ) ( ) ;" GCC,arc,673,"Predict the next statement of this code snippet: for ( p = __DTOR_LIST__ + ; * p ; p ++ ) ( * p ) ( ) ;" GCC,arc,674,"Predict the next statement of this code snippet: static void __do_global_ctors ( ) { func_ptr * p ; for ( p = __CTOR_END__ - ; * p != ( func_ptr ) - ; p -- ) ( * p ) ( ) ;" GCC,arc,675,"Predict the next statement of this code snippet: func_ptr * p ;" GCC,arc,676,"Predict the next statement of this code snippet: func_ptr * p ;" LLVM,ARC,0,"Predict the next statement of this code snippet: RegisterAsmPrinter < AsmPrinter > X ( getTheTarget ( ) ) ;" LLVM,ARC,1,"Predict the next statement of this code snippet: RegisterAsmPrinter < AsmPrinter > X ( getTheTarget ( ) ) ;" LLVM,ARC,2,"Predict the next statement of this code snippet: void AsmPrinter :: EmitInstruction ( const MachineInstr * MI ) { SmallString < > Str ; raw_svector_ostream O ( Str ) ; switch ( MI -> getOpcode ( ) ) { case : llvm_unreachable ( ) ; break ; } MCInst TmpInst ; MCInstLowering . Lower ( MI , TmpInst ) ;" LLVM,ARC,3,"Predict the next statement of this code snippet: return static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ;" LLVM,ARC,4,"Predict the next statement of this code snippet: TargetStreamer & AsmPrinter :: getTargetStreamer ( ) {" LLVM,ARC,5,"Predict the next statement of this code snippet: bool AsmPrinter :: runOnMachineFunction ( MachineFunction & MF ) { MF . ensureAlignment ( Align ( ) ) ; return AsmPrinter :: runOnMachineFunction ( MF ) ;" LLVM,ARC,6,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) , MCInstLowering ( & OutContext , * this ) {" LLVM,ARC,7,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) , MCInstLowering ( & OutContext , * this ) {" LLVM,ARC,8,"Predict the next statement of this code snippet: void AsmPrinter :: emitInstruction ( const MachineInstr * MI ) { SmallString < > Str ; raw_svector_ostream O ( Str ) ; switch ( MI -> getOpcode ( ) ) { case : llvm_unreachable ( ) ; break ; } MCInst TmpInst ; MCInstLowering . Lower ( MI , TmpInst ) ;" LLVM,ARC,9,"Predict the next statement of this code snippet: return ;" LLVM,ARC,10,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,ARC,11,"Predict the next statement of this code snippet: RegisterAsmPrinter < AsmPrinter > X ( getTheTarget ( ) ) ;" LLVM,ARC,12,"Predict the next statement of this code snippet: bool AsmPrinter :: runOnMachineFunction ( MachineFunction & MF ) { MF . ensureAlignment ( Align ( ) ) ; AsmPrinter :: runOnMachineFunction ( MF ) ;" LLVM,ARC,13,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << ) ; unsigned CC = getCCForBRcc ( MI -> getOperand ( ) . getImm ( ) ) ; if ( CC != - ) { BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( getBRccForPseudo ( MI ) ) ) . addMBB ( MI -> getOperand ( ) . getMBB ( ) ) . addReg ( MI -> getOperand ( ) . getReg ( ) ) . add ( MI -> getOperand ( ) ) . addImm ( getCCForBRcc ( MI -> getOperand ( ) . getImm ( ) ) ) ;" LLVM,ARC,14,"Predict the next statement of this code snippet: if ( CC != - ) { BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( getBRccForPseudo ( MI ) ) ) . addMBB ( MI -> getOperand ( ) . getMBB ( ) ) . addReg ( MI -> getOperand ( ) . getReg ( ) ) . add ( MI -> getOperand ( ) ) . addImm ( getCCForBRcc ( MI -> getOperand ( ) . getImm ( ) ) ) ; MI -> eraseFromParent ( ) ; } else {" LLVM,ARC,15,"Predict the next statement of this code snippet: void BranchFinalize :: replaceWithCmpBcc ( MachineInstr * MI ) const { DEBUG ( dbgs ( ) << << * MI << ) ; DEBUG ( dbgs ( ) << ) ; BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( getCmpForPseudo ( MI ) ) ) . addReg ( MI -> getOperand ( ) . getReg ( ) ) . add ( MI -> getOperand ( ) ) ; BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( ) ) . addMBB ( MI -> getOperand ( ) . getMBB ( ) ) . addImm ( MI -> getOperand ( ) . getImm ( ) ) ; MI -> eraseFromParent ( ) ;" LLVM,ARC,16,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << << * MI << ) ; DEBUG ( dbgs ( ) << ) ; BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( getCmpForPseudo ( MI ) ) ) . addReg ( MI -> getOperand ( ) . getReg ( ) ) . add ( MI -> getOperand ( ) ) ; BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( ) ) . addMBB ( MI -> getOperand ( ) . getMBB ( ) ) . addImm ( MI -> getOperand ( ) . getImm ( ) ) ;" LLVM,ARC,17,"Predict the next statement of this code snippet: BlockToPCMap . insert ( std :: make_pair ( & MBB , PC ) ) ; for ( auto & MI : MBB ) { unsigned Size = TII -> getInstSizeInBytes ( MI ) ; if ( Size > || Size == ) { DEBUG ( dbgs ( ) << << MI << ) ; } else { MaxSize += Size ; } if ( MI . isBranch ( ) ) {" LLVM,ARC,18,"Predict the next statement of this code snippet: unsigned MaxSize = ; TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; std :: map < MachineBasicBlock * , unsigned > BlockToPCMap ; std :: vector < std :: pair < MachineInstr * , unsigned >> BranchToPCList ; unsigned PC = ; for ( auto & MBB : MF ) { BlockToPCMap . insert ( std :: make_pair ( & MBB , PC ) ) ; for ( auto & MI : MBB ) { unsigned Size = TII -> getInstSizeInBytes ( MI ) ; if ( Size > || Size == ) { DEBUG ( dbgs ( ) << << MI << ) ; } else { MaxSize += Size ; } if ( MI . isBranch ( ) ) { Branches . push_back ( & MI ) ;" LLVM,ARC,19,"Predict the next statement of this code snippet: BranchFinalize ( ) : MachineFunctionPass ( ID ) { initializeBranchFinalizePass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,ARC,20,"Predict the next statement of this code snippet: FunctionPass * llvm :: createBranchFinalizePass ( ) { return new BranchFinalize ( ) ;" LLVM,ARC,21,"Predict the next statement of this code snippet: static unsigned getBRccForPseudo ( MachineInstr * MI ) { assert ( isBRccPseudo ( MI ) && ) ; if ( MI -> getOpcode ( ) == ) return ;" LLVM,ARC,22,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; default :" LLVM,ARC,23,"Predict the next statement of this code snippet: return ;" LLVM,ARC,24,"Predict the next statement of this code snippet: if ( CC != - ) {" LLVM,ARC,25,"Predict the next statement of this code snippet: BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( getBRccForPseudo ( MI ) ) ) . addMBB ( MI -> getOperand ( ) . getMBB ( ) ) . addReg ( MI -> getOperand ( ) . getReg ( ) ) . add ( MI -> getOperand ( ) ) . addImm ( getCCForBRcc ( MI -> getOperand ( ) . getImm ( ) ) ) ; MI -> eraseFromParent ( ) ; } else {" LLVM,ARC,26,"Predict the next statement of this code snippet: BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( getCmpForPseudo ( MI ) ) ) . addReg ( MI -> getOperand ( ) . getReg ( ) ) . add ( MI -> getOperand ( ) ) ; BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( ) ) . addMBB ( MI -> getOperand ( ) . getMBB ( ) ) . addImm ( MI -> getOperand ( ) . getImm ( ) ) ;" LLVM,ARC,27,"Predict the next statement of this code snippet: BuildMI ( * MI -> getParent ( ) , MI , MI -> getDebugLoc ( ) , TII -> get ( ) ) . addMBB ( MI -> getOperand ( ) . getMBB ( ) ) . addImm ( MI -> getOperand ( ) . getImm ( ) ) ;" LLVM,ARC,28,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ; std :: vector < MachineInstr * > Branches ; bool Changed = false ; unsigned MaxSize = ; TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; std :: map < MachineBasicBlock * , unsigned > BlockToPCMap ; std :: vector < std :: pair < MachineInstr * , unsigned >> BranchToPCList ; unsigned PC = ; for ( auto & MBB : MF ) { BlockToPCMap . insert ( std :: make_pair ( & MBB , PC ) ) ; for ( auto & MI : MBB ) { unsigned Size = TII -> getInstSizeInBytes ( MI ) ; if ( Size > || Size == ) { LLVM_DEBUG ( dbgs ( ) << << MI << ) ; } else { MaxSize += Size ;" LLVM,ARC,29,"Predict the next statement of this code snippet: for ( auto & MI : MBB ) { unsigned Size = TII -> getInstSizeInBytes ( MI ) ; if ( Size > || Size == ) { LLVM_DEBUG ( dbgs ( ) << << MI << ) ; } else { MaxSize += Size ; } if ( MI . isBranch ( ) ) { Branches . push_back ( & MI ) ; BranchToPCList . emplace_back ( & MI , PC ) ; }" LLVM,ARC,30,"Predict the next statement of this code snippet: static_assert ( B > , ) ; DecodeSymbolicOperandOff ( Inst , Address , SignExtend32 < B > ( InsnS ) , Decoder ) ; return MCDisassembler :: Success ;" LLVM,ARC,31,"Predict the next statement of this code snippet: const unsigned max = ( << B ) - ; Inst . addOperand ( MCOperand :: createImm ( InsnS < max ? static_cast < int > ( InsnS ) : - ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,32,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( InsnS < max ? static_cast < int > ( InsnS ) : - ) ) ;" LLVM,ARC,33,"Predict the next statement of this code snippet: static DecodeStatus DecodeGBR32ShortRegister ( MCInst & Inst , unsigned RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo > ) RegNo += ; return DecodeGPR32RegisterClass ( Inst , RegNo , Address , Decoder ) ;" LLVM,ARC,34,"Predict the next statement of this code snippet: } unsigned Reg = GPR32DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,ARC,35,"Predict the next statement of this code snippet: if ( RegNo >= ) { LLVM_DEBUG ( dbgs ( ) << ) ; return MCDisassembler :: Fail ;" LLVM,ARC,36,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } DstA = decodeAField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstA , Address , Decoder ) ; LImm = ( Insn >> ) ; Inst . addOperand ( MCOperand :: createImm ( LImm ) ) ;" LLVM,ARC,37,"Predict the next statement of this code snippet: unsigned DstA , SrcB ; LLVM_DEBUG ( dbgs ( ) << ) ; DstA = decodeAField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstA , Address , Decoder ) ; SrcB = decodeBField ( Insn ) ;" LLVM,ARC,38,"Predict the next statement of this code snippet: unsigned S9 = Insn & ; unsigned R = ( Insn & ( & ~ ) ) >> ; DecodeGPR32RegisterClass ( Inst , R , Address , Dec ) ;" LLVM,ARC,39,"Predict the next statement of this code snippet: static DecodeStatus DecodeMEMrs9 ( MCInst & Inst , unsigned Insn , uint64_t Address , const void * Dec ) { unsigned S9 = Insn & ; unsigned R = ( Insn & ( & ~ ) ) >> ; DecodeGPR32RegisterClass ( Inst , R , Address , Dec ) ; Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( S9 ) ) ) ;" LLVM,ARC,40,"Predict the next statement of this code snippet: static DecodeStatus DecodeMoveHRegInstruction ( MCInst & Inst , uint64_t Insn , uint64_t Address , const void * Decoder ) { LLVM_DEBUG ( dbgs ( ) << ) ; using Field = decltype ( Insn ) ; Field h = fieldFromInstruction ( Insn , , ) | ( fieldFromInstruction ( Insn , , ) << ) ; Field g = fieldFromInstruction ( Insn , , ) | ( fieldFromInstruction ( Insn , , ) << ) ; auto DecodeRegisterOrImm = [ & Inst , Address , Decoder ] ( Field RegNum , Field Value ) { if ( == RegNum ) { Inst . addOperand ( MCOperand :: createImm ( Value ) ) ; return MCDisassembler :: Success ; }" LLVM,ARC,41,"Predict the next statement of this code snippet: Field h = fieldFromInstruction ( Insn , , ) | ( fieldFromInstruction ( Insn , , ) << ) ; Field g = fieldFromInstruction ( Insn , , ) | ( fieldFromInstruction ( Insn , , ) << ) ; auto DecodeRegisterOrImm = [ & Inst , Address , Decoder ] ( Field RegNum , Field Value ) { if ( == RegNum ) { Inst . addOperand ( MCOperand :: createImm ( Value ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,42,"Predict the next statement of this code snippet: static_assert ( B > , ) ;" LLVM,ARC,43,"Predict the next statement of this code snippet: SrcC = decodeCField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , SrcC , Address , Decoder ) ; LImm = ( Insn >> ) ;" LLVM,ARC,44,"Predict the next statement of this code snippet: static bool DecodeSymbolicOperand ( MCInst & Inst , uint64_t Address , uint64_t Value , const void * Decoder ) { static const uint64_t atLeast = ; auto Disassembler = static_cast < const MCDisassembler * > ( Decoder ) ; return ( nullptr != Disassembler && Disassembler -> tryAddingSymbolicOperand ( Inst , Value , Address , true , , atLeast ) ) ;" LLVM,ARC,45,"Predict the next statement of this code snippet: return ( nullptr != Disassembler && Disassembler -> tryAddingSymbolicOperand ( Inst , Value , Address , true , , atLeast ) ) ;" LLVM,ARC,46,"Predict the next statement of this code snippet: static void DecodeSymbolicOperandOff ( MCInst & Inst , uint64_t Address , uint64_t Offset , const void * Decoder ) {" LLVM,ARC,47,"Predict the next statement of this code snippet: static void DecodeSymbolicOperandOff ( MCInst & Inst , uint64_t Address , uint64_t Offset , const void * Decoder ) {" LLVM,ARC,48,"Predict the next statement of this code snippet: if ( ! readInstruction32 ( Bytes , Address , Size , Insn32 ) ) { return Fail ; } return decodeInstruction ( DecoderTable32 , Instr , Insn32 , Address , this , STI ) ; } else { if ( Bytes . size ( ) >= ) { uint64_t Insn48 ; if ( ! readInstruction48 ( Bytes , Address , Size , Insn48 ) ) return Fail ; Result = decodeInstruction ( DecoderTable48 , Instr , Insn48 , Address , this , STI ) ; if ( Success == Result ) { LLVM_DEBUG ( dbgs ( ) << ) ; return Result ; } LLVM_DEBUG ( dbgs ( ) << ) ; } uint32_t Insn16 ; if ( ! readInstruction16 ( Bytes , Address , Size , Insn16 ) ) return Fail ;" LLVM,ARC,49,"Predict the next statement of this code snippet: Size = ; return Fail ; } uint8_t DecodeByte = ( Bytes [ ] & ) >> ; if ( DecodeByte < ) { if ( Bytes . size ( ) < ) { Size = ; return Fail ; } if ( Bytes . size ( ) >= ) { uint64_t Insn64 ; if ( ! readInstruction64 ( Bytes , Address , Size , Insn64 ) ) return Fail ; Result = decodeInstruction ( DecoderTable64 , Instr , Insn64 , Address , this , STI ) ; if ( Success == Result ) { LLVM_DEBUG ( dbgs ( ) << ) ; return Result ; } LLVM_DEBUG ( dbgs ( ) << ) ; } uint32_t Insn32 ; if ( ! readInstruction32 ( Bytes , Address , Size , Insn32 ) ) { return Fail ; } return decodeInstruction ( DecoderTable32 , Instr , Insn32 , Address , this , STI ) ; } else { if ( Bytes . size ( ) >= ) { uint64_t Insn48 ; if ( ! readInstruction48 ( Bytes , Address , Size , Insn48 ) ) return Fail ; Result = decodeInstruction ( DecoderTable48 , Instr , Insn48 , Address , this , STI ) ; if ( Success == Result ) {" LLVM,ARC,50,"Predict the next statement of this code snippet: void LLVMInitializeDisassembler ( ) {" LLVM,ARC,51,"Predict the next statement of this code snippet: unsigned DstB ; LLVM_DEBUG ( dbgs ( ) << ) ; DstB = decodeBField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstB , Address , Decoder ) ; using Field = decltype ( Insn ) ; Field U6Field = fieldFromInstruction ( Insn , , ) ; Inst . addOperand ( MCOperand :: createImm ( U6Field ) ) ; Field CCField = fieldFromInstruction ( Insn , , ) ; Inst . addOperand ( MCOperand :: createImm ( CCField ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,52,"Predict the next statement of this code snippet: Field U6Field = fieldFromInstruction ( Insn , , ) ; Inst . addOperand ( MCOperand :: createImm ( U6Field ) ) ;" LLVM,ARC,53,"Predict the next statement of this code snippet: Field H = fieldFromInstruction ( Insn , , ) | ( fieldFromInstruction ( Insn , , ) << ) ; Field G = fieldFromInstruction ( Insn , , ) | ( fieldFromInstruction ( Insn , , ) << ) ; auto DecodeRegisterOrImm = [ & Inst , Address , Decoder ] ( Field RegNum , Field Value ) { if ( == RegNum ) {" LLVM,ARC,54,"Predict the next statement of this code snippet: unsigned DstB = decodeBField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstB , Address , Decoder ) ; using Field = decltype ( Insn ) ; Field Lower = fieldFromInstruction ( Insn , , ) ; Field Upper = fieldFromInstruction ( Insn , , ) ; Field Sign = fieldFromInstruction ( Insn , , ) ? - : ; Field Result = Sign * ( ( Upper << ) + Lower ) ; Inst . addOperand ( MCOperand :: createImm ( Result ) ) ;" LLVM,ARC,55,"Predict the next statement of this code snippet: Field U6 = fieldFromInstruction ( Insn , , ) ;" LLVM,ARC,56,"Predict the next statement of this code snippet: Field U6 = fieldFromInstruction ( Insn , , ) ; Inst . addOperand ( MCOperand :: createImm ( U6 ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,57,"Predict the next statement of this code snippet: return ( nullptr != Disassembler && Disassembler -> tryAddingSymbolicOperand ( Inst , Value , Address , true , , AtLeast ) ) ;" LLVM,ARC,58,"Predict the next statement of this code snippet: static void DecodeSymbolicOperandOff ( MCInst & Inst , uint64_t Address , uint64_t Offset , const void * Decoder ) {" LLVM,ARC,59,"Predict the next statement of this code snippet: static const uint64_t AtLeast = ;" LLVM,ARC,60,"Predict the next statement of this code snippet: unsigned DstB ; LLVM_DEBUG ( dbgs ( ) << ) ; DstB = decodeBField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstB , Address , Decoder ) ; using Field = decltype ( Insn ) ;" LLVM,ARC,61,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( S ) ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,62,"Predict the next statement of this code snippet: static MCDisassembler :: DecodeStatus DecodeBranchTargetS21 ( MCInst & Inst , unsigned S , uint64_t Address , const void * Decoder ) {" LLVM,ARC,63,"Predict the next statement of this code snippet: static MCDisassembler :: DecodeStatus DecodeBranchTargetS25 ( MCInst & Inst , unsigned S , uint64_t Address , const void * Decoder ) {" LLVM,ARC,64,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( S ) ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,65,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } unsigned Reg = GPR32DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,ARC,66,"Predict the next statement of this code snippet: static MCDisassembler :: DecodeStatus DecodeLdLImmInstruction ( MCInst & Inst , uint64_t Insn , uint64_t Address , const void * Decoder ) { unsigned DstA , SrcB , LImm ; DEBUG ( dbgs ( ) << ) ; SrcB = decodeBField ( Insn ) ; if ( SrcB != ) { DEBUG ( dbgs ( ) << ) ; return MCDisassembler :: Fail ; } DstA = decodeAField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstA , Address , Decoder ) ; LImm = ( Insn >> ) ; Inst . addOperand ( MCOperand :: createImm ( LImm ) ) ; Inst . addOperand ( MCOperand :: createImm ( ) ) ;" LLVM,ARC,67,"Predict the next statement of this code snippet: unsigned R = ( Insn & ( & ~ ) ) >> ; DecodeGPR32RegisterClass ( Inst , R , Address , Dec ) ; Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( S9 ) ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,68,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( & InsnS12 ) ) ) ;" LLVM,ARC,69,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( & InsnS12 ) ) ) ;" LLVM,ARC,70,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( & InsnS9 ) ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,71,"Predict the next statement of this code snippet: static MCDisassembler :: DecodeStatus DecodeS9Operand ( MCInst & Inst , unsigned InsnS9 , uint64_t Address , const void * Decoder ) { Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < > ( & InsnS9 ) ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,72,"Predict the next statement of this code snippet: if ( DstB != ) { DEBUG ( dbgs ( ) << ) ; return MCDisassembler :: Fail ; } SrcC = decodeCField ( Insn ) ;" LLVM,ARC,73,"Predict the next statement of this code snippet: LImm = ( Insn >> ) ; Inst . addOperand ( MCOperand :: createImm ( LImm ) ) ; Inst . addOperand ( MCOperand :: createImm ( ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,74,"Predict the next statement of this code snippet: MCDisassembler :: DecodeStatus Disassembler :: getInstruction ( MCInst & Instr , uint64_t & Size , ArrayRef < uint8_t > Bytes , uint64_t Address , raw_ostream & vStream , raw_ostream & cStream ) const { MCDisassembler :: DecodeStatus Result ; if ( Bytes . size ( ) < ) { Size = ; return Fail ; } uint8_t DecodeByte = ( Bytes [ ] & ) >> ; if ( DecodeByte < ) { if ( Bytes . size ( ) < ) { Size = ; return Fail ; } if ( Bytes . size ( ) >= ) { uint64_t Insn64 ;" LLVM,ARC,75,"Predict the next statement of this code snippet: if ( Bytes . size ( ) < ) { Size = ; return Fail ; } if ( Bytes . size ( ) >= ) { uint64_t Insn64 ; if ( ! readInstruction64 ( Bytes , Address , Size , Insn64 ) ) return Fail ; Result = decodeInstruction ( DecoderTable64 , Instr , Insn64 , Address , this , STI ) ; if ( Result == MCDisassembler :: Success ) { DEBUG ( dbgs ( ) << ) ; return MCDisassembler :: Success ; } DEBUG ( dbgs ( ) << ) ; } uint32_t Insn32 ; if ( ! readInstruction32 ( Bytes , Address , Size , Insn32 ) ) {" LLVM,ARC,76,"Predict the next statement of this code snippet: DstA = decodeAField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstA , Address , Decoder ) ; LImm = ( Insn >> ) ; Inst . addOperand ( MCOperand :: createImm ( LImm ) ) ;" LLVM,ARC,77,"Predict the next statement of this code snippet: SrcB = decodeBField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , SrcB , Address , Decoder ) ; if ( decodeCField ( Insn ) != ) { DEBUG ( dbgs ( ) << ) ; return MCDisassembler :: Fail ;" LLVM,ARC,78,"Predict the next statement of this code snippet: static DecodeStatus DecodeMoveHRegInstruction ( MCInst & Inst , uint64_t Insn , uint64_t Address , const void * Decoder ) { DEBUG ( dbgs ( ) << ) ; using Field = decltype ( Insn ) ;" LLVM,ARC,79,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } SrcC = decodeCField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , SrcC , Address , Decoder ) ; LImm = ( Insn >> ) ;" LLVM,ARC,80,"Predict the next statement of this code snippet: if ( Bytes . size ( ) < ) { Size = ; return Fail ; } uint8_t DecodeByte = ( Bytes [ ] & ) >> ; if ( DecodeByte < ) { if ( Bytes . size ( ) < ) { Size = ; return Fail ; } if ( Bytes . size ( ) >= ) { uint64_t Insn64 ; if ( ! readInstruction64 ( Bytes , Address , Size , Insn64 ) ) return Fail ; Result = decodeInstruction ( DecoderTable64 , Instr , Insn64 , Address , this , STI ) ; if ( Success == Result ) { DEBUG ( dbgs ( ) << ) ; return Result ; } DEBUG ( dbgs ( ) << ) ; } uint32_t Insn32 ; if ( ! readInstruction32 ( Bytes , Address , Size , Insn32 ) ) { return Fail ; } return decodeInstruction ( DecoderTable32 , Instr , Insn32 , Address , this , STI ) ; } else { if ( Bytes . size ( ) >= ) { uint64_t Insn48 ; if ( ! readInstruction48 ( Bytes , Address , Size , Insn48 ) ) return Fail ; Result = decodeInstruction ( DecoderTable48 , Instr , Insn48 , Address , this , STI ) ; if ( Success == Result ) { DEBUG ( dbgs ( ) << ) ; return Result ; } DEBUG ( dbgs ( ) << ) ;" LLVM,ARC,81,"Predict the next statement of this code snippet: Disassembler ( const MCSubtargetInfo & STI , MCContext & Ctx , MCInstrInfo const * MCII ) : MCDisassembler ( STI , Ctx ) , MCII ( MCII ) {" LLVM,ARC,82,"Predict the next statement of this code snippet: Disassembler ( const MCSubtargetInfo & STI , MCContext & Ctx , MCInstrInfo const * MCII ) : MCDisassembler ( STI , Ctx ) , MCII ( MCII ) {" LLVM,ARC,83,"Predict the next statement of this code snippet: static MCDisassembler * createDisassembler ( const Target & T , const MCSubtargetInfo & STI , MCContext & Ctx ) { return new Disassembler ( STI , Ctx , T . createMCInstrInfo ( ) ) ;" LLVM,ARC,84,"Predict the next statement of this code snippet: static unsigned decodeAField ( unsigned Insn ) { return fieldFromInstruction ( Insn , , ) ;" LLVM,ARC,85,"Predict the next statement of this code snippet: static unsigned decodeAField ( unsigned Insn ) {" LLVM,ARC,86,"Predict the next statement of this code snippet: static unsigned decodeBField ( unsigned Insn ) {" LLVM,ARC,87,"Predict the next statement of this code snippet: DecodeSymbolicOperandOff ( Inst , Address , SignExtend32 < B > ( InsnS ) , Decoder ) ;" LLVM,ARC,88,"Predict the next statement of this code snippet: DstB = decodeBField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstB , Address , Decoder ) ; using Field = decltype ( Insn ) ; Field U6Field = fieldFromInstruction ( Insn , , ) ; Inst . addOperand ( MCOperand :: createImm ( U6Field ) ) ; Field CCField = fieldFromInstruction ( Insn , , ) ; Inst . addOperand ( MCOperand :: createImm ( CCField ) ) ; return MCDisassembler :: Success ;" LLVM,ARC,89,"Predict the next statement of this code snippet: static_assert ( B > , ) ; const unsigned max = ( << B ) - ; Inst . addOperand ( MCOperand :: createImm ( InsnS < max ? static_cast < int > ( InsnS ) : - ) ) ;" LLVM,ARC,90,"Predict the next statement of this code snippet: const unsigned max = ( << B ) - ;" LLVM,ARC,91,"Predict the next statement of this code snippet: static DecodeStatus DecodeGBR32ShortRegister ( MCInst & Inst , unsigned RegNo , uint64_t Address , const MCDisassembler * Decoder ) { if ( RegNo > ) RegNo += ;" LLVM,ARC,92,"Predict the next statement of this code snippet: static DecodeStatus DecodeGBR32ShortRegister ( MCInst & Inst , unsigned RegNo , uint64_t Address , const MCDisassembler * Decoder ) {" LLVM,ARC,93,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPR32RegisterClass ( MCInst & Inst , unsigned RegNo , uint64_t Address , const MCDisassembler * Decoder ) { if ( RegNo >= ) { LLVM_DEBUG ( dbgs ( ) << ) ; return MCDisassembler :: Fail ;" LLVM,ARC,94,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } unsigned Reg = GPR32DecoderTable [ RegNo ] ;" LLVM,ARC,95,"Predict the next statement of this code snippet: if ( decodeCField ( Insn ) != ) { LLVM_DEBUG ( dbgs ( ) << ) ; return MCDisassembler :: Fail ; } Inst . addOperand ( MCOperand :: createImm ( ( uint32_t ) ( Insn >> ) ) ) ;" LLVM,ARC,96,"Predict the next statement of this code snippet: unsigned R = ( Insn & ( & ~ ) ) >> ; DecodeGPR32RegisterClass ( Inst , R , Address , Dec ) ;" LLVM,ARC,97,"Predict the next statement of this code snippet: Field G = fieldFromInstruction ( Insn , , ) | ( fieldFromInstruction ( Insn , , ) << ) ; auto DecodeRegisterOrImm = [ & Inst , Address , Decoder ] ( Field RegNum , Field Value ) { if ( == RegNum ) { Inst . addOperand ( MCOperand :: createImm ( Value ) ) ; return MCDisassembler :: Success ; } return DecodeGPR32RegisterClass ( Inst , RegNum , Address , Decoder ) ;" LLVM,ARC,98,"Predict the next statement of this code snippet: static_assert ( B > , ) ; Inst . addOperand ( MCOperand :: createImm ( SignExtend32 < B > ( maskTrailingOnes < decltype ( InsnS ) > ( B ) & InsnS ) ) ) ;" LLVM,ARC,99,"Predict the next statement of this code snippet: unsigned DstB = decodeBField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , DstB , Address , Decoder ) ; using Field = decltype ( Insn ) ; Field Lower = fieldFromInstruction ( Insn , , ) ; Field Upper = fieldFromInstruction ( Insn , , ) ;" LLVM,ARC,100,"Predict the next statement of this code snippet: using Field = decltype ( Insn ) ; Field U6 = fieldFromInstruction ( Insn , , ) ; Inst . addOperand ( MCOperand :: createImm ( U6 ) ) ;" LLVM,ARC,101,"Predict the next statement of this code snippet: static DecodeStatus DecodeSOPwithRU6 ( MCInst & Inst , uint64_t Insn , uint64_t Address , const MCDisassembler * Decoder ) {" LLVM,ARC,102,"Predict the next statement of this code snippet: } SrcC = decodeCField ( Insn ) ; DecodeGPR32RegisterClass ( Inst , SrcC , Address , Decoder ) ; LImm = ( Insn >> ) ; Inst . addOperand ( MCOperand :: createImm ( LImm ) ) ; Inst . addOperand ( MCOperand :: createImm ( ) ) ;" LLVM,ARC,103,"Predict the next statement of this code snippet: static bool DecodeSymbolicOperand ( MCInst & Inst , uint64_t Address , uint64_t Value , const MCDisassembler * Decoder ) { static const uint64_t AtLeast = ; return ( nullptr != Decoder && Decoder -> tryAddingSymbolicOperand ( Inst , Value , Address , true , , AtLeast ) ) ;" LLVM,ARC,104,"Predict the next statement of this code snippet: uint64_t NextAddress = Address + Offset ;" LLVM,ARC,105,"Predict the next statement of this code snippet: uint64_t NextAddress = Address + Offset ; if ( ! DecodeSymbolicOperand ( Inst , Address , NextAddress , Decoder ) ) Inst . addOperand ( MCOperand :: createImm ( Offset ) ) ;" LLVM,ARC,106,"Predict the next statement of this code snippet: if ( Success == Result ) { LLVM_DEBUG ( dbgs ( ) << ) ; return Result ; } LLVM_DEBUG ( dbgs ( ) << ) ; } uint32_t Insn32 ; if ( ! readInstruction32 ( Bytes , Address , Size , Insn32 ) ) { return Fail ; } return decodeInstruction ( DecoderTable32 , Instr , Insn32 , Address , this , STI ) ; } else { if ( Bytes . size ( ) >= ) { uint64_t Insn48 ;" LLVM,ARC,107,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCDisassembler ( getTheTarget ( ) , createDisassembler ) ;" LLVM,ARC,108,"Predict the next statement of this code snippet: static bool readInstruction32 ( ArrayRef < uint8_t > Bytes , uint64_t Address , uint64_t & Size , uint32_t & Insn ) { Size = ;" LLVM,ARC,109,"Predict the next statement of this code snippet: Size = ;" LLVM,ARC,110,"Predict the next statement of this code snippet: static bool readInstruction48 ( ArrayRef < uint8_t > Bytes , uint64_t Address , uint64_t & Size , uint64_t & Insn ) { Size = ; Insn = ( ( uint64_t ) Bytes [ ] << ) | ( ( uint64_t ) Bytes [ ] << ) | ( ( uint64_t ) Bytes [ ] << ) | ( ( uint64_t ) Bytes [ ] << ) | ( ( uint64_t ) Bytes [ ] << ) | ( ( uint64_t ) Bytes [ ] << ) ; return true ;" LLVM,ARC,111,"Predict the next statement of this code snippet: Register Rb = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; BuildMI ( * MI . getParent ( ) , MI , MI . getDebugLoc ( ) , TII -> get ( ) , Ra ) . add ( Src ) ;" LLVM,ARC,112,"Predict the next statement of this code snippet: BuildMI ( * MI . getParent ( ) , MI , MI . getDebugLoc ( ) , TII -> get ( ) ) . add ( Dest ) . addImm ( ) . addImm ( ) . addReg ( R ) ;" LLVM,ARC,113,"Predict the next statement of this code snippet: void ExpandPseudos :: expandCTTZ ( MachineFunction & MF , MachineBasicBlock :: iterator MII ) { MachineInstr & MI = * MII ; const MachineOperand & Dest = MI . getOperand ( ) ;" LLVM,ARC,114,"Predict the next statement of this code snippet: Register AddOpc = isUInt < > ( SI . getOperand ( ) . getImm ( ) ) ? : ; BuildMI ( * SI . getParent ( ) , SI , SI . getDebugLoc ( ) , TII -> get ( AddOpc ) , AddrReg ) . addReg ( SI . getOperand ( ) . getReg ( ) ) . addImm ( SI . getOperand ( ) . getImm ( ) ) ; BuildMI ( * SI . getParent ( ) , SI , SI . getDebugLoc ( ) , TII -> get ( getMappedOp ( SI . getOpcode ( ) ) ) ) . addReg ( SI . getOperand ( ) . getReg ( ) ) . addReg ( AddrReg ) . addImm ( ) ; SI . eraseFromParent ( ) ;" LLVM,ARC,115,"Predict the next statement of this code snippet: Register AddrReg = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; Register AddOpc = isUInt < > ( SI . getOperand ( ) . getImm ( ) ) ? : ; BuildMI ( * SI . getParent ( ) , SI , SI . getDebugLoc ( ) , TII -> get ( AddOpc ) , AddrReg ) . addReg ( SI . getOperand ( ) . getReg ( ) ) . addImm ( SI . getOperand ( ) . getImm ( ) ) ; BuildMI ( * SI . getParent ( ) , SI , SI . getDebugLoc ( ) , TII -> get ( getMappedOp ( SI . getOpcode ( ) ) ) ) . addReg ( SI . getOperand ( ) . getReg ( ) ) . addReg ( AddrReg ) . addImm ( ) ;" LLVM,ARC,116,"Predict the next statement of this code snippet: while ( MBBI != E ) { MachineBasicBlock :: iterator NMBBI = std :: next ( MBBI ) ; switch ( MBBI -> getOpcode ( ) ) { case : case : case : expandStore ( MF , MBBI ) ; Expanded = true ; break ; case : expandCTLZ ( MF , MBBI ) ;" LLVM,ARC,117,"Predict the next statement of this code snippet: ExpandPseudos ( ) : MachineFunctionPass ( ID ) {" LLVM,ARC,118,"Predict the next statement of this code snippet: ExpandPseudos ( ) : MachineFunctionPass ( ID ) {" LLVM,ARC,119,"Predict the next statement of this code snippet: unsigned AddrReg = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; unsigned AddOpc = isUInt < > ( SI . getOperand ( ) . getImm ( ) ) ? : ; BuildMI ( * SI . getParent ( ) , SI , SI . getDebugLoc ( ) , TII -> get ( AddOpc ) , AddrReg ) . addReg ( SI . getOperand ( ) . getReg ( ) ) . addImm ( SI . getOperand ( ) . getImm ( ) ) ; BuildMI ( * SI . getParent ( ) , SI , SI . getDebugLoc ( ) , TII -> get ( getMappedOp ( SI . getOpcode ( ) ) ) ) . addReg ( SI . getOperand ( ) . getReg ( ) ) . addReg ( AddrReg ) . addImm ( ) ; SI . eraseFromParent ( ) ;" LLVM,ARC,120,"Predict the next statement of this code snippet: BuildMI ( * SI . getParent ( ) , SI , SI . getDebugLoc ( ) , TII -> get ( getMappedOp ( SI . getOpcode ( ) ) ) ) . addReg ( SI . getOperand ( ) . getReg ( ) ) . addReg ( AddrReg ) . addImm ( ) ; SI . eraseFromParent ( ) ;" LLVM,ARC,121,"Predict the next statement of this code snippet: case : return ; case : return ; default : llvm_unreachable ( ) ;" LLVM,ARC,122,"Predict the next statement of this code snippet: switch ( PseudoOp ) { case : return ; case : return ; case : return ;" LLVM,ARC,123,"Predict the next statement of this code snippet: return ;" LLVM,ARC,124,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,ARC,125,"Predict the next statement of this code snippet: while ( MBBI != E ) { MachineBasicBlock :: iterator NMBBI = std :: next ( MBBI ) ; switch ( MBBI -> getOpcode ( ) ) { case : case : case :" LLVM,ARC,126,"Predict the next statement of this code snippet: TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ; SavedRegs . set ( ) ;" LLVM,ARC,127,"Predict the next statement of this code snippet: if ( Amt > AFI -> MaxCallStackReq && Old . getOpcode ( ) == ) AFI -> MaxCallStackReq = Amt ; } else { if ( Amt != ) { assert ( ( Old . getOpcode ( ) == || Old . getOpcode ( ) == ) && ) ; bool IsAdd = ( Old . getOpcode ( ) == ) ; emitRegUpdate ( MBB , I , dl , , Amt , IsAdd , TII ) ; }" LLVM,ARC,128,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addExternalSymbol ( load_funclet_name [ Last - ] ) . addReg ( , RegState :: Implicit | RegState :: Kill ) ; BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( * ( StackSlotsUsedByFunclet ) ) ; } if ( SavedBlink ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) ; } if ( hasFP ( MF ) ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addReg ( , RegState :: Define ) . addReg ( , RegState :: Define ) . addReg ( ) . addImm ( ) ; } if ( MF . getFunction ( ) . isVarArg ( ) ) { DEBUG ( dbgs ( ) << ) ;" LLVM,ARC,129,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; uint64_t StackSize = MF . getFrameInfo ( ) . getStackSize ( ) ; bool SavedBlink = false ; unsigned AmountAboveFunclet = ; if ( hasFP ( MF ) ) { BuildMI ( MBB , MBBI , DebugLoc ( ) , TII -> get ( ) , ) . addReg ( ) . addImm ( StackSize ) ; AmountAboveFunclet += ; } const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; unsigned StackSlotsUsedByFunclet = ; if ( UseSaveRestoreFunclet && Last > ) { StackSlotsUsedByFunclet = Last - ; AmountAboveFunclet += * ( StackSlotsUsedByFunclet + ) ; SavedBlink = true ; } if ( MFI . hasCalls ( ) && ! SavedBlink ) { AmountAboveFunclet += ; SavedBlink = true ; } if ( StackSize - AmountAboveFunclet ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( StackSize - AmountAboveFunclet ) ; } if ( StackSlotsUsedByFunclet ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addExternalSymbol ( load_funclet_name [ Last - ] ) . addReg ( , RegState :: Implicit | RegState :: Kill ) ; BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( * ( StackSlotsUsedByFunclet ) ) ; } if ( SavedBlink ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) ;" LLVM,ARC,130,"Predict the next statement of this code snippet: unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ; int CurOffset = - ; if ( hasFP ( MF ) ) { CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , MRI -> getDwarfRegNum ( , true ) , CurOffset ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ; CurOffset -= ; } if ( MFI . hasCalls ( ) ) { CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , MRI -> getDwarfRegNum ( , true ) , CurOffset ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ; } for ( const auto & Entry : CSI ) { unsigned Reg = Entry . getReg ( ) ; int FI = Entry . getFrameIdx ( ) ; if ( ( hasFP ( MF ) && Reg == ) || ( MFI . hasCalls ( ) && Reg == ) ) continue ; CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , MRI -> getDwarfRegNum ( Reg , true ) , MFI . getObjectOffset ( FI ) ) ) ;" LLVM,ARC,131,"Predict the next statement of this code snippet: void FrameLowering :: processFunctionBeforeFrameFinalized ( MachineFunction & MF , RegScavenger * RS ) const { const TargetRegisterInfo * RegInfo = MF . getSubtarget ( ) . getRegisterInfo ( ) ; DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ;" LLVM,ARC,132,"Predict the next statement of this code snippet: bool FrameLowering :: restoreCalleeSavedRegisters ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MI , std :: vector < CalleeSavedInfo > & CSI , const TargetRegisterInfo * TRI ) const { DEBUG ( dbgs ( ) << << MBB . getParent ( ) -> getName ( ) << ) ;" LLVM,ARC,133,"Predict the next statement of this code snippet: bool FrameLowering :: spillCalleeSavedRegisters ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MI , const std :: vector < CalleeSavedInfo > & CSI , const TargetRegisterInfo * TRI ) const { DEBUG ( dbgs ( ) << << MBB . getParent ( ) -> getName ( ) << ) ; unsigned Last = determineLastCalleeSave ( CSI ) ;" LLVM,ARC,134,"Predict the next statement of this code snippet: unsigned Last = ; for ( auto Reg : CSI ) { assert ( Reg . getReg ( ) >= && Reg . getReg ( ) <= && ) ; if ( Reg . getReg ( ) > Last ) Last = Reg . getReg ( ) ; } return Last ;" LLVM,ARC,135,"Predict the next statement of this code snippet: assert ( Reg . getReg ( ) >= && Reg . getReg ( ) <= && ) ; if ( Reg . getReg ( ) > Last ) Last = Reg . getReg ( ) ; }" LLVM,ARC,136,"Predict the next statement of this code snippet: AmountAboveFunclet += ; } const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; unsigned StackSlotsUsedByFunclet = ; if ( UseSaveRestoreFunclet && Last > ) { StackSlotsUsedByFunclet = Last - ; AmountAboveFunclet += * ( StackSlotsUsedByFunclet + ) ; SavedBlink = true ; } if ( MFI . hasCalls ( ) && ! SavedBlink ) { AmountAboveFunclet += ; SavedBlink = true ; } if ( unsigned MoveAmount = StackSize - AmountAboveFunclet ) { unsigned Opc = ; if ( isUInt < > ( MoveAmount ) ) Opc = ; else if ( isInt < > ( MoveAmount ) ) Opc = ; BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( Opc ) , ) . addReg ( ) . addImm ( StackSize - AmountAboveFunclet ) ; } if ( StackSlotsUsedByFunclet ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addExternalSymbol ( load_funclet_name [ Last - ] ) . addReg ( , RegState :: Implicit | RegState :: Kill ) ; unsigned Opc = ;" LLVM,ARC,137,"Predict the next statement of this code snippet: unsigned VarArgsBytes = MFI . getObjectSize ( AFI -> getVarArgsFrameIndex ( ) ) ; unsigned Opc = ; if ( isUInt < > ( VarArgsBytes ) ) Opc = ; else if ( isInt < > ( VarArgsBytes ) ) Opc = ; BuildMI ( MBB , MBBI , dl , TII -> get ( Opc ) , ) . addReg ( ) . addImm ( VarArgsBytes ) ; } if ( hasFP ( MF ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) . addReg ( , RegState :: Define ) . addReg ( ) . addReg ( ) . addImm ( - ) ; AlreadyAdjusted += ; } if ( UseSaveRestoreFunclet && Last > ) { LLVM_DEBUG ( dbgs ( ) << ) ; StackSlotsUsedByFunclet = Last - ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( * StackSlotsUsedByFunclet ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) . addExternalSymbol ( store_funclet_name [ Last - ] ) . addReg ( , RegState :: Implicit | RegState :: Kill ) ; AlreadyAdjusted += * ( StackSlotsUsedByFunclet + ) ; SavedBlink = true ; } if ( MFI . hasCalls ( ) && ! SavedBlink ) { LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) ; AlreadyAdjusted += ; } if ( AFI -> MaxCallStackReq > ) MFI . setStackSize ( MFI . getStackSize ( ) + AFI -> MaxCallStackReq ) ; LLVM_DEBUG ( dbgs ( ) << << ( MFI . getStackSize ( ) - AlreadyAdjusted ) << ) ; generateStackAdjustment ( MBB , MBBI , * ST . getInstrInfo ( ) , dl , - ( MFI . getStackSize ( ) - AlreadyAdjusted ) , ) ; if ( hasFP ( MF ) ) { LLVM_DEBUG ( dbgs ( ) << ) ;" LLVM,ARC,138,"Predict the next statement of this code snippet: else Opc = IsAdd ? : ;" LLVM,ARC,139,"Predict the next statement of this code snippet: unsigned AdjOp ; if ( ! Amount ) return ; bool Positive ; unsigned AbsAmount ; if ( Amount < ) { AbsAmount = - Amount ; Positive = false ; } else { AbsAmount = Amount ; Positive = true ; } LLVM_DEBUG ( dbgs ( ) << << Amount << << AbsAmount << ) ; assert ( ( AbsAmount % == ) && ) ; if ( isUInt < > ( AbsAmount ) ) AdjOp = Positive ? : ; else if ( isInt < > ( AbsAmount ) ) AdjOp = Positive ? : ; else AdjOp = Positive ? : ; BuildMI ( MBB , MBBI , dl , TII . get ( AdjOp ) , StackPtr ) . addReg ( StackPtr ) . addImm ( AbsAmount ) ;" LLVM,ARC,140,"Predict the next statement of this code snippet: static void generateStackAdjustment ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const InstrInfo & TII , DebugLoc dl , int Amount , int StackPtr ) { unsigned AdjOp ; if ( ! Amount ) return ; bool Positive ; unsigned AbsAmount ; if ( Amount < ) { AbsAmount = - Amount ; Positive = false ; } else { AbsAmount = Amount ; Positive = true ; } LLVM_DEBUG ( dbgs ( ) << << Amount << << AbsAmount << ) ;" LLVM,ARC,141,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << MBB . getParent ( ) -> getName ( ) << ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; if ( UseSaveRestoreFunclet && Last > ) { return true ; }" LLVM,ARC,142,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( * StackSlotsUsedByFunclet ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) . addExternalSymbol ( store_funclet_name [ Last - ] ) . addReg ( , RegState :: Implicit | RegState :: Kill ) ; AlreadyAdjusted += * ( StackSlotsUsedByFunclet + ) ; SavedBlink = true ; } if ( MFI . hasCalls ( ) && ! SavedBlink ) { LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( ) ) ; AlreadyAdjusted += ; } if ( AFI -> MaxCallStackReq > ) MFI . setStackSize ( MFI . getStackSize ( ) + AFI -> MaxCallStackReq ) ; LLVM_DEBUG ( dbgs ( ) << << ( MFI . getStackSize ( ) - AlreadyAdjusted ) << ) ; generateStackAdjustment ( MBB , MBBI , * ST . getInstrInfo ( ) , dl , - ( MFI . getStackSize ( ) - AlreadyAdjusted ) , ) ; if ( hasFP ( MF ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( isUInt < > ( MFI . getStackSize ( ) ) ? : ) , ) . addReg ( ) . addImm ( MFI . getStackSize ( ) ) ; } unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfaOffset ( nullptr , MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ; int CurOffset = - ; if ( hasFP ( MF ) ) { CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , MRI -> getDwarfRegNum ( , true ) , CurOffset ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ; CurOffset -= ; } if ( MFI . hasCalls ( ) ) { CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , MRI -> getDwarfRegNum ( , true ) , CurOffset ) ) ; BuildMI ( MBB , MBBI , dl , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ; } for ( const auto & Entry : CSI ) { unsigned Reg = Entry . getReg ( ) ;" LLVM,ARC,143,"Predict the next statement of this code snippet: const TargetRegisterClass * RC = & ; if ( MFI . hasStackObjects ( ) ) { int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ; LLVM_DEBUG ( dbgs ( ) << << RegScavFI << ) ; }" LLVM,ARC,144,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << MFI . getStackSize ( ) << ) ; const TargetRegisterClass * RC = & ; if ( MFI . hasStackObjects ( ) ) { int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ; LLVM_DEBUG ( dbgs ( ) << << RegScavFI << ) ; }" LLVM,ARC,145,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << MBB . getParent ( ) -> getName ( ) << ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; if ( UseSaveRestoreFunclet && Last > ) {" LLVM,ARC,146,"Predict the next statement of this code snippet: FrameLowering ( const Subtarget & st ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsDown , Align ( ) , ) , ST ( st ) {" LLVM,ARC,147,"Predict the next statement of this code snippet: FrameLowering ( const Subtarget & st ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsDown , Align ( ) , ) , ST ( st ) {" LLVM,ARC,148,"Predict the next statement of this code snippet: } if ( MFI . hasCalls ( ) || ( UseSaveRestoreFunclet && Last > ) ) { int StackObj = MFI . CreateFixedSpillStackObject ( , CurOffset , true ) ; DEBUG ( dbgs ( ) << << StackObj << << CurOffset << ) ; ( void ) StackObj ; CurOffset -= ; } for ( unsigned Which = Last ; Which > ; Which -- ) { auto RegI = getSavedReg ( CSI , Which ) ; if ( RegI == CSI . end ( ) || RegI -> getFrameIdx ( ) == ) { int FI = MFI . CreateFixedSpillStackObject ( , CurOffset , true ) ; if ( RegI != CSI . end ( ) ) RegI -> setFrameIdx ( FI ) ; } else MFI . setObjectOffset ( RegI -> getFrameIdx ( ) , CurOffset ) ; CurOffset -= ; } for ( auto & I : CSI ) { if ( I . getReg ( ) > ) continue ; if ( I . getFrameIdx ( ) == ) { I . setFrameIdx ( MFI . CreateFixedSpillStackObject ( , CurOffset , true ) ) ; DEBUG ( dbgs ( ) << << I . getFrameIdx ( ) << << CurOffset << ) ; } else { MFI . setObjectOffset ( I . getFrameIdx ( ) , CurOffset ) ; DEBUG ( dbgs ( ) << << I . getFrameIdx ( ) << << CurOffset << ) ; } CurOffset -= ; }" LLVM,ARC,149,"Predict the next statement of this code snippet: TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ; SavedRegs . set ( ) ;" LLVM,ARC,150,"Predict the next statement of this code snippet: } else { if ( Amt != ) { assert ( ( Old . getOpcode ( ) == || Old . getOpcode ( ) == ) && ) ; bool IsAdd = ( Old . getOpcode ( ) == ) ; emitRegUpdate ( MBB , I , dl , , Amt , IsAdd , TII ) ; } } return MBB . erase ( I ) ;" LLVM,ARC,151,"Predict the next statement of this code snippet: if ( hasFP ( MF ) ) { BuildMI ( MBB , MBBI , DebugLoc ( ) , TII -> get ( ) , ) . addReg ( ) . addImm ( StackSize ) ; AmountAboveFunclet += ; } const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; unsigned StackSlotsUsedByFunclet = ; if ( UseSaveRestoreFunclet && Last > ) { StackSlotsUsedByFunclet = Last - ; AmountAboveFunclet += * ( StackSlotsUsedByFunclet + ) ; SavedBlink = true ; } if ( MFI . hasCalls ( ) && ! SavedBlink ) { AmountAboveFunclet += ; SavedBlink = true ; } if ( StackSize - AmountAboveFunclet ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( StackSize - AmountAboveFunclet ) ; } if ( StackSlotsUsedByFunclet ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addExternalSymbol ( load_funclet_name [ Last - ] ) . addReg ( , RegState :: Implicit | RegState :: Kill ) ; BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( * ( StackSlotsUsedByFunclet ) ) ; } if ( SavedBlink ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) ; } if ( hasFP ( MF ) ) {" LLVM,ARC,152,"Predict the next statement of this code snippet: const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; unsigned StackSlotsUsedByFunclet = ; if ( UseSaveRestoreFunclet && Last > ) { StackSlotsUsedByFunclet = Last - ; AmountAboveFunclet += * ( StackSlotsUsedByFunclet + ) ; SavedBlink = true ; } if ( MFI . hasCalls ( ) && ! SavedBlink ) { AmountAboveFunclet += ; SavedBlink = true ; } if ( StackSize - AmountAboveFunclet ) { BuildMI ( MBB , MBBI , MBB . findDebugLoc ( MBBI ) , TII -> get ( ) ) . addReg ( ) . addReg ( ) . addImm ( StackSize - AmountAboveFunclet ) ; } if ( StackSlotsUsedByFunclet ) {" LLVM,ARC,153,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << << Amount << << AbsAmount << ) ; assert ( ( AbsAmount % == ) && ) ; if ( isUInt < > ( AbsAmount ) ) AdjOp = Positive ? : ;" LLVM,ARC,154,"Predict the next statement of this code snippet: static void generateStackAdjustment ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const InstrInfo & TII , DebugLoc dl , int Amount , int StackPtr ) { unsigned AdjOp ; if ( ! Amount ) return ; bool Positive ; unsigned AbsAmount ; if ( Amount < ) { AbsAmount = - Amount ; Positive = false ; } else {" LLVM,ARC,155,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << << MF . getFunction ( ) -> getName ( ) << ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; DEBUG ( dbgs ( ) << << MFI . getStackSize ( ) << ) ; const TargetRegisterClass * RC = & ; if ( MFI . hasStackObjects ( ) ) { int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlignment ( * RC ) , false ) ;" LLVM,ARC,156,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << << MFI . getStackSize ( ) << ) ; const TargetRegisterClass * RC = & ; if ( MFI . hasStackObjects ( ) ) { int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlignment ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ; DEBUG ( dbgs ( ) << << RegScavFI << ) ;" LLVM,ARC,157,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << << MBB . getParent ( ) -> getFunction ( ) -> getName ( ) << ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; if ( UseSaveRestoreFunclet && Last > ) { return true ; }" LLVM,ARC,158,"Predict the next statement of this code snippet: bool FrameLowering :: spillCalleeSavedRegisters ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MI , const std :: vector < CalleeSavedInfo > & CSI , const TargetRegisterInfo * TRI ) const { DEBUG ( dbgs ( ) << << MBB . getParent ( ) -> getFunction ( ) -> getName ( ) << ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; if ( UseSaveRestoreFunclet && Last > ) { return true ; }" LLVM,ARC,159,"Predict the next statement of this code snippet: const TargetRegisterInfo * RegInfo = MF . getSubtarget ( ) . getRegisterInfo ( ) ; bool HasFP = MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || MF . getFrameInfo ( ) . hasVarSizedObjects ( ) || MF . getFrameInfo ( ) . isFrameAddressTaken ( ) || RegInfo -> hasStackRealignment ( MF ) ;" LLVM,ARC,160,"Predict the next statement of this code snippet: bool HasFP = MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || MF . getFrameInfo ( ) . hasVarSizedObjects ( ) || MF . getFrameInfo ( ) . isFrameAddressTaken ( ) || RegInfo -> hasStackRealignment ( MF ) ; return HasFP ;" LLVM,ARC,161,"Predict the next statement of this code snippet: ScalarAlloc = - ScalarAlloc ; } generateStackAdjustment ( MBB , MBBI , * ST . getInstrInfo ( ) , DebugLoc ( ) , ScalarAlloc , ) ;" LLVM,ARC,162,"Predict the next statement of this code snippet: void FrameLowering :: adjustStackToMatchRecords ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , bool Allocate ) const { MachineFunction & MF = * MBB . getParent ( ) ; int ScalarAlloc = MF . getFrameInfo ( ) . getStackSize ( ) ;" LLVM,ARC,163,"Predict the next statement of this code snippet: FrameLowering ( const Subtarget & st ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsDown , , ) , ST ( st ) {" LLVM,ARC,164,"Predict the next statement of this code snippet: FrameLowering ( const Subtarget & st ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsDown , , ) , ST ( st ) {" LLVM,ARC,165,"Predict the next statement of this code snippet: auto RegI = getSavedReg ( CSI , Which ) ; if ( RegI == CSI . end ( ) || RegI -> getFrameIdx ( ) == ) { int FI = MFI . CreateFixedSpillStackObject ( , CurOffset , true ) ; if ( RegI != CSI . end ( ) ) RegI -> setFrameIdx ( FI ) ; } else MFI . setObjectOffset ( RegI -> getFrameIdx ( ) , CurOffset ) ; CurOffset -= ; } for ( auto & I : CSI ) { if ( I . getReg ( ) > ) continue ; if ( I . getFrameIdx ( ) == ) {" LLVM,ARC,166,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ; TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ;" LLVM,ARC,167,"Predict the next statement of this code snippet: void FrameLowering :: determineCalleeSaves ( MachineFunction & MF , BitVector & SavedRegs , RegScavenger * RS ) const { LLVM_DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ; TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ; SavedRegs . set ( ) ;" LLVM,ARC,168,"Predict the next statement of this code snippet: assert ( Reg . getReg ( ) >= && Reg . getReg ( ) <= && ) ; if ( Reg . getReg ( ) > Last ) Last = Reg . getReg ( ) ;" LLVM,ARC,169,"Predict the next statement of this code snippet: if ( Reg . getReg ( ) > Last ) Last = Reg . getReg ( ) ; } return Last ;" LLVM,ARC,170,"Predict the next statement of this code snippet: auto * AFI = MF . getInfo < FunctionInfo > ( ) ; if ( ! hasFP ( MF ) ) { if ( Amt > AFI -> MaxCallStackReq && Old . getOpcode ( ) == ) AFI -> MaxCallStackReq = Amt ; } else { if ( Amt != ) { assert ( ( Old . getOpcode ( ) == || Old . getOpcode ( ) == ) && ) ; bool IsAdd = ( Old . getOpcode ( ) == ) ; emitRegUpdate ( MBB , I , dl , , Amt , IsAdd , TII ) ; }" LLVM,ARC,171,"Predict the next statement of this code snippet: static void emitRegUpdate ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator & MBBI , DebugLoc dl , unsigned Reg , int NumBytes , bool IsAdd , const InstrInfo * TII ) { unsigned Opc = IsAdd ? : ; BuildMI ( MBB , MBBI , dl , TII -> get ( Opc ) , Reg ) . addReg ( Reg , RegState :: Kill ) . addImm ( NumBytes ) ;" LLVM,ARC,172,"Predict the next statement of this code snippet: AbsAmount = Amount ; Positive = true ; } LLVM_DEBUG ( dbgs ( ) << << Amount << << AbsAmount << ) ; assert ( ( AbsAmount % == ) && ) ;" LLVM,ARC,173,"Predict the next statement of this code snippet: static std :: vector < CalleeSavedInfo > :: iterator getSavedReg ( std :: vector < CalleeSavedInfo > & V , unsigned reg ) {" LLVM,ARC,174,"Predict the next statement of this code snippet: for ( auto I = V . begin ( ) , E = V . end ( ) ; I != E ; ++ I ) { if ( reg == I -> getReg ( ) ) return I ; }" LLVM,ARC,175,"Predict the next statement of this code snippet: bool HasFP = MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || MF . getFrameInfo ( ) . hasVarSizedObjects ( ) || MF . getFrameInfo ( ) . isFrameAddressTaken ( ) || RegInfo -> needsStackRealignment ( MF ) ; return HasFP ;" LLVM,ARC,176,"Predict the next statement of this code snippet: bool FrameLowering :: hasFP ( const MachineFunction & MF ) const { const TargetRegisterInfo * RegInfo = MF . getSubtarget ( ) . getRegisterInfo ( ) ; bool HasFP = MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || MF . getFrameInfo ( ) . hasVarSizedObjects ( ) || MF . getFrameInfo ( ) . isFrameAddressTaken ( ) || RegInfo -> needsStackRealignment ( MF ) ; return HasFP ;" LLVM,ARC,177,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; LLVM_DEBUG ( dbgs ( ) << << MFI . getStackSize ( ) << ) ; const TargetRegisterClass * RC = & ; if ( MFI . hasStackObjects ( ) ) {" LLVM,ARC,178,"Predict the next statement of this code snippet: bool FrameLowering :: spillCalleeSavedRegisters ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MI , const std :: vector < CalleeSavedInfo > & CSI , const TargetRegisterInfo * TRI ) const { LLVM_DEBUG ( dbgs ( ) << << MBB . getParent ( ) -> getName ( ) << ) ; unsigned Last = determineLastCalleeSave ( CSI ) ; if ( UseSaveRestoreFunclet && Last > ) { return true ;" LLVM,ARC,179,"Predict the next statement of this code snippet: void printOperand ( const MCInst * MI , uint64_t , unsigned OpNum , raw_ostream & O ) { printOperand ( MI , OpNum , O ) ;" LLVM,ARC,180,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << cc << ) ; return ;" LLVM,ARC,181,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,ARC,182,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,ARC,183,"Predict the next statement of this code snippet: O << CondCodeToString ( ( ) MI -> getOperand ( OpNum ) . getImm ( ) ) ;" LLVM,ARC,184,"Predict the next statement of this code snippet: void InstPrinter :: printInst ( const MCInst * MI , uint64_t Address , StringRef Annot , const MCSubtargetInfo & STI , raw_ostream & O ) { printInstruction ( MI , Address , O ) ; printAnnotation ( O , Annot ) ;" LLVM,ARC,185,"Predict the next statement of this code snippet: printU6ShiftedBy ( , MI , OpNum , O ) ;" LLVM,ARC,186,"Predict the next statement of this code snippet: unsigned Value2 = Value >> ShiftBy ; if ( Value2 > || ( Value2 << ShiftBy != Value ) ) { errs ( ) << << << MI -> getOpcode ( ) << << Value ; if ( ShiftBy ) errs ( ) << << ( << ShiftBy ) << ; assert ( false && ) ; } } printOperand ( MI , OpNum , O ) ;" LLVM,ARC,187,"Predict the next statement of this code snippet: errs ( ) << << << MI -> getOpcode ( ) << << Value ; if ( ShiftBy ) errs ( ) << << ( << ShiftBy ) << ; assert ( false && ) ; } }" LLVM,ARC,188,"Predict the next statement of this code snippet: static const char * BRCondCodeToString ( BRCC ) { switch ( BRCC ) { case : return ; case : return ; case : return ; case : return ;" LLVM,ARC,189,"Predict the next statement of this code snippet: int Offset = ; const MCSymbolRefExpr * SRE ; if ( const auto * BE = dyn_cast < MCBinaryExpr > ( Expr ) ) { SRE = dyn_cast < MCSymbolRefExpr > ( BE -> getLHS ( ) ) ; const auto * CE = dyn_cast < MCConstantExpr > ( BE -> getRHS ( ) ) ;" LLVM,ARC,190,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; } return BadConditionCode ( BRCC ) ;" LLVM,ARC,191,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,ARC,192,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,ARC,193,"Predict the next statement of this code snippet: InstPrinter ( const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) : MCInstPrinter ( MAI , MII , MRI ) {" LLVM,ARC,194,"Predict the next statement of this code snippet: InstPrinter ( const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) : MCInstPrinter ( MAI , MII , MRI ) {" LLVM,ARC,195,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << << cc << ) ;" LLVM,ARC,196,"Predict the next statement of this code snippet: static const char * BadConditionCode ( T cc ) { DEBUG ( dbgs ( ) << << cc << ) ; return ;" LLVM,ARC,197,"Predict the next statement of this code snippet: const MCOperand & Op = MI -> getOperand ( OpNum ) ;" LLVM,ARC,198,"Predict the next statement of this code snippet: assert ( Op . isImm ( ) && ) ;" LLVM,ARC,199,"Predict the next statement of this code snippet: const auto * CE = dyn_cast < MCConstantExpr > ( BE -> getRHS ( ) ) ; assert ( SRE && CE && ) ; Offset = CE -> getValue ( ) ; } else { SRE = dyn_cast < MCSymbolRefExpr > ( Expr ) ; assert ( SRE && ) ; } assert ( SRE -> getKind ( ) == MCSymbolRefExpr :: VK_None ) ; OS << '@' ; SRE -> getSymbol ( ) . print ( OS , MAI ) ; if ( Offset ) {" LLVM,ARC,200,"Predict the next statement of this code snippet: void InstPrinter :: printInst ( const MCInst * MI , raw_ostream & O , StringRef Annot , const MCSubtargetInfo & STI ) { printInstruction ( MI , O ) ;" LLVM,ARC,201,"Predict the next statement of this code snippet: void InstPrinter :: printInst ( const MCInst * MI , raw_ostream & O , StringRef Annot , const MCSubtargetInfo & STI ) { printInstruction ( MI , O ) ; printAnnotation ( O , Annot ) ;" LLVM,ARC,202,"Predict the next statement of this code snippet: const MCOperand & base = MI -> getOperand ( OpNum ) ; const MCOperand & offset = MI -> getOperand ( OpNum + ) ; assert ( base . isReg ( ) && ) ; assert ( offset . isImm ( ) && ) ; printRegName ( O , base . getReg ( ) ) ;" LLVM,ARC,203,"Predict the next statement of this code snippet: void InstPrinter :: printOperand ( const MCInst * MI , unsigned OpNum , raw_ostream & O ) { const MCOperand & Op = MI -> getOperand ( OpNum ) ; if ( Op . isReg ( ) ) { printRegName ( O , Op . getReg ( ) ) ; return ; } if ( Op . isImm ( ) ) { O << Op . getImm ( ) ; return ; } assert ( Op . isExpr ( ) && ) ; printExpr ( Op . getExpr ( ) , & MAI , O ) ;" LLVM,ARC,204,"Predict the next statement of this code snippet: const MCOperand & Op = MI -> getOperand ( OpNum ) ; if ( Op . isReg ( ) ) { printRegName ( O , Op . getReg ( ) ) ; return ; } if ( Op . isImm ( ) ) {" LLVM,ARC,205,"Predict the next statement of this code snippet: void InstPrinter :: printPredicateOperand ( const MCInst * MI , unsigned OpNum , raw_ostream & O ) {" LLVM,ARC,206,"Predict the next statement of this code snippet: assert ( Op . isImm ( ) && ) ;" LLVM,ARC,207,"Predict the next statement of this code snippet: void InstPrinter :: printRegName ( raw_ostream & OS , unsigned RegNo ) const {" LLVM,ARC,208,"Predict the next statement of this code snippet: void InstPrinter :: printRegName ( raw_ostream & OS , unsigned RegNo ) const {" LLVM,ARC,209,"Predict the next statement of this code snippet: while ( isPredicated ( * I ) || I -> isTerminator ( ) || I -> isDebugValue ( ) ) { bool CantAnalyze = false ; while ( I -> isDebugValue ( ) || ! I -> isTerminator ( ) ) { if ( I == MBB . begin ( ) ) return false ; -- I ; } if ( isJumpOpcode ( I -> getOpcode ( ) ) ) { CantAnalyze = true ; } else if ( isUncondBranchOpcode ( I -> getOpcode ( ) ) ) { TBB = I -> getOperand ( ) . getMBB ( ) ; } else if ( isCondBranchOpcode ( I -> getOpcode ( ) ) ) { if ( ! Cond . empty ( ) ) return true ; assert ( ! FBB && ) ; FBB = TBB ; TBB = I -> getOperand ( ) . getMBB ( ) ; Cond . push_back ( I -> getOperand ( ) ) ; Cond . push_back ( I -> getOperand ( ) ) ; Cond . push_back ( I -> getOperand ( ) ) ; } else if ( I -> isReturn ( ) ) { CantAnalyze = ! isPredicated ( * I ) ; } else { return true ; } if ( ! isPredicated ( * I ) && ( isUncondBranchOpcode ( I -> getOpcode ( ) ) || isJumpOpcode ( I -> getOpcode ( ) ) || I -> isReturn ( ) ) ) {" LLVM,ARC,210,"Predict the next statement of this code snippet: unsigned Align = MFI . getObjectAlignment ( FrameIndex ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOLoad , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ;" LLVM,ARC,211,"Predict the next statement of this code snippet: MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; unsigned Align = MFI . getObjectAlignment ( FrameIndex ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOLoad , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ; assert ( . hasSubClassEq ( RC ) && ) ;" LLVM,ARC,212,"Predict the next statement of this code snippet: void InstrInfo :: storeRegToStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , unsigned SrcReg , bool isKill , int FrameIndex , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc dl = MBB . findDebugLoc ( I ) ; MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; unsigned Align = MFI . getObjectAlignment ( FrameIndex ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ; assert ( . hasSubClassEq ( RC ) && ) ;" LLVM,ARC,213,"Predict the next statement of this code snippet: assert ( . hasSubClassEq ( RC ) && ) ; DEBUG ( dbgs ( ) << << printReg ( DestReg , TRI ) << << FrameIndex << ) ;" LLVM,ARC,214,"Predict the next statement of this code snippet: DebugLoc dl = MBB . findDebugLoc ( I ) ; MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; unsigned Align = MFI . getObjectAlignment ( FrameIndex ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FrameIndex ) , Align ) ;" LLVM,ARC,215,"Predict the next statement of this code snippet: DebugLoc dl = MBB . findDebugLoc ( I ) ; MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; unsigned Align = MFI . getObjectAlignment ( FrameIndex ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOLoad , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ; assert ( . hasSubClassEq ( RC ) && ) ; LLVM_DEBUG ( dbgs ( ) << << printReg ( DestReg , TRI ) << << FrameIndex << ) ;" LLVM,ARC,216,"Predict the next statement of this code snippet: MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ;" LLVM,ARC,217,"Predict the next statement of this code snippet: DebugLoc dl = MBB . findDebugLoc ( I ) ; MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; unsigned Align = MFI . getObjectAlignment ( FrameIndex ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ; assert ( . hasSubClassEq ( RC ) && ) ; LLVM_DEBUG ( dbgs ( ) << << printReg ( SrcReg , TRI ) << << FrameIndex << ) ; BuildMI ( MBB , I , dl , get ( ) ) . addReg ( SrcReg , getKillRegState ( isKill ) ) . addFrameIndex ( FrameIndex ) . addImm ( ) . addMemOperand ( MMO ) ;" LLVM,ARC,218,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , const DebugLoc & dl , MCRegister DestReg , MCRegister SrcReg , bool KillSrc ) const { assert ( . contains ( SrcReg ) && ) ; assert ( . contains ( DestReg ) && ) ; BuildMI ( MBB , I , dl , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,ARC,219,"Predict the next statement of this code snippet: OffsetPos ++ ; } if ( ! MI . getOperand ( BasePos ) . isReg ( ) || ! MI . getOperand ( OffsetPos ) . isImm ( ) ) return false ;" LLVM,ARC,220,"Predict the next statement of this code snippet: bool InstrInfo :: getBaseAndOffsetPosition ( const MachineInstr & MI , unsigned & BasePos , unsigned & OffsetPos ) const { if ( ! MI . mayLoad ( ) && ! MI . mayStore ( ) ) return false ; BasePos = ; OffsetPos = ;" LLVM,ARC,221,"Predict the next statement of this code snippet: const MachineFunction * MF = MI . getParent ( ) -> getParent ( ) ; const char * AsmStr = MI . getOperand ( ) . getSymbolName ( ) ; return getInlineAsmLength ( AsmStr , * MF -> getTarget ( ) . getMCAsmInfo ( ) ) ;" LLVM,ARC,222,"Predict the next statement of this code snippet: const char * AsmStr = MI . getOperand ( ) . getSymbolName ( ) ;" LLVM,ARC,223,"Predict the next statement of this code snippet: assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( Cond . empty ( ) ) { BuildMI ( & MBB , dl , get ( ) ) . addMBB ( TBB ) ; return ; } int BccOpc = Cond [ ] . isImm ( ) ? : ;" LLVM,ARC,224,"Predict the next statement of this code snippet: bool InstrInfo :: isPostIncrement ( const MachineInstr & MI ) const { const MCInstrDesc & MID = MI . getDesc ( ) ;" LLVM,ARC,225,"Predict the next statement of this code snippet: const uint64_t F = MID . TSFlags ;" LLVM,ARC,226,"Predict the next statement of this code snippet: const MCInstrDesc & MID = MI . getDesc ( ) ; const uint64_t F = MID . TSFlags ; return ( ( F >> TSF_AddrModeOff ) & TSF_AddModeMask ) == PreInc ;" LLVM,ARC,227,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( const Subtarget & ST ) : GenInstrInfo ( , ) , RI ( ST ) {" LLVM,ARC,228,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( const Subtarget & ST ) : GenInstrInfo ( , ) , RI ( ST ) {" LLVM,ARC,229,"Predict the next statement of this code snippet: assert ( . contains ( SrcReg ) && ) ; assert ( . contains ( DestReg ) && ) ; BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,ARC,230,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , const DebugLoc & DL , MCRegister DestReg , MCRegister SrcReg , bool KillSrc ) const { assert ( . contains ( SrcReg ) && ) ; assert ( . contains ( DestReg ) && ) ; BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,ARC,231,"Predict the next statement of this code snippet: return ; } int BccOpc = Cond [ ] . isImm ( ) ? : ; MachineInstrBuilder MIB = BuildMI ( & MBB , DL , get ( BccOpc ) ) ; MIB . addMBB ( TBB ) ; for ( unsigned i = ; i < ; i ++ ) { MIB . add ( Cond [ i ] ) ; } if ( ! FBB ) {" LLVM,ARC,232,"Predict the next statement of this code snippet: if ( isInt < > ( Value ) ) { return BuildMI ( MBB , MI , DL , get ( ) , Reg ) . addImm ( Value ) . getInstr ( ) ; }" LLVM,ARC,233,"Predict the next statement of this code snippet: void InstrInfo :: loadRegFromStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , Register DestReg , int FrameIndex , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc DL = MBB . findDebugLoc ( I ) ; MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOLoad , MFI . getObjectSize ( FrameIndex ) , MFI . getObjectAlign ( FrameIndex ) ) ;" LLVM,ARC,234,"Predict the next statement of this code snippet: assert ( ( Cond . size ( ) == ) && ) ; Cond [ ] . setImm ( getOppositeBranchCondition ( ( ) Cond [ ] . getImm ( ) ) ) ; return false ;" LLVM,ARC,235,"Predict the next statement of this code snippet: assert ( . hasSubClassEq ( RC ) && ) ; LLVM_DEBUG ( dbgs ( ) << << printReg ( SrcReg , TRI ) << << FrameIndex << ) ;" LLVM,ARC,236,"Predict the next statement of this code snippet: assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ; assert ( . hasSubClassEq ( RC ) && ) ; LLVM_DEBUG ( dbgs ( ) << << printReg ( DestReg , TRI ) << << FrameIndex << ) ;" LLVM,ARC,237,"Predict the next statement of this code snippet: MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FrameIndex ) , MFI . getObjectAlign ( FrameIndex ) ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ; assert ( . hasSubClassEq ( RC ) && ) ; LLVM_DEBUG ( dbgs ( ) << << printReg ( SrcReg , TRI ) << << FrameIndex << ) ; BuildMI ( MBB , I , dl , get ( ) ) . addReg ( SrcReg , getKillRegState ( isKill ) ) . addFrameIndex ( FrameIndex ) . addImm ( ) . addMemOperand ( MMO ) ;" LLVM,ARC,238,"Predict the next statement of this code snippet: DebugLoc dl = MBB . findDebugLoc ( I ) ; MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,ARC,239,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( const Subtarget & ST ) : GenInstrInfo ( , ) , ST ( ST ) , RI ( ST ) {" LLVM,ARC,240,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( const Subtarget & ST ) : GenInstrInfo ( , ) , ST ( ST ) , RI ( ST ) {" LLVM,ARC,241,"Predict the next statement of this code snippet: } else if ( isCondBranchOpcode ( I -> getOpcode ( ) ) ) { if ( ! Cond . empty ( ) ) return true ; assert ( ! FBB && ) ; FBB = TBB ; TBB = I -> getOperand ( ) . getMBB ( ) ; Cond . push_back ( I -> getOperand ( ) ) ; Cond . push_back ( I -> getOperand ( ) ) ; Cond . push_back ( I -> getOperand ( ) ) ; } else if ( I -> isReturn ( ) ) { CantAnalyze = ! isPredicated ( * I ) ; } else { return true ; } if ( ! isPredicated ( * I ) && ( isUncondBranchOpcode ( I -> getOpcode ( ) ) || isJumpOpcode ( I -> getOpcode ( ) ) || I -> isReturn ( ) ) ) { Cond . clear ( ) ; FBB = nullptr ; if ( AllowModify ) { MachineBasicBlock :: iterator DI = std :: next ( I ) ; while ( DI != MBB . end ( ) ) { MachineInstr & InstToDelete = * DI ;" LLVM,ARC,242,"Predict the next statement of this code snippet: void InstrInfo :: anchor ( ) {" LLVM,ARC,243,"Predict the next statement of this code snippet: void InstrInfo :: anchor ( ) {" LLVM,ARC,244,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : GenInstrInfo ( , ) , RI ( ) {" LLVM,ARC,245,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : GenInstrInfo ( , ) , RI ( ) {" LLVM,ARC,246,"Predict the next statement of this code snippet: assert ( . contains ( SrcReg ) && ) ; assert ( . contains ( DestReg ) && ) ;" LLVM,ARC,247,"Predict the next statement of this code snippet: assert ( . contains ( SrcReg ) && ) ; assert ( . contains ( DestReg ) && ) ;" LLVM,ARC,248,"Predict the next statement of this code snippet: return getInlineAsmLength ( AsmStr , * MF -> getTarget ( ) . getMCAsmInfo ( ) ) ; } return MI . getDesc ( ) . getSize ( ) ;" LLVM,ARC,249,"Predict the next statement of this code snippet: const char * AsmStr = MI . getOperand ( ) . getSymbolName ( ) ; return getInlineAsmLength ( AsmStr , * MF -> getTarget ( ) . getMCAsmInfo ( ) ) ; } return MI . getDesc ( ) . getSize ( ) ;" LLVM,ARC,250,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,ARC,251,"Predict the next statement of this code snippet: const RegisterInfo & getRegisterInfo ( ) const {" LLVM,ARC,252,"Predict the next statement of this code snippet: return RI ;" LLVM,ARC,253,"Predict the next statement of this code snippet: assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( Cond . empty ( ) ) { BuildMI ( & MBB , dl , get ( ) ) . addMBB ( TBB ) ; return ; } int BccOpc = Cond [ ] . isImm ( ) ? : ; MachineInstrBuilder MIB = BuildMI ( & MBB , dl , get ( BccOpc ) ) ; MIB . addMBB ( TBB ) ; for ( unsigned i = ; i < ; i ++ ) { MIB . add ( Cond [ i ] ) ; } if ( ! FBB ) { return ;" LLVM,ARC,254,"Predict the next statement of this code snippet: static bool isCondBranchOpcode ( int Opc ) {" LLVM,ARC,255,"Predict the next statement of this code snippet: static bool isJumpOpcode ( int Opc ) {" LLVM,ARC,256,"Predict the next statement of this code snippet: return Opcode == || Opcode == || Opcode == ;" LLVM,ARC,257,"Predict the next statement of this code snippet: static bool isLoad ( int Opcode ) {" LLVM,ARC,258,"Predict the next statement of this code snippet: unsigned InstrInfo :: isLoadFromStackSlot ( const MachineInstr & MI , int & FrameIndex ) const { int Opcode = MI . getOpcode ( ) ;" LLVM,ARC,259,"Predict the next statement of this code snippet: static bool isStore ( int Opcode ) { return Opcode == || Opcode == || Opcode == ;" LLVM,ARC,260,"Predict the next statement of this code snippet: static bool isUncondBranchOpcode ( int Opc ) { return Opc == ;" LLVM,ARC,261,"Predict the next statement of this code snippet: return Opc == ;" LLVM,ARC,262,"Predict the next statement of this code snippet: static bool isZeroImm ( const MachineOperand & Op ) { return Op . isImm ( ) && Op . getImm ( ) == ;" LLVM,ARC,263,"Predict the next statement of this code snippet: return Op . isImm ( ) && Op . getImm ( ) == ;" LLVM,ARC,264,"Predict the next statement of this code snippet: return BuildMI ( MBB , MI , dl , get ( ) , Reg ) . addImm ( Value ) . getInstr ( ) ; } llvm_unreachable ( ) ;" LLVM,ARC,265,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator InstrInfo :: loadImmediate ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MI , unsigned Reg , uint64_t Value ) const { DebugLoc dl = MBB . findDebugLoc ( MI ) ;" LLVM,ARC,266,"Predict the next statement of this code snippet: MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOLoad , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ;" LLVM,ARC,267,"Predict the next statement of this code snippet: bool InstrInfo :: reverseBranchCondition ( SmallVectorImpl < MachineOperand > & Cond ) const { assert ( ( Cond . size ( ) == ) && ) ;" LLVM,ARC,268,"Predict the next statement of this code snippet: DebugLoc dl = MBB . findDebugLoc ( I ) ; MachineFunction & MF = * MBB . getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; unsigned Align = MFI . getObjectAlignment ( FrameIndex ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FrameIndex ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FrameIndex ) , Align ) ; assert ( MMO && ) ; assert ( TRI -> getSpillSize ( * RC ) == && ) ; assert ( . hasSubClassEq ( RC ) && ) ; LLVM_DEBUG ( dbgs ( ) << << printReg ( SrcReg , TRI ) << << FrameIndex << ) ; BuildMI ( MBB , I , dl , get ( ) ) . addReg ( SrcReg , getKillRegState ( isKill ) ) . addFrameIndex ( FrameIndex ) . addImm ( ) . addMemOperand ( MMO ) ;" LLVM,ARC,269,"Predict the next statement of this code snippet: DAGToDAGISel ( TargetMachine & TM , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( TM , OptLevel ) {" LLVM,ARC,270,"Predict the next statement of this code snippet: DAGToDAGISel ( TargetMachine & TM , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( TM , OptLevel ) {" LLVM,ARC,271,"Predict the next statement of this code snippet: return new DAGToDAGISel ( TM , OptLevel ) ;" LLVM,ARC,272,"Predict the next statement of this code snippet: FunctionPass * llvm :: createISelDag ( TargetMachine & TM , CodeGenOpt :: Level OptLevel ) { return new DAGToDAGISel ( TM , OptLevel ) ;" LLVM,ARC,273,"Predict the next statement of this code snippet: return ;" LLVM,ARC,274,"Predict the next statement of this code snippet: return ;" LLVM,ARC,275,"Predict the next statement of this code snippet: if ( Addr . getOpcode ( ) == ) RHSC = - RHSC ; Base = Addr . getOperand ( ) ;" LLVM,ARC,276,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectAddrModeFar ( SDValue Addr , SDValue & Base , SDValue & Offset ) { if ( SelectAddrModeS9 ( Addr , Base , Offset ) ) return false ; if ( Addr . getOpcode ( ) == ) { return false ; } if ( ConstantSDNode * RHS = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { int32_t RHSC = RHS -> getSExtValue ( ) ; if ( Addr . getOpcode ( ) == ) RHSC = - RHSC ; Base = Addr . getOperand ( ) ; Offset = CurDAG -> getTargetConstant ( RHSC , SDLoc ( Addr ) , ) ; return true ;" LLVM,ARC,277,"Predict the next statement of this code snippet: if ( Addr . getOpcode ( ) == ) {" LLVM,ARC,278,"Predict the next statement of this code snippet: Offset = CurDAG -> getTargetConstant ( , SDLoc ( Addr ) , ) ; return true ; }" LLVM,ARC,279,"Predict the next statement of this code snippet: return false ; } if ( Addr . getOpcode ( ) != && Addr . getOpcode ( ) != && ! CurDAG -> isBaseWithConstantOffset ( Addr ) ) { if ( Addr . getOpcode ( ) == ) { int FI = cast < FrameIndexSDNode > ( Addr ) -> getIndex ( ) ; Base = CurDAG -> getTargetFrameIndex ( FI , TLI -> getPointerTy ( CurDAG -> getDataLayout ( ) ) ) ; } else { Base = Addr ; } Offset = CurDAG -> getTargetConstant ( , SDLoc ( Addr ) , ) ; return true ; } if ( ConstantSDNode * RHS = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { int32_t RHSC = RHS -> getSExtValue ( ) ; if ( Addr . getOpcode ( ) == ) RHSC = - RHSC ;" LLVM,ARC,280,"Predict the next statement of this code snippet: } if ( ConstantSDNode * RHS = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { int32_t RHSC = RHS -> getSExtValue ( ) ; if ( Addr . getOpcode ( ) == ) RHSC = - RHSC ; if ( ! isInt < > ( RHSC ) ) return false ; Base = Addr . getOperand ( ) ; if ( Base . getOpcode ( ) == ) { int FI = cast < FrameIndexSDNode > ( Base ) -> getIndex ( ) ; Base = CurDAG -> getTargetFrameIndex ( FI , TLI -> getPointerTy ( CurDAG -> getDataLayout ( ) ) ) ; } Offset = CurDAG -> getTargetConstant ( RHSC , SDLoc ( Addr ) , ) ;" LLVM,ARC,281,"Predict the next statement of this code snippet: Pred = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , SDLoc ( N ) , ) ;" LLVM,ARC,282,"Predict the next statement of this code snippet: Pred = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , SDLoc ( N ) , ) ; Reg = CurDAG -> getRegister ( , ) ; return true ;" LLVM,ARC,283,"Predict the next statement of this code snippet: return true ; } if ( Addr . getOpcode ( ) == ) { ConstantSDNode * CN = nullptr ; if ( ( FIN = dyn_cast < FrameIndexSDNode > ( Addr . getOperand ( ) ) ) && ( CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) && ( CN -> getSExtValue ( ) % == && CN -> getSExtValue ( ) >= ) ) { Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , ) ; Offset = CurDAG -> getTargetConstant ( CN -> getSExtValue ( ) , SDLoc ( Addr ) , ) ;" LLVM,ARC,284,"Predict the next statement of this code snippet: ConstantSDNode * CN = nullptr ; if ( ( FIN = dyn_cast < FrameIndexSDNode > ( Addr . getOperand ( ) ) ) && ( CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) && ( CN -> getSExtValue ( ) % == && CN -> getSExtValue ( ) >= ) ) { Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , ) ; Offset = CurDAG -> getTargetConstant ( CN -> getSExtValue ( ) , SDLoc ( Addr ) , ) ; return true ; } }" LLVM,ARC,285,"Predict the next statement of this code snippet: DEBUG ( errs ( ) << << ( unsigned ) RegVT . getSimpleVT ( ) . SimpleTy << ) ; llvm_unreachable ( ) ; } case : unsigned VReg = RegInfo . createVirtualRegister ( & ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , VReg ) ; ArgIn = DAG . getCopyFromReg ( Chain , dl , VReg , RegVT ) ; CFRegNode . push_back ( ArgIn . getValue ( ArgIn -> getNumValues ( ) - ) ) ; } } else { assert ( VA . isMemLoc ( ) ) ; unsigned ObjSize = VA . getLocVT ( ) . getStoreSize ( ) ; assert ( ( ObjSize <= StackSlotSize ) && ) ; int FI = MFI . CreateFixedObject ( ObjSize , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , ) ; ArgIn = DAG . getLoad ( VA . getLocVT ( ) , dl , Chain , FIN , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ; } const ArgDataPair ADP = { ArgIn , Ins [ i ] . Flags } ; ArgData . push_back ( ADP ) ; } if ( IsVarArg ) { static const MCPhysReg ArgRegs [ ] = { , , , , , , , } ; auto * AFI = MF . getInfo < FunctionInfo > ( ) ; unsigned FirstVAReg = CCInfo . getFirstUnallocated ( ArgRegs ) ; if ( FirstVAReg < array_lengthof ( ArgRegs ) ) { int Offset = ; int VarFI = MFI . CreateFixedObject ( ( array_lengthof ( ArgRegs ) - FirstVAReg ) * , CCInfo . getNextStackOffset ( ) , true ) ; AFI -> setVarArgsFrameIndex ( VarFI ) ; SDValue FIN = DAG . getFrameIndex ( VarFI , ) ; for ( unsigned i = FirstVAReg ; i < array_lengthof ( ArgRegs ) ; i ++ ) { unsigned VReg = RegInfo . createVirtualRegister ( & ) ;" LLVM,ARC,286,"Predict the next statement of this code snippet: assert ( cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) == && ) ; Register FrameReg = ARI . getFrameRegister ( MF ) ; return DAG . getCopyFromReg ( DAG . getEntryNode ( ) , dl , FrameReg , VT ) ;" LLVM,ARC,287,"Predict the next statement of this code snippet: const RegisterInfo & ARI = * Subtarget . getRegisterInfo ( ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MFI . setFrameAddressIsTaken ( true ) ; EVT VT = Op . getValueType ( ) ; SDLoc dl ( Op ) ; assert ( cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) == && ) ; Register FrameReg = ARI . getFrameRegister ( MF ) ; return DAG . getCopyFromReg ( DAG . getEntryNode ( ) , dl , FrameReg , VT ) ;" LLVM,ARC,288,"Predict the next statement of this code snippet: assert ( VA . isMemLoc ( ) ) ; unsigned ObjSize = VA . getLocVT ( ) . getStoreSize ( ) ; assert ( ( ObjSize <= StackSlotSize ) && ) ; int FI = MFI . CreateFixedObject ( ObjSize , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , ) ; ArgIn = DAG . getLoad ( VA . getLocVT ( ) , dl , Chain , FIN , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ; } const ArgDataPair ADP = { ArgIn , Ins [ i ] . Flags } ; ArgData . push_back ( ADP ) ; } if ( IsVarArg ) { static const MCPhysReg ArgRegs [ ] = { , , , , , , , } ; auto * AFI = MF . getInfo < FunctionInfo > ( ) ; unsigned FirstVAReg = CCInfo . getFirstUnallocated ( ArgRegs ) ; if ( FirstVAReg < array_lengthof ( ArgRegs ) ) { int Offset = ; int VarFI = MFI . CreateFixedObject ( ( array_lengthof ( ArgRegs ) - FirstVAReg ) * , CCInfo . getNextStackOffset ( ) , true ) ; AFI -> setVarArgsFrameIndex ( VarFI ) ; SDValue FIN = DAG . getFrameIndex ( VarFI , ) ; for ( unsigned i = FirstVAReg ; i < array_lengthof ( ArgRegs ) ; i ++ ) { unsigned VReg = RegInfo . createVirtualRegister ( & ) ; RegInfo . addLiveIn ( ArgRegs [ i ] , VReg ) ; SDValue Val = DAG . getCopyFromReg ( Chain , dl , VReg , ) ; CFRegNode . push_back ( Val . getValue ( Val -> getNumValues ( ) - ) ) ; SDValue VAObj = DAG . getNode ( , dl , , FIN , DAG . getConstant ( Offset , dl , ) ) ; SDValue Store = DAG . getStore ( Val . getValue ( ) , dl , Val , VAObj , MachinePointerInfo ( ) ) ; MemOps . push_back ( Store ) ; Offset += ; } } else { llvm_unreachable ( ) ; } } if ( ! CFRegNode . empty ( ) ) Chain = DAG . getNode ( , dl , , CFRegNode ) ; for ( const auto & ArgDI : ArgData ) { if ( ArgDI . Flags . isByVal ( ) && ArgDI . Flags . getByValSize ( ) ) {" LLVM,ARC,289,"Predict the next statement of this code snippet: switch ( Op . getOpcode ( ) ) { case : return LowerGlobalAddress ( Op , DAG ) ; case : return LowerFRAMEADDR ( Op , DAG ) ; case : return LowerSELECT_CC ( Op , DAG ) ; case :" LLVM,ARC,290,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( N -> dump ( & DAG ) ) ; LLVM_DEBUG ( dbgs ( ) << << N -> use_size ( ) << ) ; switch ( N -> getOpcode ( ) ) { case : if ( N -> getValueType ( ) == ) { SDValue V = DAG . getNode ( , SDLoc ( N ) , DAG . getVTList ( , ) , N -> getOperand ( ) ) ; SDValue Op = DAG . getNode ( , SDLoc ( N ) , , V ) ; Results . push_back ( Op ) ; Results . push_back ( V . getValue ( ) ) ; } break ; default : break ; }" LLVM,ARC,291,"Predict the next statement of this code snippet: setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Legal ) ;" LLVM,ARC,292,"Predict the next statement of this code snippet: setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ;" LLVM,ARC,293,"Predict the next statement of this code snippet: setBooleanContents ( ZeroOrOneBooleanContent ) ; setBooleanVectorContents ( ZeroOrOneBooleanContent ) ; for ( unsigned Opc = ; Opc < ; ++ Opc ) setOperationAction ( Opc , , Expand ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ;" LLVM,ARC,294,"Predict the next statement of this code snippet: computeRegisterProperties ( Subtarget . getRegisterInfo ( ) ) ; setStackPointerRegisterToSaveRestore ( ) ; setSchedulingPreference ( Sched :: Source ) ; setBooleanContents ( ZeroOrOneBooleanContent ) ; setBooleanVectorContents ( ZeroOrOneBooleanContent ) ; for ( unsigned Opc = ; Opc < ; ++ Opc ) setOperationAction ( Opc , , Expand ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ;" LLVM,ARC,295,"Predict the next statement of this code snippet: bool TargetLowering :: CanLowerReturn ( CallingConv :: ID CallConv , MachineFunction & MF , bool IsVarArg , const SmallVectorImpl < > & Outs , LLVMContext & Context ) const { SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , RVLocs , Context ) ;" LLVM,ARC,296,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; } return nullptr ;" LLVM,ARC,297,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,ARC,298,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; default : llvm_unreachable ( ) ; }" LLVM,ARC,299,"Predict the next statement of this code snippet: bool TargetLowering :: isLegalAddressingMode ( const DataLayout & DL , const AddrMode & AM , Type * Ty , unsigned AS , Instruction * I ) const {" LLVM,ARC,300,"Predict the next statement of this code snippet: SDValue Chain = Op . getOperand ( ) ; CC = cast < CondCodeSDNode > ( Op . getOperand ( ) ) -> get ( ) ; SDValue LHS = Op . getOperand ( ) ; SDValue RHS = Op . getOperand ( ) ; SDValue Dest = Op . getOperand ( ) ; SDLoc dl ( Op ) ; arcCC = ISDCCtoCC ( CC ) ; assert ( LHS . getValueType ( ) == && ) ; return DAG . getNode ( , dl , , Chain , Dest , LHS , RHS , DAG . getConstant ( arcCC , dl , ) ) ;" LLVM,ARC,301,"Predict the next statement of this code snippet: SDValue PtrOff = DAG . getNode ( , dl , getPointerTy ( DAG . getDataLayout ( ) ) , StackPtr , SOffset ) ; SDValue Store = DAG . getStore ( Chain , dl , Arg , PtrOff , MachinePointerInfo ( ) ) ; MemOpChains . push_back ( Store ) ; IsTailCall = false ; } } if ( ! MemOpChains . empty ( ) ) Chain = DAG . getNode ( , dl , , MemOpChains ) ; SDValue Glue ; for ( unsigned i = , e = RegsToPass . size ( ) ; i != e ; ++ i ) { Chain = DAG . getCopyToReg ( Chain , dl , RegsToPass [ i ] . first , RegsToPass [ i ] . second , Glue ) ; Glue = Chain . getValue ( ) ; } bool IsDirect = true ; if ( auto * G = dyn_cast < GlobalAddressSDNode > ( Callee ) ) Callee = DAG . getTargetGlobalAddress ( G -> getGlobal ( ) , dl , ) ; else if ( auto * E = dyn_cast < ExternalSymbolSDNode > ( Callee ) ) Callee = DAG . getTargetExternalSymbol ( E -> getSymbol ( ) , ) ; else IsDirect = false ; SDVTList NodeTys = DAG . getVTList ( , ) ; SmallVector < SDValue , > Ops ; Ops . push_back ( Chain ) ; Ops . push_back ( Callee ) ;" LLVM,ARC,302,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case CallingConv :: C : case CallingConv :: Fast : return LowerCallArguments ( Chain , CallConv , IsVarArg , Ins , dl , DAG , InVals ) ; }" LLVM,ARC,303,"Predict the next statement of this code snippet: MFI . setFrameAddressIsTaken ( true ) ; EVT VT = Op . getValueType ( ) ; SDLoc dl ( Op ) ; assert ( cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) == && ) ; unsigned FrameReg = ARI . getFrameRegister ( MF ) ; return DAG . getCopyFromReg ( DAG . getEntryNode ( ) , dl , FrameReg , VT ) ;" LLVM,ARC,304,"Predict the next statement of this code snippet: const RegisterInfo & ARI = * Subtarget . getRegisterInfo ( ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MFI . setFrameAddressIsTaken ( true ) ;" LLVM,ARC,305,"Predict the next statement of this code snippet: const GlobalValue * GV = GN -> getGlobal ( ) ; SDLoc dl ( GN ) ; int64_t Offset = GN -> getOffset ( ) ; SDValue GA = DAG . getTargetGlobalAddress ( GV , dl , , Offset ) ; return DAG . getNode ( , dl , , GA ) ;" LLVM,ARC,306,"Predict the next statement of this code snippet: int64_t Offset = GN -> getOffset ( ) ; SDValue GA = DAG . getTargetGlobalAddress ( GV , dl , , Offset ) ;" LLVM,ARC,307,"Predict the next statement of this code snippet: auto * N = cast < JumpTableSDNode > ( Op ) ; SDValue GA = DAG . getTargetJumpTable ( N -> getIndex ( ) , ) ; return DAG . getNode ( , SDLoc ( N ) , , GA ) ;" LLVM,ARC,308,"Predict the next statement of this code snippet: switch ( Op . getOpcode ( ) ) { case : return LowerGlobalAddress ( Op , DAG ) ; case : return LowerFRAMEADDR ( Op , DAG ) ; case : return LowerSELECT_CC ( Op , DAG ) ; case :" LLVM,ARC,309,"Predict the next statement of this code snippet: CCValAssign & VA = RVLocs [ i ] ; if ( VA . isRegLoc ( ) ) continue ; assert ( VA . isMemLoc ( ) ) ; if ( IsVarArg ) { report_fatal_error ( ) ; } int Offset = VA . getLocMemOffset ( ) ; unsigned ObjSize = VA . getLocVT ( ) . getStoreSize ( ) ; int FI = MFI . CreateFixedObject ( ObjSize , Offset , false ) ; SDValue FIN = DAG . getFrameIndex ( FI , ) ; MemOpChains . push_back ( DAG . getStore ( Chain , dl , OutVals [ i ] , FIN , MachinePointerInfo :: getFixedStack ( DAG . getMachineFunction ( ) , FI ) ) ) ; }" LLVM,ARC,310,"Predict the next statement of this code snippet: unsigned ObjSize = VA . getLocVT ( ) . getStoreSize ( ) ; int FI = MFI . CreateFixedObject ( ObjSize , Offset , false ) ; SDValue FIN = DAG . getFrameIndex ( FI , ) ; MemOpChains . push_back ( DAG . getStore ( Chain , dl , OutVals [ i ] , FIN , MachinePointerInfo :: getFixedStack ( DAG . getMachineFunction ( ) , FI ) ) ) ; } if ( ! MemOpChains . empty ( ) ) Chain = DAG . getNode ( , dl , , MemOpChains ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i != e ; ++ i ) { CCValAssign & VA = RVLocs [ i ] ; if ( ! VA . isRegLoc ( ) ) continue ; Chain = DAG . getCopyToReg ( Chain , dl , VA . getLocReg ( ) , OutVals [ i ] , Flag ) ; Flag = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ;" LLVM,ARC,311,"Predict the next statement of this code snippet: SDValue LHS = Op . getOperand ( ) ; SDValue RHS = Op . getOperand ( ) ; CC = cast < CondCodeSDNode > ( Op . getOperand ( ) ) -> get ( ) ; SDValue TVal = Op . getOperand ( ) ; SDValue FVal = Op . getOperand ( ) ; SDLoc dl ( Op ) ;" LLVM,ARC,312,"Predict the next statement of this code snippet: SDValue Op0 = Op . getOperand ( ) ; SDLoc dl ( Op ) ; assert ( Op . getValueType ( ) == && ) ; unsigned Width = cast < VTSDNode > ( Op . getOperand ( ) ) -> getVT ( ) . getSizeInBits ( ) ; if ( Width == || Width == ) return Op ; if ( Width >= ) { return { } ; } SDValue LS = DAG . getNode ( , dl , , Op0 , DAG . getConstant ( - Width , dl , ) ) ; SDValue SR = DAG . getNode ( , dl , , LS , DAG . getConstant ( - Width , dl , ) ) ;" LLVM,ARC,313,"Predict the next statement of this code snippet: assert ( Op . getValueType ( ) == && ) ; unsigned Width = cast < VTSDNode > ( Op . getOperand ( ) ) -> getVT ( ) . getSizeInBits ( ) ; if ( Width == || Width == ) return Op ; if ( Width >= ) { return { } ;" LLVM,ARC,314,"Predict the next statement of this code snippet: SDLoc dl ( Op ) ; EVT PtrVT = DAG . getTargetLoweringInfo ( ) . getPointerTy ( DAG . getDataLayout ( ) ) ; SDValue FR = DAG . getFrameIndex ( FuncInfo -> getVarArgsFrameIndex ( ) , PtrVT ) ;" LLVM,ARC,315,"Predict the next statement of this code snippet: bool TargetLowering :: mayBeEmittedAsTailCall ( const CallInst * CI ) const {" LLVM,ARC,316,"Predict the next statement of this code snippet: bool TargetLowering :: mayBeEmittedAsTailCall ( const CallInst * CI ) const { return false ;" LLVM,ARC,317,"Predict the next statement of this code snippet: SDValue TargetLowering :: PerformDAGCombine ( SDNode * N , DAGCombinerInfo & DCI ) const { return { } ;" LLVM,ARC,318,"Predict the next statement of this code snippet: SDValue TargetLowering :: PerformDAGCombine ( SDNode * N , DAGCombinerInfo & DCI ) const {" LLVM,ARC,319,"Predict the next statement of this code snippet: explicit FunctionInfo ( MachineFunction & MF ) : ReturnStackOffsetSet ( false ) , VarArgsFrameIndex ( ) , ReturnStackOffset ( - ) , MaxCallStackReq ( ) { MF . setAlignment ( ) ;" LLVM,ARC,320,"Predict the next statement of this code snippet: explicit FunctionInfo ( MachineFunction & MF ) : ReturnStackOffsetSet ( false ) , VarArgsFrameIndex ( ) , ReturnStackOffset ( - ) , MaxCallStackReq ( ) {" LLVM,ARC,321,"Predict the next statement of this code snippet: explicit FunctionInfo ( MachineFunction & MF ) : ReturnStackOffsetSet ( false ) , VarArgsFrameIndex ( ) , ReturnStackOffset ( - ) , MaxCallStackReq ( ) {" LLVM,ARC,322,"Predict the next statement of this code snippet: explicit FunctionInfo ( MachineFunction & MF ) : ReturnStackOffsetSet ( false ) , VarArgsFrameIndex ( ) , ReturnStackOffset ( - ) , MaxCallStackReq ( ) { MF . setAlignment ( Align ( ) ) ;" LLVM,ARC,323,"Predict the next statement of this code snippet: void FunctionInfo :: anchor ( ) {" LLVM,ARC,324,"Predict the next statement of this code snippet: void FunctionInfo :: anchor ( ) {" LLVM,ARC,325,"Predict the next statement of this code snippet: explicit FunctionInfo ( MachineFunction & MF ) : ReturnStackOffsetSet ( false ) , VarArgsFrameIndex ( ) , VarArgFrameBytes ( ) , ReturnStackOffset ( - ) , MaxCallStackReq ( ) {" LLVM,ARC,326,"Predict the next statement of this code snippet: int getVarArgsFrameIndex ( ) const { return VarArgsFrameIndex ;" LLVM,ARC,327,"Predict the next statement of this code snippet: void setReturnStackOffset ( unsigned value ) { assert ( ! ReturnStackOffsetSet && ) ; ReturnStackOffset = value ;" LLVM,ARC,328,"Predict the next statement of this code snippet: ReturnStackOffset = value ;" LLVM,ARC,329,"Predict the next statement of this code snippet: ~ FunctionInfo ( ) {" LLVM,ARC,330,"Predict the next statement of this code snippet: ~ FunctionInfo ( ) {" LLVM,ARC,331,"Predict the next statement of this code snippet: void MCAsmInfo :: anchor ( ) {" LLVM,ARC,332,"Predict the next statement of this code snippet: void MCAsmInfo :: anchor ( ) {" LLVM,ARC,333,"Predict the next statement of this code snippet: Data32bitsDirective = ; Data64bitsDirective = nullptr ; ZeroDirective = ; CommentString = ;" LLVM,ARC,334,"Predict the next statement of this code snippet: AllowAtInName = true ; HiddenVisibilityAttr = MCSA_Invalid ; HiddenDeclarationVisibilityAttr = MCSA_Invalid ; ProtectedVisibilityAttr = MCSA_Invalid ; ExceptionsType = ExceptionHandling :: DwarfCFI ;" LLVM,ARC,335,"Predict the next statement of this code snippet: for ( const MachineOperand & MO : MI -> operands ( ) ) { MCOperand MCOp = LowerOperand ( MO ) ; if ( MCOp . isValid ( ) ) OutMI . addOperand ( MCOp ) ; }" LLVM,ARC,336,"Predict the next statement of this code snippet: MCInstLower :: MCInstLower ( MCContext * C , AsmPrinter & AsmPrinter ) : Ctx ( C ) , Printer ( AsmPrinter ) {" LLVM,ARC,337,"Predict the next statement of this code snippet: MCInstLower :: MCInstLower ( MCContext * C , AsmPrinter & AsmPrinter ) : Ctx ( C ) , Printer ( AsmPrinter ) {" LLVM,ARC,338,"Predict the next statement of this code snippet: void MCInstLower :: Lower ( const MachineInstr * MI , MCInst & OutMI ) const {" LLVM,ARC,339,"Predict the next statement of this code snippet: OutMI . setOpcode ( MI -> getOpcode ( ) ) ;" LLVM,ARC,340,"Predict the next statement of this code snippet: if ( MO . isImplicit ( ) ) break ; return MCOperand :: createReg ( MO . getReg ( ) ) ; case MachineOperand :: MO_Immediate : return MCOperand :: createImm ( MO . getImm ( ) + Offset ) ; case MachineOperand :: MO_MachineBasicBlock : case MachineOperand :: MO_GlobalAddress : case MachineOperand :: MO_ExternalSymbol : case MachineOperand :: MO_JumpTableIndex : case MachineOperand :: MO_ConstantPoolIndex : case MachineOperand :: MO_BlockAddress : return LowerSymbolOperand ( MO , MOTy , Offset ) ; case MachineOperand :: MO_RegisterMask :" LLVM,ARC,341,"Predict the next statement of this code snippet: switch ( MOTy ) { default : llvm_unreachable ( ) ; case MachineOperand :: MO_Register : if ( MO . isImplicit ( ) ) break ; return MCOperand :: createReg ( MO . getReg ( ) ) ; case MachineOperand :: MO_Immediate : return MCOperand :: createImm ( MO . getImm ( ) + Offset ) ;" LLVM,ARC,342,"Predict the next statement of this code snippet: case MachineOperand :: MO_GlobalAddress : Symbol = Printer . getSymbol ( MO . getGlobal ( ) ) ; Offset += MO . getOffset ( ) ; break ; case MachineOperand :: MO_BlockAddress : Symbol = Printer . GetBlockAddressSymbol ( MO . getBlockAddress ( ) ) ; Offset += MO . getOffset ( ) ; break ; case MachineOperand :: MO_ExternalSymbol : Symbol = Printer . GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) ; Offset += MO . getOffset ( ) ; break ; case MachineOperand :: MO_JumpTableIndex : Symbol = Printer . GetJTISymbol ( MO . getIndex ( ) ) ; break ; case MachineOperand :: MO_ConstantPoolIndex : Symbol = Printer . GetCPISymbol ( MO . getIndex ( ) ) ; Offset += MO . getOffset ( ) ; break ; default : llvm_unreachable ( ) ; } assert ( Symbol && ) ;" LLVM,ARC,343,"Predict the next statement of this code snippet: MCCFIInstruction Inst = MCCFIInstruction :: cfiDefCfa ( nullptr , , ) ; MAI -> addInitialFrameState ( Inst ) ; return MAI ;" LLVM,ARC,344,"Predict the next statement of this code snippet: Target & TheTarget = getTheTarget ( ) ; RegisterMCAsmInfoFn X ( TheTarget , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( TheTarget , createMCSubtargetInfo ) ;" LLVM,ARC,345,"Predict the next statement of this code snippet: auto * X = new MCRegisterInfo ( ) ; InitMCRegisterInfo ( X , ) ; return X ;" LLVM,ARC,346,"Predict the next statement of this code snippet: MCAsmInfo * MAI = new MCAsmInfo ( TT ) ;" LLVM,ARC,347,"Predict the next statement of this code snippet: TargetStreamer :: TargetStreamer ( MCStreamer & S ) : MCTargetStreamer ( S ) {" LLVM,ARC,348,"Predict the next statement of this code snippet: TargetStreamer :: TargetStreamer ( MCStreamer & S ) : MCTargetStreamer ( S ) {" LLVM,ARC,349,"Predict the next statement of this code snippet: MCAsmInfo * MAI = new MCAsmInfo ( TT ) ; MCCFIInstruction Inst = MCCFIInstruction :: createDefCfa ( nullptr , , ) ; MAI -> addInitialFrameState ( Inst ) ; return MAI ;" LLVM,ARC,350,"Predict the next statement of this code snippet: MCAsmInfo * MAI = new MCAsmInfo ( TT ) ; MCCFIInstruction Inst = MCCFIInstruction :: createDefCfa ( nullptr , , ) ; MAI -> addInitialFrameState ( Inst ) ;" LLVM,ARC,351,"Predict the next statement of this code snippet: static MCInstPrinter * createMCInstPrinter ( const Triple & T , unsigned SyntaxVariant , const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) { return new InstPrinter ( MAI , MII , MRI ) ;" LLVM,ARC,352,"Predict the next statement of this code snippet: static MCInstPrinter * createMCInstPrinter ( const Triple & T , unsigned SyntaxVariant , const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) {" LLVM,ARC,353,"Predict the next statement of this code snippet: auto * X = new MCInstrInfo ( ) ;" LLVM,ARC,354,"Predict the next statement of this code snippet: auto * X = new MCRegisterInfo ( ) ;" LLVM,ARC,355,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( const Triple & TT , StringRef CPU , StringRef FS ) { return createMCSubtargetInfoImpl ( TT , CPU , FS ) ;" LLVM,ARC,356,"Predict the next statement of this code snippet: static MCTargetStreamer * createTargetAsmStreamer ( MCStreamer & S , formatted_raw_ostream & OS , MCInstPrinter * InstPrint , bool isVerboseAsm ) { return new TargetStreamer ( S ) ;" LLVM,ARC,357,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCRegInfo ( TheTarget , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( TheTarget , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCInstPrinter ( TheTarget , createMCInstPrinter ) ;" LLVM,ARC,358,"Predict the next statement of this code snippet: RegisterMCAsmInfoFn X ( TheTarget , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( TheTarget , createMCSubtargetInfo ) ;" LLVM,ARC,359,"Predict the next statement of this code snippet: if ( IsStore ) { Src = Ldst . getOperand ( BasePos - ) ; Ldst . RemoveOperand ( BasePos - ) ; } Ldst . setDesc ( AST -> getInstrInfo ( ) -> get ( NewOpcode ) ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( NewBase , true ) ) ; if ( IsStore ) Ldst . addOperand ( Src ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( BaseReg , false ) ) ;" LLVM,ARC,360,"Predict the next statement of this code snippet: Register BaseReg = Ldst . getOperand ( BasePos ) . getReg ( ) ; Ldst . RemoveOperand ( OffPos ) ; Ldst . RemoveOperand ( BasePos ) ; if ( IsStore ) { Src = Ldst . getOperand ( BasePos - ) ; Ldst . RemoveOperand ( BasePos - ) ; } Ldst . setDesc ( AST -> getInstrInfo ( ) -> get ( NewOpcode ) ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( NewBase , true ) ) ; if ( IsStore ) Ldst . addOperand ( Src ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( BaseReg , false ) ) ;" LLVM,ARC,361,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } if ( Offset . getImm ( ) != ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } for ( auto & Add : MRI -> use_nodbg_instructions ( B ) ) { int64_t Incr ; if ( ! isAddConstantOp ( Add , Incr ) ) continue ; if ( ! isValidLoadStoreOffset ( Incr ) ) continue ; SmallVector < MachineInstr * , > Uses ; MachineInstr * MoveTo = canJoinInstructions ( & Ldst , & Add , & Uses ) ; if ( ! MoveTo ) continue ; if ( ! canFixPastUses ( Uses , Add . getOperand ( ) , B ) ) continue ; LLVM_DEBUG ( MachineInstr * First = & Ldst ; MachineInstr * Last = & Add ; if ( MDT -> dominates ( Last , First ) ) std :: swap ( First , Last ) ; dbgs ( ) << << * First << << * Last << ; ) ; MachineInstr * Result = Ldst . getNextNode ( ) ; if ( MoveTo == & Add ) {" LLVM,ARC,362,"Predict the next statement of this code snippet: Register B = Base . getReg ( ) ; if ( Register :: isStackSlot ( B ) || ! Register :: isVirtualRegister ( B ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } if ( Offset . getImm ( ) != ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } for ( auto & Add : MRI -> use_nodbg_instructions ( B ) ) { int64_t Incr ; if ( ! isAddConstantOp ( Add , Incr ) ) continue ; if ( ! isValidLoadStoreOffset ( Incr ) ) continue ; SmallVector < MachineInstr * , > Uses ; MachineInstr * MoveTo = canJoinInstructions ( & Ldst , & Add , & Uses ) ; if ( ! MoveTo ) continue ; if ( ! canFixPastUses ( Uses , Add . getOperand ( ) , B ) ) continue ; LLVM_DEBUG ( MachineInstr * First = & Ldst ; MachineInstr * Last = & Add ; if ( MDT -> dominates ( Last , First ) ) std :: swap ( First , Last ) ;" LLVM,ARC,363,"Predict the next statement of this code snippet: return nullptr ; } } SmallVector < MachineInstr * , > UsesAfterLdst ; SmallVector < MachineInstr * , > UsesAfterAdd ; for ( MachineInstr & MI : MRI -> use_nodbg_instructions ( BaseReg ) ) { if ( & MI == Ldst || & MI == Add ) continue ; if ( & MI != Add && MDT -> dominates ( Ldst , & MI ) ) UsesAfterLdst . push_back ( & MI ) ; else if ( ! MDT -> dominates ( & MI , Ldst ) ) return nullptr ; if ( MDT -> dominates ( Add , & MI ) ) UsesAfterAdd . push_back ( & MI ) ; } MachineInstr * Result = nullptr ; if ( First == Add ) { if ( noUseOfAddBeforeLoadOrStore ( First , Last ) ) { Result = Last ; LLVM_DEBUG ( dbgs ( ) << ) ; } else if ( canHoistLoadStoreTo ( Ldst , Add ) ) { Result = First ; LLVM_DEBUG ( dbgs ( ) << ) ; } } else {" LLVM,ARC,364,"Predict the next statement of this code snippet: MachineInstr * First = Add ; MachineInstr * Last = Ldst ; if ( MDT -> dominates ( Ldst , Add ) ) std :: swap ( First , Last ) ; else if ( ! MDT -> dominates ( Add , Ldst ) ) return nullptr ; LLVM_DEBUG ( dbgs ( ) << << * First << * Last ) ; unsigned BasePos , OffPos ; if ( ! AII -> getBaseAndOffsetPosition ( * Ldst , BasePos , OffPos ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } Register BaseReg = Ldst -> getOperand ( BasePos ) . getReg ( ) ; if ( Ldst -> mayStore ( ) && Ldst -> getOperand ( ) . isReg ( ) ) { Register StReg = Ldst -> getOperand ( ) . getReg ( ) ; if ( Add -> getOperand ( ) . getReg ( ) == StReg || BaseReg == StReg ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } } SmallVector < MachineInstr * , > UsesAfterLdst ; SmallVector < MachineInstr * , > UsesAfterAdd ; for ( MachineInstr & MI : MRI -> use_nodbg_instructions ( BaseReg ) ) { if ( & MI == Ldst || & MI == Add ) continue ; if ( & MI != Add && MDT -> dominates ( Ldst , & MI ) ) UsesAfterLdst . push_back ( & MI ) ; else if ( ! MDT -> dominates ( & MI , Ldst ) ) return nullptr ; if ( MDT -> dominates ( Add , & MI ) ) UsesAfterAdd . push_back ( & MI ) ; } MachineInstr * Result = nullptr ; if ( First == Add ) {" LLVM,ARC,365,"Predict the next statement of this code snippet: Ldst . setDesc ( AST -> getInstrInfo ( ) -> get ( NewOpcode ) ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( NewBase , true ) ) ; if ( IsStore ) Ldst . addOperand ( Src ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( BaseReg , false ) ) ; Ldst . addOperand ( NewOffset ) ; LLVM_DEBUG ( dbgs ( ) << << Ldst ) ;" LLVM,ARC,366,"Predict the next statement of this code snippet: MachineBasicBlock * MBB = User -> getOperand ( BBOperandIdx ) . getMBB ( ) ; if ( MBB -> empty ( ) ) { const MachineBasicBlock * InstBB = MI -> getParent ( ) ; assert ( InstBB != MBB && ) ; if ( ! MDT -> dominates ( InstBB , MBB ) ) return false ; continue ; }" LLVM,ARC,367,"Predict the next statement of this code snippet: bool OptAddrMode :: noUseOfAddBeforeLoadOrStore ( const MachineInstr * Add , const MachineInstr * Ldst ) { Register R = Add -> getOperand ( ) . getReg ( ) ; return dominatesAllUsesOf ( Ldst , R , MDT , MRI ) ;" LLVM,ARC,368,"Predict the next statement of this code snippet: AII = AST -> getInstrInfo ( ) ; MRI = & MF . getRegInfo ( ) ; MDT = & getAnalysis < MachineDominatorTree > ( ) ; bool Changed = false ; for ( auto & MBB : MF ) Changed |= processBasicBlock ( MBB ) ; if ( DUMP_AFTER ( ) ) MF . dump ( ) ; if ( VIEW_AFTER ( ) ) MF . viewCFG ( ) ;" LLVM,ARC,369,"Predict the next statement of this code snippet: for ( auto & MBB : MF ) Changed |= processBasicBlock ( MBB ) ; if ( DUMP_AFTER ( ) ) MF . dump ( ) ; if ( VIEW_AFTER ( ) ) MF . viewCFG ( ) ;" LLVM,ARC,370,"Predict the next statement of this code snippet: } MachineOperand & Base = Ldst . getOperand ( BasePos ) ; MachineOperand & Offset = Ldst . getOperand ( OffsetPos ) ; assert ( Base . isReg ( ) && ) ; if ( ! Offset . isImm ( ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } Register B = Base . getReg ( ) ; if ( Register :: isStackSlot ( B ) || ! Register :: isVirtualRegister ( B ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } if ( Offset . getImm ( ) != ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } for ( auto & Add : MRI -> use_nodbg_instructions ( B ) ) { int64_t Incr ; if ( ! isAddConstantOp ( Add , Incr ) ) continue ; if ( ! isValidLoadStoreOffset ( Incr ) ) continue ; SmallVector < MachineInstr * , > Uses ; MachineInstr * MoveTo = canJoinInstructions ( & Ldst , & Add , & Uses ) ; if ( ! MoveTo ) continue ; if ( ! canFixPastUses ( Uses , Add . getOperand ( ) , B ) ) continue ; LLVM_DEBUG ( MachineInstr * First = & Ldst ; MachineInstr * Last = & Add ; if ( MDT -> dominates ( Last , First ) ) std :: swap ( First , Last ) ; dbgs ( ) << << * First << << * Last << ;" LLVM,ARC,371,"Predict the next statement of this code snippet: assert ( Base . isReg ( ) && ) ; if ( ! Offset . isImm ( ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } Register B = Base . getReg ( ) ; if ( Register :: isStackSlot ( B ) || ! Register :: isVirtualRegister ( B ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } if ( Offset . getImm ( ) != ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } for ( auto & Add : MRI -> use_nodbg_instructions ( B ) ) { int64_t Incr ; if ( ! isAddConstantOp ( Add , Incr ) ) continue ; if ( ! isValidLoadStoreOffset ( Incr ) ) continue ; SmallVector < MachineInstr * , > Uses ; MachineInstr * MoveTo = canJoinInstructions ( & Ldst , & Add , & Uses ) ; if ( ! MoveTo ) continue ; if ( ! canFixPastUses ( Uses , Add . getOperand ( ) , B ) ) continue ; LLVM_DEBUG ( MachineInstr * First = & Ldst ; MachineInstr * Last = & Add ; if ( MDT -> dominates ( Last , First ) ) std :: swap ( First , Last ) ; dbgs ( ) << << * First << << * Last << ; ) ; MachineInstr * Result = Ldst . getNextNode ( ) ; if ( MoveTo == & Add ) { Ldst . removeFromParent ( ) ; Add . getParent ( ) -> insertAfter ( Add . getIterator ( ) , & Ldst ) ; } if ( Result == & Add ) Result = Result -> getNextNode ( ) ; fixPastUses ( Uses , B , Incr ) ;" LLVM,ARC,372,"Predict the next statement of this code snippet: unsigned ValReg = IsLoad ? Ldst -> getOperand ( ) . getReg ( ) : ; for ( ; MI != ME && MI != End ; ++ MI ) { if ( MI -> isDebugValue ( ) ) continue ; if ( MI -> mayStore ( ) || MI -> isCall ( ) || MI -> isInlineAsm ( ) || MI -> hasUnmodeledSideEffects ( ) ) return false ; if ( IsStore && MI -> mayLoad ( ) ) return false ; if ( ValReg && MI -> readsVirtualRegister ( ValReg ) ) return false ; }" LLVM,ARC,373,"Predict the next statement of this code snippet: Sign = - ; case : assert ( MI . getOperand ( ) . isImm ( ) && ) ; Amount = Sign * MI . getOperand ( ) . getImm ( ) ; return true ;" LLVM,ARC,374,"Predict the next statement of this code snippet: OptAddrMode ( ) : MachineFunctionPass ( ID ) {" LLVM,ARC,375,"Predict the next statement of this code snippet: OptAddrMode ( ) : MachineFunctionPass ( ID ) {" LLVM,ARC,376,"Predict the next statement of this code snippet: int64_t Dummy ; if ( isAddConstantOp ( * MI , Dummy ) ) { if ( isValidIncrementOffset ( Dummy + NewOffset ) ) continue ; return false ; } if ( isLoadStoreThatCanHandleDisplacement ( AII , * MI , - NewOffset ) ) continue ; LLVM_DEBUG ( dbgs ( ) << << - NewOffset << << * MI ) ; return false ;" LLVM,ARC,377,"Predict the next statement of this code snippet: MachineBasicBlock :: const_iterator MI ( To ) , ME ( Ldst ) , End ( Ldst -> getParent ( ) -> end ( ) ) ; bool IsStore = Ldst -> mayStore ( ) ; for ( ; MI != ME && MI != End ; ++ MI ) { if ( MI -> isDebugValue ( ) ) continue ; if ( MI -> mayStore ( ) || MI -> isCall ( ) || MI -> isInlineAsm ( ) || MI -> hasUnmodeledSideEffects ( ) ) return false ; if ( IsStore && MI -> mayLoad ( ) ) return false ; } for ( auto & O : Ldst -> explicit_operands ( ) ) { if ( ! O . isReg ( ) || ! O . isUse ( ) ) continue ; MachineInstr * OpDef = MRI -> getVRegDef ( O . getReg ( ) ) ; if ( ! OpDef || ! MDT -> dominates ( OpDef , To ) ) return false ; }" LLVM,ARC,378,"Predict the next statement of this code snippet: if ( & MI != Add && MDT -> dominates ( Ldst , & MI ) ) UsesAfterLdst . push_back ( & MI ) ; else if ( ! MDT -> dominates ( & MI , Ldst ) ) return nullptr ; if ( MDT -> dominates ( Add , & MI ) ) UsesAfterAdd . push_back ( & MI ) ; } MachineInstr * Result = nullptr ; if ( First == Add ) { if ( noUseOfAddBeforeLoadOrStore ( First , Last ) ) { Result = Last ; LLVM_DEBUG ( dbgs ( ) << ) ; } else if ( canHoistLoadStoreTo ( Ldst , Add ) ) { Result = First ; LLVM_DEBUG ( dbgs ( ) << ) ; } } else { Result = First ; LLVM_DEBUG ( dbgs ( ) << ) ;" LLVM,ARC,379,"Predict the next statement of this code snippet: unsigned BasePos , OffPos ; if ( ! AII -> getBaseAndOffsetPosition ( * Ldst , BasePos , OffPos ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } unsigned BaseReg = Ldst -> getOperand ( BasePos ) . getReg ( ) ; if ( Ldst -> mayStore ( ) && Ldst -> getOperand ( ) . isReg ( ) ) { unsigned StReg = Ldst -> getOperand ( ) . getReg ( ) ; if ( Add -> getOperand ( ) . getReg ( ) == StReg || BaseReg == StReg ) { LLVM_DEBUG ( dbgs ( ) << ) ; return nullptr ; } } SmallVector < MachineInstr * , > UsesAfterLdst ; SmallVector < MachineInstr * , > UsesAfterAdd ; for ( MachineInstr & MI : MRI -> use_nodbg_instructions ( BaseReg ) ) { if ( & MI == Ldst || & MI == Add ) continue ; if ( & MI != Add && MDT -> dominates ( Ldst , & MI ) ) UsesAfterLdst . push_back ( & MI ) ; else if ( ! MDT -> dominates ( & MI , Ldst ) ) return nullptr ;" LLVM,ARC,380,"Predict the next statement of this code snippet: MachineBasicBlock :: const_iterator MI ( Ldst ) , ME ( To ) , End ( Ldst -> getParent ( ) -> end ( ) ) ; bool IsStore = Ldst -> mayStore ( ) ; bool IsLoad = Ldst -> mayLoad ( ) ; Register ValReg = IsLoad ? Ldst -> getOperand ( ) . getReg ( ) : Register ( ) ; for ( ; MI != ME && MI != End ; ++ MI ) { if ( MI -> isDebugValue ( ) ) continue ; if ( MI -> mayStore ( ) || MI -> isCall ( ) || MI -> isInlineAsm ( ) || MI -> hasUnmodeledSideEffects ( ) ) return false ;" LLVM,ARC,381,"Predict the next statement of this code snippet: void OptAddrMode :: changeToAddrMode ( MachineInstr & Ldst , unsigned NewOpcode , unsigned NewBase , MachineOperand & NewOffset ) { bool IsStore = Ldst . mayStore ( ) ; unsigned BasePos , OffPos ; MachineOperand Src = MachineOperand :: CreateImm ( ) ; AII -> getBaseAndOffsetPosition ( Ldst , BasePos , OffPos ) ; unsigned BaseReg = Ldst . getOperand ( BasePos ) . getReg ( ) ; Ldst . RemoveOperand ( OffPos ) ; Ldst . RemoveOperand ( BasePos ) ; if ( IsStore ) { Src = Ldst . getOperand ( BasePos - ) ; Ldst . RemoveOperand ( BasePos - ) ; } Ldst . setDesc ( AST -> getInstrInfo ( ) -> get ( NewOpcode ) ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( NewBase , true ) ) ; if ( IsStore ) Ldst . addOperand ( Src ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( BaseReg , false ) ) ; Ldst . addOperand ( NewOffset ) ; LLVM_DEBUG ( dbgs ( ) << << Ldst ) ;" LLVM,ARC,382,"Predict the next statement of this code snippet: Ldst . RemoveOperand ( OffPos ) ; Ldst . RemoveOperand ( BasePos ) ; if ( IsStore ) { Src = Ldst . getOperand ( BasePos - ) ; Ldst . RemoveOperand ( BasePos - ) ; } Ldst . setDesc ( AST -> getInstrInfo ( ) -> get ( NewOpcode ) ) ; Ldst . addOperand ( MachineOperand :: CreateReg ( NewBase , true ) ) ; if ( IsStore ) Ldst . addOperand ( Src ) ;" LLVM,ARC,383,"Predict the next statement of this code snippet: FunctionPass * llvm :: createOptAddrMode ( ) { return new OptAddrMode ( ) ;" LLVM,ARC,384,"Predict the next statement of this code snippet: const MachineBasicBlock * InstBB = MI -> getParent ( ) ; assert ( InstBB != MBB && ) ; if ( ! MDT -> dominates ( InstBB , MBB ) ) return false ; continue ; } User = & * MBB -> rbegin ( ) ; } if ( ! MDT -> dominates ( MI , User ) ) return false ;" LLVM,ARC,385,"Predict the next statement of this code snippet: OffPos = ; } else if ( AII -> getBaseAndOffsetPosition ( * MI , BasePos , OffPos ) ) { MachineOperand & MO = MI -> getOperand ( OffPos ) ; assert ( MO . isImm ( ) && ) ; NewOffset += MO . getImm ( ) ; assert ( isValidLoadStoreOffset ( NewOffset ) && ) ;" LLVM,ARC,386,"Predict the next statement of this code snippet: assert ( isValidIncrementOffset ( NewOffset ) && ) ; BasePos = ; OffPos = ; } else if ( AII -> getBaseAndOffsetPosition ( * MI , BasePos , OffPos ) ) { MachineOperand & MO = MI -> getOperand ( OffPos ) ;" LLVM,ARC,387,"Predict the next statement of this code snippet: AU . setPreservesCFG ( ) ; MachineFunctionPass :: getAnalysisUsage ( AU ) ;" LLVM,ARC,388,"Predict the next statement of this code snippet: AU . setPreservesCFG ( ) ; MachineFunctionPass :: getAnalysisUsage ( AU ) ;" LLVM,ARC,389,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return OPTADDRMODE_DESC ;" LLVM,ARC,390,"Predict the next statement of this code snippet: switch ( MI . getOpcode ( ) ) { case : Sign = - ; LLVM_FALLTHROUGH ; case : assert ( MI . getOperand ( ) . isImm ( ) && ) ;" LLVM,ARC,391,"Predict the next statement of this code snippet: if ( ! MO . isImm ( ) ) return false ; int64_t Offset = MO . getImm ( ) + Disp ;" LLVM,ARC,392,"Predict the next statement of this code snippet: return isUInt < > ( Off ) ;" LLVM,ARC,393,"Predict the next statement of this code snippet: return isUInt < > ( Off ) ;" LLVM,ARC,394,"Predict the next statement of this code snippet: static bool isValidLoadStoreOffset ( int64_t Off ) { return isInt < > ( Off ) ;" LLVM,ARC,395,"Predict the next statement of this code snippet: bool OptAddrMode :: noUseOfAddBeforeLoadOrStore ( const MachineInstr * Add , const MachineInstr * Ldst ) {" LLVM,ARC,396,"Predict the next statement of this code snippet: bool OptAddrMode :: noUseOfAddBeforeLoadOrStore ( const MachineInstr * Add , const MachineInstr * Ldst ) { unsigned R = Add -> getOperand ( ) . getReg ( ) ; return dominatesAllUsesOf ( Ldst , R , MDT , MRI ) ;" LLVM,ARC,397,"Predict the next statement of this code snippet: bool OptAddrMode :: processBasicBlock ( MachineBasicBlock & MBB ) { bool Changed = false ; for ( auto MI = MBB . begin ( ) , ME = MBB . end ( ) ; MI != ME ; ++ MI ) { if ( MI -> isDebugValue ( ) ) continue ; if ( ! MI -> mayLoad ( ) && ! MI -> mayStore ( ) ) continue ; if ( ( MI -> getOpcode ( ) ) < ) continue ; MachineInstr * Res = tryToCombine ( * MI ) ; if ( Res ) { Changed = true ; MI = std :: prev ( Res -> getIterator ( ) ) ; } }" LLVM,ARC,398,"Predict the next statement of this code snippet: if ( ! MI -> mayLoad ( ) && ! MI -> mayStore ( ) ) continue ; if ( ( MI -> getOpcode ( ) ) < ) continue ; MachineInstr * Res = tryToCombine ( * MI ) ; if ( Res ) { Changed = true ; MI = std :: prev ( Res -> getIterator ( ) ) ; }" LLVM,ARC,399,"Predict the next statement of this code snippet: bool OptAddrMode :: runOnMachineFunction ( MachineFunction & MF ) { if ( skipFunction ( MF . getFunction ( ) ) ) return false ; AST = & MF . getSubtarget < Subtarget > ( ) ; AII = AST -> getInstrInfo ( ) ; MRI = & MF . getRegInfo ( ) ;" LLVM,ARC,400,"Predict the next statement of this code snippet: MDT = & getAnalysis < MachineDominatorTree > ( ) ; bool Changed = false ; for ( auto & MBB : MF ) Changed |= processBasicBlock ( MBB ) ; return Changed ;" LLVM,ARC,401,"Predict the next statement of this code snippet: return MF . needsFrameMoves ( ) ;" LLVM,ARC,402,"Predict the next statement of this code snippet: MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const InstrInfo & TII = * MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; const FrameLowering * TFI = getFrameLowering ( MF ) ; int Offset = MF . getFrameInfo ( ) . getObjectOffset ( FrameIndex ) ; int ObjSize = MF . getFrameInfo ( ) . getObjectSize ( FrameIndex ) ; int StackSize = MF . getFrameInfo ( ) . getStackSize ( ) ; int LocalFrameSize = MF . getFrameInfo ( ) . getLocalFrameSize ( ) ; LLVM_DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ; LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( dbgs ( ) << MI << ) ; LLVM_DEBUG ( dbgs ( ) << << FrameIndex << ) ; LLVM_DEBUG ( dbgs ( ) << << ObjSize << ) ; LLVM_DEBUG ( dbgs ( ) << << Offset << ) ; LLVM_DEBUG ( dbgs ( ) << << StackSize << ) ; LLVM_DEBUG ( dbgs ( ) << << LocalFrameSize << ) ; ( void ) LocalFrameSize ; if ( MI . isDebugValue ( ) ) { unsigned FrameReg = getFrameRegister ( MF ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( FrameReg , false ) ; MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset ) ; return ; } Offset += MI . getOperand ( FIOperandNum + ) . getImm ( ) ; LLVM_DEBUG ( dbgs ( ) << << Offset << << ) ; unsigned Reg = MI . getOperand ( ) . getReg ( ) ; assert ( . contains ( Reg ) && ) ; if ( ! TFI -> hasFP ( MF ) ) { Offset = StackSize + Offset ; if ( FrameIndex >= ) assert ( ( Offset >= && Offset < StackSize ) && ) ; } else { if ( FrameIndex >= ) {" LLVM,ARC,403,"Predict the next statement of this code snippet: BuildMI ( MBB , II , dl , TII . get ( MI . getOpcode ( ) ) , Reg ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : assert ( ( Offset % == ) && ) ; case : assert ( ( Offset % == ) && ) ; case : LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , dl , TII . get ( MI . getOpcode ( ) ) ) . addReg ( Reg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , dl , TII . get ( isUInt < > ( Offset ) ? : ) ) . addReg ( Reg , RegState :: Define ) . addReg ( FrameReg ) . addImm ( Offset ) ; break ; default : llvm_unreachable ( ) ;" LLVM,ARC,404,"Predict the next statement of this code snippet: MachineOperand & FrameOp = MI . getOperand ( FIOperandNum ) ; int FrameIndex = FrameOp . getIndex ( ) ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const InstrInfo & TII = * MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; const FrameLowering * TFI = getFrameLowering ( MF ) ; int Offset = MF . getFrameInfo ( ) . getObjectOffset ( FrameIndex ) ; int ObjSize = MF . getFrameInfo ( ) . getObjectSize ( FrameIndex ) ; int StackSize = MF . getFrameInfo ( ) . getStackSize ( ) ; int LocalFrameSize = MF . getFrameInfo ( ) . getLocalFrameSize ( ) ; DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ; DEBUG ( dbgs ( ) << ) ; DEBUG ( dbgs ( ) << MI << ) ; DEBUG ( dbgs ( ) << << FrameIndex << ) ; DEBUG ( dbgs ( ) << << ObjSize << ) ; DEBUG ( dbgs ( ) << << Offset << ) ; DEBUG ( dbgs ( ) << << StackSize << ) ; DEBUG ( dbgs ( ) << << LocalFrameSize << ) ; ( void ) LocalFrameSize ; if ( MI . isDebugValue ( ) ) { unsigned FrameReg = getFrameRegister ( MF ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( FrameReg , false ) ; MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset ) ; return ; } Offset += MI . getOperand ( FIOperandNum + ) . getImm ( ) ; DEBUG ( dbgs ( ) << << Offset << << ) ; unsigned Reg = MI . getOperand ( ) . getReg ( ) ; assert ( . contains ( Reg ) && ) ; if ( ! TFI -> hasFP ( MF ) ) { Offset = StackSize + Offset ; if ( FrameIndex >= ) assert ( ( Offset >= && Offset < StackSize ) && ) ; } else { if ( FrameIndex >= ) { assert ( ( Offset < && - Offset <= StackSize ) && ) ; } }" LLVM,ARC,405,"Predict the next statement of this code snippet: unsigned RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const {" LLVM,ARC,406,"Predict the next statement of this code snippet: const FrameLowering * TFI = getFrameLowering ( MF ) ;" LLVM,ARC,407,"Predict the next statement of this code snippet: } if ( MI . getOpcode ( ) != && ( Offset >= || Offset < - ) ) { BaseReg = RS -> FindUnusedReg ( & ) ; if ( ! BaseReg ) { const TargetRegisterInfo * TRI = MBB . getParent ( ) -> getSubtarget ( ) . getRegisterInfo ( ) ; BaseReg = RS -> scavengeRegister ( & , II , SPAdj ) ; assert ( BaseReg && ) ; DEBUG ( dbgs ( ) << << printReg ( BaseReg , TRI ) << << printReg ( FrameReg , TRI ) << << Offset << ) ; ( void ) TRI ; RS -> setRegUsed ( BaseReg ) ; } unsigned AddOpc = isUInt < > ( Offset ) ? : ; BuildMI ( MBB , II , dl , TII . get ( AddOpc ) ) . addReg ( BaseReg , RegState :: Define ) . addReg ( FrameReg ) . addImm ( Offset ) ; Offset = ; KillState = RegState :: Kill ; } switch ( MI . getOpcode ( ) ) { case : assert ( ( Offset % == ) && ) ; case : case : assert ( ( Offset % == ) && ) ; case : case : DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , dl , TII . get ( MI . getOpcode ( ) ) , Reg ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : assert ( ( Offset % == ) && ) ; case : assert ( ( Offset % == ) && ) ; case :" LLVM,ARC,408,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & ST ) : GenRegisterInfo ( ) , ST ( ST ) {" LLVM,ARC,409,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & ST ) : GenRegisterInfo ( ) , ST ( ST ) {" LLVM,ARC,410,"Predict the next statement of this code snippet: void RegisterInfo :: eliminateFrameIndex ( MachineBasicBlock :: iterator II , int SPAdj , unsigned FIOperandNum , RegScavenger * RS ) const { assert ( SPAdj == && ) ; MachineInstr & MI = * II ; MachineOperand & FrameOp = MI . getOperand ( FIOperandNum ) ; int FrameIndex = FrameOp . getIndex ( ) ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const InstrInfo & TII = * MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; const FrameLowering * TFI = getFrameLowering ( MF ) ; int Offset = MF . getFrameInfo ( ) . getObjectOffset ( FrameIndex ) ; int ObjSize = MF . getFrameInfo ( ) . getObjectSize ( FrameIndex ) ; int StackSize = MF . getFrameInfo ( ) . getStackSize ( ) ; int LocalFrameSize = MF . getFrameInfo ( ) . getLocalFrameSize ( ) ; LLVM_DEBUG ( dbgs ( ) << << MF . getName ( ) << ) ; LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( dbgs ( ) << MI << ) ; LLVM_DEBUG ( dbgs ( ) << << FrameIndex << ) ; LLVM_DEBUG ( dbgs ( ) << << ObjSize << ) ; LLVM_DEBUG ( dbgs ( ) << << Offset << ) ; LLVM_DEBUG ( dbgs ( ) << << StackSize << ) ; LLVM_DEBUG ( dbgs ( ) << << LocalFrameSize << ) ; ( void ) LocalFrameSize ; if ( MI . isDebugValue ( ) ) { Register FrameReg = getFrameRegister ( MF ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( FrameReg , false ) ; MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset ) ; return ; } Offset += MI . getOperand ( FIOperandNum + ) . getImm ( ) ; LLVM_DEBUG ( dbgs ( ) << << Offset << << ) ; Register Reg = MI . getOperand ( ) . getReg ( ) ; assert ( . contains ( Reg ) && ) ; if ( ! TFI -> hasFP ( MF ) ) { Offset = StackSize + Offset ; if ( FrameIndex >= ) assert ( ( Offset >= && Offset < StackSize ) && ) ; } else { if ( FrameIndex >= ) { assert ( ( Offset < && - Offset <= StackSize ) && ) ; } } replaceFrameIndex ( II , TII , Reg , getFrameRegister ( MF ) , Offset , StackSize , ObjSize , RS , SPAdj ) ;" LLVM,ARC,411,"Predict the next statement of this code snippet: BaseReg = RS -> FindUnusedReg ( & ) ; if ( ! BaseReg ) { const TargetRegisterInfo * TRI = MBB . getParent ( ) -> getSubtarget ( ) . getRegisterInfo ( ) ; BaseReg = RS -> scavengeRegister ( & , II , SPAdj ) ; assert ( BaseReg && ) ; LLVM_DEBUG ( dbgs ( ) << << printReg ( BaseReg , TRI ) << << printReg ( FrameReg , TRI ) << << Offset << ) ; ( void ) TRI ; RS -> setRegUsed ( BaseReg ) ; } unsigned AddOpc = isUInt < > ( Offset ) ? : ; BuildMI ( MBB , II , DL , TII . get ( AddOpc ) ) . addReg ( BaseReg , RegState :: Define ) . addReg ( FrameReg ) . addImm ( Offset ) ; Offset = ; KillState = RegState :: Kill ; } switch ( MI . getOpcode ( ) ) { case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : case : LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , DL , TII . get ( MI . getOpcode ( ) ) , Reg ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , DL , TII . get ( MI . getOpcode ( ) ) ) . addReg ( Reg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , DL , TII . get ( isUInt < > ( Offset ) ? : ) ) . addReg ( Reg , RegState :: Define ) . addReg ( FrameReg ) . addImm ( Offset ) ; break ; default :" LLVM,ARC,412,"Predict the next statement of this code snippet: if ( MI . getOpcode ( ) != && ( Offset >= || Offset < - ) ) { BaseReg = RS -> FindUnusedReg ( & ) ; if ( ! BaseReg ) { const TargetRegisterInfo * TRI = MBB . getParent ( ) -> getSubtarget ( ) . getRegisterInfo ( ) ; BaseReg = RS -> scavengeRegister ( & , II , SPAdj ) ; assert ( BaseReg && ) ; DEBUG ( dbgs ( ) << << PrintReg ( BaseReg , TRI ) << << PrintReg ( FrameReg , TRI ) << << Offset << ) ; ( void ) TRI ; RS -> setRegUsed ( BaseReg ) ; } unsigned AddOpc = isUInt < > ( Offset ) ? : ; BuildMI ( MBB , II , dl , TII . get ( AddOpc ) ) . addReg ( BaseReg , RegState :: Define ) . addReg ( FrameReg ) . addImm ( Offset ) ; Offset = ; KillState = RegState :: Kill ; } switch ( MI . getOpcode ( ) ) { case : assert ( ( Offset % == ) && ) ; case : case : assert ( ( Offset % == ) && ) ; case : case : DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , dl , TII . get ( MI . getOpcode ( ) ) , Reg ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : assert ( ( Offset % == ) && ) ; case : assert ( ( Offset % == ) && ) ; case : DEBUG ( dbgs ( ) << ) ;" LLVM,ARC,413,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( ) : GenRegisterInfo ( ) {" LLVM,ARC,414,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( ) : GenRegisterInfo ( ) {" LLVM,ARC,415,"Predict the next statement of this code snippet: MI . getOperand ( FIOperandNum ) . ChangeToRegister ( FrameReg , false ) ; MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset ) ; return ; } Offset += MI . getOperand ( FIOperandNum + ) . getImm ( ) ; LLVM_DEBUG ( dbgs ( ) << << Offset << << ) ; unsigned Reg = MI . getOperand ( ) . getReg ( ) ; assert ( . contains ( Reg ) && ) ; if ( ! TFI -> hasFP ( MF ) ) { Offset = StackSize + Offset ; if ( FrameIndex >= ) assert ( ( Offset >= && Offset < StackSize ) && ) ; } else { if ( FrameIndex >= ) { assert ( ( Offset < && - Offset <= StackSize ) && ) ; }" LLVM,ARC,416,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const {" LLVM,ARC,417,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const {" LLVM,ARC,418,"Predict the next statement of this code snippet: const uint32_t * RegisterInfo :: getCallPreservedMask ( const MachineFunction & MF , CallingConv :: ID CC ) const { return CSR__RegMask ;" LLVM,ARC,419,"Predict the next statement of this code snippet: const uint32_t * RegisterInfo :: getCallPreservedMask ( const MachineFunction & MF , CallingConv :: ID CC ) const { return CSR__RegMask ;" LLVM,ARC,420,"Predict the next statement of this code snippet: Register RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const { const FrameLowering * TFI = getFrameLowering ( MF ) ;" LLVM,ARC,421,"Predict the next statement of this code snippet: Reserved . set ( ) ; Reserved . set ( ) ; Reserved . set ( ) ; Reserved . set ( ) ;" LLVM,ARC,422,"Predict the next statement of this code snippet: return MF . getMMI ( ) . hasDebugInfo ( ) || MF . getFunction ( ) . needsUnwindTableEntry ( ) ;" LLVM,ARC,423,"Predict the next statement of this code snippet: ( void ) TRI ; RS -> setRegUsed ( BaseReg ) ; } unsigned AddOpc = isUInt < > ( Offset ) ? : ; BuildMI ( MBB , II , dl , TII . get ( AddOpc ) ) . addReg ( BaseReg , RegState :: Define ) . addReg ( FrameReg ) . addImm ( Offset ) ; Offset = ; KillState = RegState :: Kill ; } switch ( MI . getOpcode ( ) ) { case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : case : LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , dl , TII . get ( MI . getOpcode ( ) ) , Reg ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : assert ( ( Offset % == ) && ) ; LLVM_FALLTHROUGH ; case : LLVM_DEBUG ( dbgs ( ) << ) ; BuildMI ( MBB , II , dl , TII . get ( MI . getOpcode ( ) ) ) . addReg ( Reg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addReg ( BaseReg , KillState ) . addImm ( Offset ) . addMemOperand ( * MI . memoperands_begin ( ) ) ; break ; case : LLVM_DEBUG ( dbgs ( ) << ) ;" LLVM,ARC,424,"Predict the next statement of this code snippet: bool RegisterInfo :: requiresRegisterScavenging ( const MachineFunction & MF ) const { return true ;" LLVM,ARC,425,"Predict the next statement of this code snippet: bool RegisterInfo :: trackLivenessAfterRegAlloc ( const MachineFunction & MF ) const { return true ;" LLVM,ARC,426,"Predict the next statement of this code snippet: bool RegisterInfo :: trackLivenessAfterRegAlloc ( const MachineFunction & MF ) const {" LLVM,ARC,427,"Predict the next statement of this code snippet: bool RegisterInfo :: useFPForScavengingIndex ( const MachineFunction & MF ) const { return true ;" LLVM,ARC,428,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , InstrInfo ( * this ) , FrameLowering ( * this ) , TLInfo ( TM , * this ) {" LLVM,ARC,429,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , InstrInfo ( * this ) , FrameLowering ( * this ) , TLInfo ( TM , * this ) {" LLVM,ARC,430,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , FrameLowering ( * this ) , TLInfo ( TM , * this ) {" LLVM,ARC,431,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , FrameLowering ( * this ) , TLInfo ( TM , * this ) {" LLVM,ARC,432,"Predict the next statement of this code snippet: void Subtarget :: anchor ( ) {" LLVM,ARC,433,"Predict the next statement of this code snippet: void Subtarget :: anchor ( ) {" LLVM,ARC,434,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( * this ) , TLInfo ( TM , * this ) {" LLVM,ARC,435,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( * this ) , TLInfo ( TM , * this ) {" LLVM,ARC,436,"Predict the next statement of this code snippet: const FrameLowering * getFrameLowering ( ) const override {" LLVM,ARC,437,"Predict the next statement of this code snippet: const InstrInfo * getInstrInfo ( ) const override {" LLVM,ARC,438,"Predict the next statement of this code snippet: const RegisterInfo * getRegisterInfo ( ) const override { return & InstrInfo . getRegisterInfo ( ) ;" LLVM,ARC,439,"Predict the next statement of this code snippet: const SelectionDAGTargetInfo * getSelectionDAGInfo ( ) const override { return & TSInfo ;" LLVM,ARC,440,"Predict the next statement of this code snippet: const TargetLowering * getTargetLowering ( ) const override {" LLVM,ARC,441,"Predict the next statement of this code snippet: return & TLInfo ;" LLVM,ARC,442,"Predict the next statement of this code snippet: bool hasNorm ( ) const { return Xnorm ;" LLVM,ARC,443,"Predict the next statement of this code snippet: RegisterTarget < Triple :: arc > X ( getTheTarget ( ) , , ) ;" LLVM,ARC,444,"Predict the next statement of this code snippet: Target & llvm :: getTheTarget ( ) { static Target TheTarget ; return TheTarget ;" LLVM,ARC,445,"Predict the next statement of this code snippet: return RM . getValueOr ( Reloc :: Static ) ;" LLVM,ARC,446,"Predict the next statement of this code snippet: void PassConfig :: addPreRegAlloc ( ) {" LLVM,ARC,447,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , , TT , CPU , FS , Options , getRelocModel ( RM ) , getEffectiveCodeModel ( CM ) , OL ) , TLOF ( make_unique < TargetLoweringObjectFileELF > ( ) ) , Subtarget ( TT , CPU , FS , * this ) {" LLVM,ARC,448,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , , TT , CPU , FS , Options , getRelocModel ( RM ) , getEffectiveCodeModel ( CM ) , OL ) , TLOF ( make_unique < TargetLoweringObjectFileELF > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { initAsmInfo ( ) ;" LLVM,ARC,449,"Predict the next statement of this code snippet: static CodeModel :: Model getEffectiveCodeModel ( Optional < CodeModel :: Model > CM ) {" LLVM,ARC,450,"Predict the next statement of this code snippet: if ( CM ) return * CM ;" LLVM,ARC,451,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) {" LLVM,ARC,452,"Predict the next statement of this code snippet: return TargetTransformInfo ( TTIImpl ( this , F ) ) ;" LLVM,ARC,453,"Predict the next statement of this code snippet: bool PassConfig :: addInstSelector ( ) {" LLVM,ARC,454,"Predict the next statement of this code snippet: void PassConfig :: addPreEmitPass ( ) {" LLVM,ARC,455,"Predict the next statement of this code snippet: void PassConfig :: addPreEmitPass ( ) {" LLVM,ARC,456,"Predict the next statement of this code snippet: PassConfig ( TargetMachine & TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,ARC,457,"Predict the next statement of this code snippet: PassConfig ( TargetMachine & TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,ARC,458,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , , TT , CPU , FS , Options , getRelocModel ( RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( std :: make_unique < TargetLoweringObjectFileELF > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { initAsmInfo ( ) ;" LLVM,ARC,459,"Predict the next statement of this code snippet: return new PassConfig ( * this , PM ) ;" LLVM,ARC,460,"Predict the next statement of this code snippet: TargetPassConfig * TargetMachine :: createPassConfig ( PassManagerBase & PM ) { return new PassConfig ( * this , PM ) ;" LLVM,ARC,461,"Predict the next statement of this code snippet: TargetLoweringObjectFile * getObjFileLowering ( ) const override {" LLVM,ARC,462,"Predict the next statement of this code snippet: static Reloc :: Model getRelocModel ( Optional < Reloc :: Model > RM ) { if ( ! RM . hasValue ( ) ) return Reloc :: Static ; return * RM ;" LLVM,ARC,463,"Predict the next statement of this code snippet: const Subtarget * getSubtargetImpl ( const Function & ) const override {" LLVM,ARC,464,"Predict the next statement of this code snippet: const Subtarget * getSubtargetImpl ( const Function & ) const override {" LLVM,ARC,465,"Predict the next statement of this code snippet: return TargetTransformInfo ( TTIImpl ( this , F ) ) ;" LLVM,ARC,466,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine > X ( getTheTarget ( ) ) ;" LLVM,ARC,467,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine > X ( getTheTarget ( ) ) ;" LLVM,ARC,468,"Predict the next statement of this code snippet: TTIImpl ( TTIImpl && Arg ) : BaseT ( std :: move ( static_cast < BaseT & > ( Arg ) ) ) , ST ( std :: move ( Arg . ST ) ) , TLI ( std :: move ( Arg . TLI ) ) {" LLVM,ARC,469,"Predict the next statement of this code snippet: TTIImpl ( TTIImpl && Arg ) : BaseT ( std :: move ( static_cast < BaseT & > ( Arg ) ) ) , ST ( std :: move ( Arg . ST ) ) , TLI ( std :: move ( Arg . TLI ) ) {" LLVM,ARC,470,"Predict the next statement of this code snippet: return ST ;" LLVM,ARC,471,"Predict the next statement of this code snippet: return TLI ;" LLVM,RISCV,0,"Predict the next statement of this code snippet: static inline bool isImmHF ( uint64_t Val ) { return ( Val & ~ ) == ;" LLVM,RISCV,1,"Predict the next statement of this code snippet: static inline bool isImmHF ( uint64_t Val ) { return ( Val & ~ ) == ;" LLVM,RISCV,2,"Predict the next statement of this code snippet: return ( Val & ~ ) == ;" LLVM,RISCV,3,"Predict the next statement of this code snippet: static inline bool isImmHL ( uint64_t Val ) {" LLVM,RISCV,4,"Predict the next statement of this code snippet: static inline bool isImmLF ( uint64_t Val ) { return ( Val & ~ ) == ;" LLVM,RISCV,5,"Predict the next statement of this code snippet: static inline bool isImmLH ( uint64_t Val ) { return ( Val & ~ ) == ;" LLVM,RISCV,6,"Predict the next statement of this code snippet: return ( Val & ~ ) == ;" LLVM,RISCV,7,"Predict the next statement of this code snippet: return ( Val & ~ ) == ;" LLVM,RISCV,8,"Predict the next statement of this code snippet: static inline bool isImmLL ( uint64_t Val ) { return ( Val & ~ ) == ;" LLVM,RISCV,9,"Predict the next statement of this code snippet: bool fixupNeedsRelaxation ( const MCFixup & Fixup , uint64_t Value , const MCRelaxableFragment * DF , const MCAsmLayout & Layout ) const override {" LLVM,RISCV,10,"Predict the next statement of this code snippet: { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , " LLVM,RISCV,11,"Predict the next statement of this code snippet: return ;" LLVM,RISCV,12,"Predict the next statement of this code snippet: unsigned getNumFixupKinds ( ) const override { return ;" LLVM,RISCV,13,"Predict the next statement of this code snippet: bool requiresDiffExpressionRelocations ( ) const override {" LLVM,RISCV,14,"Predict the next statement of this code snippet: AsmBackend ( const MCSubtargetInfo & STI , uint8_t OSABI , bool Is64Bit ) : MCAsmBackend ( ) , STI ( STI ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) {" LLVM,RISCV,15,"Predict the next statement of this code snippet: AsmBackend ( const MCSubtargetInfo & STI , uint8_t OSABI , bool Is64Bit ) : MCAsmBackend ( ) , STI ( STI ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) {" LLVM,RISCV,16,"Predict the next statement of this code snippet: ForceRelocs = true ;" LLVM,RISCV,17,"Predict the next statement of this code snippet: ~ AsmBackend ( ) override {" LLVM,RISCV,18,"Predict the next statement of this code snippet: ~ AsmBackend ( ) override {" LLVM,RISCV,19,"Predict the next statement of this code snippet: return Value ; case : return Value & ; case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ;" LLVM,RISCV,20,"Predict the next statement of this code snippet: case FK_Data_2 : case FK_Data_4 : case FK_Data_8 : return Value ; case : return Value & ; case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : {" LLVM,RISCV,21,"Predict the next statement of this code snippet: MCContext & Ctx = Asm . getContext ( ) ; MCFixupKind Kind = Fixup . getKind ( ) ; unsigned NumBytes = ( getFixupKindInfo ( Kind ) . TargetSize + ) / ; if ( ! Value ) return ;" LLVM,RISCV,22,"Predict the next statement of this code snippet: MCObjectWriter * AsmBackend :: createObjectWriter ( raw_pwrite_stream & OS ) const { return createELFObjectWriter ( OS , OSABI , Is64Bit ) ;" LLVM,RISCV,23,"Predict the next statement of this code snippet: uint8_t OSABI = MCELFObjectTargetWriter :: getOSABI ( TT . getOS ( ) ) ; return new AsmBackend ( OSABI , TT . isArch64Bit ( ) ) ;" LLVM,RISCV,24,"Predict the next statement of this code snippet: bool fixupNeedsRelaxation ( const MCFixup & Fixup , uint64_t Value , const MCRelaxableFragment * DF , const MCAsmLayout & Layout ) const override {" LLVM,RISCV,25,"Predict the next statement of this code snippet: const MCFixupKindInfo & getFixupKindInfo ( MCFixupKind Kind ) const override { const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , " LLVM,RISCV,26,"Predict the next statement of this code snippet: bool mayNeedRelaxation ( const MCInst & Inst ) const override {" LLVM,RISCV,27,"Predict the next statement of this code snippet: void relaxInstruction ( const MCInst & Inst , const MCSubtargetInfo & STI , MCInst & Res ) const override {" LLVM,RISCV,28,"Predict the next statement of this code snippet: AsmBackend ( uint8_t OSABI , bool Is64Bit ) : MCAsmBackend ( ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) {" LLVM,RISCV,29,"Predict the next statement of this code snippet: AsmBackend ( uint8_t OSABI , bool Is64Bit ) : MCAsmBackend ( ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) {" LLVM,RISCV,30,"Predict the next statement of this code snippet: if ( ( Count % ) != ) return false ; for ( uint64_t i = ; i < Count ; i += ) OW -> write32 ( ) ;" LLVM,RISCV,31,"Predict the next statement of this code snippet: bool AsmBackend :: writeNopData ( uint64_t Count , MCObjectWriter * OW ) const {" LLVM,RISCV,32,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case FK_Data_1 : case FK_Data_2 : case FK_Data_4 : case FK_Data_8 : return Value ; case : case : return Value & ; case : case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ;" LLVM,RISCV,33,"Predict the next statement of this code snippet: void AsmBackend :: applyFixup ( const MCAssembler & Asm , const MCFixup & Fixup , const MCValue & Target , MutableArrayRef < char > Data , uint64_t Value , bool IsResolved ) const { MCContext & Ctx = Asm . getContext ( ) ; MCFixupKindInfo Info = getFixupKindInfo ( Fixup . getKind ( ) ) ; if ( ! Value ) return ; Value = adjustFixupValue ( Fixup , Value , Ctx ) ; Value <<= Info . TargetOffset ; unsigned Offset = Fixup . getOffset ( ) ;" LLVM,RISCV,34,"Predict the next statement of this code snippet: const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , }" LLVM,RISCV,35,"Predict the next statement of this code snippet: getTargetABI ( ) const { return TargetABI ;" LLVM,RISCV,36,"Predict the next statement of this code snippet: bool AsmBackend :: mayNeedRelaxation ( const MCInst & Inst ) const { return getRelaxedOpcode ( Inst . getOpcode ( ) ) != Inst . getOpcode ( ) ;" LLVM,RISCV,37,"Predict the next statement of this code snippet: return willForceRelocations ( ) ;" LLVM,RISCV,38,"Predict the next statement of this code snippet: bool shouldForceRelocation ( const MCAssembler & Asm , const MCFixup & Fixup , const MCValue & Target ) override { return STI . getFeatureBits ( ) [ ] ;" LLVM,RISCV,39,"Predict the next statement of this code snippet: return STI . getFeatureBits ( ) [ ] ;" LLVM,RISCV,40,"Predict the next statement of this code snippet: bool willForceRelocations ( ) const {" LLVM,RISCV,41,"Predict the next statement of this code snippet: bool willForceRelocations ( ) const {" LLVM,RISCV,42,"Predict the next statement of this code snippet: const MCFixupKindInfo & getFixupKindInfo ( MCFixupKind Kind ) const override { const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } } ; static_assert ( ( array_lengthof ( Infos ) ) == , ) ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ;" LLVM,RISCV,43,"Predict the next statement of this code snippet: const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } } ; static_assert ( ( array_lengthof ( Infos ) ) == , ) ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ;" LLVM,RISCV,44,"Predict the next statement of this code snippet: unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ;" LLVM,RISCV,45,"Predict the next statement of this code snippet: assert ( Offset + NumBytes <= Data . size ( ) && ) ; for ( unsigned i = ; i != NumBytes ; ++ i ) { Data [ Offset + i ] |= uint8_t ( ( Value >> ( i * ) ) & ) ; }" LLVM,RISCV,46,"Predict the next statement of this code snippet: uint8_t OSABI = MCELFObjectTargetWriter :: getOSABI ( TT . getOS ( ) ) ;" LLVM,RISCV,47,"Predict the next statement of this code snippet: MCAsmBackend * llvm :: createAsmBackend ( const Target & T , const MCSubtargetInfo & STI , const MCRegisterInfo & MRI , const MCTargetOptions & Options ) {" LLVM,RISCV,48,"Predict the next statement of this code snippet: const MCFixup * AUIPCFixup ; const MCFragment * AUIPCDF ; MCValue AUIPCTarget ; switch ( Fixup . getTargetKind ( ) ) { default : llvm_unreachable ( ) ; case : AUIPCFixup = & Fixup ; AUIPCDF = DF ; AUIPCTarget = Target ; break ; case : case : { AUIPCFixup = cast < MCExpr > ( Fixup . getValue ( ) ) -> getPCRelHiFixup ( & AUIPCDF ) ; if ( ! AUIPCFixup ) { Asm . getContext ( ) . reportError ( Fixup . getLoc ( ) , ) ; return true ; } const MCExpr * AUIPCExpr = AUIPCFixup -> getValue ( ) ; if ( ! AUIPCExpr -> evaluateAsRelocatable ( AUIPCTarget , & Layout , AUIPCFixup ) ) return true ; break ; } } if ( ! AUIPCTarget . getSymA ( ) || AUIPCTarget . getSymB ( ) ) return false ; const MCSymbolRefExpr * A = AUIPCTarget . getSymA ( ) ; const MCSymbol & SA = A -> getSymbol ( ) ; if ( A -> getKind ( ) != MCSymbolRefExpr :: VK_None || SA . isUndefined ( ) ) return false ; auto * Writer = Asm . getWriterPtr ( ) ; if ( ! Writer ) return false ; bool IsResolved = Writer -> isSymbolRefDifferenceFullyResolvedImpl ( Asm , SA , * AUIPCDF , false , true ) ; if ( ! IsResolved ) return false ; Value = Layout . getSymbolOffset ( SA ) + AUIPCTarget . getConstant ( ) ;" LLVM,RISCV,49,"Predict the next statement of this code snippet: if ( ! Resolved && ! WasForced ) return true ; int64_t Offset = int64_t ( Value ) ; switch ( Fixup . getTargetKind ( ) ) { default : return false ; case : return Offset > || Offset < - ; case :" LLVM,RISCV,50,"Predict the next statement of this code snippet: if ( STI . getTargetTriple ( ) . isOSBinFormatELF ( ) ) { unsigned Type ; Type = llvm :: StringSwitch < unsigned > ( Name ) . Case ( , ELF :: R__NONE ) . Case ( , ELF :: R__32 ) . Case ( , ELF :: R__64 ) . Default ( - ) ;" LLVM,RISCV,51,"Predict the next statement of this code snippet: const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , }" LLVM,RISCV,52,"Predict the next statement of this code snippet: bool AsmBackend :: relaxDwarfCFA ( MCDwarfCallFrameFragment & DF , MCAsmLayout & Layout , bool & WasRelaxed ) const { const MCExpr & AddrDelta = DF . getAddrDelta ( ) ; SmallVectorImpl < char > & Data = DF . getContents ( ) ; SmallVectorImpl < MCFixup > & Fixups = DF . getFixups ( ) ; size_t OldSize = Data . size ( ) ; int64_t Value ; bool IsAbsolute = AddrDelta . evaluateKnownAbsolute ( Value , Layout ) ; assert ( IsAbsolute && ) ; ( void ) IsAbsolute ; Data . clear ( ) ; Fixups . clear ( ) ; raw_svector_ostream OS ( Data ) ; assert ( Layout . getAssembler ( ) . getContext ( ) . getAsmInfo ( ) -> getMinInstAlignment ( ) == && ) ; if ( Value == ) { WasRelaxed = OldSize != Data . size ( ) ; return true ; } auto AddFixups = [ & Fixups , & AddrDelta ] ( unsigned Offset , std :: pair < unsigned , unsigned > Fixup ) { const MCBinaryExpr & MBE = cast < MCBinaryExpr > ( AddrDelta ) ; Fixups . push_back ( MCFixup :: create ( Offset , MBE . getLHS ( ) , static_cast < MCFixupKind > ( std :: get < > ( Fixup ) ) ) ) ;" LLVM,RISCV,53,"Predict the next statement of this code snippet: assert ( IsAbsolute && ) ; ( void ) IsAbsolute ; Data . clear ( ) ; Fixups . clear ( ) ; raw_svector_ostream OS ( Data ) ; assert ( Layout . getAssembler ( ) . getContext ( ) . getAsmInfo ( ) -> getMinInstAlignment ( ) == && ) ; if ( Value == ) { WasRelaxed = OldSize != Data . size ( ) ; return true ; } auto AddFixups = [ & Fixups , & AddrDelta ] ( unsigned Offset , std :: pair < unsigned , unsigned > Fixup ) { const MCBinaryExpr & MBE = cast < MCBinaryExpr > ( AddrDelta ) ; Fixups . push_back ( MCFixup :: create ( Offset , MBE . getLHS ( ) , static_cast < MCFixupKind > ( std :: get < > ( Fixup ) ) ) ) ; Fixups . push_back ( MCFixup :: create ( Offset , MBE . getRHS ( ) , static_cast < MCFixupKind > ( std :: get < > ( Fixup ) ) ) ) ; } ; if ( isUIntN ( , Value ) ) { OS << uint8_t ( dwarf :: DW_CFA_advance_loc ) ; AddFixups ( , { , } ) ; } else if ( isUInt < > ( Value ) ) { OS << uint8_t ( dwarf :: DW_CFA_advance_loc1 ) ; :: write < uint8_t > ( OS , , ) ; AddFixups ( , { , } ) ; } else if ( isUInt < > ( Value ) ) { OS << uint8_t ( dwarf :: DW_CFA_advance_loc2 ) ; :: write < uint16_t > ( OS , , ) ; AddFixups ( , { , } ) ; } else if ( isUInt < > ( Value ) ) { OS << uint8_t ( dwarf :: DW_CFA_advance_loc4 ) ; :: write < uint32_t > ( OS , , ) ;" LLVM,RISCV,54,"Predict the next statement of this code snippet: switch ( Inst . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : Res . setOpcode ( ) ; Res . addOperand ( Inst . getOperand ( ) ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ; case : Res . setOpcode ( ) ; Res . addOperand ( Inst . getOperand ( ) ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ; case : Res . setOpcode ( ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ; case : Res . setOpcode ( ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ; }" LLVM,RISCV,55,"Predict the next statement of this code snippet: Res . addOperand ( Inst . getOperand ( ) ) ; break ; case : Res . setOpcode ( ) ; Res . addOperand ( Inst . getOperand ( ) ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ; case :" LLVM,RISCV,56,"Predict the next statement of this code snippet: if ( Fixup . getKind ( ) >= FirstLiteralRelocationKind ) return true ; switch ( Fixup . getTargetKind ( ) ) { default : break ; case FK_Data_1 : case FK_Data_2 : case FK_Data_4 : case FK_Data_8 : if ( Target . isAbsolute ( ) ) return false ; break ; case : case : case : return true ; } return STI . getFeatureBits ( ) [ ] || ForceRelocs ;" LLVM,RISCV,57,"Predict the next statement of this code snippet: bool AsmBackend :: shouldInsertExtraNopBytesForCodeAlign ( const MCAlignFragment & AF , unsigned & Size ) { if ( ! STI . getFeatureBits ( ) [ ] ) return false ; bool HasStdExtC = STI . getFeatureBits ( ) [ ] ;" LLVM,RISCV,58,"Predict the next statement of this code snippet: bool AsmBackend :: shouldInsertFixupForCodeAlign ( MCAssembler & Asm , const MCAsmLayout & Layout , MCAlignFragment & AF ) { if ( ! STI . getFeatureBits ( ) [ ] ) return false ; unsigned Count ; if ( ! shouldInsertExtraNopBytesForCodeAlign ( AF , Count ) || ( Count == ) ) return false ; MCContext & Ctx = Asm . getContext ( ) ;" LLVM,RISCV,59,"Predict the next statement of this code snippet: MCContext & Ctx = Asm . getContext ( ) ; const MCExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ; MCFixup Fixup = MCFixup :: create ( , Dummy , MCFixupKind ( ) , SMLoc ( ) ) ;" LLVM,RISCV,60,"Predict the next statement of this code snippet: bool AsmBackend :: writeNopData ( raw_ostream & OS , uint64_t Count , const MCSubtargetInfo * STI ) const { bool HasStdExtC = STI -> getFeatureBits ( ) [ ] ; unsigned MinNopLen = HasStdExtC ? : ; if ( ( Count % MinNopLen ) != ) return false ; for ( ; Count >= ; Count -= ) OS . write ( , ) ; if ( Count && HasStdExtC ) OS . write ( , ) ; return true ;" LLVM,RISCV,61,"Predict the next statement of this code snippet: bool AsmBackend :: writeNopData ( raw_ostream & OS , uint64_t Count , const MCSubtargetInfo * STI ) const { bool HasStdExtC = STI -> getFeatureBits ( ) [ ] ;" LLVM,RISCV,62,"Predict the next statement of this code snippet: bool AsmBackend :: writeNopData ( raw_ostream & OS , uint64_t Count ) const { bool HasStdExtC = STI . getFeatureBits ( ) [ ] ;" LLVM,RISCV,63,"Predict the next statement of this code snippet: case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; Value = ( Bit11 << ) | ( Bit4 << ) | ( Bit9_8 << ) | ( Bit10 << ) | ( Bit6 << ) | ( Bit7 << ) | ( Bit3_1 << ) | Bit5 ; return Value ; } case : { unsigned Bit8 = ( Value >> ) & ;" LLVM,RISCV,64,"Predict the next statement of this code snippet: return Value ; case : case : case : return Value & ; case : case : case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; Value = ( Bit11 << ) | ( Bit4 << ) | ( Bit9_8 << ) | ( Bit10 << ) | ( Bit6 << ) | ( Bit7 << ) | ( Bit3_1 << ) | Bit5 ; return Value ;" LLVM,RISCV,65,"Predict the next statement of this code snippet: case : const MCFixup * T = cast < MCExpr > ( Fixup . getValue ( ) ) -> getPCRelHiFixup ( ) ; if ( ! T ) { Asm . getContext ( ) . reportError ( Fixup . getLoc ( ) , ) ; return false ; } switch ( ( unsigned ) T -> getKind ( ) ) { default :" LLVM,RISCV,66,"Predict the next statement of this code snippet: bool AsmBackend :: shouldInsertExtraNopBytesForCodeAlign ( const MCAlignFragment & AF , unsigned & Size ) { if ( ! STI . getFeatureBits ( ) [ ] ) return false ; bool HasStdExtC = STI . getFeatureBits ( ) [ ] ; unsigned MinNopLen = HasStdExtC ? : ; Size = AF . getAlignment ( ) - MinNopLen ; return true ;" LLVM,RISCV,67,"Predict the next statement of this code snippet: unsigned MinNopLen = HasStdExtC ? : ; Size = AF . getAlignment ( ) - MinNopLen ;" LLVM,RISCV,68,"Predict the next statement of this code snippet: MCFixup Fixup = MCFixup :: create ( , Dummy , MCFixupKind ( ) , SMLoc ( ) ) ; uint64_t FixedValue = ; MCValue NopBytes = MCValue :: get ( Count ) ;" LLVM,RISCV,69,"Predict the next statement of this code snippet: void relaxInstruction ( const MCInst & Inst , const MCSubtargetInfo & STI , MCInst & Res ) const override {" LLVM,RISCV,70,"Predict the next statement of this code snippet: return STI . getFeatureBits ( ) [ ] || ForceRelocs ;" LLVM,RISCV,71,"Predict the next statement of this code snippet: case FK_Data_1 : case FK_Data_2 : case FK_Data_4 : case FK_Data_8 : case FK_Data_6b : return Value ; case : return Value & ; case : case : case : return Value & ; case : case : case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : case : return ( ( Value + ) >> ) & ; case : case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : case : case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ;" LLVM,RISCV,72,"Predict the next statement of this code snippet: return false ; case : return Offset > || Offset < - ; case : case : return Offset > || Offset < - ;" LLVM,RISCV,73,"Predict the next statement of this code snippet: const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , } ;" LLVM,RISCV,74,"Predict the next statement of this code snippet: case : return ; case : return ; case : return IsCapMode ? : ; case : return ; case :" LLVM,RISCV,75,"Predict the next statement of this code snippet: Res . addOperand ( Inst . getOperand ( ) ) ; break ; case : Res . setOpcode ( ) ; Res . addOperand ( Inst . getOperand ( ) ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ; case : Res . setOpcode ( IsCapMode ? : ) ; Res . addOperand ( MCOperand :: createReg ( IsCapMode ? : ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ;" LLVM,RISCV,76,"Predict the next statement of this code snippet: if ( Fixup . getKind ( ) >= FirstLiteralRelocationKind ) return true ; switch ( Fixup . getTargetKind ( ) ) { default : break ; case FK_Data_1 : case FK_Data_2 : case FK_Data_4 : case FK_Data_8 : if ( Target . isAbsolute ( ) ) return false ; break ;" LLVM,RISCV,77,"Predict the next statement of this code snippet: Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; Value = ( Bit11 << ) | ( Bit4 << ) | ( Bit9_8 << ) | ( Bit10 << ) | ( Bit6 << ) | ( Bit7 << ) | ( Bit3_1 << ) | Bit5 ; return Value ; } case : { unsigned Bit8 = ( Value >> ) & ; unsigned Bit7_6 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; unsigned Bit4_3 = ( Value >> ) & ;" LLVM,RISCV,78,"Predict the next statement of this code snippet: case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; Value = ( Bit11 << ) | ( Bit4 << ) | ( Bit9_8 << ) | ( Bit10 << ) | ( Bit6 << ) | ( Bit7 << ) | ( Bit3_1 << ) | Bit5 ; return Value ;" LLVM,RISCV,79,"Predict the next statement of this code snippet: default : break ; case : return true ; case : case : const MCFixup * T = cast < MCExpr > ( Fixup . getValue ( ) ) -> getPCRelHiFixup ( ) ; if ( ! T ) { Asm . getContext ( ) . reportError ( Fixup . getLoc ( ) , ) ; return false ; } switch ( ( unsigned ) T -> getKind ( ) ) { default : llvm_unreachable ( ) ; break ; case : ShouldForce = true ; break ; case : ShouldForce = T -> getValue ( ) -> findAssociatedFragment ( ) != Fixup . getValue ( ) -> findAssociatedFragment ( ) ; break ; } break ; }" LLVM,RISCV,80,"Predict the next statement of this code snippet: case FK_Data_8 : case FK_Data_6b : return Value ; case : case : case : return Value & ; case : case : case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case :" LLVM,RISCV,81,"Predict the next statement of this code snippet: default : break ; case FK_Data_1 : case FK_Data_2 : case FK_Data_4 : case FK_Data_8 : if ( Target . isAbsolute ( ) ) return false ; break ; case : case : case : return true ; }" LLVM,RISCV,82,"Predict the next statement of this code snippet: MCFixupKindInfo Info = getFixupKindInfo ( Fixup . getKind ( ) ) ; if ( ! Value ) return ; Value = adjustFixupValue ( Fixup , Value , Ctx ) ; Value <<= Info . TargetOffset ; unsigned Offset = Fixup . getOffset ( ) ; unsigned NumBytes = ( Info . TargetSize + ) / ; assert ( Offset + NumBytes <= Data . size ( ) && ) ; for ( unsigned i = ; i != ; ++ i ) {" LLVM,RISCV,83,"Predict the next statement of this code snippet: void AsmBackend :: applyFixup ( const MCAssembler & Asm , const MCFixup & Fixup , const MCValue & Target , MutableArrayRef < char > Data , uint64_t Value , bool IsResolved ) const { MCContext & Ctx = Asm . getContext ( ) ; MCFixupKindInfo Info = getFixupKindInfo ( Fixup . getKind ( ) ) ; if ( ! Value ) return ; Value = adjustFixupValue ( Fixup , Value , Ctx ) ;" LLVM,RISCV,84,"Predict the next statement of this code snippet: std :: unique_ptr < MCObjectWriter > AsmBackend :: createObjectWriter ( raw_pwrite_stream & OS ) const { return createELFObjectWriter ( OS , OSABI , Is64Bit ) ;" LLVM,RISCV,85,"Predict the next statement of this code snippet: if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ;" LLVM,RISCV,86,"Predict the next statement of this code snippet: Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; Value = ( Bit11 << ) | ( Bit4 << ) | ( Bit9_8 << ) | ( Bit10 << ) | ( Bit6 << ) | ( Bit7 << ) | ( Bit3_1 << ) | Bit5 ; return Value ; } case : { unsigned Bit8 = ( Value >> ) & ; unsigned Bit7_6 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; unsigned Bit4_3 = ( Value >> ) & ; unsigned Bit2_1 = ( Value >> ) & ; Value = ( Bit8 << ) | ( Bit4_3 << ) | ( Bit7_6 << ) | ( Bit2_1 << ) | ( Bit5 << ) ; return Value ; }" LLVM,RISCV,87,"Predict the next statement of this code snippet: assert ( Offset + NumBytes <= Data . size ( ) && ) ; for ( unsigned i = ; i != FullSize ; ++ i ) { Data [ Offset + i ] |= uint8_t ( ( Value >> ( i * ) ) & ) ;" LLVM,RISCV,88,"Predict the next statement of this code snippet: assert ( Offset + NumBytes <= Data . size ( ) && ) ; for ( unsigned i = ; i != FullSize ; ++ i ) {" LLVM,RISCV,89,"Predict the next statement of this code snippet: MCAsmBackend * llvm :: createAsmBackend ( const Target & T , const MCSubtargetInfo & STI , const MCRegisterInfo & MRI , const MCTargetOptions & Options ) { const Triple & TT = STI . getTargetTriple ( ) ; uint8_t OSABI = MCELFObjectTargetWriter :: getOSABI ( TT . getOS ( ) ) ;" LLVM,RISCV,90,"Predict the next statement of this code snippet: { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } } ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ;" LLVM,RISCV,91,"Predict the next statement of this code snippet: const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } } ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ; assert ( unsigned ( Kind - FirstTargetFixupKind ) < getNumFixupKinds ( ) && ) ;" LLVM,RISCV,92,"Predict the next statement of this code snippet: switch ( Kind ) { default : return ; case : case : return ;" LLVM,RISCV,93,"Predict the next statement of this code snippet: case FK_Data_6b : return Value ; case : case : case : return Value & ; case : case : case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ;" LLVM,RISCV,94,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case : case : case : llvm_unreachable ( ) ; case FK_Data_1 : case FK_Data_2 : case FK_Data_4 : case FK_Data_8 : case FK_Data_6b : return Value ; case : case : case : return Value & ; case : case : case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ; unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; }" LLVM,RISCV,95,"Predict the next statement of this code snippet: if ( Type != - ) return static_cast < MCFixupKind > ( FirstLiteralRelocationKind + Type ) ; } return None ;" LLVM,RISCV,96,"Predict the next statement of this code snippet: Optional < MCFixupKind > AsmBackend :: getFixupKind ( StringRef Name ) const {" LLVM,RISCV,97,"Predict the next statement of this code snippet: AsmBackend ( const MCSubtargetInfo & STI , uint8_t OSABI , bool Is64Bit , const MCTargetOptions & Options ) : MCAsmBackend ( ) , STI ( STI ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) , TargetOptions ( Options ) { ( STI . getTargetTriple ( ) , STI . getFeatureBits ( ) ) ;" LLVM,RISCV,98,"Predict the next statement of this code snippet: AsmBackend ( const MCSubtargetInfo & STI , uint8_t OSABI , bool Is64Bit , const MCTargetOptions & Options ) : MCAsmBackend ( ) , STI ( STI ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) , TargetOptions ( Options ) { ( STI . getTargetTriple ( ) , STI . getFeatureBits ( ) ) ;" LLVM,RISCV,99,"Predict the next statement of this code snippet: const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } } ; static_assert ( ( array_lengthof ( Infos ) ) == , ) ; if ( Kind >= FirstLiteralRelocationKind ) return MCAsmBackend :: getFixupKindInfo ( FK_NONE ) ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ; assert ( unsigned ( Kind - FirstTargetFixupKind ) < getNumFixupKinds ( ) && ) ;" LLVM,RISCV,100,"Predict the next statement of this code snippet: int64_t Offset = int64_t ( Value ) ; switch ( ( unsigned ) Fixup . getKind ( ) ) { default : return false ; case : return Offset > || Offset < - ; case :" LLVM,RISCV,101,"Predict the next statement of this code snippet: AsmBackend ( const MCSubtargetInfo & STI , uint8_t OSABI , bool Is64Bit ) : MCAsmBackend ( ) , STI ( STI ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) {" LLVM,RISCV,102,"Predict the next statement of this code snippet: AsmBackend ( const MCSubtargetInfo & STI , uint8_t OSABI , bool Is64Bit ) : MCAsmBackend ( ) , STI ( STI ) , OSABI ( OSABI ) , Is64Bit ( Is64Bit ) {" LLVM,RISCV,103,"Predict the next statement of this code snippet: uint64_t Nop32Count = Count / ; for ( uint64_t i = Nop32Count ; i != ; -- i ) OW -> write32 ( ) ; if ( HasStdExtC ) { uint64_t Nop16Count = ( Count - Nop32Count * ) / ;" LLVM,RISCV,104,"Predict the next statement of this code snippet: void AsmBackend :: applyFixup ( const MCFixup & Fixup , char * Data , unsigned DataSize , uint64_t Value , bool IsPCRel , MCContext & Ctx ) const { return ;" LLVM,RISCV,105,"Predict the next statement of this code snippet: bool AsmBackend :: shouldInsertExtraNopBytesForCodeAlign ( const MCAlignFragment & AF , unsigned & Size ) { const MCSubtargetInfo * STI = AF . getSubtargetInfo ( ) ; if ( ! STI -> getFeatureBits ( ) [ ] ) return false ; bool HasStdExtC = STI -> getFeatureBits ( ) [ ] ; unsigned MinNopLen = HasStdExtC ? : ; if ( AF . getAlignment ( ) <= MinNopLen ) { return false ;" LLVM,RISCV,106,"Predict the next statement of this code snippet: const MCSubtargetInfo * STI = AF . getSubtargetInfo ( ) ; if ( ! STI -> getFeatureBits ( ) [ ] ) return false ; unsigned Count ; if ( ! shouldInsertExtraNopBytesForCodeAlign ( AF , Count ) || ( Count == ) ) return false ; MCContext & Ctx = Asm . getContext ( ) ; const MCExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ; MCFixup Fixup = MCFixup :: create ( , Dummy , MCFixupKind ( ) , SMLoc ( ) ) ; uint64_t FixedValue = ; MCValue NopBytes = MCValue :: get ( Count ) ;" LLVM,RISCV,107,"Predict the next statement of this code snippet: MCFixup Fixup = MCFixup :: create ( , Dummy , MCFixupKind ( ) , SMLoc ( ) ) ; uint64_t FixedValue = ; MCValue NopBytes = MCValue :: get ( Count ) ; Asm . getWriter ( ) . recordRelocation ( Asm , Layout , & AF , Fixup , NopBytes , FixedValue ) ;" LLVM,RISCV,108,"Predict the next statement of this code snippet: const MCFixupKindInfo & AsmBackend :: getFixupKindInfo ( MCFixupKind Kind ) const { const static MCFixupKindInfo Infos [ ] = { { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel | MCFixupKindInfo :: FKF_IsTarget } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , } , { , , , } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } } ; static_assert ( ( array_lengthof ( Infos ) ) == , ) ; if ( Kind >= FirstLiteralRelocationKind ) return MCAsmBackend :: getFixupKindInfo ( FK_NONE ) ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ;" LLVM,RISCV,109,"Predict the next statement of this code snippet: Asm . getContext ( ) . reportError ( Fixup . getLoc ( ) , ) ; return false ; } switch ( T -> getTargetKind ( ) ) { default : llvm_unreachable ( ) ; break ; case : case : case : ShouldForce = true ; break ; case : ShouldForce = T -> getValue ( ) -> findAssociatedFragment ( ) != Fixup . getValue ( ) -> findAssociatedFragment ( ) ; break ;" LLVM,RISCV,110,"Predict the next statement of this code snippet: unsigned Lo4 = ( Value >> ) & ; Value = ( Sbit << ) | ( Mid6 << ) | ( Lo4 << ) | ( Hi1 << ) ; return Value ; } case : case : { uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; Value = ( Bit11 << ) | ( Bit4 << ) | ( Bit9_8 << ) | ( Bit10 << ) | ( Bit6 << ) | ( Bit7 << ) | ( Bit3_1 << ) | Bit5 ; return Value ; } case : {" LLVM,RISCV,111,"Predict the next statement of this code snippet: void AsmBackend :: applyFixup ( const MCFixup & Fixup , MutableArrayRef < char > Data , uint64_t Value , bool IsPCRel , MCContext & Ctx ) const { return ;" LLVM,RISCV,112,"Predict the next statement of this code snippet: uint64_t UpperImm = ( Value + ) & ; uint64_t LowerImm = Value & ; return UpperImm | ( ( LowerImm << ) << ) ; } case : { unsigned Bit11 = ( Value >> ) & ; unsigned Bit4 = ( Value >> ) & ; unsigned Bit9_8 = ( Value >> ) & ; unsigned Bit10 = ( Value >> ) & ; unsigned Bit6 = ( Value >> ) & ; unsigned Bit7 = ( Value >> ) & ; unsigned Bit3_1 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; Value = ( Bit11 << ) | ( Bit4 << ) | ( Bit9_8 << ) | ( Bit10 << ) | ( Bit6 << ) | ( Bit7 << ) | ( Bit3_1 << ) | Bit5 ; return Value ; } case : { unsigned Bit8 = ( Value >> ) & ; unsigned Bit7_6 = ( Value >> ) & ; unsigned Bit5 = ( Value >> ) & ; unsigned Bit4_3 = ( Value >> ) & ; unsigned Bit2_1 = ( Value >> ) & ; Value = ( Bit8 << ) | ( Bit4_3 << ) | ( Bit7_6 << ) | ( Bit2_1 << ) | ( Bit5 << ) ; return Value ;" LLVM,RISCV,113,"Predict the next statement of this code snippet: case FK_Data_8 : return Value ; case : case : return Value & ; case : case : return ( ( ( Value >> ) & ) << ) | ( ( Value & ) << ) ; case : case : return ( ( Value + ) >> ) & ; case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi8 = ( Value >> ) & ; unsigned Mid1 = ( Value >> ) & ; unsigned Lo10 = ( Value >> ) & ; Value = ( Sbit << ) | ( Lo10 << ) | ( Mid1 << ) | Hi8 ; return Value ; } case : { if ( ! isInt < > ( Value ) ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; if ( Value & ) Ctx . reportError ( Fixup . getLoc ( ) , ) ; unsigned Sbit = ( Value >> ) & ; unsigned Hi1 = ( Value >> ) & ; unsigned Mid6 = ( Value >> ) & ;" LLVM,RISCV,114,"Predict the next statement of this code snippet: unsigned Offset = Fixup . getOffset ( ) ; unsigned NumBytes = alignTo ( Info . TargetSize + Info . TargetOffset , ) / ; assert ( Offset + NumBytes <= Data . size ( ) && ) ; for ( unsigned i = ; i != NumBytes ; ++ i ) { Data [ Offset + i ] |= uint8_t ( ( Value >> ( i * ) ) & ) ;" LLVM,RISCV,115,"Predict the next statement of this code snippet: std :: unique_ptr < MCObjectTargetWriter > AsmBackend :: createObjectTargetWriter ( ) const { return createELFObjectWriter ( OSABI , Is64Bit ) ;" LLVM,RISCV,116,"Predict the next statement of this code snippet: const Triple & TT = STI . getTargetTriple ( ) ; uint8_t OSABI = MCELFObjectTargetWriter :: getOSABI ( TT . getOS ( ) ) ;" LLVM,RISCV,117,"Predict the next statement of this code snippet: const Triple & TT = STI . getTargetTriple ( ) ;" LLVM,RISCV,118,"Predict the next statement of this code snippet: if ( ! Resolved && ! WasForced ) return true ; int64_t Offset = int64_t ( Value ) ; switch ( ( unsigned ) Fixup . getKind ( ) ) { default : return false ; case : return Offset > || Offset < - ; case :" LLVM,RISCV,119,"Predict the next statement of this code snippet: unsigned AsmBackend :: getRelaxedOpcode ( unsigned Op ) const { switch ( Op ) { default : return Op ; case : return ; case : return ;" LLVM,RISCV,120,"Predict the next statement of this code snippet: unsigned AsmBackend :: getRelaxedOpcode ( unsigned Op ) const { switch ( Op ) { default : return Op ; case : return ; case : return ; case : case : return ; }" LLVM,RISCV,121,"Predict the next statement of this code snippet: bool AsmBackend :: mayNeedRelaxation ( const MCInst & Inst , const MCSubtargetInfo & STI ) const { return getRelaxedOpcode ( Inst . getOpcode ( ) ) != Inst . getOpcode ( ) ;" LLVM,RISCV,122,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : Res . setOpcode ( ) ; Res . addOperand ( Inst . getOperand ( ) ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ; case : Res . setOpcode ( ) ; Res . addOperand ( Inst . getOperand ( ) ) ; Res . addOperand ( MCOperand :: createReg ( ) ) ; Res . addOperand ( Inst . getOperand ( ) ) ; break ;" LLVM,RISCV,123,"Predict the next statement of this code snippet: bool ShouldForce = false ; switch ( ( unsigned ) Fixup . getKind ( ) ) { default : break ; case : case : const MCFixup * T = cast < MCExpr > ( Fixup . getValue ( ) ) -> getPCRelHiFixup ( ) ; if ( ! T ) { Asm . getContext ( ) . reportError ( Fixup . getLoc ( ) , ) ; return false ; } switch ( ( unsigned ) T -> getKind ( ) ) { default : llvm_unreachable ( ) ; break ; case : ShouldForce = T -> getValue ( ) -> findAssociatedFragment ( ) != Fixup . getValue ( ) -> findAssociatedFragment ( ) ;" LLVM,RISCV,124,"Predict the next statement of this code snippet: switch ( ( unsigned ) Fixup . getKind ( ) ) { default : break ; case : case : const MCFixup * T = cast < MCExpr > ( Fixup . getValue ( ) ) -> getPCRelHiFixup ( ) ; if ( ! T ) { Asm . getContext ( ) . reportError ( Fixup . getLoc ( ) , ) ; return false ; } switch ( ( unsigned ) T -> getKind ( ) ) { default : llvm_unreachable ( ) ; break ;" LLVM,RISCV,125,"Predict the next statement of this code snippet: bool HasStdExtC = STI . getFeatureBits ( ) [ ] ; unsigned MinNopLen = HasStdExtC ? : ; if ( ( Count % MinNopLen ) != ) return false ;" LLVM,RISCV,126,"Predict the next statement of this code snippet: if ( Expr == ) Inst . addOperand ( MCOperand :: createImm ( ) ) ; else if ( const MCConstantExpr * CE = dyn_cast < MCConstantExpr > ( Expr ) ) Inst . addOperand ( MCOperand :: createImm ( CE -> getValue ( ) ) ) ;" LLVM,RISCV,127,"Predict the next statement of this code snippet: if ( Expr == ) Inst . addOperand ( MCOperand :: createImm ( ) ) ;" LLVM,RISCV,128,"Predict the next statement of this code snippet: void addImmOperands ( MCInst & Inst , unsigned N ) const { assert ( N == && ) ;" LLVM,RISCV,129,"Predict the next statement of this code snippet: addExpr ( Inst , getImm ( ) ) ;" LLVM,RISCV,130,"Predict the next statement of this code snippet: assert ( N == && ) ;" LLVM,RISCV,131,"Predict the next statement of this code snippet: auto Op = make_unique < Operand > ( KindImm , StartLoc , EndLoc ) ;" LLVM,RISCV,132,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createImm ( const MCExpr * Expr , SMLoc StartLoc , SMLoc EndLoc ) { auto Op = make_unique < Operand > ( KindImm , StartLoc , EndLoc ) ; Op -> Imm = Expr ;" LLVM,RISCV,133,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createMem ( RegisterKind RegKind , unsigned Base , const MCExpr * Disp , unsigned Index , SMLoc StartLoc , SMLoc EndLoc ) { auto Op = make_unique < Operand > ( KindMem , StartLoc , EndLoc ) ; Op -> Mem . RegKind = RegKind ; Op -> Mem . Base = Base ; Op -> Mem . Index = Index ; Op -> Mem . Disp = Disp ; return Op ;" LLVM,RISCV,134,"Predict the next statement of this code snippet: Op -> Mem . RegKind = RegKind ; Op -> Mem . Base = Base ; Op -> Mem . Index = Index ;" LLVM,RISCV,135,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createReg ( RegisterKind Kind , unsigned Num , SMLoc StartLoc , SMLoc EndLoc ) { auto Op = make_unique < Operand > ( KindReg , StartLoc , EndLoc ) ; Op -> Reg . Kind = Kind ; Op -> Reg . Num = Num ;" LLVM,RISCV,136,"Predict the next statement of this code snippet: auto Op = make_unique < Operand > ( KindToken , Loc , Loc ) ; Op -> Token . Data = Str . data ( ) ;" LLVM,RISCV,137,"Predict the next statement of this code snippet: const MCExpr * getImm ( ) const { assert ( Kind == KindImm && ) ; return Imm ;" LLVM,RISCV,138,"Predict the next statement of this code snippet: unsigned getReg ( ) const override { assert ( Kind == KindReg && ) ;" LLVM,RISCV,139,"Predict the next statement of this code snippet: return StringRef ( Token . Data , Token . Length ) ;" LLVM,RISCV,140,"Predict the next statement of this code snippet: return StringRef ( Token . Data , Token . Length ) ;" LLVM,RISCV,141,"Predict the next statement of this code snippet: int64_t Value = CE -> getValue ( ) ; return Value >= MinValue && Value <= MaxValue ;" LLVM,RISCV,142,"Predict the next statement of this code snippet: return isReg ( ER64Reg ) ;" LLVM,RISCV,143,"Predict the next statement of this code snippet: bool isFP128 ( ) const { return isReg ( FP128Reg ) ;" LLVM,RISCV,144,"Predict the next statement of this code snippet: bool isFP32 ( ) const { return isReg ( FP32Reg ) ;" LLVM,RISCV,145,"Predict the next statement of this code snippet: return isReg ( FP32Reg ) ;" LLVM,RISCV,146,"Predict the next statement of this code snippet: return isReg ( FP64Reg ) ;" LLVM,RISCV,147,"Predict the next statement of this code snippet: return isReg ( GR64Reg ) ;" LLVM,RISCV,148,"Predict the next statement of this code snippet: bool isMem ( RegisterKind RegKind , bool HasIndex ) const { return ( Kind == KindMem && Mem . RegKind == RegKind && ( HasIndex || ! Mem . Index ) ) ;" LLVM,RISCV,149,"Predict the next statement of this code snippet: bool isMemDisp20 ( RegisterKind RegKind , bool HasIndex ) const { return isMem ( RegKind , HasIndex ) && inRange ( Mem . Disp , - , ) ;" LLVM,RISCV,150,"Predict the next statement of this code snippet: return isReg ( PairFP128Reg ) ;" LLVM,RISCV,151,"Predict the next statement of this code snippet: bool isPairFP128 ( ) const {" LLVM,RISCV,152,"Predict the next statement of this code snippet: bool isPairFP64 ( ) const {" LLVM,RISCV,153,"Predict the next statement of this code snippet: bool isPCR64Reg ( ) const { return isReg ( PCR64Reg ) ;" LLVM,RISCV,154,"Predict the next statement of this code snippet: bool isPCR64Reg ( ) const { return isReg ( PCR64Reg ) ;" LLVM,RISCV,155,"Predict the next statement of this code snippet: return isReg ( PCReg ) ;" LLVM,RISCV,156,"Predict the next statement of this code snippet: return isReg ( PCRReg ) ;" LLVM,RISCV,157,"Predict the next statement of this code snippet: return Kind == KindReg && Reg . Kind == RegKind ;" LLVM,RISCV,158,"Predict the next statement of this code snippet: return isImm ( - , ) ;" LLVM,RISCV,159,"Predict the next statement of this code snippet: return isImm ( - , ) ;" LLVM,RISCV,160,"Predict the next statement of this code snippet: bool isToken ( ) const override {" LLVM,RISCV,161,"Predict the next statement of this code snippet: return Kind == KindToken ;" LLVM,RISCV,162,"Predict the next statement of this code snippet: return isImm ( , ) ;" LLVM,RISCV,163,"Predict the next statement of this code snippet: return isImm ( , ) ;" LLVM,RISCV,164,"Predict the next statement of this code snippet: bool isU32Imm ( ) const {" LLVM,RISCV,165,"Predict the next statement of this code snippet: return isImm ( , ) ;" LLVM,RISCV,166,"Predict the next statement of this code snippet: bool isU4Imm ( ) const {" LLVM,RISCV,167,"Predict the next statement of this code snippet: bool isU64Imm ( ) const { return isImm ( , ) ;" LLVM,RISCV,168,"Predict the next statement of this code snippet: return isImm ( , ) ;" LLVM,RISCV,169,"Predict the next statement of this code snippet: RegisterMCAsmParser < AsmParser > Y ( The64Target ) ;" LLVM,RISCV,170,"Predict the next statement of this code snippet: Mask <<= ; } return Error ( IDLoc , Msg ) ; } case Match_InvalidOperand : { SMLoc ErrorLoc = IDLoc ; if ( ErrorInfo != ~ ) { if ( ErrorInfo >= Operands . size ( ) ) return Error ( IDLoc , ) ; ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; if ( ErrorLoc == SMLoc ( ) ) ErrorLoc = IDLoc ; } return Error ( ErrorLoc , ) ; } case Match_MnemonicFail :" LLVM,RISCV,171,"Predict the next statement of this code snippet: Msg += getSubtargetFeatureName ( ErrorInfo & Mask ) ; } Mask <<= ; } return Error ( IDLoc , Msg ) ; } case Match_InvalidOperand : { SMLoc ErrorLoc = IDLoc ; if ( ErrorInfo != ~ ) { if ( ErrorInfo >= Operands . size ( ) ) return Error ( IDLoc , ) ; ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ;" LLVM,RISCV,172,"Predict the next statement of this code snippet: SMLoc StartLoc = Parser . getTok ( ) . getLoc ( ) ; const MCExpr * Disp ; if ( getParser ( ) . parseExpression ( Disp ) ) return MatchOperand_NoMatch ; unsigned Index = ; unsigned Base = ; if ( getLexer ( ) . is ( AsmToken :: LParen ) ) { Parser . Lex ( ) ; Register Reg ; OperandMatchResultTy Result = parseRegister ( Reg , 'x' , GR32Regs , true ) ; if ( Result != MatchOperand_Success ) return Result ; if ( getLexer ( ) . is ( AsmToken :: Comma ) ) { Parser . Lex ( ) ; if ( ! HasIndex ) { Error ( Reg . StartLoc , ) ; return MatchOperand_ParseFail ; } Index = Reg . Number ; Result = parseRegister ( Reg , 'x' , GR32Regs , true ) ; if ( Result != MatchOperand_Success ) return Result ;" LLVM,RISCV,173,"Predict the next statement of this code snippet: bool AsmParser :: ParseDirective ( AsmToken DirectiveID ) { return true ;" LLVM,RISCV,174,"Predict the next statement of this code snippet: OperandMatchResultTy parseFP32 ( OperandVector & Operands ) { return parseRegister ( Operands , 'f' , FP32Regs , Operand :: FP32Reg ) ;" LLVM,RISCV,175,"Predict the next statement of this code snippet: return parseRegister ( Operands , 'f' , FP64Regs , Operand :: FP64Reg ) ;" LLVM,RISCV,176,"Predict the next statement of this code snippet: OperandMatchResultTy parseFP64 ( OperandVector & Operands ) { return parseRegister ( Operands , 'f' , FP64Regs , Operand :: FP64Reg ) ;" LLVM,RISCV,177,"Predict the next statement of this code snippet: return parseRegister ( Operands , 'x' , GR32Regs , Operand :: GR32Reg ) ;" LLVM,RISCV,178,"Predict the next statement of this code snippet: OperandMatchResultTy parseGR32 ( OperandVector & Operands ) { return parseRegister ( Operands , 'x' , GR32Regs , Operand :: GR32Reg ) ;" LLVM,RISCV,179,"Predict the next statement of this code snippet: SMLoc EndLoc = SMLoc :: getFromPointer ( Parser . getTok ( ) . getLoc ( ) . getPointer ( ) - ) ;" LLVM,RISCV,180,"Predict the next statement of this code snippet: OperandMatchResultTy ResTy = MatchOperandParserImpl ( Operands , Mnemonic ) ; if ( ResTy == MatchOperand_Success ) return false ; if ( ResTy == MatchOperand_ParseFail ) return true ; const MCExpr * Expr ;" LLVM,RISCV,181,"Predict the next statement of this code snippet: OperandMatchResultTy parsePairFP128 ( OperandVector & Operands ) { return parseRegister ( Operands , 'f' , PairFP128Regs , Operand :: PairFP128Reg ) ;" LLVM,RISCV,182,"Predict the next statement of this code snippet: Parser . eatToEndOfStatement ( ) ; return Error ( Loc , ) ; } if ( Parser . getTok ( ) . isNot ( AsmToken :: RParen ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ;" LLVM,RISCV,183,"Predict the next statement of this code snippet: else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ;" LLVM,RISCV,184,"Predict the next statement of this code snippet: else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else if ( Tok . getIdentifier ( ) . equals_lower ( ) ) op = Operand :: createReg ( Operand :: PCRReg , , S , Tok . getLoc ( ) ) ; else return MatchOperand_ParseFail ; Operands . push_back ( std :: move ( op ) ) ; Parser . Lex ( ) ; return MatchOperand_Success ; } else { return MatchOperand_ParseFail ; } } else { return MatchOperand_ParseFail ; } } else { return MatchOperand_NoMatch ; } return parseRegister ( Operands , 'p' , PCRRegs , Operand :: PCRReg ) ;" LLVM,RISCV,185,"Predict the next statement of this code snippet: if ( parseRegister ( Reg ) ) return Error ( Reg . StartLoc , ) ; if ( Reg . Prefix == 'x' && Reg . Number < ) RegNo = GR32Regs [ Reg . Number ] ; else if ( Reg . Prefix == 'f' && Reg . Number < ) RegNo = FP32Regs [ Reg . Number ] ; else if ( Reg . Prefix == 'e' && Reg . Number <= ) RegNo = ER64Regs [ Reg . Number ] ; else return Error ( Reg . StartLoc , ) ; StartLoc = Reg . StartLoc ;" LLVM,RISCV,186,"Predict the next statement of this code snippet: void Operand :: print ( raw_ostream & OS ) const { llvm_unreachable ( ) ;" LLVM,RISCV,187,"Predict the next statement of this code snippet: AsmParser ( const MCSubtargetInfo & sti , MCAsmParser & parser , const MCInstrInfo & MII , const MCTargetOptions & Options ) : MCTargetAsmParser ( Options , sti ) , STI ( sti ) , Parser ( parser ) {" LLVM,RISCV,188,"Predict the next statement of this code snippet: AsmParser ( const MCSubtargetInfo & sti , MCAsmParser & parser , const MCInstrInfo & MII , const MCTargetOptions & Options ) : MCTargetAsmParser ( Options , sti ) , STI ( sti ) , Parser ( parser ) { MCAsmParserExtension :: Initialize ( Parser ) ;" LLVM,RISCV,189,"Predict the next statement of this code snippet: Operand ( OperandKind kind , SMLoc startLoc , SMLoc endLoc ) : Kind ( kind ) , StartLoc ( startLoc ) , EndLoc ( endLoc ) {" LLVM,RISCV,190,"Predict the next statement of this code snippet: Operand ( OperandKind kind , SMLoc startLoc , SMLoc endLoc ) : Kind ( kind ) , StartLoc ( startLoc ) , EndLoc ( endLoc ) {" LLVM,RISCV,191,"Predict the next statement of this code snippet: void addCSRSystemRegisterOperands ( MCInst & Inst , unsigned N ) const { assert ( N == && ) ; Inst . addOperand ( MCOperand :: createImm ( SysReg . Encoding ) ) ;" LLVM,RISCV,192,"Predict the next statement of this code snippet: int64_t Imm = ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,193,"Predict the next statement of this code snippet: bool IsConstant = evaluateConstantImm ( Expr , Imm , VK ) ; if ( IsConstant ) Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ; else Inst . addOperand ( MCOperand :: createExpr ( Expr ) ) ;" LLVM,RISCV,194,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( evaluateConstantImm ( getImm ( ) , Constant , VK ) ) { if ( Constant == ) { Inst . addOperand ( MCOperand :: createImm ( Constant ) ) ; return ; } llvm_unreachable ( ) ; } auto SE = cast < MCSymbolRefExpr > ( getImm ( ) ) ; unsigned Imm = ; for ( char c : SE -> getSymbol ( ) . getName ( ) ) { switch ( c ) { default : llvm_unreachable ( ) ; case 'i' : Imm |= ; break ; case 'o' : Imm |= ; break ;" LLVM,RISCV,195,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( getRoundingMode ( ) ) ) ;" LLVM,RISCV,196,"Predict the next statement of this code snippet: void addImmOperands ( MCInst & Inst , unsigned N ) const {" LLVM,RISCV,197,"Predict the next statement of this code snippet: assert ( N == && ) ; addExpr ( Inst , getImm ( ) ) ;" LLVM,RISCV,198,"Predict the next statement of this code snippet: assert ( N == && ) ;" LLVM,RISCV,199,"Predict the next statement of this code snippet: assert ( N == && ) ;" LLVM,RISCV,200,"Predict the next statement of this code snippet: assert ( N == && ) ; int64_t Imm = ; if ( Kind == KindTy :: Immediate ) { MCExpr :: VariantKind VK = MCExpr :: VK__None ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; ( void ) IsConstantImm ;" LLVM,RISCV,201,"Predict the next statement of this code snippet: SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ;" LLVM,RISCV,202,"Predict the next statement of this code snippet: Expr = RE -> getSubExpr ( ) ; } MCValue Res ; MCFixup Fixup ; if ( Expr -> evaluateAsRelocatable ( Res , nullptr , & Fixup ) ) return Res . getRefKind ( ) == MCExpr :: VK__None ; return false ;" LLVM,RISCV,203,"Predict the next statement of this code snippet: bool AsmParser :: classifySymbolRef ( const MCExpr * Expr , MCExpr :: VariantKind & Kind ) { Kind = MCExpr :: VK__None ;" LLVM,RISCV,204,"Predict the next statement of this code snippet: if ( getSTI ( ) . getFeatureBits ( ) [ Feature ] ) {" LLVM,RISCV,205,"Predict the next statement of this code snippet: assert ( Reg >= && Reg <= && ) ; return Reg - + ;" LLVM,RISCV,206,"Predict the next statement of this code snippet: assert ( Reg >= && Reg <= && ) ; return Reg - + ;" LLVM,RISCV,207,"Predict the next statement of this code snippet: else if ( Kind == MCK_VRM8 ) RegClassID = ; else return ; return RI . getMatchingSuperReg ( Reg , , & MCRegisterClasses [ RegClassID ] ) ;" LLVM,RISCV,208,"Predict the next statement of this code snippet: Op -> StartLoc = S ; Op -> EndLoc = E ; Op -> IsRV64 = IsRV64 ; return Op ;" LLVM,RISCV,209,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createReg ( unsigned RegNo , SMLoc S , SMLoc E , bool IsRV64 , bool IsGPRAsFPR = false ) { auto Op = std :: make_unique < Operand > ( KindTy :: Register ) ;" LLVM,RISCV,210,"Predict the next statement of this code snippet: Op -> SysReg . Data = Str . data ( ) ; Op -> SysReg . Length = Str . size ( ) ; Op -> SysReg . Encoding = Encoding ;" LLVM,RISCV,211,"Predict the next statement of this code snippet: auto Op = std :: make_unique < Operand > ( KindTy :: Token ) ; Op -> Tok = Str ;" LLVM,RISCV,212,"Predict the next statement of this code snippet: Op -> VType . Val = VTypeI ; Op -> StartLoc = S ;" LLVM,RISCV,213,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createVType ( unsigned VTypeI , SMLoc S , bool IsRV64 ) { auto Op = std :: make_unique < Operand > ( KindTy :: VType ) ; Op -> VType . Val = VTypeI ;" LLVM,RISCV,214,"Predict the next statement of this code snippet: std :: unique_ptr < Operand > AsmParser :: defaultMaskRegOp ( ) const { return Operand :: createReg ( , llvm :: SMLoc ( ) , llvm :: SMLoc ( ) , isRV64 ( ) ) ;" LLVM,RISCV,215,"Predict the next statement of this code snippet: MCSymbol * TmpLabel = Ctx . createNamedTempSymbol ( ) ; Out . emitLabel ( TmpLabel ) ; const MCExpr * SymbolHi = MCExpr :: create ( Symbol , VKHi , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( TmpReg ) . addExpr ( SymbolHi ) ) ;" LLVM,RISCV,216,"Predict the next statement of this code snippet: MCSymbol * TmpLabel = Ctx . createNamedTempSymbol ( ) ; Out . emitLabel ( TmpLabel ) ; const MCExpr * SymbolHi = MCExpr :: create ( Symbol , VKHi , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( TmpReg ) . addExpr ( SymbolHi ) ) ;" LLVM,RISCV,217,"Predict the next statement of this code snippet: void AsmParser :: emitLoadAddress ( MCInst & Inst , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ; const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ; unsigned SecondOpcode ; MCExpr :: VariantKind VKHi ; if ( ParserOptions . IsPicEnabled ) { SecondOpcode = isRV64 ( ) ? : ;" LLVM,RISCV,218,"Predict the next statement of this code snippet: switch ( Inst . getOpndKind ( ) ) { case : emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; break ; case : emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addReg ( ) ) ; break ; case : emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addReg ( SrcReg ) ) ; break ;" LLVM,RISCV,219,"Predict the next statement of this code snippet: MCOperand DestReg = Inst . getOperand ( ) ;" LLVM,RISCV,220,"Predict the next statement of this code snippet: const MCExpr * Symbol = Inst . getOperand ( SymbolOpIdx ) . getExpr ( ) ; emitAuipcInstPair ( DestReg , TmpReg , Symbol , MCExpr :: VK__PCREL_HI , Opcode , IDLoc , Out ) ;" LLVM,RISCV,221,"Predict the next statement of this code snippet: const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ;" LLVM,RISCV,222,"Predict the next statement of this code snippet: emitAuipcInstPair ( DestReg , DestReg , Symbol , MCExpr :: VK__TLS_GD_HI , , IDLoc , Out ) ;" LLVM,RISCV,223,"Predict the next statement of this code snippet: MCOperand DestReg = Inst . getOperand ( ) ; const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ; unsigned SecondOpcode = isRV64 ( ) ? : ;" LLVM,RISCV,224,"Predict the next statement of this code snippet: void AsmParser :: emitPseudoExtend ( MCInst & Inst , bool SignExtend , int64_t Width , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ; MCOperand SourceReg = Inst . getOperand ( ) ; unsigned SecondOpcode = SignExtend ? : ; int64_t ShAmt = ( isRV64 ( ) ? : ) - Width ; assert ( ShAmt > && ) ;" LLVM,RISCV,225,"Predict the next statement of this code snippet: void AsmParser :: emitPseudoExtend ( MCInst & Inst , bool SignExtend , int64_t Width , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ; MCOperand SourceReg = Inst . getOperand ( ) ;" LLVM,RISCV,226,"Predict the next statement of this code snippet: MCInst CInst ; bool Res = compressInst ( CInst , Inst , getSTI ( ) , S . getContext ( ) ) ;" LLVM,RISCV,227,"Predict the next statement of this code snippet: } else if ( Inst . getNumOperands ( ) == && Inst . getOperand ( ) . getReg ( ) == ) { assert ( Inst . getOperand ( ) . getReg ( ) == && ) ; assert ( Inst . getOperand ( ) . getReg ( ) != && ) ; emitToStreamer ( Out , MCInstBuilder ( Opcode ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ; } else if ( Inst . getNumOperands ( ) == ) { assert ( Inst . getOperand ( ) . getReg ( ) != && ) ;" LLVM,RISCV,228,"Predict the next statement of this code snippet: return RE -> evaluateAsConstant ( Imm ) ; } if ( auto CE = dyn_cast < MCConstantExpr > ( Expr ) ) {" LLVM,RISCV,229,"Predict the next statement of this code snippet: return Error ( ErrorLoc , Msg + + Twine ( Lower ) + + Twine ( Upper ) + ) ;" LLVM,RISCV,230,"Predict the next statement of this code snippet: SMLoc getEndLoc ( ) const override { return EndLoc ;" LLVM,RISCV,231,"Predict the next statement of this code snippet: return EndLoc ;" LLVM,RISCV,232,"Predict the next statement of this code snippet: bool getFeatureBits ( uint64_t Feature ) {" LLVM,RISCV,233,"Predict the next statement of this code snippet: return getSTI ( ) . getFeatureBits ( ) [ Feature ] ;" LLVM,RISCV,234,"Predict the next statement of this code snippet: assert ( Kind == KindTy :: Immediate && ) ; return Imm . Val ;" LLVM,RISCV,235,"Predict the next statement of this code snippet: SMLoc getLoc ( ) const {" LLVM,RISCV,236,"Predict the next statement of this code snippet: SMLoc getLoc ( ) const {" LLVM,RISCV,237,"Predict the next statement of this code snippet: assert ( Kind == KindTy :: Register && ) ;" LLVM,RISCV,238,"Predict the next statement of this code snippet: FRM = ( SE -> getSymbol ( ) . getName ( ) ) ;" LLVM,RISCV,239,"Predict the next statement of this code snippet: FRM = ( SE -> getSymbol ( ) . getName ( ) ) ;" LLVM,RISCV,240,"Predict the next statement of this code snippet: SMLoc getStartLoc ( ) const override {" LLVM,RISCV,241,"Predict the next statement of this code snippet: SMLoc getStartLoc ( ) const override { return StartLoc ;" LLVM,RISCV,242,"Predict the next statement of this code snippet: StringRef getSysReg ( ) const { assert ( Kind == KindTy :: SystemRegister && ) ;" LLVM,RISCV,243,"Predict the next statement of this code snippet: StringRef getSysReg ( ) const { assert ( Kind == KindTy :: SystemRegister && ) ; return StringRef ( SysReg . Data , SysReg . Length ) ;" LLVM,RISCV,244,"Predict the next statement of this code snippet: assert ( Kind == KindTy :: Token && ) ; return Tok ;" LLVM,RISCV,245,"Predict the next statement of this code snippet: unsigned getVType ( ) const {" LLVM,RISCV,246,"Predict the next statement of this code snippet: unsigned getVType ( ) const { assert ( Kind == KindTy :: VType && ) ;" LLVM,RISCV,247,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,248,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK ) ;" LLVM,RISCV,249,"Predict the next statement of this code snippet: bool isBareSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ; return AsmParser :: classifySymbolRef ( getImm ( ) , VK ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,250,"Predict the next statement of this code snippet: bool isBareSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,251,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,252,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ;" LLVM,RISCV,253,"Predict the next statement of this code snippet: return IsConstantImm && ( Imm != ) && ( isUInt < > ( Imm ) || ( Imm >= && Imm <= ) ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,254,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,255,"Predict the next statement of this code snippet: bool isCSRSystemRegister ( ) const {" LLVM,RISCV,256,"Predict the next statement of this code snippet: char Prev = '\0' ; for ( char c : Str ) { if ( c != 'i' && c != 'o' && c != 'r' && c != 'w' ) return false ; if ( c <= Prev ) return false ;" LLVM,RISCV,257,"Predict the next statement of this code snippet: auto * SVal = dyn_cast < MCSymbolRefExpr > ( getImm ( ) ) ; if ( ! SVal || SVal -> getKind ( ) != MCSymbolRefExpr :: VK_None ) return false ; StringRef Str = SVal -> getSymbol ( ) . getName ( ) ; char Prev = '\0' ; for ( char c : Str ) { if ( c != 'i' && c != 'o' && c != 'r' && c != 'w' ) return false ;" LLVM,RISCV,258,"Predict the next statement of this code snippet: auto * SVal = dyn_cast < MCSymbolRefExpr > ( Val ) ; if ( ! SVal || SVal -> getKind ( ) != MCSymbolRefExpr :: VK_None ) return false ; StringRef Str = SVal -> getSymbol ( ) . getName ( ) ;" LLVM,RISCV,259,"Predict the next statement of this code snippet: const MCExpr * Val = getImm ( ) ; auto * SVal = dyn_cast < MCSymbolRefExpr > ( Val ) ;" LLVM,RISCV,260,"Predict the next statement of this code snippet: return isGPR ( ) && IsGPRAsFPR ;" LLVM,RISCV,261,"Predict the next statement of this code snippet: bool isGPRAsFPR ( ) const { return isGPR ( ) && IsGPRAsFPR ;" LLVM,RISCV,262,"Predict the next statement of this code snippet: return isGPR ( ) && IsGPRAsFPR && IsRV64 ;" LLVM,RISCV,263,"Predict the next statement of this code snippet: bool isGPRF64AsFPR ( ) const { return isGPR ( ) && IsGPRAsFPR && IsRV64 ;" LLVM,RISCV,264,"Predict the next statement of this code snippet: bool isGPRPF64AsFPR ( ) const {" LLVM,RISCV,265,"Predict the next statement of this code snippet: return isGPR ( ) && IsGPRAsFPR && ! IsRV64 && ! ( ( Reg . RegNum - ) & ) ;" LLVM,RISCV,266,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ;" LLVM,RISCV,267,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( VK == MCExpr :: VK__LO || VK == MCExpr :: VK__PCREL_LO ) return true ;" LLVM,RISCV,268,"Predict the next statement of this code snippet: bool isImmZero ( ) const { if ( ! isImm ( ) ) return false ; int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,269,"Predict the next statement of this code snippet: bool isMem ( ) const override { return false ;" LLVM,RISCV,270,"Predict the next statement of this code snippet: return false ;" LLVM,RISCV,271,"Predict the next statement of this code snippet: bool isPseudoJumpSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ;" LLVM,RISCV,272,"Predict the next statement of this code snippet: bool isPseudoJumpSymbol ( ) const { int64_t Imm ;" LLVM,RISCV,273,"Predict the next statement of this code snippet: bool isRnumArg ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && Imm >= INT64_C ( ) && Imm <= INT64_C ( ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,274,"Predict the next statement of this code snippet: return getSTI ( ) . hasFeature ( ) ;" LLVM,RISCV,275,"Predict the next statement of this code snippet: return getSTI ( ) . hasFeature ( ) ;" LLVM,RISCV,276,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && ( Imm != ) && isShiftedInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,277,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,278,"Predict the next statement of this code snippet: int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,279,"Predict the next statement of this code snippet: bool isSImm12Lsb0 ( ) const { return isBareSimmNLsb0 < > ( ) ;" LLVM,RISCV,280,"Predict the next statement of this code snippet: return isBareSimmNLsb0 < > ( ) ;" LLVM,RISCV,281,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,282,"Predict the next statement of this code snippet: bool isSImm5 ( ) const { if ( ! isImm ( ) ) return false ;" LLVM,RISCV,283,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,284,"Predict the next statement of this code snippet: bool isSImm5Plus1 ( ) const { if ( ! isImm ( ) ) return false ;" LLVM,RISCV,285,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,286,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,287,"Predict the next statement of this code snippet: return isBareSimmNLsb0 < > ( ) ;" LLVM,RISCV,288,"Predict the next statement of this code snippet: bool isSystemRegister ( ) const { return Kind == KindTy :: SystemRegister ;" LLVM,RISCV,289,"Predict the next statement of this code snippet: bool isSystemRegister ( ) const {" LLVM,RISCV,290,"Predict the next statement of this code snippet: bool isToken ( ) const override { return Kind == KindTy :: Token ;" LLVM,RISCV,291,"Predict the next statement of this code snippet: return Kind == KindTy :: Token ;" LLVM,RISCV,292,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ;" LLVM,RISCV,293,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,294,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,295,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,296,"Predict the next statement of this code snippet: return isUInt < > ( Imm ) && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI ) ;" LLVM,RISCV,297,"Predict the next statement of this code snippet: return IsValid && ( VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI ) ; } else { return isUInt < > ( Imm ) && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI ) ; }" LLVM,RISCV,298,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK ) ;" LLVM,RISCV,299,"Predict the next statement of this code snippet: bool isUImm3 ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,300,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,301,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ;" LLVM,RISCV,302,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,303,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,304,"Predict the next statement of this code snippet: bool isUImm8Lsb00 ( ) const { if ( ! isImm ( ) ) return false ; int64_t Imm ;" LLVM,RISCV,305,"Predict the next statement of this code snippet: bool isUImm8Lsb00 ( ) const { if ( ! isImm ( ) ) return false ; int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,306,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,307,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,308,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,309,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; int64_t Imm ;" LLVM,RISCV,310,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; if ( ! evaluateConstantImm ( getImm ( ) , Imm , VK ) || VK != MCExpr :: VK__None ) return false ; return ( isRV64 ( ) && isUInt < > ( Imm ) ) || isUInt < > ( Imm ) ;" LLVM,RISCV,311,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; if ( ! evaluateConstantImm ( getImm ( ) , Imm , VK ) || VK != MCExpr :: VK__None ) return false ;" LLVM,RISCV,312,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; if ( ! evaluateConstantImm ( getImm ( ) , Imm , VK ) || VK != MCExpr :: VK__None ) return false ; return ( isRV64 ( ) && isUInt < > ( Imm ) ) || isUInt < > ( Imm ) ;" LLVM,RISCV,313,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; if ( ! evaluateConstantImm ( getImm ( ) , Imm , VK ) || VK != MCExpr :: VK__None ) return false ;" LLVM,RISCV,314,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; if ( ! evaluateConstantImm ( getImm ( ) , Imm , VK ) || VK != MCExpr :: VK__None ) return false ; if ( Imm == ) return false ; return ( isRV64 ( ) && isUInt < > ( Imm ) ) || isUInt < > ( Imm ) ;" LLVM,RISCV,315,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; if ( ! evaluateConstantImm ( getImm ( ) , Imm , VK ) || VK != MCExpr :: VK__None ) return false ; if ( Imm == ) return false ; return ( isRV64 ( ) && isUInt < > ( Imm ) ) || isUInt < > ( Imm ) ;" LLVM,RISCV,316,"Predict the next statement of this code snippet: return Kind == KindTy :: Register && Reg . RegNum == ;" LLVM,RISCV,317,"Predict the next statement of this code snippet: bool isV0Reg ( ) const {" LLVM,RISCV,318,"Predict the next statement of this code snippet: bool isVTypeI10 ( ) const {" LLVM,RISCV,319,"Predict the next statement of this code snippet: if ( Kind == KindTy :: Immediate ) return isVTypeImm ( ) ;" LLVM,RISCV,320,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,321,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ;" LLVM,RISCV,322,"Predict the next statement of this code snippet: RegisterMCAsmParser < AsmParser > X ( getThe32Target ( ) ) ;" LLVM,RISCV,323,"Predict the next statement of this code snippet: RegNo = MatchRegisterName ( Name ) ; assert ( ! ( RegNo >= && RegNo <= ) ) ; assert ( ! ( RegNo >= && RegNo <= ) ) ; static_assert ( < , ) ; static_assert ( < , ) ; if ( RegNo == ) RegNo = MatchRegisterAltName ( Name ) ; if ( IsRV32E && RegNo >= && RegNo <= ) RegNo = ;" LLVM,RISCV,324,"Predict the next statement of this code snippet: SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) + Identifier . size ( ) ) ; if ( Identifier . consume_back ( ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; if ( Sym -> isVariable ( ) ) { const MCExpr * V = Sym -> getVariableValue ( false ) ; if ( ! isa < MCSymbolRefExpr > ( V ) ) { getLexer ( ) . UnLex ( Tok ) ; return MatchOperand_NoMatch ; }" LLVM,RISCV,325,"Predict the next statement of this code snippet: if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; if ( getLexer ( ) . peekTok ( ) . getKind ( ) != AsmToken :: EndOfStatement ) return MatchOperand_NoMatch ; StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) + Identifier . size ( ) ) ; MCExpr :: VariantKind Kind = MCExpr :: VK__CALL ; if ( Identifier . consume_back ( ) ) Kind = MCExpr :: VK__CALL_PLT ;" LLVM,RISCV,326,"Predict the next statement of this code snippet: if ( CE ) { int64_t Imm = CE -> getValue ( ) ; if ( isUInt < > ( Imm ) ) { auto SysReg = ( Imm ) ; Operands . push_back ( Operand :: createSysReg ( SysReg ? SysReg -> Name : , S , Imm , isRV64 ( ) ) ) ; return MatchOperand_Success ; } } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; } case AsmToken :: Identifier : { StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; auto SysReg = ( Identifier ) ; if ( ! SysReg ) SysReg = ( Identifier ) ; if ( ! SysReg ) if ( ( SysReg = ( Identifier ) ) ) Warning ( S , + Identifier + + SysReg -> Name + ) ; if ( SysReg ) { if ( ! SysReg -> haveRequiredFeatures ( getSTI ( ) . getFeatureBits ( ) ) ) { Error ( S , ) ; return MatchOperand_ParseFail ; } Operands . push_back ( Operand :: createSysReg ( Identifier , S , SysReg -> Encoding , isRV64 ( ) ) ) ; return MatchOperand_Success ; } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ;" LLVM,RISCV,327,"Predict the next statement of this code snippet: OperandMatchResultTy AsmParser :: parseCSRSystemRegister ( OperandVector & Operands ) { SMLoc S = getLoc ( ) ; const MCExpr * Res ; switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: LParen : case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Exclaim : case AsmToken :: Tilde : case AsmToken :: Integer : case AsmToken :: String : { if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; auto * CE = dyn_cast < MCConstantExpr > ( Res ) ; if ( CE ) { int64_t Imm = CE -> getValue ( ) ; if ( isUInt < > ( Imm ) ) { auto SysReg = ( Imm ) ; Operands . push_back ( Operand :: createSysReg ( SysReg ? SysReg -> Name : , S , Imm , isRV64 ( ) ) ) ; return MatchOperand_Success ; } } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; } case AsmToken :: Identifier : { StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; auto SysReg = ( Identifier ) ; if ( ! SysReg ) SysReg = ( Identifier ) ; if ( ! SysReg ) if ( ( SysReg = ( Identifier ) ) ) Warning ( S , + Identifier + + SysReg -> Name + ) ; if ( SysReg ) { if ( ! SysReg -> haveRequiredFeatures ( getSTI ( ) . getFeatureBits ( ) ) ) { Error ( S , ) ; return MatchOperand_ParseFail ; } Operands . push_back ( Operand :: createSysReg ( Identifier , S , SysReg -> Encoding , isRV64 ( ) ) ) ; return MatchOperand_Success ; } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; } case AsmToken :: Percent : { Twine Msg = ;" LLVM,RISCV,328,"Predict the next statement of this code snippet: StringRef IDVal = DirectiveID . getString ( ) ; if ( IDVal == ) return parseDirectiveOption ( ) ; if ( IDVal == ) return parseDirectiveAttribute ( ) ; if ( IDVal == ) return parseDirectiveInsn ( DirectiveID . getLoc ( ) ) ;" LLVM,RISCV,329,"Predict the next statement of this code snippet: bool IsIntegerValue = true ; if ( Tag % ) IsIntegerValue = false ; SMLoc ValueExprLoc = Parser . getTok ( ) . getLoc ( ) ; if ( IsIntegerValue ) { const MCExpr * ValueExpr ; if ( Parser . parseExpression ( ValueExpr ) ) return true ; const MCConstantExpr * CE = dyn_cast < MCConstantExpr > ( ValueExpr ) ; if ( ! CE ) return Error ( ValueExprLoc , ) ; IntegerValue = CE -> getValue ( ) ; } else { if ( Parser . getTok ( ) . isNot ( AsmToken :: String ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; StringValue = Parser . getTok ( ) . getStringContents ( ) ; Parser . Lex ( ) ; } if ( Parser . parseToken ( AsmToken :: EndOfStatement , ) ) return true ; if ( IsIntegerValue ) getTargetStreamer ( ) . emitAttribute ( Tag , IntegerValue ) ; else if ( Tag != ) getTargetStreamer ( ) . emitTextAttribute ( Tag , StringValue ) ; else { StringRef Arch = StringValue ; for ( auto Feature : FeatureKV ) if ( llvm :: ( Feature . Key ) ) clearFeatureBits ( Feature . Value , Feature . Key ) ; auto ParseResult = llvm :: ( StringValue , true , true ) ; if ( ! ParseResult ) { std :: string Buffer ; raw_string_ostream OutputErrMsg ( Buffer ) ; handleAllErrors ( ParseResult . takeError ( ) , [ & ] ( llvm :: StringError & ErrMsg ) { OutputErrMsg << << Arch << << ErrMsg . getMessage ( ) ;" LLVM,RISCV,330,"Predict the next statement of this code snippet: SmallVector < std :: unique_ptr < MCParsedAsmOperand > , > Operands ; if ( ParseInstruction ( Info , FormatName , L , Operands ) ) return true ; unsigned Opcode ; uint64_t ErrorInfo ; return MatchAndEmitInstruction ( L , Opcode , Operands , Parser . getStreamer ( ) , ErrorInfo , false ) ;" LLVM,RISCV,331,"Predict the next statement of this code snippet: AsmToken Tok = Parser . getTok ( ) ; if ( Tok . isNot ( AsmToken :: Identifier ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; StringRef Option = Tok . getIdentifier ( ) ; if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionPush ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; pushFeatureBits ( ) ; return false ; } if ( Option == ) { SMLoc StartLoc = Parser . getTok ( ) . getLoc ( ) ; getTargetStreamer ( ) . emitDirectiveOptionPop ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; if ( popFeatureBits ( ) ) return Error ( StartLoc , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionRVC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; setFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoRVC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; clearFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionPIC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; ParserOptions . IsPicEnabled = true ; return false ;" LLVM,RISCV,332,"Predict the next statement of this code snippet: switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; MCRegister RegNo ; matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) return MatchOperand_NoMatch ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ;" LLVM,RISCV,333,"Predict the next statement of this code snippet: case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Exclaim : case AsmToken :: Tilde : case AsmToken :: Integer : case AsmToken :: String : case AsmToken :: Identifier : if ( getParser ( ) . parseExpression ( Res , E ) ) return MatchOperand_ParseFail ; break ;" LLVM,RISCV,334,"Predict the next statement of this code snippet: case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Exclaim : case AsmToken :: Tilde : case AsmToken :: Integer : case AsmToken :: String : case AsmToken :: Identifier : if ( getParser ( ) . parseExpression ( Res , E ) ) return MatchOperand_ParseFail ; break ; case AsmToken :: Percent : return parseOperandWithModifier ( Operands ) ; }" LLVM,RISCV,335,"Predict the next statement of this code snippet: if ( parseOperand ( Operands , Name ) ) return true ; while ( getLexer ( ) . is ( AsmToken :: Comma ) ) { getLexer ( ) . Lex ( ) ; if ( parseOperand ( Operands , Name ) ) return true ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ; return Error ( Loc , ) ; } getParser ( ) . Lex ( ) ;" LLVM,RISCV,336,"Predict the next statement of this code snippet: if ( RegNo == ) return MatchOperand_NoMatch ; if ( RegNo != ) return MatchOperand_NoMatch ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) + Name . size ( ) ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ;" LLVM,RISCV,337,"Predict the next statement of this code snippet: if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) , isRV64 ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,338,"Predict the next statement of this code snippet: Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) , isRV64 ( ) ) ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ;" LLVM,RISCV,339,"Predict the next statement of this code snippet: if ( parseRegister ( Operands , true ) == MatchOperand_Success ) return false ; if ( parseImmediate ( Operands ) == MatchOperand_Success ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ;" LLVM,RISCV,340,"Predict the next statement of this code snippet: Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( getLexer ( ) . getKind ( ) != AsmToken :: LParen ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; const MCExpr * SubExpr ;" LLVM,RISCV,341,"Predict the next statement of this code snippet: Res = MCExpr :: create ( Res , MCExpr :: VK__CALL , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,342,"Predict the next statement of this code snippet: matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS , isRV64 ( ) ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) + Name . size ( ) ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ; } if ( HadParens ) { getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) , isRV64 ( ) ) ) ;" LLVM,RISCV,343,"Predict the next statement of this code snippet: Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( OptionalImmOp && ! OptionalImmOp -> isImmZero ( ) ) { Error ( OptionalImmOp -> getStartLoc ( ) , , SMRange ( OptionalImmOp -> getStartLoc ( ) , OptionalImmOp -> getEndLoc ( ) ) ) ; return MatchOperand_ParseFail ;" LLVM,RISCV,344,"Predict the next statement of this code snippet: std :: unique_ptr < Operand > OptionalImmOp ; if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { int64_t ImmVal ; SMLoc ImmStart = getLoc ( ) ; if ( getParser ( ) . parseIntToken ( ImmVal , ) ) return MatchOperand_ParseFail ; SMLoc ImmEnd = getLoc ( ) ; OptionalImmOp = Operand :: createImm ( MCConstantExpr :: create ( ImmVal , getContext ( ) ) , ImmStart , ImmEnd , isRV64 ( ) ) ; } if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { Error ( getLoc ( ) , OptionalImmOp ? : ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; }" LLVM,RISCV,345,"Predict the next statement of this code snippet: copySTI ( ) . setFeatureBits ( FeatureBits ) ; setAvailableFeatures ( ComputeAvailableFeatures ( FeatureBits ) ) ; ParserOptions = ParserOptionsStack . pop_back_val ( ) ;" LLVM,RISCV,346,"Predict the next statement of this code snippet: bool popFeatureBits ( ) { assert ( FeatureBitStack . size ( ) == ParserOptionsStack . size ( ) && ) ; if ( FeatureBitStack . empty ( ) ) return true ; FeatureBitset FeatureBits = FeatureBitStack . pop_back_val ( ) ; copySTI ( ) . setFeatureBits ( FeatureBits ) ; setAvailableFeatures ( ComputeAvailableFeatures ( FeatureBits ) ) ; ParserOptions = ParserOptionsStack . pop_back_val ( ) ;" LLVM,RISCV,347,"Predict the next statement of this code snippet: case KindTy :: Immediate : OS << * getImm ( ) ; break ; case KindTy :: Register : OS << << RegName ( getReg ( ) ) << ; break ; case KindTy :: Token : OS << << getToken ( ) << ; break ; case KindTy :: SystemRegister : OS << << getSysReg ( ) << '>' ; break ; case KindTy :: VType : OS << ; VType :: printVType ( getVType ( ) , OS ) ; OS << '>' ;" LLVM,RISCV,348,"Predict the next statement of this code snippet: switch ( Kind ) { case KindTy :: Immediate : OS << * getImm ( ) ; break ; case KindTy :: Register : OS << << RegName ( getReg ( ) ) << ; break ;" LLVM,RISCV,349,"Predict the next statement of this code snippet: FeatureBitStack . push_back ( getSTI ( ) . getFeatureBits ( ) ) ; ParserOptionsStack . push_back ( ParserOptions ) ;" LLVM,RISCV,350,"Predict the next statement of this code snippet: void pushFeatureBits ( ) { assert ( FeatureBitStack . size ( ) == ParserOptionsStack . size ( ) && ) ;" LLVM,RISCV,351,"Predict the next statement of this code snippet: if ( ABIName . endswith ( ) && ! getSTI ( ) . getFeatureBits ( ) [ ] ) { errs ( ) << ; } else if ( ABIName . endswith ( ) && ! getSTI ( ) . getFeatureBits ( ) [ ] ) { errs ( ) << ; } ( STI . getTargetTriple ( ) , STI . getFeatureBits ( ) , ABIName ) ; const MCObjectFileInfo * MOFI = Parser . getContext ( ) . getObjectFileInfo ( ) ; ParserOptions . IsPicEnabled = MOFI -> isPositionIndependent ( ) ;" LLVM,RISCV,352,"Predict the next statement of this code snippet: if ( ! ( getSTI ( ) . getFeatureBits ( ) [ Feature ] ) ) { MCSubtargetInfo & STI = copySTI ( ) ; setAvailableFeatures ( ComputeAvailableFeatures ( STI . ToggleFeature ( FeatureString ) ) ) ; }" LLVM,RISCV,353,"Predict the next statement of this code snippet: OperandMatchResultTy AsmParser :: tryParseRegister ( unsigned & RegNo , SMLoc & StartLoc , SMLoc & EndLoc ) {" LLVM,RISCV,354,"Predict the next statement of this code snippet: RegNo = ; StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( matchRegisterNameHelper ( isRV32E ( ) , ( MCRegister & ) RegNo , Name ) ) return MatchOperand_NoMatch ; getParser ( ) . Lex ( ) ; return MatchOperand_Success ;" LLVM,RISCV,355,"Predict the next statement of this code snippet: bool AsmParser :: validateInstruction ( MCInst & Inst , OperandVector & Operands ) { if ( Inst . getOpcode ( ) == || Inst . getOpcode ( ) == ) { unsigned DestReg = Inst . getOperand ( ) . getReg ( ) ; unsigned TempReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == TempReg ) { SMLoc Loc = Operands . back ( ) -> getStartLoc ( ) ; return Error ( Loc , ) ; } } const MCInstrDesc & MCID = MII . get ( Inst . getOpcode ( ) ) ; Constraints = ( MCID . TSFlags ) ; if ( Constraints == ) return false ; unsigned DestReg = Inst . getOperand ( ) . getReg ( ) ; SMLoc Loc = Operands [ ] -> getStartLoc ( ) ; if ( Constraints & ) { unsigned CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( Constraints & ) && ( Inst . getOperand ( ) . isReg ( ) ) ) { unsigned CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( Constraints & ) && ( DestReg == ) ) { unsigned Opcode = Inst . getOpcode ( ) ; if ( Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == ) return Error ( Loc , ) ; unsigned CheckReg = Inst . getOperand ( Inst . getNumOperands ( ) - ) . getReg ( ) ; assert ( ( CheckReg == || CheckReg == ) && ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ;" LLVM,RISCV,356,"Predict the next statement of this code snippet: bool IsRegFPR64 = MCRegisterClasses [ ] . contains ( Reg ) ; bool IsRegFPR64C = MCRegisterClasses [ ] . contains ( Reg ) ; bool IsRegVR = MCRegisterClasses [ ] . contains ( Reg ) ; if ( ( IsRegFPR64 && Kind == MCK_FPR32 ) || ( IsRegFPR64C && Kind == MCK_FPR32C ) ) { Op . Reg . RegNum = convertFPR64ToFPR32 ( Reg ) ; return Match_Success ; } if ( IsRegFPR64 && Kind == MCK_FPR16 ) { Op . Reg . RegNum = convertFPR64ToFPR16 ( Reg ) ; return Match_Success ; } if ( IsRegVR && ( Kind == MCK_VRM2 || Kind == MCK_VRM4 || Kind == MCK_VRM8 ) ) { Op . Reg . RegNum = convertVRToVRMx ( * getContext ( ) . getRegisterInfo ( ) , Reg , Kind ) ;" LLVM,RISCV,357,"Predict the next statement of this code snippet: void AsmParser :: emitLoadImm ( MCRegister DestReg , int64_t Value , MCStreamer & Out ) { Seq ; ( Value , isRV64 ( ) , Seq ) ; MCRegister SrcReg = ; for ( & Inst : Seq ) { if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ; } SrcReg = DestReg ; }" LLVM,RISCV,358,"Predict the next statement of this code snippet: for ( & Inst : Seq ) { if ( Inst . Opc == ) {" LLVM,RISCV,359,"Predict the next statement of this code snippet: void AsmParser :: emitLoadStoreSymbol ( MCInst & Inst , unsigned Opcode , SMLoc IDLoc , MCStreamer & Out , bool HasTmpReg ) { MCOperand DestReg = Inst . getOperand ( ) ; unsigned SymbolOpIdx = HasTmpReg ? : ; unsigned TmpRegOpIdx = HasTmpReg ? : ;" LLVM,RISCV,360,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( Opcode ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addReg ( ) ) ; } else if ( Inst . getNumOperands ( ) == ) { assert ( Inst . getOperand ( ) . getReg ( ) == && ) ; assert ( Inst . getOperand ( ) . getReg ( ) != && ) ; emitToStreamer ( Out , MCInstBuilder ( Opcode ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ;" LLVM,RISCV,361,"Predict the next statement of this code snippet: assert ( Inst . getOperand ( ) . getReg ( ) == && ) ; assert ( Inst . getOperand ( ) . getReg ( ) != && ) ; emitToStreamer ( Out , MCInstBuilder ( Opcode ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ;" LLVM,RISCV,362,"Predict the next statement of this code snippet: if ( CE ) { int64_t Imm = CE -> getValue ( ) ; if ( isUInt < > ( Imm ) ) { auto SysReg = ( Imm ) ; Operands . push_back ( Operand :: createSysReg ( SysReg ? SysReg -> Name : , S , Imm , isRV64 ( ) ) ) ; return MatchOperand_Success ; } } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; } case AsmToken :: Identifier : { StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; auto SysReg = ( Identifier ) ; if ( ! SysReg ) SysReg = ( Identifier ) ; if ( SysReg ) {" LLVM,RISCV,363,"Predict the next statement of this code snippet: StringRef IDVal = DirectiveID . getString ( ) ; if ( IDVal == ) return parseDirectiveOption ( ) ; else if ( IDVal == ) return parseDirectiveAttribute ( ) ; return true ;" LLVM,RISCV,364,"Predict the next statement of this code snippet: else if ( IDVal == ) return parseDirectiveAttribute ( ) ; return true ;" LLVM,RISCV,365,"Predict the next statement of this code snippet: } if ( ( TargetFlags & ) && ( Inst . getOperand ( ) . isReg ( ) ) ) { unsigned CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( DestReg == ) ) { unsigned Opcode = Inst . getOpcode ( ) ; if ( Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == ) return Error ( Loc , ) ; unsigned CheckReg = Inst . getOperand ( Inst . getNumOperands ( ) - ) . getReg ( ) ; assert ( ( CheckReg == || CheckReg == ) && ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ;" LLVM,RISCV,366,"Predict the next statement of this code snippet: MCRegister Reg = Op . getReg ( ) ; bool IsRegFPR64 = MCRegisterClasses [ ] . contains ( Reg ) ; bool IsRegFPR64C = MCRegisterClasses [ ] . contains ( Reg ) ; if ( ( IsRegFPR64 && Kind == MCK_FPR32 ) || ( IsRegFPR64C && Kind == MCK_FPR32C ) ) { Op . Reg . RegNum = convertFPR64ToFPR32 ( Reg ) ; return Match_Success ; } if ( IsRegFPR64 && Kind == MCK_FPR16 ) { Op . Reg . RegNum = convertFPR64ToFPR16 ( Reg ) ;" LLVM,RISCV,367,"Predict the next statement of this code snippet: void addExpr ( MCInst & Inst , const MCExpr * Expr ) const { assert ( Expr && ) ; int64_t Imm = ; bool IsConstant = false ; if ( auto * RE = dyn_cast < MCExpr > ( Expr ) ) { IsConstant = RE -> evaluateAsConstant ( Imm ) ; } else if ( auto * CE = dyn_cast < MCConstantExpr > ( Expr ) ) { IsConstant = true ; Imm = CE -> getValue ( ) ; }" LLVM,RISCV,368,"Predict the next statement of this code snippet: int64_t Imm = ; bool IsConstant = false ; if ( auto * RE = dyn_cast < MCExpr > ( Expr ) ) { IsConstant = RE -> evaluateAsConstant ( Imm ) ; } else if ( auto * CE = dyn_cast < MCConstantExpr > ( Expr ) ) { IsConstant = true ; Imm = CE -> getValue ( ) ; }" LLVM,RISCV,369,"Predict the next statement of this code snippet: assert ( N == && ) ; auto SE = cast < MCSymbolRefExpr > ( getImm ( ) ) ; unsigned Imm = ; for ( char c : SE -> getSymbol ( ) . getName ( ) ) { switch ( c ) { default : llvm_unreachable ( ) ; case 'i' : Imm |= ; break ; case 'o' : Imm |= ; break ; case 'r' : Imm |= ; break ; case 'w' : Imm |= ; break ; } } Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ;" LLVM,RISCV,370,"Predict the next statement of this code snippet: case 'o' : Imm |= ; break ; case 'r' : Imm |= ; break ; case 'w' : Imm |= ; break ; } }" LLVM,RISCV,371,"Predict the next statement of this code snippet: if ( Hi20 ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Hi20 ) ) ; SrcReg = DestReg ; } if ( Lo12 || Hi20 == ) { unsigned AddiOpcode = STI -> hasFeature ( ) ? : ; emitToStreamer ( Out , MCInstBuilder ( AddiOpcode ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Lo12 ) ) ; } return ; } assert ( STI -> hasFeature ( ) && ) ; int64_t Lo12 = SignExtend64 < > ( Value ) ; int64_t Hi52 = ( Value + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ; Hi52 = SignExtend64 ( Hi52 >> ( ShiftAmount - ) , - ShiftAmount ) ; emitLoadImm ( DestReg , Hi52 , Out ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addReg ( DestReg ) . addImm ( ShiftAmount ) ) ; if ( Lo12 ) emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addReg ( DestReg ) . addImm ( Lo12 ) ) ;" LLVM,RISCV,372,"Predict the next statement of this code snippet: unsigned SrcReg = ; if ( Hi20 ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Hi20 ) ) ; SrcReg = DestReg ; } if ( Lo12 || Hi20 == ) { unsigned AddiOpcode = STI -> hasFeature ( ) ? : ; emitToStreamer ( Out , MCInstBuilder ( AddiOpcode ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Lo12 ) ) ; } return ; } assert ( STI -> hasFeature ( ) && ) ; int64_t Lo12 = SignExtend64 < > ( Value ) ; int64_t Hi52 = ( Value + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ;" LLVM,RISCV,373,"Predict the next statement of this code snippet: Ret = RE -> evaluateAsConstant ( Imm ) ; VK = RE -> getKind ( ) ; } else if ( auto CE = dyn_cast < MCConstantExpr > ( Val ) ) { Ret = true ;" LLVM,RISCV,374,"Predict the next statement of this code snippet: bool evaluateConstantImm ( int64_t & Imm , MCExpr :: VariantKind & VK ) const { const MCExpr * Val = getImm ( ) ; bool Ret = false ;" LLVM,RISCV,375,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isShiftedInt < N - , > ( Imm ) ; return IsValid && VK == MCExpr :: VK__None ;" LLVM,RISCV,376,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; if ( ! isImm ( ) || evaluateConstantImm ( Imm , VK ) ) return false ;" LLVM,RISCV,377,"Predict the next statement of this code snippet: bool isBareSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ;" LLVM,RISCV,378,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,379,"Predict the next statement of this code snippet: bool isSImm10Lsb0000NonZero ( ) const { if ( ! isImm ( ) ) return false ; int64_t Imm ; MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && ( Imm != ) && isShiftedInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,380,"Predict the next statement of this code snippet: bool isSImm12 ( ) const { MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ; return IsValid && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__LO || VK == MCExpr :: VK__PCREL_LO ) ;" LLVM,RISCV,381,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ;" LLVM,RISCV,382,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ; return IsValid && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__LO ) ;" LLVM,RISCV,383,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = ( ( Imm != ) && isInt < > ( Imm ) ) ;" LLVM,RISCV,384,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isShiftedUInt < , > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,385,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ;" LLVM,RISCV,386,"Predict the next statement of this code snippet: return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,387,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ;" LLVM,RISCV,388,"Predict the next statement of this code snippet: int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ;" LLVM,RISCV,389,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,390,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,391,"Predict the next statement of this code snippet: return IsConstantImm && isUInt < > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,392,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; int64_t Imm ;" LLVM,RISCV,393,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,394,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,395,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK ;" LLVM,RISCV,396,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,397,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,398,"Predict the next statement of this code snippet: return ( isRV64 ( ) && isUInt < > ( Imm ) ) || isUInt < > ( Imm ) ;" LLVM,RISCV,399,"Predict the next statement of this code snippet: if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; setFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoRVC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ;" LLVM,RISCV,400,"Predict the next statement of this code snippet: SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; const MCExpr * Res ; switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: LParen : case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Integer : case AsmToken :: String :" LLVM,RISCV,401,"Predict the next statement of this code snippet: unsigned OperandIdx = ; while ( getLexer ( ) . is ( AsmToken :: Comma ) ) { getLexer ( ) . Lex ( ) ; if ( parseOperand ( Operands , shouldForceImediateOperand ( Name , OperandIdx ) ) ) return true ; ++ OperandIdx ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ; return Error ( Loc , ) ; }" LLVM,RISCV,402,"Predict the next statement of this code snippet: if ( ! ForceImmediate && parseRegister ( Operands , true ) == MatchOperand_Success ) return false ; if ( parseImmediate ( Operands ) == MatchOperand_Success ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ; }" LLVM,RISCV,403,"Predict the next statement of this code snippet: if ( parseImmediate ( Operands ) == MatchOperand_Success ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ; }" LLVM,RISCV,404,"Predict the next statement of this code snippet: break ; case Register : OS << ; OS << getReg ( ) << ; break ; case Token : OS << << getToken ( ) << ; break ; }" LLVM,RISCV,405,"Predict the next statement of this code snippet: bool AsmParser :: processInstruction ( MCInst & Inst , SMLoc IDLoc , MCStreamer & Out ) { Inst . setLoc ( IDLoc ) ; if ( Inst . getOpcode ( ) == ) { auto Reg = Inst . getOperand ( ) . getReg ( ) ; int64_t Imm = Inst . getOperand ( ) . getImm ( ) ; if ( ! isRV64 ( ) ) Imm = SignExtend64 < > ( Imm ) ; emitLoadImm ( Reg , Imm , Out ) ; return false ; } else if ( Inst . getOpcode ( ) == ) { emitLoadLocalAddress ( Inst , IDLoc , Out ) ; return false ; } emitToStreamer ( Out , Inst ) ; return false ;" LLVM,RISCV,406,"Predict the next statement of this code snippet: Kind = o . Kind ; IsRV64 = o . IsRV64 ; StartLoc = o . StartLoc ; EndLoc = o . EndLoc ; switch ( Kind ) { case Register : Reg = o . Reg ; break ; case Immediate : Imm = o . Imm ; break ;" LLVM,RISCV,407,"Predict the next statement of this code snippet: Operand ( const Operand & o ) : MCParsedAsmOperand ( ) { Kind = o . Kind ; IsRV64 = o . IsRV64 ; StartLoc = o . StartLoc ; EndLoc = o . EndLoc ; switch ( Kind ) { case Register :" LLVM,RISCV,408,"Predict the next statement of this code snippet: static bool shouldForceImediateOperand ( StringRef Name , unsigned OperandIdx ) { switch ( OperandIdx ) { case : return Name == || Name == ; case :" LLVM,RISCV,409,"Predict the next statement of this code snippet: static bool shouldForceImediateOperand ( StringRef Name , unsigned OperandIdx ) { switch ( OperandIdx ) { case : return Name == || Name == ; case : return Name == ; default : return false ;" LLVM,RISCV,410,"Predict the next statement of this code snippet: if ( parseRegister ( Reg ) ) return Error ( Reg . StartLoc , ) ; if ( Reg . Prefix == 'x' && Reg . Number < ) RegNo = GR32Regs [ Reg . Number ] ; else if ( Reg . Prefix == 'f' && Reg . Number < ) RegNo = FP32Regs [ Reg . Number ] ; else return Error ( Reg . StartLoc , ) ; StartLoc = Reg . StartLoc ; EndLoc = Reg . EndLoc ; return false ;" LLVM,RISCV,411,"Predict the next statement of this code snippet: assert ( Reg >= && Reg <= && ) ;" LLVM,RISCV,412,"Predict the next statement of this code snippet: MCSymbol * TmpLabel = Ctx . createTempSymbol ( , true , false ) ; Out . emitLabel ( TmpLabel ) ; const MCExpr * SymbolHi = MCExpr :: create ( Symbol , VKHi , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( TmpReg ) . addExpr ( SymbolHi ) ) ; const MCExpr * RefToLinkTmpLabel = MCExpr :: create ( MCSymbolRefExpr :: create ( TmpLabel , Ctx ) , MCExpr :: VK__PCREL_LO , Ctx ) ;" LLVM,RISCV,413,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( TmpReg ) . addExpr ( SymbolHi ) ) ; const MCExpr * RefToLinkTmpLabel = MCExpr :: create ( MCSymbolRefExpr :: create ( TmpLabel , Ctx ) , MCExpr :: VK__PCREL_LO , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( SecondOpcode ) . addOperand ( DestReg ) . addOperand ( TmpReg ) . addExpr ( RefToLinkTmpLabel ) ) ;" LLVM,RISCV,414,"Predict the next statement of this code snippet: void AsmParser :: emitLoadAddress ( MCInst & Inst , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ; const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ; unsigned SecondOpcode ; MCExpr :: VariantKind VKHi ; if ( getContext ( ) . getObjectFileInfo ( ) -> isPositionIndependent ( ) ) { SecondOpcode = isRV64 ( ) ? : ; VKHi = MCExpr :: VK__GOT_HI ; } else { SecondOpcode = ; VKHi = MCExpr :: VK__PCREL_HI ; }" LLVM,RISCV,415,"Predict the next statement of this code snippet: void AsmParser :: emitLoadAddress ( MCInst & Inst , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ; const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ;" LLVM,RISCV,416,"Predict the next statement of this code snippet: for ( & Inst : Seq ) { if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ;" LLVM,RISCV,417,"Predict the next statement of this code snippet: Seq ; ( Value , isRV64 ( ) , Seq ) ; Register SrcReg = ; for ( & Inst : Seq ) { if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ; }" LLVM,RISCV,418,"Predict the next statement of this code snippet: return StringRef ( SysReg . Data , SysReg . Length ) ;" LLVM,RISCV,419,"Predict the next statement of this code snippet: StringRef getSysReg ( ) const { assert ( Kind == KindTy :: SystemRegister && ) ;" LLVM,RISCV,420,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; bool IsValid ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ;" LLVM,RISCV,421,"Predict the next statement of this code snippet: bool isBareSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ; return AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,422,"Predict the next statement of this code snippet: if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ;" LLVM,RISCV,423,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,424,"Predict the next statement of this code snippet: if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ;" LLVM,RISCV,425,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ; return IsValid && ( ( IsConstantImm && VK == MCExpr :: VK__None ) || VK == MCExpr :: VK__LO || VK == MCExpr :: VK__PCREL_LO || VK == MCExpr :: VK__TPREL_LO ) ;" LLVM,RISCV,426,"Predict the next statement of this code snippet: int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,427,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,428,"Predict the next statement of this code snippet: bool isTPRelAddSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ; return AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) && VK == MCExpr :: VK__TPREL_ADD ;" LLVM,RISCV,429,"Predict the next statement of this code snippet: IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && ( VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI ) ; } else { return isUInt < > ( Imm ) && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI ) ;" LLVM,RISCV,430,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,431,"Predict the next statement of this code snippet: return IsConstantImm && isUInt < > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,432,"Predict the next statement of this code snippet: static_assert ( < , ) ; if ( RegNo == ) RegNo = MatchRegisterAltName ( Name ) ; if ( IsRV32E && RegNo >= && RegNo <= ) RegNo = ;" LLVM,RISCV,433,"Predict the next statement of this code snippet: if ( isUInt < > ( Imm ) ) { auto SysReg = ( Imm ) ; Operands . push_back ( Operand :: createSysReg ( SysReg ? SysReg -> Name : , S , Imm , isRV64 ( ) ) ) ; return MatchOperand_Success ; } } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; } case AsmToken :: Identifier : { StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; auto SysReg = ( Identifier ) ; if ( SysReg ) { if ( ! SysReg -> haveRequiredFeatures ( getSTI ( ) . getFeatureBits ( ) ) ) { Error ( S , ) ; return MatchOperand_ParseFail ; } Operands . push_back ( Operand :: createSysReg ( Identifier , S , SysReg -> Encoding , isRV64 ( ) ) ) ;" LLVM,RISCV,434,"Predict the next statement of this code snippet: if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS , isRV64 ( ) ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ; } if ( HadParens ) { getParser ( ) . Lex ( ) ;" LLVM,RISCV,435,"Predict the next statement of this code snippet: case KindTy :: Immediate : OS << * getImm ( ) ; break ; case KindTy :: Register : OS << ; OS << getReg ( ) << ; break ; case KindTy :: Token : OS << << getToken ( ) << ; break ; case KindTy :: SystemRegister : OS << << getSysReg ( ) << '>' ; break ; }" LLVM,RISCV,436,"Predict the next statement of this code snippet: case KindTy :: Register : OS << ; OS << getReg ( ) << ; break ; case KindTy :: Token : OS << << getToken ( ) << ; break ; case KindTy :: SystemRegister : OS << << getSysReg ( ) << '>' ; break ; }" LLVM,RISCV,437,"Predict the next statement of this code snippet: return false ; } int64_t Imm = Inst . getOperand ( ) . getImm ( ) ; if ( ! isRV64 ( ) ) Imm = SignExtend64 < > ( Imm ) ; emitLoadImm ( Reg , Imm , Out ) ; return false ; } case : emitLoadLocalAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadTLSIEAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadTLSGDAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ;" LLVM,RISCV,438,"Predict the next statement of this code snippet: Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ; setAvailableFeatures ( ComputeAvailableFeatures ( STI . getFeatureBits ( ) ) ) ; auto ABIName = StringRef ( Options . ABIName ) ; if ( ABIName . endswith ( ) && ! getSTI ( ) . getFeatureBits ( ) [ ] ) { errs ( ) << ; } else if ( ABIName . endswith ( ) && ! getSTI ( ) . getFeatureBits ( ) [ ] ) { errs ( ) << ;" LLVM,RISCV,439,"Predict the next statement of this code snippet: Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ; setAvailableFeatures ( ComputeAvailableFeatures ( STI . getFeatureBits ( ) ) ) ; auto ABIName = StringRef ( Options . ABIName ) ; if ( ABIName . endswith ( ) && ! getSTI ( ) . getFeatureBits ( ) [ ] ) { errs ( ) << ; } else if ( ABIName . endswith ( ) && ! getSTI ( ) . getFeatureBits ( ) [ ] ) { errs ( ) << ;" LLVM,RISCV,440,"Predict the next statement of this code snippet: StartLoc = o . StartLoc ; EndLoc = o . EndLoc ; switch ( Kind ) { case KindTy :: Register : Reg = o . Reg ; break ; case KindTy :: Immediate :" LLVM,RISCV,441,"Predict the next statement of this code snippet: StartLoc = o . StartLoc ; EndLoc = o . EndLoc ; switch ( Kind ) { case KindTy :: Register : Reg = o . Reg ; break ; case KindTy :: Immediate : Imm = o . Imm ; break ;" LLVM,RISCV,442,"Predict the next statement of this code snippet: StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( matchRegisterNameHelper ( isRV32E ( ) , ( Register & ) RegNo , Name ) ) return MatchOperand_NoMatch ;" LLVM,RISCV,443,"Predict the next statement of this code snippet: Operand & Op = static_cast < Operand & > ( AsmOp ) ; if ( ! Op . isReg ( ) ) return Match_InvalidOperand ; Register Reg = Op . getReg ( ) ; bool IsRegFPR64 = MCRegisterClasses [ ] . contains ( Reg ) ; bool IsRegFPR64C = MCRegisterClasses [ ] . contains ( Reg ) ;" LLVM,RISCV,444,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( TmpReg ) . addExpr ( SymbolHi ) ) ; const MCExpr * RefToLinkTmpLabel = MCExpr :: create ( MCSymbolRefExpr :: create ( TmpLabel , Ctx ) , MCExpr :: VK__PCREL_LO , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( SecondOpcode ) . addOperand ( DestReg ) . addOperand ( TmpReg ) . addExpr ( RefToLinkTmpLabel ) ) ;" LLVM,RISCV,445,"Predict the next statement of this code snippet: const MCExpr * SymbolHi = MCExpr :: create ( Symbol , VKHi , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( TmpReg ) . addExpr ( SymbolHi ) ) ; const MCExpr * RefToLinkTmpLabel = MCExpr :: create ( MCSymbolRefExpr :: create ( TmpLabel , Ctx ) , MCExpr :: VK__PCREL_LO , Ctx ) ;" LLVM,RISCV,446,"Predict the next statement of this code snippet: bool Res = compressInst ( CInst , Inst , getSTI ( ) , S . getContext ( ) ) ;" LLVM,RISCV,447,"Predict the next statement of this code snippet: MCInst CInst ; bool Res = compressInst ( CInst , Inst , getSTI ( ) , S . getContext ( ) ) ; if ( Res ) ++ NumInstrsCompressed ;" LLVM,RISCV,448,"Predict the next statement of this code snippet: return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCLUIImm : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm7Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm13Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm20LUI : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm20AUIPC : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm21Lsb0JAL : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCSRSystemRegister : { return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; } case Match_InvalidFenceArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ;" LLVM,RISCV,449,"Predict the next statement of this code snippet: StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( matchRegisterNameHelper ( isRV32E ( ) , ( Register & ) RegNo , Name ) ) return Error ( StartLoc , ) ; getParser ( ) . Lex ( ) ;" LLVM,RISCV,450,"Predict the next statement of this code snippet: return AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) && ( VK == MCExpr :: VK__CALL || VK == MCExpr :: VK__CALL_PLT ) ;" LLVM,RISCV,451,"Predict the next statement of this code snippet: bool isSImm12 ( ) const { MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,452,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ; return AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) && VK == MCExpr :: VK__TPREL_ADD ;" LLVM,RISCV,453,"Predict the next statement of this code snippet: bool isUImm20AUIPC ( ) const { MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) {" LLVM,RISCV,454,"Predict the next statement of this code snippet: int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && ( VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI ) ;" LLVM,RISCV,455,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && ( VK == MCExpr :: VK__HI || VK == MCExpr :: VK__TPREL_HI ) ; } else { return isUInt < > ( Imm ) && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__HI || VK == MCExpr :: VK__TPREL_HI ) ;" LLVM,RISCV,456,"Predict the next statement of this code snippet: case Match_MnemonicFail : return Error ( IDLoc , ) ; case Match_InvalidOperand : { SMLoc ErrorLoc = IDLoc ; if ( ErrorInfo != ~ ) { if ( ErrorInfo >= Operands . size ( ) ) return Error ( ErrorLoc , ) ; ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; if ( ErrorLoc == SMLoc ( ) ) ErrorLoc = IDLoc ; } return Error ( ErrorLoc , ) ; } } if ( Result > FIRST_TARGET_MATCH_RESULT_TY ) { SMLoc ErrorLoc = IDLoc ; if ( ErrorInfo != ~ && ErrorInfo >= Operands . size ( ) ) return Error ( ErrorLoc , ) ; } switch ( Result ) { default : break ; case Match_InvalidImmXLenLI : if ( isRV64 ( ) ) { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } return generateImmOutOfRangeError ( Operands , ErrorInfo , std :: numeric_limits < int32_t > :: min ( ) , std :: numeric_limits < uint32_t > :: max ( ) ) ; case Match_InvalidUImmLog2XLen : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImmLog2XLenNonZero : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm5 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidSImm6 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm6NonZero :" LLVM,RISCV,457,"Predict the next statement of this code snippet: static bool matchRegisterNameHelper ( bool IsRV32E , unsigned & RegNo , StringRef Name ) { RegNo = MatchRegisterName ( Name ) ; if ( RegNo == ) RegNo = MatchRegisterAltName ( Name ) ; if ( IsRV32E && RegNo >= && RegNo <= ) RegNo = ; return RegNo == ;" LLVM,RISCV,458,"Predict the next statement of this code snippet: static bool matchRegisterNameHelper ( bool IsRV32E , unsigned & RegNo , StringRef Name ) { RegNo = MatchRegisterName ( Name ) ; if ( RegNo == ) RegNo = MatchRegisterAltName ( Name ) ; if ( IsRV32E && RegNo >= && RegNo <= ) RegNo = ;" LLVM,RISCV,459,"Predict the next statement of this code snippet: if ( ReadCount == && Buf [ ] . getKind ( ) == AsmToken :: RParen ) { HadParens = true ; LParen = getParser ( ) . getTok ( ) ; getParser ( ) . Lex ( ) ; } } switch ( getLexer ( ) . getKind ( ) ) { default : if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ;" LLVM,RISCV,460,"Predict the next statement of this code snippet: emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ;" LLVM,RISCV,461,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( Reg ) . addReg ( ) . addExpr ( Op1 . getExpr ( ) ) ) ; return false ; } int64_t Imm = Inst . getOperand ( ) . getImm ( ) ; if ( ! isRV64 ( ) ) Imm = SignExtend64 < > ( Imm ) ; emitLoadImm ( Reg , Imm , Out ) ; return false ; } case : emitLoadLocalAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadTLSIEAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadTLSGDAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : if ( checkPseudoAddTPRel ( Inst , Operands ) ) return true ; break ;" LLVM,RISCV,462,"Predict the next statement of this code snippet: return Error ( ErrorLoc , Msg + + Twine ( Lower ) + + Twine ( Upper ) + ) ;" LLVM,RISCV,463,"Predict the next statement of this code snippet: bool AsmParser :: generateImmOutOfRangeError ( OperandVector & Operands , uint64_t ErrorInfo , int Lower , int Upper , Twine Msg = ) { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ;" LLVM,RISCV,464,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,465,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ;" LLVM,RISCV,466,"Predict the next statement of this code snippet: else IsValid = isInt < > ( Imm ) ;" LLVM,RISCV,467,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ; return IsValid && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__LO ) ;" LLVM,RISCV,468,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isShiftedUInt < , > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,469,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,470,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,471,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,472,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,473,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,474,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ;" LLVM,RISCV,475,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,476,"Predict the next statement of this code snippet: bool isUImm9Lsb000 ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,477,"Predict the next statement of this code snippet: ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; if ( ErrorLoc == SMLoc ( ) ) ErrorLoc = IDLoc ; } return Error ( ErrorLoc , ) ; } case Match_InvalidUImmLog2XLen : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImmLog2XLenNonZero : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm5 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidSImm6 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidUImm6NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm7Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000 :" LLVM,RISCV,478,"Predict the next statement of this code snippet: bool AsmParser :: ParseInstruction ( ParseInstructionInfo & Info , StringRef Name , SMLoc NameLoc , OperandVector & Operands ) { Operands . push_back ( Operand :: createToken ( Name , NameLoc , isRV64 ( ) ) ) ; if ( getLexer ( ) . is ( AsmToken :: EndOfStatement ) ) return false ; if ( parseOperand ( Operands ) ) return true ; while ( getLexer ( ) . is ( AsmToken :: Comma ) ) { getLexer ( ) . Lex ( ) ; if ( parseOperand ( Operands ) ) return true ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ;" LLVM,RISCV,479,"Predict the next statement of this code snippet: getLexer ( ) . Lex ( ) ; if ( parseOperand ( Operands ) ) return true ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ; return Error ( Loc , ) ;" LLVM,RISCV,480,"Predict the next statement of this code snippet: if ( parseRegister ( Operands , true ) == MatchOperand_Success ) return false ; if ( parseImmediate ( Operands ) == MatchOperand_Success ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ; }" LLVM,RISCV,481,"Predict the next statement of this code snippet: if ( parseImmediate ( Operands ) == MatchOperand_Success ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ; } Error ( getLoc ( ) , ) ; return true ;" LLVM,RISCV,482,"Predict the next statement of this code snippet: AsmParser ( const MCSubtargetInfo & STI , MCAsmParser & Parser , const MCInstrInfo & MII , const MCTargetOptions & Options ) : MCTargetAsmParser ( Options , STI , MII ) { setAvailableFeatures ( ComputeAvailableFeatures ( STI . getFeatureBits ( ) ) ) ;" LLVM,RISCV,483,"Predict the next statement of this code snippet: MCRegister SrcReg = ; for ( & Inst : Seq ) { if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; } else if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addReg ( SrcReg ) . addReg ( ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ;" LLVM,RISCV,484,"Predict the next statement of this code snippet: for ( & Inst : Seq ) { if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; } else if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addReg ( SrcReg ) . addReg ( ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ;" LLVM,RISCV,485,"Predict the next statement of this code snippet: } else if ( Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addReg ( SrcReg ) . addReg ( ) ) ; } else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addReg ( SrcReg ) ) ;" LLVM,RISCV,486,"Predict the next statement of this code snippet: Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; if ( Sym -> isVariable ( ) ) { const MCExpr * V = Sym -> getVariableValue ( false ) ; if ( ! isa < MCSymbolRefExpr > ( V ) ) { getLexer ( ) . UnLex ( Tok ) ; return MatchOperand_NoMatch ; } Res = V ; } else Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; MCBinaryExpr :: Opcode Opcode ; switch ( getLexer ( ) . getKind ( ) ) { default :" LLVM,RISCV,487,"Predict the next statement of this code snippet: return false ; } if ( parseOperand ( Operands , Name ) ) return true ; unsigned OperandIdx = ; while ( getLexer ( ) . is ( AsmToken :: Comma ) ) { getLexer ( ) . Lex ( ) ; if ( parseOperand ( Operands , Name ) ) return true ; ++ OperandIdx ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ;" LLVM,RISCV,488,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case 'i' : Imm |= ; break ; case 'o' : Imm |= ; break ; case 'r' : Imm |= ; break ; case 'w' : Imm |= ; break ; } } Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ;" LLVM,RISCV,489,"Predict the next statement of this code snippet: void addVTypeIOperands ( MCInst & Inst , unsigned N ) const { assert ( N == && ) ;" LLVM,RISCV,490,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createReg ( unsigned RegNo , SMLoc S , SMLoc E , bool IsRV64 ) { auto Op = std :: make_unique < Operand > ( KindTy :: Register ) ; Op -> Reg . RegNum = RegNo ; Op -> StartLoc = S ; Op -> EndLoc = E ; Op -> IsRV64 = IsRV64 ;" LLVM,RISCV,491,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createSysReg ( StringRef Str , SMLoc S , unsigned Encoding , bool IsRV64 ) { auto Op = std :: make_unique < Operand > ( KindTy :: SystemRegister ) ; Op -> SysReg . Data = Str . data ( ) ; Op -> SysReg . Length = Str . size ( ) ; Op -> SysReg . Encoding = Encoding ; Op -> StartLoc = S ;" LLVM,RISCV,492,"Predict the next statement of this code snippet: } else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addReg ( SrcReg ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ; } SrcReg = DestReg ; }" LLVM,RISCV,493,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addReg ( ) ) ; } else if ( Inst . getNumOperands ( ) == && Inst . getOperand ( ) . getReg ( ) == ) { assert ( Inst . getOperand ( ) . getReg ( ) == && ) ; assert ( Inst . getOperand ( ) . getReg ( ) != && ) ; emitToStreamer ( Out , MCInstBuilder ( Opcode ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ;" LLVM,RISCV,494,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) ) ; } else if ( Inst . getNumOperands ( ) == ) { assert ( Inst . getOperand ( ) . getReg ( ) != && ) ; emitToStreamer ( Out , MCInstBuilder ( Opcode ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addReg ( ) ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( Inst . getOperand ( ) ) . addReg ( ) . addOperand ( Inst . getOperand ( ) ) ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( Inst . getOperand ( ) ) . addOperand ( Inst . getOperand ( ) ) . addReg ( ) ) ;" LLVM,RISCV,495,"Predict the next statement of this code snippet: return Kind == KindTy :: VType ;" LLVM,RISCV,496,"Predict the next statement of this code snippet: bool isVType ( ) const { return Kind == KindTy :: VType ;" LLVM,RISCV,497,"Predict the next statement of this code snippet: return isVType ( ) ;" LLVM,RISCV,498,"Predict the next statement of this code snippet: return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImmLog2XLenNonZero : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImmLog2XLenHalf : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm2 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm3 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm5 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm7 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidSImm5 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm6 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm6NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCLUIImm : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm7Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12Lsb0 :" LLVM,RISCV,499,"Predict the next statement of this code snippet: } getParser ( ) . Lex ( ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( OptionalImmOp && ! OptionalImmOp -> isImmZero ( ) ) { Error ( OptionalImmOp -> getStartLoc ( ) , , SMRange ( OptionalImmOp -> getStartLoc ( ) , OptionalImmOp -> getEndLoc ( ) ) ) ; return MatchOperand_ParseFail ; } return MatchOperand_Success ;" LLVM,RISCV,500,"Predict the next statement of this code snippet: std :: unique_ptr < Operand > OptionalImmOp ; if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { int64_t ImmVal ; SMLoc ImmStart = getLoc ( ) ; if ( getParser ( ) . parseIntToken ( ImmVal , ) ) return MatchOperand_ParseFail ; SMLoc ImmEnd = getLoc ( ) ; OptionalImmOp = Operand :: createImm ( MCConstantExpr :: create ( ImmVal , getContext ( ) ) , ImmStart , ImmEnd , isRV64 ( ) ) ; } if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { Error ( getLoc ( ) , OptionalImmOp ? : ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) {" LLVM,RISCV,501,"Predict the next statement of this code snippet: SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; const MCExpr * Res ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; StringRef Identifier ; AsmToken Tok = getLexer ( ) . getTok ( ) ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; if ( Identifier . consume_back ( ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; if ( Sym -> isVariable ( ) ) { const MCExpr * V = Sym -> getVariableValue ( false ) ; if ( ! isa < MCSymbolRefExpr > ( V ) ) { getLexer ( ) . UnLex ( Tok ) ; return MatchOperand_NoMatch ; } Res = V ; } else Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; MCBinaryExpr :: Opcode Opcode ; switch ( getLexer ( ) . getKind ( ) ) { default : Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ; return MatchOperand_Success ; case AsmToken :: Plus : Opcode = MCBinaryExpr :: Add ; break ; case AsmToken :: Minus : Opcode = MCBinaryExpr :: Sub ; break ; } const MCExpr * Expr ; if ( getParser ( ) . parseExpression ( Expr ) ) return MatchOperand_ParseFail ; Res = MCBinaryExpr :: create ( Opcode , Res , Expr , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,502,"Predict the next statement of this code snippet: const MCExpr * Res ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; StringRef Identifier ; AsmToken Tok = getLexer ( ) . getTok ( ) ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; if ( Identifier . consume_back ( ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; if ( Sym -> isVariable ( ) ) { const MCExpr * V = Sym -> getVariableValue ( false ) ; if ( ! isa < MCSymbolRefExpr > ( V ) ) {" LLVM,RISCV,503,"Predict the next statement of this code snippet: if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; MCExpr :: VariantKind Kind = MCExpr :: VK__CALL ; if ( Identifier . consume_back ( ) ) Kind = MCExpr :: VK__CALL_PLT ; MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ;" LLVM,RISCV,504,"Predict the next statement of this code snippet: MCExpr :: VariantKind Kind = MCExpr :: VK__CALL ; if ( Identifier . consume_back ( ) ) Kind = MCExpr :: VK__CALL_PLT ; MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; Res = MCExpr :: create ( Res , Kind , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,505,"Predict the next statement of this code snippet: const MCExpr * ValueExpr ; if ( Parser . parseExpression ( ValueExpr ) ) return true ; const MCConstantExpr * CE = dyn_cast < MCConstantExpr > ( ValueExpr ) ; if ( ! CE ) return Error ( ValueExprLoc , ) ; IntegerValue = CE -> getValue ( ) ; } else { if ( Parser . getTok ( ) . isNot ( AsmToken :: String ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; StringValue = Parser . getTok ( ) . getStringContents ( ) ; Parser . Lex ( ) ; } if ( Parser . parseToken ( AsmToken :: EndOfStatement , ) ) return true ; if ( Tag == ) { StringRef Arch = StringValue ; for ( auto Feature : FeatureKV ) if ( llvm :: ( Feature . Key ) ) clearFeatureBits ( Feature . Value , Feature . Key ) ; auto ParseResult = llvm :: ( StringValue , true , false ) ; if ( ! ParseResult ) { std :: string Buffer ; raw_string_ostream OutputErrMsg ( Buffer ) ; handleAllErrors ( ParseResult . takeError ( ) , [ & ] ( llvm :: StringError & ErrMsg ) { OutputErrMsg << << Arch << << ErrMsg . getMessage ( ) ; } ) ; return Error ( ValueExprLoc , OutputErrMsg . str ( ) ) ; } auto & ISAInfo = * ParseResult ; for ( auto Feature : FeatureKV ) if ( ISAInfo -> hasExtension ( Feature . Key ) ) setFeatureBits ( Feature . Value , Feature . Key ) ; if ( ISAInfo -> getXLen ( ) == ) clearFeatureBits ( , ) ; else if ( ISAInfo -> getXLen ( ) == ) setFeatureBits ( , ) ; else return Error ( ValueExprLoc , + Arch ) ; } if ( IsIntegerValue ) getTargetStreamer ( ) . emitAttribute ( Tag , IntegerValue ) ; else { if ( Tag != ) { getTargetStreamer ( ) . emitTextAttribute ( Tag , StringValue ) ; } else { std :: vector < std :: string > FeatureVector ; ( FeatureVector , getSTI ( ) . getFeatureBits ( ) ) ; unsigned XLen = getFeatureBits ( ) ? : ; auto ParseResult = llvm :: ( XLen , FeatureVector ) ; if ( ! ParseResult ) { std :: string Buffer ; raw_string_ostream OutputErrMsg ( Buffer ) ; handleAllErrors ( ParseResult . takeError ( ) , [ & ] ( llvm :: StringError & ErrMsg ) { OutputErrMsg << ErrMsg . getMessage ( ) ; } ) ; return Error ( ValueExprLoc , OutputErrMsg . str ( ) ) ; } auto & ISAInfo = * ParseResult ; getTargetStreamer ( ) . emitTextAttribute ( Tag , ISAInfo -> toString ( ) ) ;" LLVM,RISCV,506,"Predict the next statement of this code snippet: default : return MatchOperand_NoMatch ; case AsmToken :: LParen : case AsmToken :: Dot : case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Exclaim : case AsmToken :: Tilde : case AsmToken :: Integer : case AsmToken :: String : case AsmToken :: Identifier : if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; break ; case AsmToken :: Percent :" LLVM,RISCV,507,"Predict the next statement of this code snippet: if ( RegNo == ) return MatchOperand_NoMatch ; if ( RegNo != ) return MatchOperand_NoMatch ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ;" LLVM,RISCV,508,"Predict the next statement of this code snippet: if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; if ( Res -> getKind ( ) != MCExpr :: ExprKind :: SymbolRef || cast < MCSymbolRefExpr > ( Res ) -> getKind ( ) == MCSymbolRefExpr :: VariantKind :: VK_PLT ) { Error ( S , ) ;" LLVM,RISCV,509,"Predict the next statement of this code snippet: if ( ReadCount == && Buf [ ] . getKind ( ) == AsmToken :: RParen ) { HadParens = true ; LParen = getParser ( ) . getTok ( ) ; getParser ( ) . Lex ( ) ; } } switch ( getLexer ( ) . getKind ( ) ) { default : if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; MCRegister RegNo ;" LLVM,RISCV,510,"Predict the next statement of this code snippet: size_t ReadCount = getLexer ( ) . peekTokens ( Buf ) ; if ( ReadCount == && Buf [ ] . getKind ( ) == AsmToken :: RParen ) { HadParens = true ; LParen = getParser ( ) . getTok ( ) ; getParser ( ) . Lex ( ) ; } } switch ( getLexer ( ) . getKind ( ) ) { default : if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; MCRegister RegNo ; matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS , isRV64 ( ) ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ; }" LLVM,RISCV,511,"Predict the next statement of this code snippet: if ( Name . getAsInteger ( , Sew ) ) goto MatchFail ; if ( ! VType :: isValidSEW ( Sew ) ) goto MatchFail ; Name = VTypeIElements [ ] . getIdentifier ( ) ; if ( ! Name . consume_front ( ) ) goto MatchFail ; bool Fractional = Name . consume_front ( ) ; unsigned Lmul ; if ( Name . getAsInteger ( , Lmul ) ) goto MatchFail ; if ( ! VType :: isValidLMUL ( Lmul , Fractional ) ) goto MatchFail ; Name = VTypeIElements [ ] . getIdentifier ( ) ; bool TailAgnostic ; if ( Name == ) TailAgnostic = true ; else if ( Name == ) TailAgnostic = false ; else goto MatchFail ; Name = VTypeIElements [ ] . getIdentifier ( ) ; bool MaskAgnostic ; if ( Name == ) MaskAgnostic = true ; else if ( Name == ) MaskAgnostic = false ; else goto MatchFail ; unsigned LmulLog2 = Log2_32 ( Lmul ) ; VLMUL = static_cast < > ( Fractional ? - LmulLog2 : LmulLog2 ) ; unsigned VTypeI = VType :: encodeVTYPE ( VLMUL , Sew , TailAgnostic , MaskAgnostic ) ; Operands . push_back ( Operand :: createVType ( VTypeI , S , isRV64 ( ) ) ) ; return MatchOperand_Success ; } MatchFail : while ( ! VTypeIElements . empty ( ) ) getLexer ( ) . UnLex ( VTypeIElements . pop_back_val ( ) ) ;" LLVM,RISCV,512,"Predict the next statement of this code snippet: Parser . addAliasForDirective ( , ) ; setAvailableFeatures ( ComputeAvailableFeatures ( STI . getFeatureBits ( ) ) ) ; auto ABIName = StringRef ( Options . ABIName ) ; if ( ABIName . endswith ( ) && ! getSTI ( ) . getFeatureBits ( ) [ ] ) {" LLVM,RISCV,513,"Predict the next statement of this code snippet: auto Op = make_unique < Operand > ( Register ) ; Op -> Reg . RegNum = RegNo ; Op -> StartLoc = S ;" LLVM,RISCV,514,"Predict the next statement of this code snippet: auto Op = make_unique < Operand > ( Token ) ; Op -> Tok = Str ;" LLVM,RISCV,515,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; bool IsValid ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isShiftedInt < N - , > ( Imm ) ; return IsValid && VK == MCExpr :: VK__None ;" LLVM,RISCV,516,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; bool IsValid ;" LLVM,RISCV,517,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ; return IsValid && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__LO ) ;" LLVM,RISCV,518,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ;" LLVM,RISCV,519,"Predict the next statement of this code snippet: bool isUImm12 ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,520,"Predict the next statement of this code snippet: return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,521,"Predict the next statement of this code snippet: int64_t Imm ; bool IsValid ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ;" LLVM,RISCV,522,"Predict the next statement of this code snippet: else IsValid = isUInt < > ( Imm ) ;" LLVM,RISCV,523,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,524,"Predict the next statement of this code snippet: bool isUImm5 ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,525,"Predict the next statement of this code snippet: MCInst Inst ; switch ( MatchInstructionImpl ( Operands , Inst , ErrorInfo , MatchingInlineAsm ) ) { default : break ; case Match_Success : Inst . setLoc ( IDLoc ) ; Out . EmitInstruction ( Inst , getSTI ( ) ) ; return false ; case Match_MissingFeature : return Error ( IDLoc , ) ; case Match_MnemonicFail : return Error ( IDLoc , ) ; case Match_InvalidOperand : { SMLoc ErrorLoc = IDLoc ; if ( ErrorInfo != ~ ) { if ( ErrorInfo >= Operands . size ( ) ) return Error ( ErrorLoc , ) ; ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; if ( ErrorLoc == SMLoc ( ) ) ErrorLoc = IDLoc ; } return Error ( ErrorLoc , ) ; } case Match_InvalidUImm5 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ;" LLVM,RISCV,526,"Predict the next statement of this code snippet: switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: LParen : case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Integer : case AsmToken :: String : if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; break ; case AsmToken :: Identifier : { StringRef Identifier ;" LLVM,RISCV,527,"Predict the next statement of this code snippet: if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ; return Error ( Loc , ) ; } getParser ( ) . Lex ( ) ;" LLVM,RISCV,528,"Predict the next statement of this code snippet: if ( parseOperand ( Operands ) ) return true ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ; return Error ( Loc , ) ; }" LLVM,RISCV,529,"Predict the next statement of this code snippet: OperandMatchResultTy AsmParser :: parseMemOpBaseReg ( OperandVector & Operands ) { if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) ) ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) {" LLVM,RISCV,530,"Predict the next statement of this code snippet: } getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) ) ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) ) ) ;" LLVM,RISCV,531,"Predict the next statement of this code snippet: if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ; } Error ( getLoc ( ) , ) ; return true ;" LLVM,RISCV,532,"Predict the next statement of this code snippet: if ( VK == MCExpr :: VK__Invalid ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( getLexer ( ) . getKind ( ) != AsmToken :: LParen ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; const MCExpr * SubExpr ; if ( getParser ( ) . parseParenExpression ( SubExpr , E ) ) { return MatchOperand_ParseFail ; } const MCExpr * ModExpr = MCExpr :: create ( SubExpr , VK , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( ModExpr , S , E , getContext ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,533,"Predict the next statement of this code snippet: } StringRef Identifier = getParser ( ) . getTok ( ) . getIdentifier ( ) ; MCExpr :: VariantKind VK = MCExpr :: getVariantKindForName ( Identifier ) ; if ( VK == MCExpr :: VK__Invalid ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( getLexer ( ) . getKind ( ) != AsmToken :: LParen ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; const MCExpr * SubExpr ; if ( getParser ( ) . parseParenExpression ( SubExpr , E ) ) {" LLVM,RISCV,534,"Predict the next statement of this code snippet: unsigned RegNo = MatchRegisterName ( Name ) ; if ( RegNo == ) { RegNo = MatchRegisterAltName ( Name ) ; if ( RegNo == ) return MatchOperand_NoMatch ; } getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E ) ) ; }" LLVM,RISCV,535,"Predict the next statement of this code snippet: setAvailableFeatures ( ComputeAvailableFeatures ( STI . getFeatureBits ( ) ) ) ;" LLVM,RISCV,536,"Predict the next statement of this code snippet: setAvailableFeatures ( ComputeAvailableFeatures ( STI . getFeatureBits ( ) ) ) ;" LLVM,RISCV,537,"Predict the next statement of this code snippet: Operand ( const Operand & o ) : MCParsedAsmOperand ( ) { Kind = o . Kind ; StartLoc = o . StartLoc ; EndLoc = o . EndLoc ;" LLVM,RISCV,538,"Predict the next statement of this code snippet: CInst . setLoc ( IDLoc ) ; Inst . setLoc ( IDLoc ) ; Out . EmitInstruction ( ( Res ? CInst : Inst ) , getSTI ( ) ) ; return false ; } case Match_MissingFeature : return Error ( IDLoc , ) ; case Match_MnemonicFail : return Error ( IDLoc , ) ; case Match_InvalidOperand : { SMLoc ErrorLoc = IDLoc ; if ( ErrorInfo != ~ ) { if ( ErrorInfo >= Operands . size ( ) ) return Error ( ErrorLoc , ) ; ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; if ( ErrorLoc == SMLoc ( ) ) ErrorLoc = IDLoc ; } return Error ( ErrorLoc , ) ; } case Match_InvalidUImmLog2XLen : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImmLog2XLenNonZero : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm5 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidSImm6 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm6NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCLUIImm : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm7Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ;" LLVM,RISCV,539,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ; return IsValid && ( ( IsConstantImm && VK == MCExpr :: VK__None ) || VK == MCExpr :: VK__LO || VK == MCExpr :: VK__PCREL_LO ) ;" LLVM,RISCV,540,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isInt < > ( Imm ) ;" LLVM,RISCV,541,"Predict the next statement of this code snippet: bool isSImm6 ( ) const { if ( ! isImm ( ) ) return false ; MCExpr :: VariantKind VK ; int64_t Imm ;" LLVM,RISCV,542,"Predict the next statement of this code snippet: bool isSImm6NonZero ( ) const { if ( ! isImm ( ) ) return false ; MCExpr :: VariantKind VK ; int64_t Imm ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && isInt < > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,543,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ;" LLVM,RISCV,544,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) {" LLVM,RISCV,545,"Predict the next statement of this code snippet: bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && VK == MCExpr :: VK__HI ; } else {" LLVM,RISCV,546,"Predict the next statement of this code snippet: bool isUImm20LUI ( ) const { MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && VK == MCExpr :: VK__HI ;" LLVM,RISCV,547,"Predict the next statement of this code snippet: bool AsmParser :: ParseInstruction ( ParseInstructionInfo & Info , StringRef Name , SMLoc NameLoc , OperandVector & Operands ) { Operands . push_back ( Operand :: createToken ( Name , NameLoc , isRV64 ( ) ) ) ; if ( getLexer ( ) . is ( AsmToken :: EndOfStatement ) ) return false ; if ( parseOperand ( Operands , Name ) ) return true ; unsigned OperandIdx = ; while ( getLexer ( ) . is ( AsmToken :: Comma ) ) { getLexer ( ) . Lex ( ) ; if ( parseOperand ( Operands , Name ) ) return true ; ++ OperandIdx ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ; return Error ( Loc , ) ; }" LLVM,RISCV,548,"Predict the next statement of this code snippet: } case Match_InvalidUImmLog2XLen : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImmLog2XLenNonZero : if ( isRV64 ( ) ) return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm5 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidSImm6 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm6NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm6NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidUImm7Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm12Lsb0 :" LLVM,RISCV,549,"Predict the next statement of this code snippet: return IsConstantImm && ( Imm != ) && ( isUInt < > ( Imm ) || ( Imm >= && Imm <= ) ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,550,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; return IsConstantImm && ( Imm != ) && ( isUInt < > ( Imm ) || ( Imm >= && Imm <= ) ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,551,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( Imm , VK ) ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = ( ( Imm != ) && isInt < > ( Imm ) ) ; return IsValid && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__LO ) ;" LLVM,RISCV,552,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = ( ( Imm != ) && isInt < > ( Imm ) ) ; return IsValid && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__LO ) ;" LLVM,RISCV,553,"Predict the next statement of this code snippet: case Match_InvalidSImm6 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm6NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCLUIImm : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm7Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm12Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ;" LLVM,RISCV,554,"Predict the next statement of this code snippet: } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ; return Error ( Loc , ) ; } getParser ( ) . Lex ( ) ; return false ;" LLVM,RISCV,555,"Predict the next statement of this code snippet: if ( parseOperand ( Operands , ForceImmediate ) ) return true ; while ( getLexer ( ) . is ( AsmToken :: Comma ) ) { getLexer ( ) . Lex ( ) ; if ( parseOperand ( Operands , false ) ) return true ; } if ( getLexer ( ) . isNot ( AsmToken :: EndOfStatement ) ) { SMLoc Loc = getLexer ( ) . getLoc ( ) ; getParser ( ) . eatToEndOfStatement ( ) ;" LLVM,RISCV,556,"Predict the next statement of this code snippet: int64_t Imm = Inst . getOperand ( ) . getImm ( ) ; if ( ! isRV64 ( ) ) Imm = SignExtend64 < > ( Imm ) ;" LLVM,RISCV,557,"Predict the next statement of this code snippet: Seq = ( Value , isRV64 ( ) ) ; MCRegister SrcReg = ; for ( & Inst : Seq ) { if ( Inst . Opc == ) {" LLVM,RISCV,558,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ; } SrcReg = DestReg ; }" LLVM,RISCV,559,"Predict the next statement of this code snippet: return false ; case : emitLoadTLSIEAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadTLSGDAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case :" LLVM,RISCV,560,"Predict the next statement of this code snippet: case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : if ( checkPseudoAddTPRel ( Inst , Operands ) ) return true ; }" LLVM,RISCV,561,"Predict the next statement of this code snippet: void addSImm5Plus1Operands ( MCInst & Inst , unsigned N ) const { assert ( N == && ) ; int64_t Imm = ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; bool IsConstant = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; assert ( IsConstant && ) ; ( void ) IsConstant ;" LLVM,RISCV,562,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; bool IsConstant = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,563,"Predict the next statement of this code snippet: if ( TargetFlags == ) return false ; unsigned DestReg = Inst . getOperand ( ) . getReg ( ) ; unsigned CheckReg ; SMLoc Loc = Operands [ ] -> getStartLoc ( ) ; if ( TargetFlags & ) { CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( Inst . getOperand ( ) . isReg ( ) ) ) { CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( DestReg == ) ) { unsigned Opcode = Inst . getOpcode ( ) ; if ( Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == ) return Error ( Loc , ) ; if ( ( TargetFlags & ) && ( Inst . getNumOperands ( ) == ) ) CheckReg = Inst . getOperand ( ) . getReg ( ) ; else if ( Inst . getNumOperands ( ) == ) CheckReg = Inst . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,564,"Predict the next statement of this code snippet: if ( TargetFlags == ) return false ; unsigned DestReg = Inst . getOperand ( ) . getReg ( ) ; unsigned CheckReg ; SMLoc Loc = Operands [ ] -> getStartLoc ( ) ; if ( TargetFlags & ) { CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( Inst . getOperand ( ) . isReg ( ) ) ) { CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( DestReg == ) ) { unsigned Opcode = Inst . getOpcode ( ) ; if ( Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == || Opcode == ) return Error ( Loc , ) ; if ( ( TargetFlags & ) && ( Inst . getNumOperands ( ) == ) ) CheckReg = Inst . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,565,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( VType . Encoding ) ) ;" LLVM,RISCV,566,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( VType . Encoding ) ) ;" LLVM,RISCV,567,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createVType ( APInt Sew , APInt Lmul , bool Fractional , bool TailAgnostic , bool MaskedoffAgnostic , SMLoc S , bool IsRV64 ) { auto Op = std :: make_unique < Operand > ( KindTy :: VType ) ; Sew . ashrInPlace ( ) ; unsigned SewLog2 = Sew . logBase2 ( ) ; unsigned LmulLog2 = Lmul . logBase2 ( ) ; Op -> VType . Sew = static_cast < VSEW > ( SewLog2 ) ; if ( Fractional ) { unsigned Flmul = - LmulLog2 ; Op -> VType . Lmul = static_cast < VLMUL > ( Flmul ) ; Op -> VType . Encoding = ( SewLog2 << ) | Flmul ; } else { Op -> VType . Lmul = static_cast < VLMUL > ( LmulLog2 ) ;" LLVM,RISCV,568,"Predict the next statement of this code snippet: Op -> VType . Encoding = ( SewLog2 << ) | Flmul ; } else { Op -> VType . Lmul = static_cast < VLMUL > ( LmulLog2 ) ; Op -> VType . Encoding = ( SewLog2 << ) | LmulLog2 ; } if ( TailAgnostic ) { Op -> VType . Encoding |= ; } if ( MaskedoffAgnostic ) {" LLVM,RISCV,569,"Predict the next statement of this code snippet: switch ( Lmul ) { case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,570,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,571,"Predict the next statement of this code snippet: StringRef getVType ( SmallString < > & Buf ) const { assert ( Kind == KindTy :: VType && ) ; Buf . append ( getSEWStr ( VType . Sew ) ) ; Buf . append ( ) ; Buf . append ( getLMULStr ( VType . Lmul ) ) ;" LLVM,RISCV,572,"Predict the next statement of this code snippet: StringRef getVType ( SmallString < > & Buf ) const { assert ( Kind == KindTy :: VType && ) ; Buf . append ( getSEWStr ( VType . Sew ) ) ; Buf . append ( ) ; Buf . append ( getLMULStr ( VType . Lmul ) ) ;" LLVM,RISCV,573,"Predict the next statement of this code snippet: return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm13Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm20LUI : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm20AUIPC : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm21Lsb0JAL : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCSRSystemRegister : { return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; } case Match_InvalidFenceArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidFRMArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidBareSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; }" LLVM,RISCV,574,"Predict the next statement of this code snippet: OperandMatchResultTy AsmParser :: parseMaskReg ( OperandVector & Operands ) { switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( ! Name . consume_back ( ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } Register RegNo ; matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) return MatchOperand_NoMatch ; if ( RegNo != ) return MatchOperand_NoMatch ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ; }" LLVM,RISCV,575,"Predict the next statement of this code snippet: if ( ! getLexer ( ) . is ( AsmToken :: Comma ) ) return MatchOperand_NoMatch ; getLexer ( ) . Lex ( ) ; Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( ! Name . consume_front ( ) ) return MatchOperand_NoMatch ; bool Fractional = false ; if ( Name . consume_front ( ) ) { Fractional = true ; } APInt Lmul ( , Name , ) ; if ( Lmul != && Lmul != && Lmul != && Lmul != ) return MatchOperand_NoMatch ; getLexer ( ) . Lex ( ) ; if ( ! getLexer ( ) . is ( AsmToken :: Comma ) ) return MatchOperand_NoMatch ; getLexer ( ) . Lex ( ) ; Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; bool TailAgnostic ;" LLVM,RISCV,576,"Predict the next statement of this code snippet: if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( Inst . getOperand ( ) . isReg ( ) ) ) { CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( DestReg == ) ) { unsigned Opcode = Inst . getOpcode ( ) ; if ( Opcode == || Opcode == || Opcode == || Opcode == || Opcode == ) return Error ( Loc , ) ; if ( ( TargetFlags & ) && ( Inst . getNumOperands ( ) == ) ) CheckReg = Inst . getOperand ( ) . getReg ( ) ; else if ( Inst . getNumOperands ( ) == ) CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ;" LLVM,RISCV,577,"Predict the next statement of this code snippet: const MCInstrDesc & MCID = MII . get ( Inst . getOpcode ( ) ) ; unsigned TargetFlags = ( MCID . TSFlags >> ) & ; if ( TargetFlags == ) return false ; unsigned DestReg = Inst . getOperand ( ) . getReg ( ) ; unsigned CheckReg ; SMLoc Loc = Operands [ ] -> getStartLoc ( ) ; if ( TargetFlags & ) { CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( Inst . getOperand ( ) . isReg ( ) ) ) { CheckReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == CheckReg ) return Error ( Loc , ) ; } if ( ( TargetFlags & ) && ( DestReg == ) ) { unsigned Opcode = Inst . getOpcode ( ) ; if ( Opcode == || Opcode == || Opcode == || Opcode == || Opcode == ) return Error ( Loc , ) ; if ( ( TargetFlags & ) && ( Inst . getNumOperands ( ) == ) ) CheckReg = Inst . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,578,"Predict the next statement of this code snippet: bool IsRegFPR64C = MCRegisterClasses [ ] . contains ( Reg ) ; if ( ( IsRegFPR64 && Kind == MCK_FPR16 ) || ( IsRegFPR64C && Kind == MCK_FPR32C ) ) { Op . Reg . RegNum = convertFPR64ToFPR32 ( Reg ) ;" LLVM,RISCV,579,"Predict the next statement of this code snippet: assert ( N == && ) ;" LLVM,RISCV,580,"Predict the next statement of this code snippet: assert ( N == && ) ;" LLVM,RISCV,581,"Predict the next statement of this code snippet: SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } return false ;" LLVM,RISCV,582,"Predict the next statement of this code snippet: Op -> SpecialCapReg . Data = Str . data ( ) ; Op -> SpecialCapReg . Length = Str . size ( ) ; Op -> SpecialCapReg . Encoding = Encoding ; Op -> StartLoc = S ; Op -> IsRV64 = IsRV64 ; return Op ;" LLVM,RISCV,583,"Predict the next statement of this code snippet: Out . emitLabel ( TmpLabel ) ; const MCExpr * SymbolHi = MCExpr :: create ( Symbol , VKHi , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( TmpReg ) . addExpr ( SymbolHi ) ) ;" LLVM,RISCV,584,"Predict the next statement of this code snippet: const MCExpr * RefToLinkTmpLabel = MCExpr :: create ( MCSymbolRefExpr :: create ( TmpLabel , Ctx ) , MCExpr :: VK__PCREL_LO , Ctx ) ;" LLVM,RISCV,585,"Predict the next statement of this code snippet: const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ; unsigned SecondOpcode = isRV64 ( ) ? : ; emitAuipccInstPair ( DestReg , DestReg , Symbol , MCExpr :: VK__CAPTAB_PCREL_HI , SecondOpcode , IDLoc , Out ) ;" LLVM,RISCV,586,"Predict the next statement of this code snippet: unsigned SecondOpcode = isRV64 ( ) ? : ;" LLVM,RISCV,587,"Predict the next statement of this code snippet: const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ;" LLVM,RISCV,588,"Predict the next statement of this code snippet: void AsmParser :: emitCapLoadLocalCap ( MCInst & Inst , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ; const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ; emitAuipccInstPair ( DestReg , DestReg , Symbol , MCExpr :: VK__PCREL_HI , , IDLoc , Out ) ;" LLVM,RISCV,589,"Predict the next statement of this code snippet: MCOperand DestReg = Inst . getOperand ( ) ; const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ; emitAuipccInstPair ( DestReg , DestReg , Symbol , MCExpr :: VK__TLS_GD_CAPTAB_PCREL_HI , , IDLoc , Out ) ;" LLVM,RISCV,590,"Predict the next statement of this code snippet: emitAuipccInstPair ( DestReg , DestReg , Symbol , MCExpr :: VK__TLS_GD_CAPTAB_PCREL_HI , , IDLoc , Out ) ;" LLVM,RISCV,591,"Predict the next statement of this code snippet: void AsmParser :: emitCapLoadTLSIEAddress ( MCInst & Inst , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ;" LLVM,RISCV,592,"Predict the next statement of this code snippet: void AsmParser :: emitCapLoadTLSIEAddress ( MCInst & Inst , SMLoc IDLoc , MCStreamer & Out ) { MCOperand DestReg = Inst . getOperand ( ) ; MCOperand TmpReg = Inst . getOperand ( ) ; const MCExpr * Symbol = Inst . getOperand ( ) . getExpr ( ) ; unsigned SecondOpcode = isRV64 ( ) ? : ; emitAuipccInstPair ( DestReg , TmpReg , Symbol , MCExpr :: VK__TLS_IE_CAPTAB_PCREL_HI , SecondOpcode , IDLoc , Out ) ;" LLVM,RISCV,593,"Predict the next statement of this code snippet: unsigned getCheriCapabilitySize ( ) const override {" LLVM,RISCV,594,"Predict the next statement of this code snippet: return AsmParser :: classifySymbolRef ( getImm ( ) , VK ) && VK == MCExpr :: VK__CCALL ;" LLVM,RISCV,595,"Predict the next statement of this code snippet: bool isCCallSymbol ( ) const { int64_t Imm ;" LLVM,RISCV,596,"Predict the next statement of this code snippet: return getSTI ( ) . getFeatureBits ( ) [ ] ;" LLVM,RISCV,597,"Predict the next statement of this code snippet: return Kind == KindTy :: Register && MCRegisterClasses [ ] . contains ( Reg . RegNum ) ;" LLVM,RISCV,598,"Predict the next statement of this code snippet: bool isPseudoCJumpSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ; return AsmParser :: classifySymbolRef ( getImm ( ) , VK ) && VK == MCExpr :: VK__CCALL ;" LLVM,RISCV,599,"Predict the next statement of this code snippet: bool isSpecialCapRegister ( ) const { return Kind == KindTy :: SpecialCapRegister ;" LLVM,RISCV,600,"Predict the next statement of this code snippet: return Kind == KindTy :: SpecialCapRegister ;" LLVM,RISCV,601,"Predict the next statement of this code snippet: bool isTPRelCIncOffsetSymbol ( ) const { int64_t Imm ;" LLVM,RISCV,602,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,603,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,604,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; int64_t Imm ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,605,"Predict the next statement of this code snippet: return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,606,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; MCExpr :: VariantKind VK ;" LLVM,RISCV,607,"Predict the next statement of this code snippet: bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK ) ; return IsValid && ( VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI || VK == MCExpr :: VK__CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_IE_CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_GD_CAPTAB_PCREL_HI ) ; } else { return isUInt < > ( Imm ) && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI || VK == MCExpr :: VK__CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_IE_CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_GD_CAPTAB_PCREL_HI ) ; }" LLVM,RISCV,608,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK ) ; return IsValid && ( VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI || VK == MCExpr :: VK__CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_IE_CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_GD_CAPTAB_PCREL_HI ) ; } else { return isUInt < > ( Imm ) && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI || VK == MCExpr :: VK__TLS_GOT_HI || VK == MCExpr :: VK__TLS_GD_HI || VK == MCExpr :: VK__CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_IE_CAPTAB_PCREL_HI || VK == MCExpr :: VK__TLS_GD_CAPTAB_PCREL_HI ) ;" LLVM,RISCV,609,"Predict the next statement of this code snippet: int64_t Imm ;" LLVM,RISCV,610,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,611,"Predict the next statement of this code snippet: const MCExpr * Res ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; if ( getLexer ( ) . peekTok ( ) . getKind ( ) != AsmToken :: EndOfStatement ) return MatchOperand_NoMatch ; StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; MCExpr :: VariantKind Kind ; if ( IsCap ) { Kind = MCExpr :: VK__CCALL ; Identifier . consume_back ( ) ; } else { Kind = MCExpr :: VK__CALL ; if ( Identifier . consume_back ( ) ) Kind = MCExpr :: VK__CALL_PLT ; } MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; Res = MCExpr :: create ( Res , Kind , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,612,"Predict the next statement of this code snippet: SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; const MCExpr * Res ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; if ( getLexer ( ) . peekTok ( ) . getKind ( ) != AsmToken :: EndOfStatement ) return MatchOperand_NoMatch ; StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; MCExpr :: VariantKind Kind ; if ( IsCap ) { Kind = MCExpr :: VK__CCALL ; Identifier . consume_back ( ) ; } else { Kind = MCExpr :: VK__CALL ; if ( Identifier . consume_back ( ) ) Kind = MCExpr :: VK__CALL_PLT ; } MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; Res = MCExpr :: create ( Res , Kind , getContext ( ) ) ;" LLVM,RISCV,613,"Predict the next statement of this code snippet: Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; setFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoRVC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; clearFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionPIC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; ParserOptions . IsPicEnabled = true ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoPIC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; ParserOptions . IsPicEnabled = false ; return false ; } if ( Option == ) {" LLVM,RISCV,614,"Predict the next statement of this code snippet: return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoPIC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; ParserOptions . IsPicEnabled = false ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionRelax ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; setFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoRelax ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; clearFeatureBits ( , ) ; return false ; } if ( Option == ) { if ( ! getSTI ( ) . getFeatureBits ( ) [ ] ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; getTargetStreamer ( ) . emitDirectiveOptionCapMode ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; setFeatureBits ( , ) ; return false ; } if ( Option == ) { if ( ! getSTI ( ) . getFeatureBits ( ) [ ] ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; getTargetStreamer ( ) . emitDirectiveOptionNoCapMode ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ;" LLVM,RISCV,615,"Predict the next statement of this code snippet: if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; if ( Res -> getKind ( ) != MCExpr :: ExprKind :: SymbolRef || cast < MCSymbolRefExpr > ( Res ) -> getKind ( ) == MCSymbolRefExpr :: VariantKind :: VK_PLT ) { Error ( S , ) ; return MatchOperand_ParseFail ; }" LLVM,RISCV,616,"Predict the next statement of this code snippet: default : return MatchOperand_NoMatch ; case AsmToken :: LParen : case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Integer : case AsmToken :: String : { if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; auto * CE = dyn_cast < MCConstantExpr > ( Res ) ; if ( CE ) { int64_t Imm = CE -> getValue ( ) ; if ( isUInt < > ( Imm ) ) { auto SpecialCapReg = ( Imm ) ; Operands . push_back ( Operand :: createSpecialCapReg ( SpecialCapReg ? SpecialCapReg -> Name : , S , Imm , isRV64 ( ) ) ) ; return MatchOperand_Success ; } } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; } case AsmToken :: Identifier : { StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; auto SpecialCapReg = ( Identifier ) ; if ( SpecialCapReg ) { Operands . push_back ( Operand :: createSpecialCapReg ( Identifier , S , SpecialCapReg -> Encoding , isRV64 ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,617,"Predict the next statement of this code snippet: if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; auto * CE = dyn_cast < MCConstantExpr > ( Res ) ; if ( CE ) { int64_t Imm = CE -> getValue ( ) ; if ( isUInt < > ( Imm ) ) { auto SpecialCapReg = ( Imm ) ; Operands . push_back ( Operand :: createSpecialCapReg ( SpecialCapReg ? SpecialCapReg -> Name : , S , Imm , isRV64 ( ) ) ) ; return MatchOperand_Success ; } } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; } case AsmToken :: Identifier : { StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; auto SpecialCapReg = ( Identifier ) ; if ( SpecialCapReg ) { Operands . push_back ( Operand :: createSpecialCapReg ( Identifier , S , SpecialCapReg -> Encoding , isRV64 ( ) ) ) ; return MatchOperand_Success ; } Twine Msg = ; Error ( S , Msg + + Twine ( ) + + Twine ( ( << ) - ) + ) ; return MatchOperand_ParseFail ; }" LLVM,RISCV,618,"Predict the next statement of this code snippet: auto RegName = [ ] ( unsigned Reg ) { if ( Reg ) return InstPrinter :: getRegisterName ( Reg ) ; else return ; } ; switch ( Kind ) { case KindTy :: Immediate : OS << * getImm ( ) ; break ; case KindTy :: Register : OS << << RegName ( getReg ( ) ) << ; break ; case KindTy :: Token : OS << << getToken ( ) << ; break ; case KindTy :: SystemRegister : OS << << getSysReg ( ) << '>' ; break ; case KindTy :: SpecialCapRegister :" LLVM,RISCV,619,"Predict the next statement of this code snippet: void print ( raw_ostream & OS ) const override { auto RegName = [ ] ( unsigned Reg ) { if ( Reg ) return InstPrinter :: getRegisterName ( Reg ) ; else return ; } ; switch ( Kind ) { case KindTy :: Immediate : OS << * getImm ( ) ; break ; case KindTy :: Register : OS << << RegName ( getReg ( ) ) << ; break ;" LLVM,RISCV,620,"Predict the next statement of this code snippet: if ( Op1 . isExpr ( ) ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( Reg ) . addReg ( ) . addExpr ( Op1 . getExpr ( ) ) ) ; return false ; } int64_t Imm = Inst . getOperand ( ) . getImm ( ) ; if ( ! isRV64 ( ) ) Imm = SignExtend64 < > ( Imm ) ; emitLoadImm ( Reg , Imm , Out ) ; return false ; } case : emitLoadLocalAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadTLSIEAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadTLSGDAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ;" LLVM,RISCV,621,"Predict the next statement of this code snippet: emitLoadTLSGDAddress ( Inst , IDLoc , Out ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : if ( checkPseudoAddTPRel ( Inst , Operands ) ) return true ; break ; case : emitCapLoadLocalCap ( Inst , IDLoc , Out ) ; return false ; case : emitCapLoadGlobalCap ( Inst , IDLoc , Out ) ; return false ; case : emitCapLoadTLSIEAddress ( Inst , IDLoc , Out ) ; return false ; case : emitCapLoadTLSGDCap ( Inst , IDLoc , Out ) ; return false ; case : if ( checkPseudoCIncOffsetTPRel ( Inst , Operands ) ) return true ; break ; case : emitPseudoExtend ( Inst , true , , IDLoc , Out ) ; return false ; case : emitPseudoExtend ( Inst , true , , IDLoc , Out ) ; return false ; case : emitPseudoExtend ( Inst , false , , IDLoc , Out ) ; return false ; case : emitPseudoExtend ( Inst , false , , IDLoc , Out ) ; return false ; case : case :" LLVM,RISCV,622,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && ( VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI ) ; } else { return isUInt < > ( Imm ) && ( VK == MCExpr :: VK__None || VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI ) ; }" LLVM,RISCV,623,"Predict the next statement of this code snippet: int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && ( VK == MCExpr :: VK__PCREL_HI || VK == MCExpr :: VK__GOT_HI ) ;" LLVM,RISCV,624,"Predict the next statement of this code snippet: unsigned Reg = Inst . getOperand ( ) . getReg ( ) ; const MCOperand & Op1 = Inst . getOperand ( ) ; if ( Op1 . isExpr ( ) ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( Reg ) . addReg ( ) . addExpr ( Op1 . getExpr ( ) ) ) ; return false ; } int64_t Imm = Inst . getOperand ( ) . getImm ( ) ; if ( ! isRV64 ( ) ) Imm = SignExtend64 < > ( Imm ) ; emitLoadImm ( Reg , Imm , Out ) ; return false ; } case : emitLoadLocalAddress ( Inst , IDLoc , Out ) ; return false ; case :" LLVM,RISCV,625,"Predict the next statement of this code snippet: Inst . setLoc ( IDLoc ) ; switch ( Inst . getOpcode ( ) ) { default : break ; case : { unsigned Reg = Inst . getOperand ( ) . getReg ( ) ; const MCOperand & Op1 = Inst . getOperand ( ) ; if ( Op1 . isExpr ( ) ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( Reg ) . addReg ( ) . addExpr ( Op1 . getExpr ( ) ) ) ; return false ;" LLVM,RISCV,626,"Predict the next statement of this code snippet: case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm13Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm20LUI : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm20AUIPC : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm21Lsb0JAL : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCSRSystemRegister : { return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; } case Match_InvalidFenceArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidFRMArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidBareSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidPseudoJumpSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidCallSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ;" LLVM,RISCV,627,"Predict the next statement of this code snippet: assert ( N == && ) ;" LLVM,RISCV,628,"Predict the next statement of this code snippet: Op -> VReg . RegNum = RegNo ; Op -> StartLoc = S ; Op -> EndLoc = E ; Op -> IsRV64 = IsRV64 ; return Op ;" LLVM,RISCV,629,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createVTypeImm ( APInt sew , APInt lmul , APInt ediv , SMLoc S , bool IsRV64 ) { auto Op = std :: make_unique < Operand > ( KindTy :: VTypeImm ) ; sew . ashrInPlace ( ) ; Op -> Vtypei . Sew = static_cast < VSEW > ( sew . logBase2 ( ) ) ; Op -> Vtypei . Lmul = static_cast < VLMUL > ( lmul . logBase2 ( ) ) ; Op -> Vtypei . Ediv = static_cast < VEDIV > ( ediv . logBase2 ( ) ) ; Op -> Vtypei . Encoding = ( ediv . logBase2 ( ) << ) | ( sew . logBase2 ( ) << ) | ( lmul . logBase2 ( ) ) ; Op -> StartLoc = S ; Op -> IsRV64 = IsRV64 ; return Op ;" LLVM,RISCV,630,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; }" LLVM,RISCV,631,"Predict the next statement of this code snippet: switch ( lmul ) { case : return ; case : return ; case :" LLVM,RISCV,632,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,633,"Predict the next statement of this code snippet: assert ( Kind == KindTy :: VTypeImm && ) ; Twine vtypei ( getSEW ( Vtypei . Sew ) ) ;" LLVM,RISCV,634,"Predict the next statement of this code snippet: assert ( Kind == KindTy :: VTypeImm && ) ; Twine vtypei ( getSEW ( Vtypei . Sew ) ) ; vtypei . concat ( Twine ( ) ) ; vtypei . concat ( Twine ( getLMUL ( Vtypei . Lmul ) ) ) ; vtypei . concat ( Twine ( ) ) ; vtypei . concat ( Twine ( getEDIV ( Vtypei . Ediv ) ) ) ; return vtypei . toStringRef ( Out ) ;" LLVM,RISCV,635,"Predict the next statement of this code snippet: bool isUImm7 ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,636,"Predict the next statement of this code snippet: bool isVectorRegister ( ) const { return Kind == KindTy :: VectorRegister ;" LLVM,RISCV,637,"Predict the next statement of this code snippet: return Kind == KindTy :: VTypeImm ;" LLVM,RISCV,638,"Predict the next statement of this code snippet: bool AsmParser :: parseOperand ( OperandVector & Operands , StringRef Mnemonic ) { OperandMatchResultTy Result = MatchOperandParserImpl ( Operands , Mnemonic , true ) ; if ( Result == MatchOperand_Success ) return false ; if ( Result == MatchOperand_ParseFail ) return true ; if ( Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == ) { if ( parseRegisterV0asV0T ( Operands , true ) == MatchOperand_Success ) return false ; } if ( parseRegister ( Operands , true ) == MatchOperand_Success ) return false ; if ( parseImmediate ( Operands ) == MatchOperand_Success ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ; }" LLVM,RISCV,639,"Predict the next statement of this code snippet: bool AsmParser :: parseOperand ( OperandVector & Operands , StringRef Mnemonic ) { OperandMatchResultTy Result = MatchOperandParserImpl ( Operands , Mnemonic , true ) ; if ( Result == MatchOperand_Success ) return false ; if ( Result == MatchOperand_ParseFail ) return true ; if ( Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == || Mnemonic . str ( ) == ) { if ( parseRegisterV0asV0T ( Operands , true ) == MatchOperand_Success ) return false ; } if ( parseRegister ( Operands , true ) == MatchOperand_Success ) return false ; if ( parseImmediate ( Operands ) == MatchOperand_Success ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; return false ; } Error ( getLoc ( ) , ) ; return true ;" LLVM,RISCV,640,"Predict the next statement of this code snippet: default : if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; Register RegNo ; matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) RegNo = ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; }" LLVM,RISCV,641,"Predict the next statement of this code snippet: StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; Register RegNo = MatchRegisterName ( Name ) ; getLexer ( ) . Lex ( ) ;" LLVM,RISCV,642,"Predict the next statement of this code snippet: SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ;" LLVM,RISCV,643,"Predict the next statement of this code snippet: getLexer ( ) . Lex ( ) ; Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( Name . consume_front ( ) ) { lmul = APInt ( , Name , ) ; if ( lmul != && lmul != && lmul != && lmul != ) return MatchOperand_NoMatch ; getLexer ( ) . Lex ( ) ; if ( getLexer ( ) . is ( AsmToken :: EndOfStatement ) ) { Operands . push_back ( Operand :: createVTypeImm ( sew , lmul , ediv , S , isRV64 ( ) ) ) ; return MatchOperand_Success ; } } if ( ! getLexer ( ) . is ( AsmToken :: Comma ) ) return MatchOperand_NoMatch ; getLexer ( ) . Lex ( ) ; Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( Name . consume_front ( ) ) { ediv = APInt ( , Name , ) ; if ( ediv != && ediv != && ediv != && ediv != ) return MatchOperand_NoMatch ;" LLVM,RISCV,644,"Predict the next statement of this code snippet: case KindTy :: Register : OS << ; OS << getReg ( ) << ; break ; case KindTy :: Token : OS << << getToken ( ) << ; break ;" LLVM,RISCV,645,"Predict the next statement of this code snippet: case KindTy :: VectorRegister : OS << << getVecReg ( ) << '>' ; break ; case KindTy :: VTypeImm : SmallVector < char , > VTypeBuf ; OS << << getVTypeImm ( VTypeBuf ) << '>' ;" LLVM,RISCV,646,"Predict the next statement of this code snippet: Operand ( const Operand & o ) : MCParsedAsmOperand ( ) { Kind = o . Kind ; IsRV64 = o . IsRV64 ; StartLoc = o . StartLoc ; EndLoc = o . EndLoc ; switch ( Kind ) { case KindTy :: Register : Reg = o . Reg ; break ; case KindTy :: Immediate : Imm = o . Imm ; break ; case KindTy :: Token : Tok = o . Tok ; break ; case KindTy :: SystemRegister : SysReg = o . SysReg ; break ; case KindTy :: VectorRegister : VReg = o . VReg ; break ; case KindTy :: VTypeImm : Vtypei = o . Vtypei ; break ; }" LLVM,RISCV,647,"Predict the next statement of this code snippet: StartLoc = o . StartLoc ; EndLoc = o . EndLoc ; switch ( Kind ) { case KindTy :: Register : Reg = o . Reg ; break ; case KindTy :: Immediate : Imm = o . Imm ; break ; case KindTy :: Token : Tok = o . Tok ; break ; case KindTy :: SystemRegister : SysReg = o . SysReg ; break ; case KindTy :: VectorRegister :" LLVM,RISCV,648,"Predict the next statement of this code snippet: Op -> Imm . Val = Val ; Op -> StartLoc = S ;" LLVM,RISCV,649,"Predict the next statement of this code snippet: case AsmToken :: Identifier : { StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; break ; } case AsmToken :: Percent : return parseOperandWithModifier ( Operands ) ; } Operands . push_back ( Operand :: createImm ( Res , S , E ) ) ; return MatchOperand_Success ;" LLVM,RISCV,650,"Predict the next statement of this code snippet: OperandMatchResultTy AsmParser :: parseOperandWithModifier ( OperandVector & Operands ) { SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Percent ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } StringRef Identifier = getParser ( ) . getTok ( ) . getIdentifier ( ) ; MCExpr :: VariantKind VK = MCExpr :: getVariantKindForName ( Identifier ) ;" LLVM,RISCV,651,"Predict the next statement of this code snippet: if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E ) ) ; } if ( HadParens ) { getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) ) ) ; } return MatchOperand_Success ;" LLVM,RISCV,652,"Predict the next statement of this code snippet: case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; unsigned RegNo = MatchRegisterName ( Name ) ; if ( RegNo == ) { RegNo = MatchRegisterAltName ( Name ) ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( Buf [ ] ) ; return MatchOperand_NoMatch ; } } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS ) ) ;" LLVM,RISCV,653,"Predict the next statement of this code snippet: case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm13Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm20LUI : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm20AUIPC : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm21Lsb0JAL : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCSRSystemRegister : { return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; } case Match_InvalidFenceArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidFRMArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidBareSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidPseudoJumpSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidCallSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidTPRelAddSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidVTypeI : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidVMaskRegister : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ;" LLVM,RISCV,654,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,655,"Predict the next statement of this code snippet: bool IsInRange = isRV64 ( ) ? true : isInt < > ( Imm ) || isUInt < > ( Imm ) ; return IsConstantImm && IsInRange && VK == MCExpr :: VK__None ;" LLVM,RISCV,656,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( VK == MCExpr :: VK__LO || VK == MCExpr :: VK__PCREL_LO ) return true ; bool IsInRange = isRV64 ( ) ? true : isInt < > ( Imm ) || isUInt < > ( Imm ) ;" LLVM,RISCV,657,"Predict the next statement of this code snippet: static bool matchRegisterNameHelper ( bool IsRV32E , Register & RegNo , StringRef Name ) {" LLVM,RISCV,658,"Predict the next statement of this code snippet: if ( RegNo == ) RegNo = MatchRegisterAltName ( Name ) ; if ( IsRV32E && RegNo >= && RegNo <= ) RegNo = ; return RegNo == ;" LLVM,RISCV,659,"Predict the next statement of this code snippet: Register RegNo ; matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( LParen ) ; return MatchOperand_NoMatch ; } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS , isRV64 ( ) ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ; } if ( HadParens ) { getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) , isRV64 ( ) ) ) ;" LLVM,RISCV,660,"Predict the next statement of this code snippet: unsigned AsmParser :: validateTargetOperandClass ( MCParsedAsmOperand & AsmOp , unsigned Kind ) { Operand & Op = static_cast < Operand & > ( AsmOp ) ; if ( ! Op . isReg ( ) ) return Match_InvalidOperand ; Register Reg = Op . getReg ( ) ; bool IsRegFPR32 = MCRegisterClasses [ ] . contains ( Reg ) ;" LLVM,RISCV,661,"Predict the next statement of this code snippet: if ( ! Op . isReg ( ) ) return Match_InvalidOperand ; Register Reg = Op . getReg ( ) ; bool IsRegFPR32 = MCRegisterClasses [ ] . contains ( Reg ) ; bool IsRegFPR32C = MCRegisterClasses [ ] . contains ( Reg ) ; if ( ( IsRegFPR32 && Kind == MCK_FPR64 ) || ( IsRegFPR32C && Kind == MCK_FPR64C ) ) { Op . Reg . RegNum = convertFPR32ToFPR64 ( Reg ) ; return Match_Success ; } return Match_InvalidOperand ;" LLVM,RISCV,662,"Predict the next statement of this code snippet: SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; const MCExpr * Res ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; StringRef Identifier ;" LLVM,RISCV,663,"Predict the next statement of this code snippet: SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; const MCExpr * Res ; if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; MCExpr :: VariantKind Kind = MCExpr :: VK__CALL ; if ( Identifier . consume_back ( ) ) Kind = MCExpr :: VK__CALL_PLT ; MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ;" LLVM,RISCV,664,"Predict the next statement of this code snippet: } } switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: Identifier : StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; unsigned RegNo ; matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( Buf [ ] ) ; return MatchOperand_NoMatch ; } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS , isRV64 ( ) ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ; } if ( HadParens ) {" LLVM,RISCV,665,"Predict the next statement of this code snippet: unsigned RegNo ; matchRegisterNameHelper ( isRV32E ( ) , RegNo , Name ) ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( Buf [ ] ) ; return MatchOperand_NoMatch ; } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS , isRV64 ( ) ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ; Operands . push_back ( Operand :: createReg ( RegNo , S , E , isRV64 ( ) ) ) ; } if ( HadParens ) { getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) , isRV64 ( ) ) ) ; }" LLVM,RISCV,666,"Predict the next statement of this code snippet: bool isImmXLen ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ; if ( ! isImm ( ) ) return false ;" LLVM,RISCV,667,"Predict the next statement of this code snippet: bool isImmXLen ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,668,"Predict the next statement of this code snippet: case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm13Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm20LUI : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm20AUIPC : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm21Lsb0JAL : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidCSRSystemRegister : { return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; } case Match_InvalidFenceArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidFRMArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; } case Match_InvalidBareSymbol : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ;" LLVM,RISCV,669,"Predict the next statement of this code snippet: if ( Sym -> isVariable ( ) ) { const MCExpr * V = Sym -> getVariableValue ( false ) ; if ( ! isa < MCSymbolRefExpr > ( V ) ) { getLexer ( ) . UnLex ( Tok ) ; return MatchOperand_NoMatch ; } Res = V ; } else Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ;" LLVM,RISCV,670,"Predict the next statement of this code snippet: emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , false ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ; return false ; case : emitLoadStoreSymbol ( Inst , , IDLoc , Out , true ) ;" LLVM,RISCV,671,"Predict the next statement of this code snippet: Sew . ashrInPlace ( ) ; unsigned SewLog2 = Sew . logBase2 ( ) ; unsigned LmulLog2 = Lmul . logBase2 ( ) ; Op -> VType . Sew = static_cast < VSEW > ( SewLog2 ) ; if ( Fractional ) { unsigned Flmul = - LmulLog2 ; Op -> VType . Lmul = static_cast < VLMUL > ( Flmul ) ;" LLVM,RISCV,672,"Predict the next statement of this code snippet: return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm7Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb00 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm8Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm9Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm9Lsb000 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidUImm10Lsb00NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - , ) ; case Match_InvalidSImm10Lsb0000NonZero : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidSImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - ) ; case Match_InvalidSImm12Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm12 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidSImm13Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidUImm20 : return generateImmOutOfRangeError ( Operands , ErrorInfo , , ( << ) - ) ; case Match_InvalidSImm21Lsb0 : return generateImmOutOfRangeError ( Operands , ErrorInfo , - ( << ) , ( << ) - , ) ; case Match_InvalidFenceArg : { SMLoc ErrorLoc = ( ( Operand & ) * Operands [ ErrorInfo ] ) . getStartLoc ( ) ; return Error ( ErrorLoc , ) ; }" LLVM,RISCV,673,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,674,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,675,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,676,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,677,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; bool IsValid ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isShiftedUInt < , > ( Imm ) ; return IsValid && VK == MCExpr :: VK__None ;" LLVM,RISCV,678,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; bool IsValid ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isShiftedUInt < , > ( Imm ) ;" LLVM,RISCV,679,"Predict the next statement of this code snippet: bool isUImm6 ( ) const { int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ;" LLVM,RISCV,680,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,681,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; bool IsValid ;" LLVM,RISCV,682,"Predict the next statement of this code snippet: OperandMatchResultTy AsmParser :: parseMemOpBaseReg ( OperandVector & Operands ) { if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) , isRV64 ( ) ) ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; }" LLVM,RISCV,683,"Predict the next statement of this code snippet: OperandMatchResultTy Result = MatchOperandParserImpl ( Operands , Mnemonic , true ) ; if ( Result == MatchOperand_Success ) return false ; if ( Result == MatchOperand_ParseFail ) return true ; if ( parseRegister ( Operands , true ) == MatchOperand_Success ) { if ( getSTI ( ) . getFeatureBits ( ) [ ] ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; }" LLVM,RISCV,684,"Predict the next statement of this code snippet: return isImm ( , ) ;" LLVM,RISCV,685,"Predict the next statement of this code snippet: return isU32Imm ( ) ;" LLVM,RISCV,686,"Predict the next statement of this code snippet: return isU32Imm ( ) ;" LLVM,RISCV,687,"Predict the next statement of this code snippet: return isU32Imm ( ) ;" LLVM,RISCV,688,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; int64_t Imm ; MCExpr :: VariantKind VK ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,689,"Predict the next statement of this code snippet: } if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { Error ( getLoc ( ) , FoundInteger ? : ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getLexer ( ) . isNot ( AsmToken :: RParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ;" LLVM,RISCV,690,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; int64_t Imm ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,691,"Predict the next statement of this code snippet: return IsConstantImm && isInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,692,"Predict the next statement of this code snippet: return IsConstantImm && isInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,693,"Predict the next statement of this code snippet: int64_t Imm ; MCExpr :: VariantKind VK ;" LLVM,RISCV,694,"Predict the next statement of this code snippet: bool isUImm8 ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ;" LLVM,RISCV,695,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createVType ( APInt Sew , APInt Lmul , SMLoc S , bool IsRV64 ) { auto Op = std :: make_unique < Operand > ( KindTy :: VType ) ;" LLVM,RISCV,696,"Predict the next statement of this code snippet: return ; case : return ; case : return ;" LLVM,RISCV,697,"Predict the next statement of this code snippet: case : return ; case : return ; }" LLVM,RISCV,698,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,699,"Predict the next statement of this code snippet: return MatchOperand_Success ; } if ( ! getLexer ( ) . is ( AsmToken :: Comma ) ) return MatchOperand_NoMatch ; getLexer ( ) . Lex ( ) ; Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; if ( ! Name . consume_front ( ) ) return MatchOperand_NoMatch ; APInt Lmul ( , Name , ) ; if ( Lmul != && Lmul != && Lmul != && Lmul != ) return MatchOperand_NoMatch ;" LLVM,RISCV,700,"Predict the next statement of this code snippet: bool AsmParser :: validateInstruction ( MCInst & Inst , OperandVector & Operands ) { const MCInstrDesc & MCID = MII . get ( Inst . getOpcode ( ) ) ; unsigned TargetFlags = ( MCID . TSFlags >> ) & ; if ( TargetFlags == ) return false ; unsigned DestReg = Inst . getOperand ( ) . getReg ( ) ; SMLoc Loc = Operands [ ] -> getStartLoc ( ) ; if ( ( TargetFlags == ) || ( TargetFlags == ) || ( TargetFlags == ) || ( TargetFlags == ) || ( TargetFlags == ) ) { if ( TargetFlags != ) { unsigned Src2Reg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == Src2Reg ) return Error ( Loc , ) ; if ( TargetFlags == ) { if ( DestReg + == Src2Reg ) return Error ( Loc , ) ; } } if ( Inst . getOperand ( ) . isReg ( ) ) { unsigned Src1Reg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == Src1Reg ) return Error ( Loc , ) ; if ( TargetFlags == || TargetFlags == ) { if ( DestReg + == Src1Reg ) return Error ( Loc , ) ; } }" LLVM,RISCV,701,"Predict the next statement of this code snippet: if ( ( TargetFlags == ) || ( TargetFlags == ) || ( TargetFlags == ) || ( TargetFlags == ) || ( TargetFlags == ) ) { if ( TargetFlags != ) { unsigned Src2Reg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == Src2Reg ) return Error ( Loc , ) ; if ( TargetFlags == ) { if ( DestReg + == Src2Reg ) return Error ( Loc , ) ; } } if ( Inst . getOperand ( ) . isReg ( ) ) { unsigned Src1Reg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == Src1Reg ) return Error ( Loc , ) ; if ( TargetFlags == || TargetFlags == ) { if ( DestReg + == Src1Reg ) return Error ( Loc , ) ; } } if ( Inst . getNumOperands ( ) == ) { unsigned MaskReg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == MaskReg ) return Error ( Loc , ) ; } } else if ( TargetFlags == ) { unsigned Src2Reg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == Src2Reg ) return Error ( Loc , ) ; if ( DestReg == Src2Reg + ) return Error ( Loc , ) ; } else if ( TargetFlags == || TargetFlags == ) { unsigned Src2Reg = Inst . getOperand ( ) . getReg ( ) ; if ( DestReg == Src2Reg ) return Error ( Loc , ) ; if ( TargetFlags == ) { if ( DestReg + == Src2Reg ) return Error ( Loc , ) ; } if ( Inst . getNumOperands ( ) == ) { unsigned MaskReg = Inst . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,702,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK = MCExpr :: VK__None ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isUInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,703,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ;" LLVM,RISCV,704,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; bool IsValid ; if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; else IsValid = isUInt < > ( Imm ) && ( Imm & ) == ; return IsValid && VK == MCExpr :: VK__None ;" LLVM,RISCV,705,"Predict the next statement of this code snippet: else IsValid = isUInt < > ( Imm ) && ( Imm & ) == ; return IsValid && VK == MCExpr :: VK__None ;" LLVM,RISCV,706,"Predict the next statement of this code snippet: OperandMatchResultTy AsmParser :: parseMemOpBaseReg ( OperandVector & Operands ) { if ( getLexer ( ) . isNot ( AsmToken :: LParen ) ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; Operands . push_back ( Operand :: createToken ( , getLoc ( ) , isRV64 ( ) ) ) ; if ( parseRegister ( Operands ) != MatchOperand_Success ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } if ( getSTI ( ) . getFeatureBits ( ) [ ] ) {" LLVM,RISCV,707,"Predict the next statement of this code snippet: if ( Result == MatchOperand_Success ) return false ; if ( Result == MatchOperand_ParseFail ) return true ; if ( parseRegister ( Operands , true ) == MatchOperand_Success ) { if ( getSTI ( ) . getFeatureBits ( ) [ ] ) { if ( getLexer ( ) . is ( AsmToken :: LParen ) ) return parseMemOpBaseReg ( Operands ) != MatchOperand_Success ; } return false ; }" LLVM,RISCV,708,"Predict the next statement of this code snippet: if ( IsConstant ) Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ; else Inst . addOperand ( MCOperand :: createExpr ( Expr ) ) ;" LLVM,RISCV,709,"Predict the next statement of this code snippet: unsigned Imm = ; for ( char c : SE -> getSymbol ( ) . getName ( ) ) { switch ( c ) { default : llvm_unreachable ( ) ; case 'i' : Imm |= ; break ; case 'o' : Imm |= ; break ; case 'r' : Imm |= ; break ;" LLVM,RISCV,710,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case 'i' : Imm |= ; break ; case 'o' : Imm |= ; break ; case 'r' : Imm |= ; break ;" LLVM,RISCV,711,"Predict the next statement of this code snippet: Kind = MCExpr :: VK__None ; Addend = ; if ( const MCExpr * RE = dyn_cast < MCExpr > ( Expr ) ) { Kind = RE -> getKind ( ) ; Expr = RE -> getSubExpr ( ) ; } if ( isa < MCConstantExpr > ( Expr ) || isa < MCSymbolRefExpr > ( Expr ) ) return true ; const MCBinaryExpr * BE = dyn_cast < MCBinaryExpr > ( Expr ) ; if ( ! BE ) return false ; if ( ! isa < MCSymbolRefExpr > ( BE -> getLHS ( ) ) ) return false ; if ( BE -> getOpcode ( ) != MCBinaryExpr :: Add && BE -> getOpcode ( ) != MCBinaryExpr :: Sub ) return false ; if ( BE -> getOpcode ( ) == MCBinaryExpr :: Sub && isa < MCSymbolRefExpr > ( BE -> getRHS ( ) ) ) return true ; auto AddendExpr = dyn_cast < MCConstantExpr > ( BE -> getRHS ( ) ) ; if ( ! AddendExpr ) return false ; Addend = AddendExpr -> getValue ( ) ; if ( BE -> getOpcode ( ) == MCBinaryExpr :: Sub ) Addend = - Addend ; return Kind != MCExpr :: VK__Invalid ;" LLVM,RISCV,712,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createImm ( const MCExpr * Val , SMLoc S , SMLoc E , bool IsRV64 ) {" LLVM,RISCV,713,"Predict the next statement of this code snippet: auto Op = make_unique < Operand > ( Register ) ; Op -> Reg . RegNum = RegNo ;" LLVM,RISCV,714,"Predict the next statement of this code snippet: static std :: unique_ptr < Operand > createSysReg ( StringRef Str , SMLoc S , unsigned Encoding , bool IsRV64 ) { auto Op = make_unique < Operand > ( SystemRegister ) ; Op -> SysReg . Data = Str . data ( ) ; Op -> SysReg . Length = Str . size ( ) ; Op -> SysReg . Encoding = Encoding ;" LLVM,RISCV,715,"Predict the next statement of this code snippet: auto Op = make_unique < Operand > ( Token ) ; Op -> Tok = Str ; Op -> StartLoc = S ; Op -> EndLoc = S ; Op -> IsRV64 = IsRV64 ;" LLVM,RISCV,716,"Predict the next statement of this code snippet: emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( DestReg ) . addImm ( Inst . Imm ) ) ; } else { emitToStreamer ( Out , MCInstBuilder ( Inst . Opc ) . addReg ( DestReg ) . addReg ( SrcReg ) . addImm ( Inst . Imm ) ) ;" LLVM,RISCV,717,"Predict the next statement of this code snippet: MCContext & Ctx = getContext ( ) ; MCSymbol * TmpLabel = Ctx . createTempSymbol ( , true , false ) ; Out . EmitLabel ( TmpLabel ) ; MCOperand DestReg = Inst . getOperand ( ) ; const MCExpr * Symbol = MCExpr :: create ( Inst . getOperand ( ) . getExpr ( ) , MCExpr :: VK__PCREL_HI , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( DestReg ) . addExpr ( Symbol ) ) ; const MCExpr * RefToLinkTmpLabel = MCExpr :: create ( MCSymbolRefExpr :: create ( TmpLabel , Ctx ) , MCExpr :: VK__PCREL_LO , Ctx ) ; emitToStreamer ( Out , MCInstBuilder ( ) . addOperand ( DestReg ) . addOperand ( DestReg ) . addExpr ( RefToLinkTmpLabel ) ) ;" LLVM,RISCV,718,"Predict the next statement of this code snippet: CInst . setLoc ( Inst . getLoc ( ) ) ; S . EmitInstruction ( ( Res ? CInst : Inst ) , getSTI ( ) ) ;" LLVM,RISCV,719,"Predict the next statement of this code snippet: bool Res = compressInst ( CInst , Inst , getSTI ( ) , S . getContext ( ) ) ; CInst . setLoc ( Inst . getLoc ( ) ) ;" LLVM,RISCV,720,"Predict the next statement of this code snippet: assert ( Kind == Immediate && ) ; return Imm . Val ;" LLVM,RISCV,721,"Predict the next statement of this code snippet: unsigned getReg ( ) const override { assert ( Kind == Register && ) ; return Reg . RegNum ;" LLVM,RISCV,722,"Predict the next statement of this code snippet: StringRef getSysReg ( ) const { assert ( Kind == SystemRegister && ) ; return StringRef ( SysReg . Data , SysReg . Length ) ;" LLVM,RISCV,723,"Predict the next statement of this code snippet: StringRef getToken ( ) const {" LLVM,RISCV,724,"Predict the next statement of this code snippet: if ( ! IsConstantImm ) IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ;" LLVM,RISCV,725,"Predict the next statement of this code snippet: bool isBareSymbol ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ; if ( ! isImm ( ) || evaluateConstantImm ( getImm ( ) , Imm , VK ) ) return false ; return AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,726,"Predict the next statement of this code snippet: return IsConstantImm && ( Imm != ) && ( isUInt < > ( Imm ) || ( Imm >= && Imm <= ) ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,727,"Predict the next statement of this code snippet: return IsConstantImm && ( Imm != ) && ( isUInt < > ( Imm ) || ( Imm >= && Imm <= ) ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,728,"Predict the next statement of this code snippet: StringRef Str = SVal -> getSymbol ( ) . getName ( ) ; char Prev = '\0' ; for ( char c : Str ) { if ( c != 'i' && c != 'o' && c != 'r' && c != 'w' ) return false ; if ( c <= Prev ) return false ; Prev = c ; }" LLVM,RISCV,729,"Predict the next statement of this code snippet: StringRef Str = SVal -> getSymbol ( ) . getName ( ) ; char Prev = '\0' ; for ( char c : Str ) { if ( c != 'i' && c != 'o' && c != 'r' && c != 'w' ) return false ; if ( c <= Prev ) return false ; Prev = c ;" LLVM,RISCV,730,"Predict the next statement of this code snippet: if ( VK == MCExpr :: VK__LO || VK == MCExpr :: VK__PCREL_LO ) return true ; bool IsInRange = isRV64 ( ) ? true : isInt < > ( Imm ) || isUInt < > ( Imm ) ; return IsConstantImm && IsInRange && VK == MCExpr :: VK__None ;" LLVM,RISCV,731,"Predict the next statement of this code snippet: bool isReg ( ) const override { return Kind == Register ;" LLVM,RISCV,732,"Predict the next statement of this code snippet: return IsConstantImm && ( Imm != ) && isShiftedInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,733,"Predict the next statement of this code snippet: MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ;" LLVM,RISCV,734,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isInt < > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,735,"Predict the next statement of this code snippet: int64_t Imm ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isInt < > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,736,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isInt < > ( Imm ) && ( Imm != ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,737,"Predict the next statement of this code snippet: bool isToken ( ) const override {" LLVM,RISCV,738,"Predict the next statement of this code snippet: return Kind == Token ;" LLVM,RISCV,739,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; int64_t Imm ; MCExpr :: VariantKind VK ;" LLVM,RISCV,740,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) {" LLVM,RISCV,741,"Predict the next statement of this code snippet: bool isUImm20LUI ( ) const { MCExpr :: VariantKind VK ; int64_t Imm ; bool IsValid ; if ( ! isImm ( ) ) return false ; bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; if ( ! IsConstantImm ) { IsValid = AsmParser :: classifySymbolRef ( getImm ( ) , VK , Imm ) ; return IsValid && VK == MCExpr :: VK__HI ;" LLVM,RISCV,742,"Predict the next statement of this code snippet: bool isUImm5NonZero ( ) const { int64_t Imm ; MCExpr :: VariantKind VK ;" LLVM,RISCV,743,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,744,"Predict the next statement of this code snippet: bool IsConstantImm = evaluateConstantImm ( getImm ( ) , Imm , VK ) ; return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,745,"Predict the next statement of this code snippet: return IsConstantImm && isShiftedUInt < , > ( Imm ) && VK == MCExpr :: VK__None ;" LLVM,RISCV,746,"Predict the next statement of this code snippet: if ( ! isImm ( ) ) return false ;" LLVM,RISCV,747,"Predict the next statement of this code snippet: return ( isRV64 ( ) && isUInt < > ( Imm ) ) || isUInt < > ( Imm ) ;" LLVM,RISCV,748,"Predict the next statement of this code snippet: if ( ! evaluateConstantImm ( getImm ( ) , Imm , VK ) || VK != MCExpr :: VK__None ) return false ; if ( Imm == ) return false ; return ( isRV64 ( ) && isUInt < > ( Imm ) ) || isUInt < > ( Imm ) ;" LLVM,RISCV,749,"Predict the next statement of this code snippet: RegisterMCAsmParser < AsmParser > X ( getThe32Target ( ) ) ;" LLVM,RISCV,750,"Predict the next statement of this code snippet: if ( getLexer ( ) . getKind ( ) != AsmToken :: Identifier ) return MatchOperand_NoMatch ; StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ; return MatchOperand_Success ;" LLVM,RISCV,751,"Predict the next statement of this code snippet: StringRef Identifier ; if ( getParser ( ) . parseIdentifier ( Identifier ) ) return MatchOperand_ParseFail ; MCSymbol * Sym = getContext ( ) . getOrCreateSymbol ( Identifier ) ; Res = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , getContext ( ) ) ; Operands . push_back ( Operand :: createImm ( Res , S , E , isRV64 ( ) ) ) ;" LLVM,RISCV,752,"Predict the next statement of this code snippet: bool AsmParser :: ParseDirective ( AsmToken DirectiveID ) {" LLVM,RISCV,753,"Predict the next statement of this code snippet: StringRef IDVal = DirectiveID . getString ( ) ;" LLVM,RISCV,754,"Predict the next statement of this code snippet: Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; if ( popFeatureBits ( ) ) return Error ( StartLoc , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionRVC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; setFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoRVC ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; clearFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionRelax ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; setFeatureBits ( , ) ; return false ; } if ( Option == ) { getTargetStreamer ( ) . emitDirectiveOptionNoRelax ( ) ; Parser . Lex ( ) ; if ( Parser . getTok ( ) . isNot ( AsmToken :: EndOfStatement ) ) return Error ( Parser . getTok ( ) . getLoc ( ) , ) ; clearFeatureBits ( , ) ; return false ; } Warning ( Parser . getTok ( ) . getLoc ( ) , ) ; Parser . eatToEndOfStatement ( ) ;" LLVM,RISCV,755,"Predict the next statement of this code snippet: SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; const MCExpr * Res ; switch ( getLexer ( ) . getKind ( ) ) { default : return MatchOperand_NoMatch ; case AsmToken :: LParen : case AsmToken :: Minus : case AsmToken :: Plus : case AsmToken :: Integer : case AsmToken :: String : case AsmToken :: Identifier : if ( getParser ( ) . parseExpression ( Res ) ) return MatchOperand_ParseFail ; break ; case AsmToken :: Percent : return parseOperandWithModifier ( Operands ) ;" LLVM,RISCV,756,"Predict the next statement of this code snippet: MAB . setForceRelocs ( ) ; } } Operands . push_back ( Operand :: createToken ( Name , NameLoc , isRV64 ( ) ) ) ; if ( getLexer ( ) . is ( AsmToken :: EndOfStatement ) ) return false ; if ( parseOperand ( Operands , Name ) ) return true ; unsigned OperandIdx = ;" LLVM,RISCV,757,"Predict the next statement of this code snippet: } getParser ( ) . Lex ( ) ; if ( getLexer ( ) . getKind ( ) != AsmToken :: LParen ) { Error ( getLoc ( ) , ) ; return MatchOperand_ParseFail ; } getParser ( ) . Lex ( ) ; const MCExpr * SubExpr ; if ( getParser ( ) . parseParenExpression ( SubExpr , E ) ) { return MatchOperand_ParseFail ; } const MCExpr * ModExpr = MCExpr :: create ( SubExpr , VK , getContext ( ) ) ;" LLVM,RISCV,758,"Predict the next statement of this code snippet: StringRef Name = getLexer ( ) . getTok ( ) . getIdentifier ( ) ; unsigned RegNo = MatchRegisterName ( Name ) ; if ( RegNo == ) { RegNo = MatchRegisterAltName ( Name ) ; if ( RegNo == ) { if ( HadParens ) getLexer ( ) . UnLex ( Buf [ ] ) ; return MatchOperand_NoMatch ; } } if ( HadParens ) Operands . push_back ( Operand :: createToken ( , FirstS , isRV64 ( ) ) ) ; SMLoc S = getLoc ( ) ; SMLoc E = SMLoc :: getFromPointer ( S . getPointer ( ) - ) ; getLexer ( ) . Lex ( ) ;" LLVM,RISCV,759,"Predict the next statement of this code snippet: if ( FeatureBitStack . empty ( ) ) return true ; FeatureBitset FeatureBits = FeatureBitStack . pop_back_val ( ) ; copySTI ( ) . setFeatureBits ( FeatureBits ) ;" LLVM,RISCV,760,"Predict the next statement of this code snippet: case Immediate : OS << * getImm ( ) ; break ; case Register : OS << ; OS << getReg ( ) << ; break ; case Token : OS << << getToken ( ) << ; break ;" LLVM,RISCV,761,"Predict the next statement of this code snippet: case Token : OS << << getToken ( ) << ; break ; case SystemRegister : OS << << getSysReg ( ) << '>' ; break ; }" LLVM,RISCV,762,"Predict the next statement of this code snippet: unsigned Reg = Inst . getOperand ( ) . getReg ( ) ; const MCOperand & Op1 = Inst . getOperand ( ) ; if ( Op1 . isExpr ( ) ) { emitToStreamer ( Out , MCInstBuilder ( ) . addReg ( Reg ) . addReg ( ) . addExpr ( Op1 . getExpr ( ) ) ) ; return false ;" LLVM,RISCV,763,"Predict the next statement of this code snippet: Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ; Parser . addAliasForDirective ( , ) ;" LLVM,RISCV,764,"Predict the next statement of this code snippet: AsmParser ( const MCSubtargetInfo & STI , MCAsmParser & Parser , const MCInstrInfo & MII , const MCTargetOptions & Options ) : MCTargetAsmParser ( Options , STI , MII ) {" LLVM,RISCV,765,"Predict the next statement of this code snippet: Imm = o . Imm ; break ; case Token : Tok = o . Tok ; break ; case SystemRegister : SysReg = o . SysReg ; break ;" LLVM,RISCV,766,"Predict the next statement of this code snippet: unsigned AsmParser :: validateTargetOperandClass ( MCParsedAsmOperand & AsmOp , unsigned Kind ) { Operand & Op = static_cast < Operand & > ( AsmOp ) ; if ( ! Op . isReg ( ) ) return Match_InvalidOperand ; unsigned Reg = Op . getReg ( ) ; bool IsRegFPR32 = MCRegisterClasses [ ] . contains ( Reg ) ; bool IsRegFPR32C = MCRegisterClasses [ ] . contains ( Reg ) ; if ( ( IsRegFPR32 && Kind == MCK_FPR64 ) || ( IsRegFPR32C && Kind == MCK_FPR64C ) ) { Op . Reg . RegNum = convertFPR32ToFPR64 ( Reg ) ; return Match_Success ; }" LLVM,RISCV,767,"Predict the next statement of this code snippet: const DataLayout TD = getDataLayout ( ) ; for ( unsigned i = , e = Stubs . size ( ) ; i != e ; ++ i ) { OutStreamer -> EmitLabel ( Stubs [ i ] . first ) ; OutStreamer -> EmitSymbolValue ( Stubs [ i ] . second . getPointer ( ) , TD . getPointerSize ( ) , ) ; } Stubs . clear ( ) ; }" LLVM,RISCV,768,"Predict the next statement of this code snippet: void AsmPrinter :: EmitInstruction ( const MachineInstr * MI ) {" LLVM,RISCV,769,"Predict the next statement of this code snippet: Lower . lower ( MI , LoweredMI ) ;" LLVM,RISCV,770,"Predict the next statement of this code snippet: const MCExpr * Expr = MCSymbolRefExpr :: create ( getSymbol ( RVCPV -> getGlobalValue ( ) ) , getModifierVariantKind ( RVCPV -> getModifier ( ) ) , OutContext ) ; uint64_t Size = getDataLayout ( ) . getTypeAllocSize ( RVCPV -> getType ( ) ) ; OutStreamer -> EmitValue ( Expr , Size ) ;" LLVM,RISCV,771,"Predict the next statement of this code snippet: static MCSymbolRefExpr :: VariantKind getModifierVariantKind ( Modifier ) { switch ( Modifier ) { case : return MCSymbolRefExpr :: VK_NTPOFF ; }" LLVM,RISCV,772,"Predict the next statement of this code snippet: void LLVMInitializeAsmPrinter ( ) { RegisterAsmPrinter < AsmPrinter > A ( TheTarget ) ;" LLVM,RISCV,773,"Predict the next statement of this code snippet: RegisterAsmPrinter < AsmPrinter > A ( TheTarget ) ; RegisterAsmPrinter < AsmPrinter > B ( The64Target ) ;" LLVM,RISCV,774,"Predict the next statement of this code snippet: bool AsmPrinter :: PrintAsmMemoryOperand ( const MachineInstr * MI , unsigned OpNo , unsigned AsmVariant , const char * ExtraCode , raw_ostream & OS ) { InstPrinter :: printAddress ( MI -> getOperand ( OpNo ) . getReg ( ) , MI -> getOperand ( OpNo + ) . getImm ( ) , OS ) ; return false ;" LLVM,RISCV,775,"Predict the next statement of this code snippet: OS << '%' << InstPrinter :: getRegisterName ( MI -> getOperand ( opNum ) . getReg ( ) ) ;" LLVM,RISCV,776,"Predict the next statement of this code snippet: OS << '%' << InstPrinter :: getRegisterName ( MI -> getOperand ( opNum ) . getReg ( ) ) ; OS << ;" LLVM,RISCV,777,"Predict the next statement of this code snippet: case : O << ; break ; case : O << ; break ; case : O << ; break ; case : O << ; break ; } switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : case MachineOperand :: MO_Immediate : {" LLVM,RISCV,778,"Predict the next statement of this code snippet: case : O << ; break ; } switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : case MachineOperand :: MO_Immediate : { MCInstLower Lower ( MF -> getContext ( ) , * this ) ; MCOperand MC ( Lower . lowerOperand ( MI -> getOperand ( OpNo ) ) ) ; InstPrinter :: printOperand ( MC , O ) ; break ; } case MachineOperand :: MO_GlobalAddress : O << * getSymbol ( MO . getGlobal ( ) ) ; break ; default : llvm_unreachable ( ) ; }" LLVM,RISCV,779,"Predict the next statement of this code snippet: bool AsmPrinter :: runOnMachineFunction ( MachineFunction & MF ) { Subtarget = & MF . getSubtarget < Subtarget > ( ) ;" LLVM,RISCV,780,"Predict the next statement of this code snippet: if ( emitPseudoExpansionLowering ( * OutStreamer , MI ) ) return ;" LLVM,RISCV,781,"Predict the next statement of this code snippet: LowerMachineInstrToMCInst ( MI , TmpInst , * this ) ; EmitToStreamer ( * OutStreamer , TmpInst ) ;" LLVM,RISCV,782,"Predict the next statement of this code snippet: if ( Res ) ++ NumInstrsCompressed ;" LLVM,RISCV,783,"Predict the next statement of this code snippet: bool Res = compressInst ( CInst , Inst , * TM . getMCSubtargetInfo ( ) , OutStreamer -> getContext ( ) ) ; if ( Res ) ++ NumInstrsCompressed ;" LLVM,RISCV,784,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) {" LLVM,RISCV,785,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) {" LLVM,RISCV,786,"Predict the next statement of this code snippet: void AsmPrinter :: emitInstruction ( const MachineInstr * MI ) { if ( emitPseudoExpansionLowering ( * OutStreamer , MI ) ) return ;" LLVM,RISCV,787,"Predict the next statement of this code snippet: bool Res = compressInst ( CInst , Inst , * TM . getMCSubtargetInfo ( ) , OutStreamer -> getContext ( ) ) ; AsmPrinter :: EmitToStreamer ( * OutStreamer , Res ? CInst : Inst ) ;" LLVM,RISCV,788,"Predict the next statement of this code snippet: void AsmPrinter :: EmitToStreamer ( MCStreamer & S , const MCInst & Inst ) { MCInst CInst ; bool Res = compressInst ( CInst , Inst , * TM . getMCSubtargetInfo ( ) , OutStreamer -> getContext ( ) ) ;" LLVM,RISCV,789,"Predict the next statement of this code snippet: void LLVMInitializeAsmPrinter ( ) { RegisterAsmPrinter < AsmPrinter > X ( getThe32Target ( ) ) ; RegisterAsmPrinter < AsmPrinter > Y ( getThe64Target ( ) ) ;" LLVM,RISCV,790,"Predict the next statement of this code snippet: void LLVMInitializeAsmPrinter ( ) { RegisterAsmPrinter < AsmPrinter > X ( getThe32Target ( ) ) ;" LLVM,RISCV,791,"Predict the next statement of this code snippet: if ( AsmVariant != ) report_fatal_error ( ) ; if ( ! ExtraCode ) { const MachineOperand & MO = MI -> getOperand ( OpNo ) ;" LLVM,RISCV,792,"Predict the next statement of this code snippet: if ( ! ExtraCode ) { const MachineOperand & MO = MI -> getOperand ( OpNo ) ; if ( ! MO . isReg ( ) ) return true ;" LLVM,RISCV,793,"Predict the next statement of this code snippet: if ( ! AsmPrinter :: PrintAsmOperand ( MI , OpNo , AsmVariant , ExtraCode , OS ) ) return false ; if ( ! ExtraCode ) { const MachineOperand & MO = MI -> getOperand ( OpNo ) ; switch ( MO . getType ( ) ) { case MachineOperand :: MO_Immediate : OS << MO . getImm ( ) ; return false ; case MachineOperand :: MO_Register : OS << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; return false ; default :" LLVM,RISCV,794,"Predict the next statement of this code snippet: case MachineOperand :: MO_Immediate : OS << MO . getImm ( ) ; return false ; case MachineOperand :: MO_Register : OS << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; return false ; default : break ; }" LLVM,RISCV,795,"Predict the next statement of this code snippet: void AsmPrinter :: emitAttributes ( ) { TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; RTS . emitTargetAttributes ( * STI ) ;" LLVM,RISCV,796,"Predict the next statement of this code snippet: TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; const Triple & TT = TM . getTargetTriple ( ) ;" LLVM,RISCV,797,"Predict the next statement of this code snippet: TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; const Triple & TT = TM . getTargetTriple ( ) ; StringRef CPU = TM . getTargetCPU ( ) ;" LLVM,RISCV,798,"Predict the next statement of this code snippet: void AsmPrinter :: printOperand ( const MachineInstr * MI , int OpNo , raw_ostream & O ) { const MachineOperand & MO = MI -> getOperand ( OpNo ) ; switch ( MO . getTargetFlags ( ) ) { case : O << ; break ; case : O << ; break ; case : O << ; break ; case : O << ; break ; } switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : O << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; break ; case MachineOperand :: MO_Immediate : O << MO . getImm ( ) ; break ; case MachineOperand :: MO_GlobalAddress : O << * getSymbol ( MO . getGlobal ( ) ) ; break ; default :" LLVM,RISCV,799,"Predict the next statement of this code snippet: if ( MO . isImm ( ) && MO . getImm ( ) == ) { OS << InstPrinter :: getRegisterName ( ) ; return false ; } break ; case 'i' : if ( ! MO . isReg ( ) ) OS << 'i' ; return false ; } } switch ( MO . getType ( ) ) { case MachineOperand :: MO_Immediate : OS << MO . getImm ( ) ; return false ; case MachineOperand :: MO_Register : OS << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; return false ; default : break ; } return true ;" LLVM,RISCV,800,"Predict the next statement of this code snippet: TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; const Triple & TT = TM . getTargetTriple ( ) ;" LLVM,RISCV,801,"Predict the next statement of this code snippet: const TargetMachine & RTM = static_cast < const TargetMachine & > ( TM ) ; const Subtarget STI ( TT , CPU , CPU , FS , , RTM ) ;" LLVM,RISCV,802,"Predict the next statement of this code snippet: auto * RVFI = MF -> getInfo < MachineFunctionInfo > ( ) ; TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; if ( RVFI -> isHwlpBasicBlock ( & MBB ) ) { RTS . emitDirectiveOptionPop ( ) ; }" LLVM,RISCV,803,"Predict the next statement of this code snippet: TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ;" LLVM,RISCV,804,"Predict the next statement of this code snippet: AsmPrinter :: emitBasicBlockStart ( MBB ) ; auto * RVFI = MF -> getInfo < MachineFunctionInfo > ( ) ; TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; if ( RVFI -> isHwlpBasicBlock ( & MBB ) ) { RTS . emitDirectiveOptionPush ( ) ; RTS . emitDirectiveOptionNoRVC ( ) ; }" LLVM,RISCV,805,"Predict the next statement of this code snippet: auto * RVFI = MF -> getInfo < MachineFunctionInfo > ( ) ; TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; if ( RVFI -> isHwlpBasicBlock ( & MBB ) ) {" LLVM,RISCV,806,"Predict the next statement of this code snippet: auto * RVFI = MI -> getMF ( ) -> getInfo < MachineFunctionInfo > ( ) ;" LLVM,RISCV,807,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) , STI ( TM . getMCSubtargetInfo ( ) ) {" LLVM,RISCV,808,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) , STI ( TM . getMCSubtargetInfo ( ) ) {" LLVM,RISCV,809,"Predict the next statement of this code snippet: NewSTI . setFeatureBits ( MF . getSubtarget ( ) . getFeatureBits ( ) ) ; STI = & NewSTI ; SetupMachineFunction ( MF ) ; emitFunctionBody ( ) ; return false ;" LLVM,RISCV,810,"Predict the next statement of this code snippet: bool AsmPrinter :: runOnMachineFunction ( MachineFunction & MF ) {" LLVM,RISCV,811,"Predict the next statement of this code snippet: bool AsmPrinter :: PrintAsmOperand ( const MachineInstr * MI , unsigned OpNo , const char * ExtraCode , raw_ostream & OS ) { if ( ! AsmPrinter :: PrintAsmOperand ( MI , OpNo , ExtraCode , OS ) ) return false ; if ( ! ExtraCode ) { const MachineOperand & MO = MI -> getOperand ( OpNo ) ; switch ( MO . getType ( ) ) { case MachineOperand :: MO_Immediate :" LLVM,RISCV,812,"Predict the next statement of this code snippet: bool lowerOperand ( const MachineOperand & MO , MCOperand & MCOp ) const { return lowerMachineOperandToMCOperand ( MO , MCOp , * this ) ;" LLVM,RISCV,813,"Predict the next statement of this code snippet: void AsmPrinter :: emitAttributes ( ) { TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; RTS . emitTargetAttributes ( * MCSTI ) ;" LLVM,RISCV,814,"Predict the next statement of this code snippet: void AsmPrinter :: emitAttributes ( ) { TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; RTS . emitTargetAttributes ( * MCSTI ) ;" LLVM,RISCV,815,"Predict the next statement of this code snippet: void AsmPrinter :: emitEndOfAsmFile ( Module & M ) { TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ;" LLVM,RISCV,816,"Predict the next statement of this code snippet: TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ;" LLVM,RISCV,817,"Predict the next statement of this code snippet: AsmPrinter :: emitFunctionEntryLabel ( ) ;" LLVM,RISCV,818,"Predict the next statement of this code snippet: TargetStreamer & RTS = static_cast < TargetStreamer & > ( * OutStreamer -> getTargetStreamer ( ) ) ; RTS . setTargetABI ( STI -> getTargetABI ( ) ) ;" LLVM,RISCV,819,"Predict the next statement of this code snippet: void AsmPrinter :: emitInstruction ( const MachineInstr * MI ) { if ( emitPseudoExpansionLowering ( * OutStreamer , MI ) ) return ; MCInst TmpInst ;" LLVM,RISCV,820,"Predict the next statement of this code snippet: void AsmPrinter :: emitInstruction ( const MachineInstr * MI ) { if ( emitPseudoExpansionLowering ( * OutStreamer , MI ) ) return ; MCInst TmpInst ;" LLVM,RISCV,821,"Predict the next statement of this code snippet: void AsmPrinter :: EmitToStreamer ( MCStreamer & S , const MCInst & Inst ) { MCInst CInst ; bool Res = compressInst ( CInst , Inst , * STI , OutStreamer -> getContext ( ) ) ;" LLVM,RISCV,822,"Predict the next statement of this code snippet: void AsmPrinter :: EmitToStreamer ( MCStreamer & S , const MCInst & Inst ) {" LLVM,RISCV,823,"Predict the next statement of this code snippet: const char * getPassName ( ) const override { return ;" LLVM,RISCV,824,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAsmPrinter ( ) { RegisterAsmPrinter < AsmPrinter > X ( getThe32Target ( ) ) ;" LLVM,RISCV,825,"Predict the next statement of this code snippet: if ( ! MO . isReg ( ) ) OS << 'i' ; return false ; } } switch ( MO . getType ( ) ) { case MachineOperand :: MO_Immediate : OS << MO . getImm ( ) ; return false ; case MachineOperand :: MO_Register : OS << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; return false ; case MachineOperand :: MO_GlobalAddress :" LLVM,RISCV,826,"Predict the next statement of this code snippet: case MachineOperand :: MO_Immediate : OS << MO . getImm ( ) ; return false ; case MachineOperand :: MO_Register : OS << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; return false ; case MachineOperand :: MO_GlobalAddress : PrintSymbolOperand ( MO , OS ) ; return false ; case MachineOperand :: MO_BlockAddress : { MCSymbol * Sym = GetBlockAddressSymbol ( MO . getBlockAddress ( ) ) ; Sym -> print ( OS , MAI ) ; return false ; }" LLVM,RISCV,827,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) , MCSTI ( TM . getMCSubtargetInfo ( ) ) {" LLVM,RISCV,828,"Predict the next statement of this code snippet: explicit AsmPrinter ( TargetMachine & TM , std :: unique_ptr < MCStreamer > Streamer ) : AsmPrinter ( TM , std :: move ( Streamer ) ) , MCSTI ( TM . getMCSubtargetInfo ( ) ) {" LLVM,RISCV,829,"Predict the next statement of this code snippet: MCSubtargetInfo & NewSTI = OutStreamer -> getContext ( ) . getSubtargetCopy ( * TM . getMCSubtargetInfo ( ) ) ; NewSTI . setFeatureBits ( MF . getSubtarget ( ) . getFeatureBits ( ) ) ; MCSTI = & NewSTI ; STI = & MF . getSubtarget < Subtarget > ( ) ; SetupMachineFunction ( MF ) ; emitFunctionBody ( ) ;" LLVM,RISCV,830,"Predict the next statement of this code snippet: if ( isRV32Only && ActiveFeatures [ ] ) return false ; if ( FeaturesRequired . none ( ) ) return true ;" LLVM,RISCV,831,"Predict the next statement of this code snippet: TargetABI = ABI_Unknown ; } else if ( ( ABIName . startswith ( ) || ABIName . startswith ( ) ) && ! IsRV64 ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ( ABIName . startswith ( ) || ABIName . startswith ( ) ) && ! FeatureBits [ ] ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( IsRV32E && TargetABI != ABI_ILP32E && TargetABI != ABI_IL32PC64E && TargetABI != ABI_Unknown ) { errs ( ) << ; TargetABI = ABI_Unknown ; } if ( TargetABI != ABI_Unknown ) return TargetABI ; if ( IsRV32E ) return ABI_ILP32E ;" LLVM,RISCV,832,"Predict the next statement of this code snippet: TargetABI = ABI_Unknown ; } else if ( ( ABIName . startswith ( ) || ABIName . startswith ( ) ) && ! FeatureBits [ ] ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( IsRV32E && TargetABI != ABI_ILP32E && TargetABI != ABI_IL32PC64E && TargetABI != ABI_Unknown ) { errs ( ) << ; TargetABI = ABI_Unknown ; } if ( TargetABI != ABI_Unknown ) return TargetABI ; if ( IsRV32E ) return ABI_ILP32E ; if ( IsRV64 ) return ABI_LP64 ; return ABI_ILP32 ;" LLVM,RISCV,833,"Predict the next statement of this code snippet: return std :: make_pair ( << static_cast < unsigned > ( VLMUL ) , false ) ; case :: LMUL_F2 : case :: LMUL_F4 : case :: LMUL_F8 :" LLVM,RISCV,834,"Predict the next statement of this code snippet: inline static unsigned encodeSEW ( unsigned SEW ) {" LLVM,RISCV,835,"Predict the next statement of this code snippet: assert ( isValidSEW ( SEW ) && ) ;" LLVM,RISCV,836,"Predict the next statement of this code snippet: assert ( isValidSEW ( SEW ) && ) ; unsigned VLMULBits = static_cast < unsigned > ( VLMUL ) ; unsigned VSEWBits = Log2_32 ( SEW ) - ;" LLVM,RISCV,837,"Predict the next statement of this code snippet: unsigned VType :: encodeVTYPE ( VLMUL , unsigned SEW , bool TailAgnostic , bool MaskAgnostic ) {" LLVM,RISCV,838,"Predict the next statement of this code snippet: return isCheriPureCapABI ( TargetABI ) ? : ;" LLVM,RISCV,839,"Predict the next statement of this code snippet: static inline VConstraintType getConstraint ( uint64_t TSFlags ) {" LLVM,RISCV,840,"Predict the next statement of this code snippet: static inline VConstraintType getConstraint ( uint64_t TSFlags ) {" LLVM,RISCV,841,"Predict the next statement of this code snippet: auto TargetABI = StringSwitch < ABI > ( ABIName ) . Case ( , ABI_ILP32 ) . Case ( , ABI_ILP32F ) . Case ( , ABI_ILP32D ) . Case ( , ABI_ILP32E ) . Case ( , ABI_IL32PC64 ) . Case ( , ABI_IL32PC64F ) . Case ( , ABI_IL32PC64D ) . Case ( , ABI_IL32PC64E ) . Case ( , ABI_LP64 ) . Case ( , ABI_LP64F ) . Case ( , ABI_LP64D ) . Case ( , ABI_L64PC128 ) . Case ( , ABI_L64PC128F ) . Case ( , ABI_L64PC128D ) . Default ( ABI_Unknown ) ;" LLVM,RISCV,842,"Predict the next statement of this code snippet: return TSFlags & IsRVVWideningReductionMask ;" LLVM,RISCV,843,"Predict the next statement of this code snippet: static inline bool isRVVWideningReduction ( uint64_t TSFlags ) {" LLVM,RISCV,844,"Predict the next statement of this code snippet: if ( Fractional ) OS << ; else OS << ; OS << LMul ; if ( isTailAgnostic ( VType ) ) OS << ; else OS << ;" LLVM,RISCV,845,"Predict the next statement of this code snippet: static inline bool UsesMaskPolicy ( uint64_t TSFlags ) { return TSFlags & UsesMaskPolicyMask ;" LLVM,RISCV,846,"Predict the next statement of this code snippet: if ( TT . isArch64Bit ( ) && ! FeatureBits [ ] ) report_fatal_error ( ) ;" LLVM,RISCV,847,"Predict the next statement of this code snippet: return static_cast < > ( Fractional ? - LmulLog2 : LmulLog2 ) ;" LLVM,RISCV,848,"Predict the next statement of this code snippet: unsigned LMul = << ( - static_cast < unsigned > ( VLMUL ) ) ; OS << << LMul ; break ; } } if ( isTailAgnostic ( VType ) ) OS << ; else OS << ; if ( isMaskAgnostic ( VType ) ) OS << ; else OS << ;" LLVM,RISCV,849,"Predict the next statement of this code snippet: OS << << Sew ; switch ( VLMUL ) { case : llvm_unreachable ( ) ; case : case : case : case : { unsigned LMul = << static_cast < unsigned > ( VLMUL ) ; OS << << LMul ; break ; } case : case : case : { unsigned LMul = << ( - static_cast < unsigned > ( VLMUL ) ) ; OS << << LMul ; break ; } } if ( isTailAgnostic ( VType ) ) OS << ; else OS << ;" LLVM,RISCV,850,"Predict the next statement of this code snippet: errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ABIName . endswith ( ) && ! FeatureBits [ ] ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ABIName . endswith ( ) && ! FeatureBits [ ] ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( IsRV32E && TargetABI != ABI_ILP32E && TargetABI != ABI_Unknown ) { errs ( ) << ; TargetABI = ABI_Unknown ;" LLVM,RISCV,851,"Predict the next statement of this code snippet: inline static unsigned encodeVTYPE ( VLMUL VLMUL , VSEW VSEW , bool TailAgnostic , bool MaskAgnostic ) { unsigned VLMULBits = static_cast < unsigned > ( VLMUL ) ; unsigned VSEWBits = static_cast < unsigned > ( VSEW ) ; unsigned VTypeI = ( ( VLMULBits & ) << ) | ( VSEWBits << ) | ( VLMULBits & ) ;" LLVM,RISCV,852,"Predict the next statement of this code snippet: return static_cast < int8_t > ( MergeOpIndex ) ;" LLVM,RISCV,853,"Predict the next statement of this code snippet: int getSEWIndex ( ) const {" LLVM,RISCV,854,"Predict the next statement of this code snippet: int getSEWIndex ( ) const { return static_cast < int8_t > ( SEWIndex ) ;" LLVM,RISCV,855,"Predict the next statement of this code snippet: return static_cast < int8_t > ( VLIndex ) ;" LLVM,RISCV,856,"Predict the next statement of this code snippet: int getVLIndex ( ) const {" LLVM,RISCV,857,"Predict the next statement of this code snippet: unsigned VLMUL = ( VType & ) | ( ( VType & ) >> ) ;" LLVM,RISCV,858,"Predict the next statement of this code snippet: unsigned VLMUL = ( VType & ) | ( ( VType & ) >> ) ;" LLVM,RISCV,859,"Predict the next statement of this code snippet: return static_cast < VSEW > ( VSEW ) ;" LLVM,RISCV,860,"Predict the next statement of this code snippet: unsigned VSEW = ( VType >> ) & ;" LLVM,RISCV,861,"Predict the next statement of this code snippet: bool hasDummyMask ( ) const { return HasDummyMask ;" LLVM,RISCV,862,"Predict the next statement of this code snippet: unsigned Offset = ;" LLVM,RISCV,863,"Predict the next statement of this code snippet: assert ( hasSEWOp ( TSFlags ) ) ; unsigned Offset = ; if ( hasVecPolicyOp ( TSFlags ) ) Offset = ;" LLVM,RISCV,864,"Predict the next statement of this code snippet: assert ( hasSEWOp ( TSFlags ) && hasVLOp ( TSFlags ) ) ;" LLVM,RISCV,865,"Predict the next statement of this code snippet: assert ( hasSEWOp ( TSFlags ) && hasVLOp ( TSFlags ) ) ; unsigned Offset = ; if ( hasVecPolicyOp ( TSFlags ) ) Offset = ; return Desc . getNumOperands ( ) - Offset ;" LLVM,RISCV,866,"Predict the next statement of this code snippet: static inline bool usesMaskPolicy ( uint64_t TSFlags ) { return TSFlags & UsesMaskPolicyMask ;" LLVM,RISCV,867,"Predict the next statement of this code snippet: return TSFlags & UsesMaskPolicyMask ;" LLVM,RISCV,868,"Predict the next statement of this code snippet: Register getBPReg ( ) { return ;" LLVM,RISCV,869,"Predict the next statement of this code snippet: Register getSCSPReg ( ) {" LLVM,RISCV,870,"Predict the next statement of this code snippet: case ABI_LP64D : return false ; case ABI_IL32PC64 : case ABI_IL32PC64F : case ABI_IL32PC64D : case ABI_IL32PC64E : case ABI_L64PC128 : case ABI_L64PC128F : case ABI_L64PC128D : return true ;" LLVM,RISCV,871,"Predict the next statement of this code snippet: unsigned VLMULBits = static_cast < unsigned > ( VLMUL ) ; unsigned VSEWBits = static_cast < unsigned > ( VSEW ) ; unsigned VTypeI = ( VSEWBits << ) | ( VLMULBits & ) ; if ( TailAgnostic ) VTypeI |= ; if ( MaskAgnostic ) VTypeI |= ; return VTypeI ;" LLVM,RISCV,872,"Predict the next statement of this code snippet: return static_cast < VLMUL > ( VLMUL ) ;" LLVM,RISCV,873,"Predict the next statement of this code snippet: unsigned VLMUL = VType & ;" LLVM,RISCV,874,"Predict the next statement of this code snippet: unsigned VSEW = ( VType >> ) & ; return static_cast < VSEW > ( VSEW ) ;" LLVM,RISCV,875,"Predict the next statement of this code snippet: errs ( ) << << ABIName << ; } else if ( ABIName . startswith ( ) && IsRV64 ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ABIName . startswith ( ) && ! IsRV64 ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ABIName . endswith ( ) && ! FeatureBits [ ] ) { errs ( ) << ;" LLVM,RISCV,876,"Predict the next statement of this code snippet: errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ABIName . endswith ( ) && ! FeatureBits [ ] ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ABIName . endswith ( ) && ! FeatureBits [ ] ) { errs ( ) << ;" LLVM,RISCV,877,"Predict the next statement of this code snippet: return WritesElement0 ;" LLVM,RISCV,878,"Predict the next statement of this code snippet: bool writesElement0 ( ) const {" LLVM,RISCV,879,"Predict the next statement of this code snippet: void toFeatureVector ( std :: vector < std :: string > & FeatureVector , const FeatureBitset & FeatureBits ) { for ( auto Feature : FeatureKV ) { if ( FeatureBits [ Feature . Value ] && llvm :: ( Feature . Key ) ) FeatureVector . push_back ( std :: string ( ) + Feature . Key ) ; }" LLVM,RISCV,880,"Predict the next statement of this code snippet: void toFeatureVector ( std :: vector < std :: string > & FeatureVector , const FeatureBitset & FeatureBits ) { for ( auto Feature : FeatureKV ) { if ( FeatureBits [ Feature . Value ] && llvm :: ( Feature . Key ) ) FeatureVector . push_back ( std :: string ( ) + Feature . Key ) ;" LLVM,RISCV,881,"Predict the next statement of this code snippet: bool IsRV64 = TT . isArch64Bit ( ) ; bool IsRV32E = FeatureBits [ ] ; if ( ! ABIName . empty ( ) && TargetABI == ABI_Unknown ) { errs ( ) << << ABIName << ; } else if ( ABIName . startswith ( ) && IsRV64 ) {" LLVM,RISCV,882,"Predict the next statement of this code snippet: assert ( isValidSEW ( SEW ) && ) ; unsigned VLMULBits = static_cast < unsigned > ( VLMUL ) ; unsigned VSEWBits = encodeSEW ( SEW ) ; unsigned VTypeI = ( VSEWBits << ) | ( VLMULBits & ) ; if ( TailAgnostic ) VTypeI |= ;" LLVM,RISCV,883,"Predict the next statement of this code snippet: unsigned VLMULBits = static_cast < unsigned > ( VLMUL ) ; unsigned VSEWBits = encodeSEW ( SEW ) ; unsigned VTypeI = ( VSEWBits << ) | ( VLMULBits & ) ; if ( TailAgnostic ) VTypeI |= ;" LLVM,RISCV,884,"Predict the next statement of this code snippet: unsigned XLen = IsRV64 ? : ; std :: vector < std :: string > FeatureVector ; for ( auto Feature : FeatureKV ) { if ( FeatureBits [ Feature . Value ] && llvm :: ( Feature . Key ) ) FeatureVector . push_back ( std :: string ( ) + Feature . Key ) ; }" LLVM,RISCV,885,"Predict the next statement of this code snippet: switch ( VLMUL ) { case :: LMUL_RESERVED : llvm_unreachable ( ) ; case :: LMUL_1 : case :: LMUL_2 : case :: LMUL_4 : case :: LMUL_8 : { unsigned LMul = << static_cast < unsigned > ( VLMUL ) ; OS << << LMul ; break ; } case :: LMUL_F2 : case :: LMUL_F4 : case :: LMUL_F8 : { unsigned LMul = << ( - static_cast < unsigned > ( VLMUL ) ) ; OS << << LMul ; break ; } } if ( isTailAgnostic ( VType ) ) OS << ; else OS << ; if ( isMaskAgnostic ( VType ) ) OS << ;" LLVM,RISCV,886,"Predict the next statement of this code snippet: unsigned Sew = << ( static_cast < unsigned > ( VSEW ) + ) ; OS << << Sew ; switch ( VLMUL ) { case : case : case : case : { unsigned LMul = << static_cast < unsigned > ( VLMUL ) ; OS << << LMul ; break ;" LLVM,RISCV,887,"Predict the next statement of this code snippet: } case : case : case : { unsigned LMul = << ( - static_cast < unsigned > ( VLMUL ) ) ; OS << << LMul ; break ; } } if ( isTailAgnostic ( VType ) ) OS << ; else OS << ; if ( isMaskAgnostic ( VType ) ) OS << ; else OS << ;" LLVM,RISCV,888,"Predict the next statement of this code snippet: } else if ( ABIName . startswith ( ) && ! IsRV64 ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( IsRV32E && TargetABI != ABI_ILP32E && TargetABI != ABI_Unknown ) { errs ( ) << ; TargetABI = ABI_Unknown ; } if ( TargetABI != ABI_Unknown ) return TargetABI ; if ( IsRV32E ) return ABI_ILP32E ;" LLVM,RISCV,889,"Predict the next statement of this code snippet: ABI computeTargetABI ( const Triple & TT , FeatureBitset FeatureBits , StringRef ABIName ) { auto TargetABI = getTargetABI ( ABIName ) ; bool IsRV64 = TT . isArch64Bit ( ) ; bool IsRV32E = FeatureBits [ ] ; if ( ! ABIName . empty ( ) && TargetABI == ABI_Unknown ) { errs ( ) << << ABIName << ; } else if ( ABIName . startswith ( ) && IsRV64 ) { errs ( ) << ; TargetABI = ABI_Unknown ; } else if ( ABIName . startswith ( ) && ! IsRV64 ) {" LLVM,RISCV,890,"Predict the next statement of this code snippet: inline static unsigned decodeVSEW ( unsigned VSEW ) { assert ( VSEW < && ) ;" LLVM,RISCV,891,"Predict the next statement of this code snippet: return TSFlags & ForceTailAgnosticMask ;" LLVM,RISCV,892,"Predict the next statement of this code snippet: return ;" LLVM,RISCV,893,"Predict the next statement of this code snippet: MCRegister getBPReg ( ) {" LLVM,RISCV,894,"Predict the next statement of this code snippet: return ( TSFlags & InstFormatMask ) >> InstFormatShift ;" LLVM,RISCV,895,"Predict the next statement of this code snippet: static inline unsigned getFormat ( uint64_t TSFlags ) { return ( TSFlags & InstFormatMask ) >> InstFormatShift ;" LLVM,RISCV,896,"Predict the next statement of this code snippet: MCRegister getSCSPReg ( ) {" LLVM,RISCV,897,"Predict the next statement of this code snippet: unsigned VSEW = ( VType >> ) & ; return decodeVSEW ( VSEW ) ;" LLVM,RISCV,898,"Predict the next statement of this code snippet: return static_cast < > ( VLMUL ) ;" LLVM,RISCV,899,"Predict the next statement of this code snippet: inline static getVLMUL ( unsigned VType ) {" LLVM,RISCV,900,"Predict the next statement of this code snippet: return TSFlags & HasDummyMaskOpMask ;" LLVM,RISCV,901,"Predict the next statement of this code snippet: static inline bool hasDummyMaskOp ( uint64_t TSFlags ) { return TSFlags & HasDummyMaskOpMask ;" LLVM,RISCV,902,"Predict the next statement of this code snippet: static inline bool hasMergeOp ( uint64_t TSFlags ) { return TSFlags & HasMergeOpMask ;" LLVM,RISCV,903,"Predict the next statement of this code snippet: return TSFlags & HasSEWOpMask ;" LLVM,RISCV,904,"Predict the next statement of this code snippet: static inline bool hasVecPolicyOp ( uint64_t TSFlags ) {" LLVM,RISCV,905,"Predict the next statement of this code snippet: static inline bool hasVLOp ( uint64_t TSFlags ) { return TSFlags & HasVLOpMask ;" LLVM,RISCV,906,"Predict the next statement of this code snippet: return TSFlags & HasVLOpMask ;" LLVM,RISCV,907,"Predict the next statement of this code snippet: bool haveRequiredFeatures ( const FeatureBitset & ActiveFeatures ) const { if ( isRV32Only && ActiveFeatures [ ] ) return false ; if ( FeaturesRequired . none ( ) ) return true ; return ( FeaturesRequired & ActiveFeatures ) == FeaturesRequired ;" LLVM,RISCV,908,"Predict the next statement of this code snippet: inline static bool isMaskAgnostic ( unsigned VType ) {" LLVM,RISCV,909,"Predict the next statement of this code snippet: return VType & ;" LLVM,RISCV,910,"Predict the next statement of this code snippet: return VType & ;" LLVM,RISCV,911,"Predict the next statement of this code snippet: return isPowerOf2_32 ( SEW ) && SEW >= && SEW <= ;" LLVM,RISCV,912,"Predict the next statement of this code snippet: inline static bool isValidSEW ( unsigned SEW ) { return isPowerOf2_32 ( SEW ) && SEW >= && SEW <= ;" LLVM,RISCV,913,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,914,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; }" LLVM,RISCV,915,"Predict the next statement of this code snippet: inline static RoundingMode stringToRoundingMode ( StringRef Str ) {" LLVM,RISCV,916,"Predict the next statement of this code snippet: inline static RoundingMode stringToRoundingMode ( StringRef Str ) { return StringSwitch < RoundingMode > ( Str ) . Case ( , ) . Case ( , ) . Case ( , ) . Case ( , ) . Case ( , ) . Case ( , ) . Default ( ) ;" LLVM,RISCV,917,"Predict the next statement of this code snippet: if ( TT . isArch64Bit ( ) && FeatureBits [ ] ) report_fatal_error ( ) ;" LLVM,RISCV,918,"Predict the next statement of this code snippet: void validate ( const Triple & TT , const FeatureBitset & FeatureBits ) {" LLVM,RISCV,919,"Predict the next statement of this code snippet: bool EverMadeChange = false ; while ( MadeChange ) { MadeChange = false ; for ( MachineFunction :: iterator MFI = Fn . begin ( ) , E = Fn . end ( ) ; MFI != E ; ++ MFI ) { MachineBasicBlock & MBB = * MFI ; unsigned MBBStartOffset = ; for ( MachineBasicBlock :: iterator I = MBB . begin ( ) , E = MBB . end ( ) ; I != E ; ++ I ) { MachineBasicBlock * Dest = ; SmallVector < MachineOperand , > Cond ; Cond . push_back ( MachineOperand :: CreateImm ( ) ) ; const MachineOperand * DestOp ; if ( ! TII -> isBranch ( I , Cond , DestOp ) ) { MBBStartOffset += TII -> GetInstSizeInBytes ( I ) ; continue ; } MachineBasicBlock * FBB = ; Cond . clear ( ) ; if ( TII -> AnalyzeBranch ( MBB , Dest , FBB , Cond , false ) ) { MBBStartOffset += TII -> GetInstSizeInBytes ( I ) ; continue ; } if ( Cond . empty ( ) || Cond [ ] . getImm ( ) == ) { MBBStartOffset += TII -> GetInstSizeInBytes ( I ) ; continue ; } int BranchSize ; if ( Dest -> getNumber ( ) <= MBB . getNumber ( ) ) { BranchSize = MBBStartOffset ; for ( unsigned i = Dest -> getNumber ( ) , e = MBB . getNumber ( ) ; i != e ; ++ i ) BranchSize += BlockSizes [ i ] ; } else { BranchSize = - MBBStartOffset ; for ( unsigned i = MBB . getNumber ( ) , e = Dest -> getNumber ( ) ; i != e ; ++ i ) BranchSize += BlockSizes [ i ] ; } if ( isInt < > ( BranchSize ) ) { MBBStartOffset += ; continue ; } MachineInstr * OldBranch = I ; DebugLoc dl = OldBranch -> getDebugLoc ( ) ; TII -> ReverseBranchCondition ( Cond ) ; TII -> InsertConstBranchAtInst ( MBB , I , , Cond , dl ) ; I = BuildMI ( MBB , I , dl , TII -> get ( ) ) . addMBB ( Dest ) ; OldBranch -> eraseFromParent ( ) ; BlockSizes [ MBB . getNumber ( ) ] += ; MBBStartOffset += ; ++ NumExpanded ; MadeChange = true ; } } EverMadeChange |= MadeChange ; }" LLVM,RISCV,920,"Predict the next statement of this code snippet: MachineBasicBlock * FBB = ; Cond . clear ( ) ; if ( TII -> AnalyzeBranch ( MBB , Dest , FBB , Cond , false ) ) { MBBStartOffset += TII -> GetInstSizeInBytes ( I ) ; continue ; } if ( Cond . empty ( ) || Cond [ ] . getImm ( ) == ) { MBBStartOffset += TII -> GetInstSizeInBytes ( I ) ; continue ; } int BranchSize ; if ( Dest -> getNumber ( ) <= MBB . getNumber ( ) ) { BranchSize = MBBStartOffset ; for ( unsigned i = Dest -> getNumber ( ) , e = MBB . getNumber ( ) ; i != e ; ++ i ) BranchSize += BlockSizes [ i ] ; } else { BranchSize = - MBBStartOffset ; for ( unsigned i = MBB . getNumber ( ) , e = Dest -> getNumber ( ) ; i != e ; ++ i ) BranchSize += BlockSizes [ i ] ; } if ( isInt < > ( BranchSize ) ) { MBBStartOffset += ; continue ; }" LLVM,RISCV,921,"Predict the next statement of this code snippet: FunctionPass * llvm :: createBranchSelectionPass ( ) { return new BSel ( ) ;" LLVM,RISCV,922,"Predict the next statement of this code snippet: virtual const char * getPassName ( ) const { return ;" LLVM,RISCV,923,"Predict the next statement of this code snippet: BSel ( ) : MachineFunctionPass ( ID ) { initializeBSelPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,RISCV,924,"Predict the next statement of this code snippet: BSel ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,925,"Predict the next statement of this code snippet: } MachineBasicBlock * FBB = ; Cond . clear ( ) ; if ( TII -> analyzeBranch ( MBB , Dest , FBB , Cond , false ) ) { MBBStartOffset += TII -> GetInstSizeInBytes ( I ) ; continue ; } if ( Cond . empty ( ) || Cond [ ] . getImm ( ) == ) { MBBStartOffset += TII -> GetInstSizeInBytes ( I ) ; continue ; } int BranchSize ; if ( Dest -> getNumber ( ) <= MBB . getNumber ( ) ) { BranchSize = MBBStartOffset ; for ( unsigned i = Dest -> getNumber ( ) , e = MBB . getNumber ( ) ; i != e ; ++ i ) BranchSize += BlockSizes [ i ] ; } else { BranchSize = - MBBStartOffset ; for ( unsigned i = MBB . getNumber ( ) , e = Dest -> getNumber ( ) ; i != e ; ++ i ) BranchSize += BlockSizes [ i ] ; } if ( isInt < > ( BranchSize ) ) { MBBStartOffset += ; continue ; } MachineInstr * OldBranch = I ; DebugLoc dl = OldBranch -> getDebugLoc ( ) ; TII -> ReverseBranchCondition ( Cond ) ; TII -> InsertConstBranchAtInst ( MBB , I , , Cond , dl ) ; I = BuildMI ( MBB , I , dl , TII -> get ( ) ) . addMBB ( Dest ) ; OldBranch -> eraseFromParent ( ) ; BlockSizes [ MBB . getNumber ( ) ] += ; MBBStartOffset += ; ++ NumExpanded ; MadeChange = true ; } } EverMadeChange |= MadeChange ; }" LLVM,RISCV,926,"Predict the next statement of this code snippet: if ( F . arg_empty ( ) ) return true ; return false ;" LLVM,RISCV,927,"Predict the next statement of this code snippet: bool CallLowering :: lowerCall ( MachineIRBuilder & MIRBuilder , CallLoweringInfo & Info ) const {" LLVM,RISCV,928,"Predict the next statement of this code snippet: bool CallLowering :: lowerCall ( MachineIRBuilder & MIRBuilder , CallLoweringInfo & Info ) const {" LLVM,RISCV,929,"Predict the next statement of this code snippet: CallLowering :: CallLowering ( const TargetLowering & TLI ) : CallLowering ( & TLI ) {" LLVM,RISCV,930,"Predict the next statement of this code snippet: CallLowering :: CallLowering ( const TargetLowering & TLI ) : CallLowering ( & TLI ) {" LLVM,RISCV,931,"Predict the next statement of this code snippet: MachineInstr & MI = * MII ++ ; if ( MI . getOpcode ( ) != && MI . getOpcode ( ) != ) { if ( PrevVSETVLI && ( MI . isCall ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) ) { PrevVSETVLI = nullptr ; } continue ; } if ( ! PrevVSETVLI || ! MI . getOperand ( ) . isDead ( ) ) { PrevVSETVLI = & MI ; continue ; } if ( PrevVSETVLI -> getOpcode ( ) != MI . getOpcode ( ) ) { PrevVSETVLI = & MI ; continue ; } Register AVLReg ; bool SameAVL = false ; if ( MI . getOpcode ( ) == ) { AVLReg = MI . getOperand ( ) . getReg ( ) ; SameAVL = PrevVSETVLI -> getOperand ( ) . getReg ( ) == AVLReg ; } else { SameAVL = PrevVSETVLI -> getOperand ( ) . getImm ( ) == MI . getOperand ( ) . getImm ( ) ; } int64_t PrevVTYPEImm = PrevVSETVLI -> getOperand ( ) . getImm ( ) ; int64_t VTYPEImm = MI . getOperand ( ) . getImm ( ) ; if ( ! SameAVL || PrevVTYPEImm != VTYPEImm ) { PrevVSETVLI = & MI ; continue ; } if ( ( MI . getOpcode ( ) == ) && ( AVLReg == ) ) { assert ( ( PrevVSETVLI -> getOpcode ( ) == ) && ) ; Register PrevOutVL = PrevVSETVLI -> getOperand ( ) . getReg ( ) ; Register OutVL = MI . getOperand ( ) . getReg ( ) ; if ( PrevOutVL == && OutVL != ) {" LLVM,RISCV,932,"Predict the next statement of this code snippet: bool Changed = false ; MachineInstr * PrevVSETVLI = nullptr ; for ( auto MII = MBB . begin ( ) , MIE = MBB . end ( ) ; MII != MIE ; ) { MachineInstr & MI = * MII ++ ; if ( MI . getOpcode ( ) != ) { if ( PrevVSETVLI && ( MI . isCall ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) ) { PrevVSETVLI = nullptr ;" LLVM,RISCV,933,"Predict the next statement of this code snippet: int64_t PrevVTYPEImm = PrevVSETVLI -> getOperand ( ) . getImm ( ) ; int64_t VTYPEImm = MI . getOperand ( ) . getImm ( ) ; if ( PrevAVLReg != AVLReg || PrevVTYPEImm != VTYPEImm ) { PrevVSETVLI = & MI ; continue ; } if ( AVLReg == ) { Register PrevOutVL = PrevVSETVLI -> getOperand ( ) . getReg ( ) ; Register OutVL = MI . getOperand ( ) . getReg ( ) ; if ( PrevOutVL == && OutVL != ) { PrevVSETVLI = & MI ; continue ; } }" LLVM,RISCV,934,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override { AU . setPreservesCFG ( ) ; MachineFunctionPass :: getAnalysisUsage ( AU ) ;" LLVM,RISCV,935,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override { AU . setPreservesCFG ( ) ; MachineFunctionPass :: getAnalysisUsage ( AU ) ;" LLVM,RISCV,936,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return _CLEANUP_VSETVLI_NAME ;" LLVM,RISCV,937,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return _CLEANUP_VSETVLI_NAME ;" LLVM,RISCV,938,"Predict the next statement of this code snippet: MachineFunctionProperties getRequiredProperties ( ) const override { return MachineFunctionProperties ( ) . set ( MachineFunctionProperties :: Property :: IsSSA ) ;" LLVM,RISCV,939,"Predict the next statement of this code snippet: if ( AVLReg == && MI . getOperand ( ) . getReg ( ) == ) return true ; if ( AVLReg . isVirtual ( ) && AVLReg == PrevOutVL ) return true ; if ( PrevVSETVLI -> getOpcode ( ) != ) return false ; if ( AVLReg != PrevVSETVLI -> getOperand ( ) . getReg ( ) ) return false ; if ( AVLReg == ) {" LLVM,RISCV,940,"Predict the next statement of this code snippet: int64_t VTYPEImm = MI . getOperand ( ) . getImm ( ) ; if ( PrevVTYPEImm != VTYPEImm ) return false ; if ( MI . getOpcode ( ) == ) { if ( PrevVSETVLI -> getOpcode ( ) != ) return false ; return PrevVSETVLI -> getOperand ( ) . getImm ( ) == MI . getOperand ( ) . getImm ( ) ; } assert ( MI . getOpcode ( ) == ) ; Register AVLReg = MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,941,"Predict the next statement of this code snippet: initializeCleanupVSETVLIPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,RISCV,942,"Predict the next statement of this code snippet: MachineInstr * PrevVSETVLI = nullptr ; for ( auto MII = MBB . begin ( ) , MIE = MBB . end ( ) ; MII != MIE ; ) { MachineInstr & MI = * MII ++ ; if ( MI . getOpcode ( ) != && MI . getOpcode ( ) != ) { if ( PrevVSETVLI && ( MI . isCall ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) ) {" LLVM,RISCV,943,"Predict the next statement of this code snippet: if ( skipFunction ( MF . getFunction ( ) ) ) return false ; const Subtarget & ST = MF . getSubtarget < Subtarget > ( ) ; if ( ! ST . hasStdExtV ( ) ) return false ;" LLVM,RISCV,944,"Predict the next statement of this code snippet: if ( skipFunction ( MF . getFunction ( ) ) ) return false ;" LLVM,RISCV,945,"Predict the next statement of this code snippet: uint64_t getAlignmentMask ( uint64_t Length , bool IsRV64 ) {" LLVM,RISCV,946,"Predict the next statement of this code snippet: } else { return cc64_get_representable_length ( Length ) ;" LLVM,RISCV,947,"Predict the next statement of this code snippet: Align getRequiredAlignment ( uint64_t Size , bool IsRV64 ) { if ( IsRV64 ) { return Align ( cc128_get_required_alignment ( Size ) ) ;" LLVM,RISCV,948,"Predict the next statement of this code snippet: if ( IsRV64 ) { return Align ( cc128_get_required_alignment ( Size ) ) ; } else {" LLVM,RISCV,949,"Predict the next statement of this code snippet: } else { return static_cast < TailPaddingAmount > ( llvm :: alignTo ( Size , cc64_get_required_alignment ( Size ) ) - Size ) ;" LLVM,RISCV,950,"Predict the next statement of this code snippet: ID . AddInteger ( Modifier ) ;" LLVM,RISCV,951,"Predict the next statement of this code snippet: const std :: vector < MachineConstantPoolEntry > Constants = CP -> getConstants ( ) ; for ( unsigned I = , E = Constants . size ( ) ; I != E ; ++ I ) { if ( Constants [ I ] . isMachineConstantPoolEntry ( ) && ( Constants [ I ] . getAlignment ( ) & AlignMask ) == ) { ConstantPoolValue * RCPV = static_cast < ConstantPoolValue * > ( Constants [ I ] . Val . MachineCPVal ) ; if ( RCPV -> GV == GV && RCPV -> Modifier == Modifier ) return I ; }" LLVM,RISCV,952,"Predict the next statement of this code snippet: if ( Constants [ I ] . isMachineConstantPoolEntry ( ) && ( Constants [ I ] . getAlignment ( ) & AlignMask ) == ) { ConstantPoolValue * RCPV = static_cast < ConstantPoolValue * > ( Constants [ I ] . Val . MachineCPVal ) ; if ( RCPV -> GV == GV && RCPV -> Modifier == Modifier ) return I ; }" LLVM,RISCV,953,"Predict the next statement of this code snippet: return GV ;" LLVM,RISCV,954,"Predict the next statement of this code snippet: getModifier ( ) const { return Modifier ;" LLVM,RISCV,955,"Predict the next statement of this code snippet: O << GV ;" LLVM,RISCV,956,"Predict the next statement of this code snippet: void ConstantPoolValue :: print ( raw_ostream & O ) const {" LLVM,RISCV,957,"Predict the next statement of this code snippet: ConstantPoolValue :: ConstantPoolValue ( const GlobalValue * gv , modifier ) : MachineConstantPoolValue ( gv -> getType ( ) ) , GV ( gv ) , Modifier ( modifier ) {" LLVM,RISCV,958,"Predict the next statement of this code snippet: ConstantPoolValue ::" LLVM,RISCV,959,"Predict the next statement of this code snippet: return new CoreVHwlpBlocks ( ) ;" LLVM,RISCV,960,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,RISCV,961,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return COREV_HWLP_BLOCKS_NAME ;" LLVM,RISCV,962,"Predict the next statement of this code snippet: for ( auto Inner : * ML ) { Changed |= ProcessLoop ( Inner , MF ) ; } return Changed ; } auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; MachineBasicBlock * BB = Preheader ; while ( BB != Latch ) { assert ( BB -> succ_size ( ) <= && ) ; MachineBasicBlock * Next = * BB -> succ_begin ( ) ; if ( BB -> succ_size ( ) == ) { hwlp = false ; for ( auto & MI : BB -> terminators ( ) ) { if ( MI . getOpcode ( ) == ) { hwlp = true ; if ( Next == MI . getOperand ( ) . getMBB ( ) ) { Next = * BB -> succ_rbegin ( ) ; } break ; } } assert ( hwlp && ) ; } if ( ! BB -> isLayoutSuccessor ( Next ) ) { MachineBasicBlock * OldPred = Next -> getPrevNode ( ) ; MachineBasicBlock * OldSucc1 = Next -> getNextNode ( ) ; MachineBasicBlock * OldSucc2 = BB -> getNextNode ( ) ; Next -> moveAfter ( BB ) ; OldPred -> updateTerminator ( Next ) ; Next -> updateTerminator ( OldSucc1 ) ;" LLVM,RISCV,963,"Predict the next statement of this code snippet: CoreVHwlpBlocks ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,964,"Predict the next statement of this code snippet: CoreVHwlpBlocks ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,965,"Predict the next statement of this code snippet: for ( auto & ML : MLI ) { Changed |= ProcessLoop ( ML , MF ) ; } return Changed ;" LLVM,RISCV,966,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR32CRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) {" LLVM,RISCV,967,"Predict the next statement of this code snippet: Register Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,968,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } Register Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,969,"Predict the next statement of this code snippet: Register Reg = + RegNo ;" LLVM,RISCV,970,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ;" LLVM,RISCV,971,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) {" LLVM,RISCV,972,"Predict the next statement of this code snippet: Register Reg = + RegNo ;" LLVM,RISCV,973,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,974,"Predict the next statement of this code snippet: bool IsRV32E = FeatureBits [ ] ; if ( RegNo >= || ( IsRV32E && RegNo >= ) ) return MCDisassembler :: Fail ; Register Reg = + RegNo ;" LLVM,RISCV,975,"Predict the next statement of this code snippet: const FeatureBitset & FeatureBits = static_cast < const MCDisassembler * > ( Decoder ) -> getSubtargetInfo ( ) . getFeatureBits ( ) ; bool IsRV32E = FeatureBits [ ] ; if ( RegNo >= || ( IsRV32E && RegNo >= ) ) return MCDisassembler :: Fail ; Register Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,976,"Predict the next statement of this code snippet: Inst . addOperand ( Inst . getOperand ( ) ) ; DecodeGPRRegisterClass ( Inst , Rs2 , Address , Decoder ) ;" LLVM,RISCV,977,"Predict the next statement of this code snippet: static DecodeStatus decodeRVCInstrRdRs1Rs2 ( MCInst & Inst , unsigned Insn , uint64_t Address , const void * Decoder ) { unsigned Rd = fieldFromInstruction ( Insn , , ) ; unsigned Rs2 = fieldFromInstruction ( Insn , , ) ; DecodeGPRRegisterClass ( Inst , Rd , Address , Decoder ) ;" LLVM,RISCV,978,"Predict the next statement of this code snippet: Inst . addOperand ( Inst . getOperand ( ) ) ; uint64_t UImm6 = fieldFromInstruction ( Insn , , ) << | fieldFromInstruction ( Insn , , ) ; DecodeStatus Result = decodeUImmOperand < > ( Inst , UImm6 , Address , Decoder ) ; ( void ) Result ;" LLVM,RISCV,979,"Predict the next statement of this code snippet: static DecodeStatus decodeRVCInstrRdRs2 ( MCInst & Inst , unsigned Insn , uint64_t Address , const void * Decoder ) { unsigned Rd = fieldFromInstruction ( Insn , , ) ; unsigned Rs2 = fieldFromInstruction ( Insn , , ) ; DecodeGPRRegisterClass ( Inst , Rd , Address , Decoder ) ;" LLVM,RISCV,980,"Predict the next statement of this code snippet: unsigned Rs2 = fieldFromInstruction ( Insn , , ) ; DecodeGPRRegisterClass ( Inst , Rd , Address , Decoder ) ;" LLVM,RISCV,981,"Predict the next statement of this code snippet: uint64_t SImm6 = fieldFromInstruction ( Insn , , ) << | fieldFromInstruction ( Insn , , ) ; DecodeStatus Result = decodeSImmOperand < > ( Inst , SImm6 , Address , Decoder ) ; ( void ) Result ; assert ( Result == MCDisassembler :: Success && ) ;" LLVM,RISCV,982,"Predict the next statement of this code snippet: static DecodeStatus decodeRVCInstrSImm ( MCInst & Inst , unsigned Insn , uint64_t Address , const void * Decoder ) { uint64_t SImm6 = fieldFromInstruction ( Insn , , ) << | fieldFromInstruction ( Insn , , ) ; DecodeStatus Result = decodeSImmOperand < > ( Inst , SImm6 , Address , Decoder ) ; ( void ) Result ; assert ( Result == MCDisassembler :: Success && ) ; return MCDisassembler :: Success ;" LLVM,RISCV,983,"Predict the next statement of this code snippet: static DecodeStatus decodeRVCInstrSImm ( MCInst & Inst , unsigned Insn , uint64_t Address , const void * Decoder ) { uint64_t SImm6 = fieldFromInstruction ( Insn , , ) << | fieldFromInstruction ( Insn , , ) ; DecodeStatus Result = decodeSImmOperand < > ( Inst , SImm6 , Address , Decoder ) ;" LLVM,RISCV,984,"Predict the next statement of this code snippet: static MCDisassembler * createDisassembler ( const Target & T , const MCSubtargetInfo & STI , MCContext & Ctx ) {" LLVM,RISCV,985,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; Register Reg = + RegNo ;" LLVM,RISCV,986,"Predict the next statement of this code snippet: if ( ( Bytes [ ] & ) == ) { if ( Bytes . size ( ) < ) { Size = ; return MCDisassembler :: Fail ; } Insn = :: read32le ( Bytes . data ( ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32 , MI , Insn , Address , this , STI ) ; Size = ; } else { if ( Bytes . size ( ) < ) { Size = ; return MCDisassembler :: Fail ; } Insn = :: read16le ( Bytes . data ( ) ) ; if ( ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32Only_16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ;" LLVM,RISCV,987,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeDisassembler ( ) { TargetRegistry :: RegisterMCDisassembler ( getThe32Target ( ) , createDisassembler ) ; TargetRegistry :: RegisterMCDisassembler ( getThe64Target ( ) , createDisassembler ) ;" LLVM,RISCV,988,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCDisassembler ( getThe32Target ( ) , createDisassembler ) ;" LLVM,RISCV,989,"Predict the next statement of this code snippet: Disassembler ( const MCSubtargetInfo & STI , MCContext & Ctx , MCInstrInfo const * MCII ) : MCDisassembler ( STI , Ctx ) , MCII ( MCII ) {" LLVM,RISCV,990,"Predict the next statement of this code snippet: Disassembler ( const MCSubtargetInfo & STI , MCContext & Ctx , MCInstrInfo const * MCII ) : MCDisassembler ( STI , Ctx ) , MCII ( MCII ) {" LLVM,RISCV,991,"Predict the next statement of this code snippet: } if ( Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == ) { DecodeGPCRRegisterClass ( Inst , , Address , Decoder ) ; }" LLVM,RISCV,992,"Predict the next statement of this code snippet: DecodeGPRRegisterClass ( Inst , , Address , Decoder ) ; } if ( Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == ) { DecodeGPCRRegisterClass ( Inst , , Address , Decoder ) ;" LLVM,RISCV,993,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR16RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) {" LLVM,RISCV,994,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR32CRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) { return MCDisassembler :: Fail ;" LLVM,RISCV,995,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ;" LLVM,RISCV,996,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,997,"Predict the next statement of this code snippet: if ( RegNo >= ) { return MCDisassembler :: Fail ; } MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,998,"Predict the next statement of this code snippet: if ( RegNo >= ) { return MCDisassembler :: Fail ; } MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,999,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ;" LLVM,RISCV,1000,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPCRCRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) {" LLVM,RISCV,1001,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1002,"Predict the next statement of this code snippet: } return DecodeGPCRRegisterClass ( Inst , RegNo , Address , Decoder ) ;" LLVM,RISCV,1003,"Predict the next statement of this code snippet: if ( RegNo >= || ( IsRV32E && RegNo >= ) ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1004,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRCRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1005,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRCRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ;" LLVM,RISCV,1006,"Predict the next statement of this code snippet: const FeatureBitset & FeatureBits = static_cast < const MCDisassembler * > ( Decoder ) -> getSubtargetInfo ( ) . getFeatureBits ( ) ; bool IsRV32E = FeatureBits [ ] ; if ( RegNo >= || ( IsRV32E && RegNo >= ) ) return MCDisassembler :: Fail ;" LLVM,RISCV,1007,"Predict the next statement of this code snippet: MCRegister Reg = ; switch ( RegNo ) { default : return MCDisassembler :: Fail ; case : Reg = ; break ; case : break ; }" LLVM,RISCV,1008,"Predict the next statement of this code snippet: static DecodeStatus DecodeVRM2RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ; if ( RegNo % ) return MCDisassembler :: Fail ; const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ; MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1009,"Predict the next statement of this code snippet: const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ;" LLVM,RISCV,1010,"Predict the next statement of this code snippet: const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ; MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1011,"Predict the next statement of this code snippet: static DecodeStatus DecodeVRM4RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ; if ( RegNo % ) return MCDisassembler :: Fail ; const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ; MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1012,"Predict the next statement of this code snippet: MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1013,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; if ( RegNo % ) return MCDisassembler :: Fail ; const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ; MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ;" LLVM,RISCV,1014,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ;" LLVM,RISCV,1015,"Predict the next statement of this code snippet: if ( ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32Only_32 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } if ( STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTableCapModeOnly_32 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32 , MI , Insn , Address , this , STI ) ; Size = ; } else { if ( Bytes . size ( ) < ) { Size = ; return MCDisassembler :: Fail ; } Insn = :: read16le ( Bytes . data ( ) ) ; if ( ! STI . getFeatureBits ( ) [ ] && STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32CapModeOnly_16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } if ( ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32Only_16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) {" LLVM,RISCV,1016,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; Register Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1017,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1018,"Predict the next statement of this code snippet: static DecodeStatus DecodeVGRRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ; Register Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1019,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; Register Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1020,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1021,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; Register Reg = ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1022,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend64 < N > ( Imm ) ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1023,"Predict the next statement of this code snippet: static DecodeStatus decodeUImmOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const void * Decoder ) {" LLVM,RISCV,1024,"Predict the next statement of this code snippet: assert ( isUInt < N > ( Imm ) && ) ; Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1025,"Predict the next statement of this code snippet: uint32_t Inst = :: read32le ( Bytes . data ( ) ) ;" LLVM,RISCV,1026,"Predict the next statement of this code snippet: unsigned Reg = FPR32DecoderTable [ RegNo ] ;" LLVM,RISCV,1027,"Predict the next statement of this code snippet: if ( RegNo > array_lengthof ( FPR32DecoderTable ) ) return MCDisassembler :: Fail ; unsigned Reg = FPR32DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1028,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) {" LLVM,RISCV,1029,"Predict the next statement of this code snippet: if ( RegNo > array_lengthof ( FPR64DecoderTable ) ) return MCDisassembler :: Fail ; unsigned Reg = FPR64DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1030,"Predict the next statement of this code snippet: return decodeSImmOperand < N > ( Inst , Imm , Address , Decoder ) ;" LLVM,RISCV,1031,"Predict the next statement of this code snippet: static DecodeStatus decodeSImmNonZeroOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const void * Decoder ) { if ( Imm == ) return MCDisassembler :: Fail ; return decodeSImmOperand < N > ( Inst , Imm , Address , Decoder ) ;" LLVM,RISCV,1032,"Predict the next statement of this code snippet: static DecodeStatus decodeUImmNonZeroOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const void * Decoder ) {" LLVM,RISCV,1033,"Predict the next statement of this code snippet: if ( RegNo >= || RegNo & ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ;" LLVM,RISCV,1034,"Predict the next statement of this code snippet: MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1035,"Predict the next statement of this code snippet: Size = ; return MCDisassembler :: Fail ; } Insn = :: read32le ( Bytes . data ( ) ) ; if ( STI . getFeatureBits ( ) [ ] && ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTableRV32Zdinx32 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } if ( STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTableRVZfinx32 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32 , MI , Insn , Address , this , STI ) ; Size = ; } else { if ( Bytes . size ( ) < ) { Size = ; return MCDisassembler :: Fail ; } Insn = :: read16le ( Bytes . data ( ) ) ; if ( ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32Only_16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ;" LLVM,RISCV,1036,"Predict the next statement of this code snippet: if ( STI . getFeatureBits ( ) [ ] && ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTableRV32Zdinx32 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } if ( STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTableRVZfinx32 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32 , MI , Insn , Address , this , STI ) ; Size = ; } else { if ( Bytes . size ( ) < ) { Size = ; return MCDisassembler :: Fail ; } Insn = :: read16le ( Bytes . data ( ) ) ; if ( ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32Only_16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable16 , MI , Insn , Address , this , STI ) ; Size = ; } return Result ;" LLVM,RISCV,1037,"Predict the next statement of this code snippet: Size = ; return Result ; } } if ( STI . getFeatureBits ( ) [ ] && STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTableRVBC16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable16 , MI , Insn , Address , this , STI ) ;" LLVM,RISCV,1038,"Predict the next statement of this code snippet: static DecodeStatus DecodePulpV2RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) {" LLVM,RISCV,1039,"Predict the next statement of this code snippet: static DecodeStatus DecodePulpV4RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { return DecodeGPRRegisterClass ( Inst , RegNo , Address , Decoder ) ;" LLVM,RISCV,1040,"Predict the next statement of this code snippet: Register Reg = FPR32DecoderTable [ RegNo + ] ;" LLVM,RISCV,1041,"Predict the next statement of this code snippet: Register Reg = FPR32DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1042,"Predict the next statement of this code snippet: if ( RegNo > array_lengthof ( FPR32DecoderTable ) ) return MCDisassembler :: Fail ; Register Reg = FPR32DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1043,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } Register Reg = FPR64DecoderTable [ RegNo + ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1044,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64CRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo > ) { return MCDisassembler :: Fail ; } Register Reg = FPR64DecoderTable [ RegNo + ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1045,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo > array_lengthof ( FPR64DecoderTable ) ) return MCDisassembler :: Fail ;" LLVM,RISCV,1046,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1047,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRCRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) {" LLVM,RISCV,1048,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } unsigned Reg = VRDecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1049,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32 , MI , Insn , Address , this , STI ) ; Size = ; } else { Insn = :: read16le ( Bytes . data ( ) ) ; if ( ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32Only_16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } } LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable16 , MI , Insn , Address , this , STI ) ; Size = ; }" LLVM,RISCV,1050,"Predict the next statement of this code snippet: if ( RegNo > sizeof ( GPRDecoderTable ) ) { return MCDisassembler :: Fail ; } unsigned Reg = GPRDecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1051,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } unsigned Reg = GPRDecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1052,"Predict the next statement of this code snippet: if ( Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == ) { DecodeGPRRegisterClass ( Inst , , Address , Decoder ) ; }" LLVM,RISCV,1053,"Predict the next statement of this code snippet: static DecodeStatus decodeCLUIImmOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const MCDisassembler * Decoder ) {" LLVM,RISCV,1054,"Predict the next statement of this code snippet: MCRegister Reg = + RegNo ;" LLVM,RISCV,1055,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ;" LLVM,RISCV,1056,"Predict the next statement of this code snippet: } MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1057,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR32RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const MCDisassembler * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ;" LLVM,RISCV,1058,"Predict the next statement of this code snippet: if ( RegNo >= ) { return MCDisassembler :: Fail ; } MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1059,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ;" LLVM,RISCV,1060,"Predict the next statement of this code snippet: static DecodeStatus decodeFRMArg ( MCInst & Inst , uint64_t Imm , int64_t Address , const MCDisassembler * Decoder ) { assert ( isUInt < > ( Imm ) && ) ; if ( ! llvm :: ( Imm ) ) return MCDisassembler :: Fail ; Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1061,"Predict the next statement of this code snippet: if ( ! llvm :: ( Imm ) ) return MCDisassembler :: Fail ; Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1062,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRCRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const MCDisassembler * Decoder ) { if ( RegNo >= ) return MCDisassembler :: Fail ;" LLVM,RISCV,1063,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ;" LLVM,RISCV,1064,"Predict the next statement of this code snippet: } return DecodeGPRRegisterClass ( Inst , RegNo , Address , Decoder ) ;" LLVM,RISCV,1065,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; }" LLVM,RISCV,1066,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRNoX0X2RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const MCDisassembler * Decoder ) {" LLVM,RISCV,1067,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRPF64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const MCDisassembler * Decoder ) { if ( RegNo >= || RegNo & ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1068,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRPF64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const MCDisassembler * Decoder ) { if ( RegNo >= || RegNo & ) return MCDisassembler :: Fail ;" LLVM,RISCV,1069,"Predict the next statement of this code snippet: if ( RegNo >= || ( IsRV32E && RegNo >= ) ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ;" LLVM,RISCV,1070,"Predict the next statement of this code snippet: static DecodeStatus decodeRVCInstrRdRs1Rs2 ( MCInst & Inst , unsigned Insn , uint64_t Address , const MCDisassembler * Decoder ) {" LLVM,RISCV,1071,"Predict the next statement of this code snippet: static DecodeStatus decodeRVCInstrRdRs1UImm ( MCInst & Inst , unsigned Insn , uint64_t Address , const MCDisassembler * Decoder ) { DecodeGPRRegisterClass ( Inst , , Address , Decoder ) ; Inst . addOperand ( Inst . getOperand ( ) ) ; uint64_t UImm6 = fieldFromInstruction ( Insn , , ) << | fieldFromInstruction ( Insn , , ) ; DecodeStatus Result = decodeUImmOperand < > ( Inst , UImm6 , Address , Decoder ) ; ( void ) Result ; assert ( Result == MCDisassembler :: Success && ) ;" LLVM,RISCV,1072,"Predict the next statement of this code snippet: static DecodeStatus decodeRVCInstrRdRs2 ( MCInst & Inst , unsigned Insn , uint64_t Address , const MCDisassembler * Decoder ) { unsigned Rd = fieldFromInstruction ( Insn , , ) ; unsigned Rs2 = fieldFromInstruction ( Insn , , ) ;" LLVM,RISCV,1073,"Predict the next statement of this code snippet: DecodeStatus Result = decodeSImmOperand < > ( Inst , SImm6 , Address , Decoder ) ; ( void ) Result ; assert ( Result == MCDisassembler :: Success && ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1074,"Predict the next statement of this code snippet: uint64_t SImm6 = fieldFromInstruction ( Insn , , ) << | fieldFromInstruction ( Insn , , ) ;" LLVM,RISCV,1075,"Predict the next statement of this code snippet: static DecodeStatus decodeSImmNonZeroOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const MCDisassembler * Decoder ) { if ( Imm == ) return MCDisassembler :: Fail ; return decodeSImmOperand < N > ( Inst , Imm , Address , Decoder ) ;" LLVM,RISCV,1076,"Predict the next statement of this code snippet: if ( Imm == ) return MCDisassembler :: Fail ;" LLVM,RISCV,1077,"Predict the next statement of this code snippet: static DecodeStatus decodeSImmOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const MCDisassembler * Decoder ) { assert ( isUInt < N > ( Imm ) && ) ; addImplySP ( Inst , Address , Decoder ) ;" LLVM,RISCV,1078,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend64 < N > ( Imm << ) ) ) ;" LLVM,RISCV,1079,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend64 < N > ( Imm << ) ) ) ;" LLVM,RISCV,1080,"Predict the next statement of this code snippet: return decodeUImmOperand < N > ( Inst , Imm , Address , Decoder ) ;" LLVM,RISCV,1081,"Predict the next statement of this code snippet: static DecodeStatus decodeUImmNonZeroOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const MCDisassembler * Decoder ) { if ( Imm == ) return MCDisassembler :: Fail ;" LLVM,RISCV,1082,"Predict the next statement of this code snippet: static DecodeStatus decodeUImmOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const MCDisassembler * Decoder ) { assert ( isUInt < N > ( Imm ) && ) ; addImplySP ( Inst , Address , Decoder ) ; Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1083,"Predict the next statement of this code snippet: const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ; MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1084,"Predict the next statement of this code snippet: MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1085,"Predict the next statement of this code snippet: if ( RegNo % ) return MCDisassembler :: Fail ; const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ; MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1086,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; if ( RegNo % ) return MCDisassembler :: Fail ; const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ; MCRegister Reg = RI -> getMatchingSuperReg ( + RegNo , , & MCRegisterClasses [ ] ) ;" LLVM,RISCV,1087,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; if ( RegNo % ) return MCDisassembler :: Fail ; const Disassembler * Dis = static_cast < const Disassembler * > ( Decoder ) ; const MCRegisterInfo * RI = Dis -> getContext ( ) . getRegisterInfo ( ) ;" LLVM,RISCV,1088,"Predict the next statement of this code snippet: if ( RegNo >= ) return MCDisassembler :: Fail ; MCRegister Reg = + RegNo ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1089,"Predict the next statement of this code snippet: if ( Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == || Inst . getOpcode ( ) == ) { DecodeGPRRegisterClass ( Inst , , Address , Decoder ) ; } if ( Inst . getOpcode ( ) == ) { DecodeGPRRegisterClass ( Inst , , Address , Decoder ) ; DecodeGPRRegisterClass ( Inst , , Address , Decoder ) ;" LLVM,RISCV,1090,"Predict the next statement of this code snippet: static MCDisassembler * createDisassembler ( const Target & T , const MCSubtargetInfo & STI , MCContext & Ctx ) {" LLVM,RISCV,1091,"Predict the next statement of this code snippet: static MCDisassembler * createDisassembler ( const Target & T , const MCSubtargetInfo & STI , MCContext & Ctx ) { return new Disassembler ( STI , Ctx ) ;" LLVM,RISCV,1092,"Predict the next statement of this code snippet: if ( Imm > ) { Imm = ( SignExtend64 < > ( Imm ) & ) ; } Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ;" LLVM,RISCV,1093,"Predict the next statement of this code snippet: if ( Imm > ) { Imm = ( SignExtend64 < > ( Imm ) & ) ; } Inst . addOperand ( MCOperand :: createImm ( Imm ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1094,"Predict the next statement of this code snippet: return MCDisassembler :: Fail ; } unsigned Reg = FPR32DecoderTable [ RegNo + ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1095,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR32RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo > sizeof ( FPR32DecoderTable ) ) return MCDisassembler :: Fail ; unsigned Reg = FPR32DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ; return MCDisassembler :: Success ;" LLVM,RISCV,1096,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64CRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo > ) { return MCDisassembler :: Fail ; } unsigned Reg = FPR64DecoderTable [ RegNo + ] ;" LLVM,RISCV,1097,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64CRegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo > ) { return MCDisassembler :: Fail ; }" LLVM,RISCV,1098,"Predict the next statement of this code snippet: static DecodeStatus DecodeFPR64RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo > sizeof ( FPR64DecoderTable ) ) return MCDisassembler :: Fail ; unsigned Reg = FPR64DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1099,"Predict the next statement of this code snippet: if ( RegNo > sizeof ( FPR64DecoderTable ) ) return MCDisassembler :: Fail ; unsigned Reg = FPR64DecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1100,"Predict the next statement of this code snippet: static DecodeStatus decodeFRMArg ( MCInst & Inst , uint64_t Imm , int64_t Address , const void * Decoder ) { assert ( isUInt < > ( Imm ) && ) ;" LLVM,RISCV,1101,"Predict the next statement of this code snippet: assert ( isUInt < > ( Imm ) && ) ;" LLVM,RISCV,1102,"Predict the next statement of this code snippet: if ( RegNo > ) return MCDisassembler :: Fail ; unsigned Reg = GPRDecoderTable [ RegNo + ] ;" LLVM,RISCV,1103,"Predict the next statement of this code snippet: unsigned Reg = GPRDecoderTable [ RegNo + ] ;" LLVM,RISCV,1104,"Predict the next statement of this code snippet: } return DecodeGPRRegisterClass ( Inst , RegNo , Address , Decoder ) ;" LLVM,RISCV,1105,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRNoX0X2RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) { if ( RegNo == ) { return MCDisassembler :: Fail ; }" LLVM,RISCV,1106,"Predict the next statement of this code snippet: static DecodeStatus DecodeGPRNoX0X2RegisterClass ( MCInst & Inst , uint64_t RegNo , uint64_t Address , const void * Decoder ) {" LLVM,RISCV,1107,"Predict the next statement of this code snippet: unsigned Reg = GPRDecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1108,"Predict the next statement of this code snippet: if ( RegNo > sizeof ( GPRDecoderTable ) ) return MCDisassembler :: Fail ; unsigned Reg = GPRDecoderTable [ RegNo ] ; Inst . addOperand ( MCOperand :: createReg ( Reg ) ) ;" LLVM,RISCV,1109,"Predict the next statement of this code snippet: static DecodeStatus decodeSImmOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const void * Decoder ) {" LLVM,RISCV,1110,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend64 < N > ( Imm ) ) ) ;" LLVM,RISCV,1111,"Predict the next statement of this code snippet: Inst . addOperand ( MCOperand :: createImm ( SignExtend64 < N > ( Imm << ) ) ) ;" LLVM,RISCV,1112,"Predict the next statement of this code snippet: static DecodeStatus decodeUImmOperand ( MCInst & Inst , uint64_t Imm , int64_t Address , const void * Decoder ) {" LLVM,RISCV,1113,"Predict the next statement of this code snippet: } else { if ( Bytes . size ( ) < ) { Size = ; return MCDisassembler :: Fail ; } Insn = :: read16le ( Bytes . data ( ) ) ; if ( ! STI . getFeatureBits ( ) [ ] ) { LLVM_DEBUG ( dbgs ( ) << ) ; Result = decodeInstruction ( DecoderTable32Only_16 , MI , Insn , Address , this , STI ) ; if ( Result != MCDisassembler :: Fail ) { Size = ; return Result ; } }" LLVM,RISCV,1114,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCDisassembler ( getThe64Target ( ) , createDisassembler ) ;" LLVM,RISCV,1115,"Predict the next statement of this code snippet: Disassembler ( const MCSubtargetInfo & STI , MCContext & Ctx ) : MCDisassembler ( STI , Ctx ) {" LLVM,RISCV,1116,"Predict the next statement of this code snippet: Disassembler ( const MCSubtargetInfo & STI , MCContext & Ctx ) : MCDisassembler ( STI , Ctx ) {" LLVM,RISCV,1117,"Predict the next statement of this code snippet: case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case :" LLVM,RISCV,1118,"Predict the next statement of this code snippet: ELFObjectWriter :: ELFObjectWriter ( uint8_t OSABI , bool Is64Bit ) : MCELFObjectTargetWriter ( Is64Bit , OSABI , ELF :: EM_ , true ) {" LLVM,RISCV,1119,"Predict the next statement of this code snippet: ELFObjectWriter :: ELFObjectWriter ( uint8_t OSABI , bool Is64Bit ) : MCELFObjectTargetWriter ( Is64Bit , OSABI , ELF :: EM_ , true ) {" LLVM,RISCV,1120,"Predict the next statement of this code snippet: ELFObjectWriter :: ~ ELFObjectWriter ( ) {" LLVM,RISCV,1121,"Predict the next statement of this code snippet: ELFObjectWriter :: ~ ELFObjectWriter ( ) {" LLVM,RISCV,1122,"Predict the next statement of this code snippet: case FK_PCRel_4 : return ELF :: R__32_PCREL ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; case : return ELF :: R__CHERI_CAPTAB_PCREL_HI20 ; case : return ELF :: R__CHERI_TLS_IE_CAPTAB_PCREL_HI20 ; case : return ELF :: R__CHERI_TLS_GD_CAPTAB_PCREL_HI20 ; case : return ELF :: R__CHERI_CJAL ; case : return ELF :: R__CHERI_CCALL ; case : return ELF :: R__CHERI_RVC_CJUMP ; case : return ELF :: R__ADD8 ; case : return ELF :: R__SUB8 ; case : return ELF :: R__ADD16 ; case : return ELF :: R__SUB16 ; case : return ELF :: R__ADD32 ; case : return ELF :: R__SUB32 ; case : return ELF :: R__ADD64 ; case : return ELF :: R__SUB64 ; } } switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_1 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_2 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 : if ( Expr -> getKind ( ) == MCExpr :: Target && cast < MCExpr > ( Expr ) -> getKind ( ) == MCExpr :: VK__32_PCREL ) return ELF :: R__32_PCREL ; return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__TPREL_HI20 ; case : return ELF :: R__TPREL_LO12_I ; case : return ELF :: R__TPREL_LO12_S ;" LLVM,RISCV,1123,"Predict the next statement of this code snippet: const MCExpr * Expr = Fixup . getValue ( ) ; unsigned Kind = Fixup . getTargetKind ( ) ; if ( Kind >= FirstLiteralRelocationKind ) return Kind - FirstLiteralRelocationKind ; if ( IsPCRel ) { switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 : case FK_PCRel_4 : return ELF :: R__32_PCREL ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; case : return ELF :: R__CHERI_CAPTAB_PCREL_HI20 ; case : return ELF :: R__CHERI_TLS_IE_CAPTAB_PCREL_HI20 ; case : return ELF :: R__CHERI_TLS_GD_CAPTAB_PCREL_HI20 ; case : return ELF :: R__CHERI_CJAL ; case : return ELF :: R__CHERI_CCALL ; case : return ELF :: R__CHERI_RVC_CJUMP ; case : return ELF :: R__ADD8 ; case : return ELF :: R__SUB8 ; case : return ELF :: R__ADD16 ; case : return ELF :: R__SUB16 ; case : return ELF :: R__ADD32 ; case : return ELF :: R__SUB32 ; case : return ELF :: R__ADD64 ; case : return ELF :: R__SUB64 ; } } switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_1 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_2 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 : if ( Expr -> getKind ( ) == MCExpr :: Target && cast < MCExpr > ( Expr ) -> getKind ( ) == MCExpr :: VK__32_PCREL ) return ELF :: R__32_PCREL ; return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__TPREL_HI20 ; case : return ELF :: R__TPREL_LO12_I ; case : return ELF :: R__TPREL_LO12_S ; case : return ELF :: R__TPREL_ADD ; case :" LLVM,RISCV,1124,"Predict the next statement of this code snippet: return createELFObjectWriter ( llvm :: make_unique < ELFObjectWriter > ( OSABI , Is64Bit ) , OS , true ) ;" LLVM,RISCV,1125,"Predict the next statement of this code snippet: case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case :" LLVM,RISCV,1126,"Predict the next statement of this code snippet: MCObjectWriter * llvm :: createELFObjectWriter ( raw_pwrite_stream & OS , uint8_t OSABI , bool Is64Bit ) { MCELFObjectTargetWriter * MOTW = new ELFObjectWriter ( OSABI , Is64Bit ) ;" LLVM,RISCV,1127,"Predict the next statement of this code snippet: unsigned ELFObjectWriter :: getRelocType ( MCContext & Ctx , const MCValue & Target , const MCFixup & Fixup , bool IsPCRel ) const {" LLVM,RISCV,1128,"Predict the next statement of this code snippet: ELFObjectWriter :: ELFObjectWriter ( uint8_t OSABI , bool Is64Bit ) : MCELFObjectTargetWriter ( Is64Bit , OSABI , ELF :: EM_ , false ) {" LLVM,RISCV,1129,"Predict the next statement of this code snippet: ELFObjectWriter :: ELFObjectWriter ( uint8_t OSABI , bool Is64Bit ) : MCELFObjectTargetWriter ( Is64Bit , OSABI , ELF :: EM_ , false ) {" LLVM,RISCV,1130,"Predict the next statement of this code snippet: return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__PCREL_HI20 ; case :" LLVM,RISCV,1131,"Predict the next statement of this code snippet: } } switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_1 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_2 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 : if ( Expr -> getKind ( ) == MCExpr :: Target && cast < MCExpr > ( Expr ) -> getKind ( ) == MCExpr :: VK__32_PCREL ) return ELF :: R__32_PCREL ; return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__TPREL_HI20 ; case : return ELF :: R__TPREL_LO12_I ; case : return ELF :: R__TPREL_LO12_S ; case : return ELF :: R__TPREL_ADD ; case : return ELF :: R__RELAX ; case : return ELF :: R__ALIGN ; case : return ELF :: R__SET6 ; case : return ELF :: R__SUB6 ; case : return ELF :: R__ADD8 ; case : return ELF :: R__SET8 ; case : return ELF :: R__SUB8 ; case : return ELF :: R__SET16 ; case : return ELF :: R__ADD16 ; case : return ELF :: R__SUB16 ; case : return ELF :: R__SET32 ; case : return ELF :: R__ADD32 ; case : return ELF :: R__SUB32 ; case : return ELF :: R__ADD64 ;" LLVM,RISCV,1132,"Predict the next statement of this code snippet: case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; } } switch ( Kind ) { default : llvm_unreachable ( ) ; case FK_Data_4 : return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case FK_Data_Add_1 : return ELF :: R__ADD8 ; case FK_Data_Add_2 : return ELF :: R__ADD16 ; case FK_Data_Add_4 : return ELF :: R__ADD32 ; case FK_Data_Add_8 : return ELF :: R__ADD64 ; case FK_Data_Add_6b : return ELF :: R__SET6 ; case FK_Data_Sub_1 : return ELF :: R__SUB8 ; case FK_Data_Sub_2 : return ELF :: R__SUB16 ; case FK_Data_Sub_4 : return ELF :: R__SUB32 ; case FK_Data_Sub_8 : return ELF :: R__SUB64 ; case FK_Data_Sub_6b : return ELF :: R__SUB6 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__TPREL_HI20 ; case : return ELF :: R__TPREL_LO12_I ; case : return ELF :: R__TPREL_LO12_S ; case :" LLVM,RISCV,1133,"Predict the next statement of this code snippet: case FK_Data_Sub_4 : return ELF :: R__SUB32 ; case FK_Data_Sub_8 : return ELF :: R__SUB64 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__RELAX ; case : return ELF :: R__ALIGN ; }" LLVM,RISCV,1134,"Predict the next statement of this code snippet: return ELF :: R__32_PCREL ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; } } switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_1 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_2 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 :" LLVM,RISCV,1135,"Predict the next statement of this code snippet: switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 : case FK_PCRel_4 : return ELF :: R__32_PCREL ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; case : return ; case : return ; } } switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_1 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_2 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 : if ( Expr -> getKind ( ) == MCExpr :: Target && cast < MCExpr > ( Expr ) -> getKind ( ) == MCExpr :: VK__32_PCREL ) return ELF :: R__32_PCREL ; return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case FK_Data_Add_1 : return ELF :: R__ADD8 ; case FK_Data_Add_2 : return ELF :: R__ADD16 ; case FK_Data_Add_4 : return ELF :: R__ADD32 ; case FK_Data_Add_8 : return ELF :: R__ADD64 ; case FK_Data_Add_6b : return ELF :: R__SET6 ; case FK_Data_Sub_1 : return ELF :: R__SUB8 ; case FK_Data_Sub_2 : return ELF :: R__SUB16 ; case FK_Data_Sub_4 : return ELF :: R__SUB32 ; case FK_Data_Sub_8 : return ELF :: R__SUB64 ; case FK_Data_Sub_6b : return ELF :: R__SUB6 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__TPREL_HI20 ; case : return ELF :: R__TPREL_LO12_I ; case : return ELF :: R__TPREL_LO12_S ; case : return ELF :: R__TPREL_ADD ; case : return ELF :: R__RELAX ;" LLVM,RISCV,1136,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case FK_Data_4 : case FK_PCRel_4 : return ELF :: R__32_PCREL ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; } } switch ( Kind ) { default : llvm_unreachable ( ) ; case FK_Data_4 : if ( Expr -> getKind ( ) == MCExpr :: Target && cast < MCExpr > ( Expr ) -> getKind ( ) == MCExpr :: VK__32_PCREL ) return ELF :: R__32_PCREL ; return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ;" LLVM,RISCV,1137,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case FK_Data_4 : return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case FK_Data_Add_1 : return ELF :: R__ADD8 ; case FK_Data_Add_2 : return ELF :: R__ADD16 ; case FK_Data_Add_4 : return ELF :: R__ADD32 ; case FK_Data_Add_8 : return ELF :: R__ADD64 ; case FK_Data_Add_6b : return ELF :: R__SET6 ; case FK_Data_Sub_1 : return ELF :: R__SUB8 ; case FK_Data_Sub_2 : return ELF :: R__SUB16 ; case FK_Data_Sub_4 : return ELF :: R__SUB32 ; case FK_Data_Sub_8 : return ELF :: R__SUB64 ; case FK_Data_Sub_6b : return ELF :: R__SUB6 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TPREL_HI20 ; case : return ELF :: R__TPREL_LO12_I ; case : return ELF :: R__TPREL_LO12_S ; case : return ELF :: R__TPREL_ADD ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ;" LLVM,RISCV,1138,"Predict the next statement of this code snippet: switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( ) ; case FK_Data_4 : return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case FK_Data_Add_1 : return ELF :: R__ADD8 ; case FK_Data_Add_2 : return ELF :: R__ADD16 ; case FK_Data_Add_4 : return ELF :: R__ADD32 ; case FK_Data_Add_8 : return ELF :: R__ADD64 ; case FK_Data_Sub_1 : return ELF :: R__SUB8 ; case FK_Data_Sub_2 : return ELF :: R__SUB16 ; case FK_Data_Sub_4 : return ELF :: R__SUB32 ; case FK_Data_Sub_8 : return ELF :: R__SUB64 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case :" LLVM,RISCV,1139,"Predict the next statement of this code snippet: return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; } } switch ( Kind ) { default : llvm_unreachable ( ) ; case FK_Data_4 : return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case FK_Data_Add_1 : return ELF :: R__ADD8 ; case FK_Data_Add_2 : return ELF :: R__ADD16 ; case FK_Data_Add_4 : return ELF :: R__ADD32 ;" LLVM,RISCV,1140,"Predict the next statement of this code snippet: return std :: make_unique < ELFObjectWriter > ( OSABI , Is64Bit ) ;" LLVM,RISCV,1141,"Predict the next statement of this code snippet: case FK_PCRel_4 : return ELF :: R__32_PCREL ; case : return ELF :: R__PCREL_HI20 ; case : return ELF :: R__PCREL_LO12_I ; case : return ELF :: R__PCREL_LO12_S ; case : return ELF :: R__GOT_HI20 ; case : return ELF :: R__TLS_GOT_HI20 ; case : return ELF :: R__TLS_GD_HI20 ; case : return ELF :: R__JAL ; case : return ELF :: R__BRANCH ; case : return ELF :: R__RVC_JUMP ; case : return ELF :: R__RVC_BRANCH ; case : return ELF :: R__CALL ; case : return ELF :: R__CALL_PLT ; case : return ELF :: R__CVPCREL_UI12 ; case : return ELF :: R__CVPCREL_URS1 ; } } switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_1 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_2 : Ctx . reportError ( Fixup . getLoc ( ) , ) ; return ELF :: R__NONE ; case FK_Data_4 : if ( Expr -> getKind ( ) == MCExpr :: Target && cast < MCExpr > ( Expr ) -> getKind ( ) == MCExpr :: VK__32_PCREL ) return ELF :: R__32_PCREL ; return ELF :: R__32 ; case FK_Data_8 : return ELF :: R__64 ; case FK_Data_Add_1 : return ELF :: R__ADD8 ; case FK_Data_Add_2 : return ELF :: R__ADD16 ; case FK_Data_Add_4 : return ELF :: R__ADD32 ; case FK_Data_Add_8 : return ELF :: R__ADD64 ; case FK_Data_Add_6b : return ELF :: R__SET6 ; case FK_Data_Sub_1 : return ELF :: R__SUB8 ; case FK_Data_Sub_2 : return ELF :: R__SUB16 ; case FK_Data_Sub_4 : return ELF :: R__SUB32 ; case FK_Data_Sub_8 : return ELF :: R__SUB64 ; case FK_Data_Sub_6b : return ELF :: R__SUB6 ; case : return ELF :: R__HI20 ; case : return ELF :: R__LO12_I ; case : return ELF :: R__LO12_S ; case : return ELF :: R__TPREL_HI20 ; case : return ELF :: R__TPREL_LO12_I ; case : return ELF :: R__TPREL_LO12_S ;" LLVM,RISCV,1142,"Predict the next statement of this code snippet: Result += getULEB128Size ( item . IntValue ) ; break ; case AttributeType :: Text : Result += getULEB128Size ( item . Tag ) ; Result += item . StringValue . size ( ) + ; break ;" LLVM,RISCV,1143,"Predict the next statement of this code snippet: MCELFStreamer * createELFStreamer ( MCContext & C , std :: unique_ptr < MCAsmBackend > MAB , std :: unique_ptr < MCObjectWriter > MOW , std :: unique_ptr < MCCodeEmitter > MCE , bool RelaxAll ) { ELFStreamer * S = new ELFStreamer ( C , std :: move ( MAB ) , std :: move ( MOW ) , std :: move ( MCE ) ) ; S -> getAssembler ( ) . setRelaxAll ( RelaxAll ) ;" LLVM,RISCV,1144,"Predict the next statement of this code snippet: setAttributeItem ( Attribute , Value , true ) ;" LLVM,RISCV,1145,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoPIC ( ) {" LLVM,RISCV,1146,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoPIC ( ) {" LLVM,RISCV,1147,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoRelax ( ) {" LLVM,RISCV,1148,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoRelax ( ) {" LLVM,RISCV,1149,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoRVC ( ) {" LLVM,RISCV,1150,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoRVC ( ) {" LLVM,RISCV,1151,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionPIC ( ) {" LLVM,RISCV,1152,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionPIC ( ) {" LLVM,RISCV,1153,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionPop ( ) {" LLVM,RISCV,1154,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionPop ( ) {" LLVM,RISCV,1155,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionPush ( ) {" LLVM,RISCV,1156,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionPush ( ) {" LLVM,RISCV,1157,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionRelax ( ) {" LLVM,RISCV,1158,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionRelax ( ) {" LLVM,RISCV,1159,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionRVC ( ) {" LLVM,RISCV,1160,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionRVC ( ) {" LLVM,RISCV,1161,"Predict the next statement of this code snippet: unsigned Add , Sub ; std :: tie ( Add , Sub ) = getRelocPairForSize ( Size ) ; DF -> getFixups ( ) . push_back ( MCFixup :: create ( DF -> getContents ( ) . size ( ) , A , static_cast < MCFixupKind > ( Add ) , Loc ) ) ;" LLVM,RISCV,1162,"Predict the next statement of this code snippet: DF -> getFixups ( ) . push_back ( MCFixup :: create ( DF -> getContents ( ) . size ( ) , A , static_cast < MCFixupKind > ( Add ) , Loc ) ) ; DF -> getFixups ( ) . push_back ( MCFixup :: create ( DF -> getContents ( ) . size ( ) , B , static_cast < MCFixupKind > ( Sub ) , Loc ) ) ;" LLVM,RISCV,1163,"Predict the next statement of this code snippet: case : EFlags |= ELF :: EF__FLOAT_ABI_SINGLE ; break ; case : case : EFlags |= ELF :: EF__FLOAT_ABI_DOUBLE ; break ; case : EFlags |= ELF :: EF__RVE ; break ; case : llvm_unreachable ( ) ; }" LLVM,RISCV,1164,"Predict the next statement of this code snippet: switch ( item . Type ) { default : llvm_unreachable ( ) ; case AttributeType :: Numeric : Streamer . emitULEB128IntValue ( item . IntValue ) ; break ; case AttributeType :: Text : Streamer . emitBytes ( item . StringValue ) ; Streamer . emitInt8 ( ) ; break ; case AttributeType :: NumericAndText : Streamer . emitULEB128IntValue ( item . IntValue ) ; Streamer . emitBytes ( item . StringValue ) ; Streamer . emitInt8 ( ) ; break ; } } Contents . clear ( ) ;" LLVM,RISCV,1165,"Predict the next statement of this code snippet: const size_t ContentsSize = calculateContentSize ( ) ; Streamer . emitInt32 ( VendorHeaderSize + TagHeaderSize + ContentsSize ) ; Streamer . emitBytes ( CurrentVendor ) ; Streamer . emitInt8 ( ) ; Streamer . emitInt8 ( ELFAttrs :: File ) ; Streamer . emitInt32 ( TagHeaderSize + ContentsSize ) ; for ( AttributeItem item : Contents ) { Streamer . emitULEB128IntValue ( item . Tag ) ; switch ( item . Type ) { default : llvm_unreachable ( ) ; case AttributeType :: Numeric : Streamer . emitULEB128IntValue ( item . IntValue ) ; break ; case AttributeType :: Text : Streamer . emitBytes ( item . StringValue ) ; Streamer . emitInt8 ( ) ; break ; case AttributeType :: NumericAndText :" LLVM,RISCV,1166,"Predict the next statement of this code snippet: return std :: make_pair ( , ) ; case : return std :: make_pair ( , ) ; case :" LLVM,RISCV,1167,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : return std :: make_pair ( , ) ; case : return std :: make_pair ( , ) ; case : return std :: make_pair ( , ) ; case :" LLVM,RISCV,1168,"Predict the next statement of this code snippet: static bool requiresFixups ( MCContext & C , const MCExpr * Value , const MCExpr * & LHS , const MCExpr * & RHS ) { const auto * MBE = dyn_cast < MCBinaryExpr > ( Value ) ; if ( MBE == nullptr ) return false ; MCValue E ; if ( ! Value -> evaluateAsRelocatable ( E , nullptr , nullptr ) ) return false ; if ( E . getSymA ( ) == nullptr || E . getSymB ( ) == nullptr ) return false ; const auto & A = E . getSymA ( ) -> getSymbol ( ) ; const auto & B = E . getSymB ( ) -> getSymbol ( ) ; LHS = MCBinaryExpr :: create ( MCBinaryExpr :: Add , MCSymbolRefExpr :: create ( & A , C ) , MCConstantExpr :: create ( E . getConstant ( ) , C ) , C ) ;" LLVM,RISCV,1169,"Predict the next statement of this code snippet: MCValue E ; if ( ! Value -> evaluateAsRelocatable ( E , nullptr , nullptr ) ) return false ; if ( E . getSymA ( ) == nullptr || E . getSymB ( ) == nullptr ) return false ; const auto & A = E . getSymA ( ) -> getSymbol ( ) ; const auto & B = E . getSymB ( ) -> getSymbol ( ) ; LHS = MCBinaryExpr :: create ( MCBinaryExpr :: Add , MCSymbolRefExpr :: create ( & A , C ) , MCConstantExpr :: create ( E . getConstant ( ) , C ) , C ) ; RHS = E . getSymB ( ) ;" LLVM,RISCV,1170,"Predict the next statement of this code snippet: static_cast < TargetStreamer * > ( getTargetStreamer ( ) ) -> reset ( ) ; MCELFStreamer :: reset ( ) ;" LLVM,RISCV,1171,"Predict the next statement of this code snippet: void reset ( ) override {" LLVM,RISCV,1172,"Predict the next statement of this code snippet: ELFStreamer ( MCContext & C , std :: unique_ptr < MCAsmBackend > MAB , std :: unique_ptr < MCObjectWriter > MOW , std :: unique_ptr < MCCodeEmitter > MCE ) : MCELFStreamer ( C , std :: move ( MAB ) , std :: move ( MOW ) , std :: move ( MCE ) ) {" LLVM,RISCV,1173,"Predict the next statement of this code snippet: ELFStreamer ( MCContext & C , std :: unique_ptr < MCAsmBackend > MAB , std :: unique_ptr < MCObjectWriter > MOW , std :: unique_ptr < MCCodeEmitter > MCE ) : MCELFStreamer ( C , std :: move ( MAB ) , std :: move ( MOW ) , std :: move ( MCE ) ) {" LLVM,RISCV,1174,"Predict the next statement of this code snippet: auto & MAB = static_cast < AsmBackend & > ( MCA . getBackend ( ) ) ;" LLVM,RISCV,1175,"Predict the next statement of this code snippet: const FeatureBitset & Features = STI . getFeatureBits ( ) ; auto & MAB = static_cast < AsmBackend & > ( MCA . getBackend ( ) ) ; ABI = MAB . getTargetABI ( ) ; assert ( ABI != && ) ; unsigned EFlags = MCA . getELFHeaderEFlags ( ) ; if ( Features [ ] ) EFlags |= ELF :: EF__RVC ; switch ( ABI ) { case : case : break ; case : case : EFlags |= ELF :: EF__FLOAT_ABI_SINGLE ; break ; case : case : EFlags |= ELF :: EF__FLOAT_ABI_DOUBLE ; break ; case : EFlags |= ELF :: EF__RVE ; break ; case : llvm_unreachable ( ) ; }" LLVM,RISCV,1176,"Predict the next statement of this code snippet: MCAssembler & MCA = getStreamer ( ) . getAssembler ( ) ; const FeatureBitset & Features = STI . getFeatureBits ( ) ; unsigned EFlags = MCA . getELFHeaderEFlags ( ) ; if ( Features [ ] ) EFlags |= ELF :: EF__RVC ;" LLVM,RISCV,1177,"Predict the next statement of this code snippet: const FeatureBitset & Features = STI . getFeatureBits ( ) ; unsigned EFlags = MCA . getELFHeaderEFlags ( ) ; if ( Features [ ] ) EFlags |= ELF :: EF__RVC ;" LLVM,RISCV,1178,"Predict the next statement of this code snippet: visitUsedSymbol ( * Symbol ) ; MCContext & Context = getContext ( ) ; const MCSymbolRefExpr * SRE = MCSymbolRefExpr :: create ( Symbol , MCSymbolRefExpr :: VK_None , Context , Loc ) ; const MCBinaryExpr * CapExpr = MCBinaryExpr :: createAdd ( SRE , Addend , Context ) ; emitValueToAlignment ( CapSize , , , ) ; MCDataFragment * DF = new MCDataFragment ( ) ; MCFixup CapFixup = MCFixup :: create ( , CapExpr , MCFixupKind ( ) ) ;" LLVM,RISCV,1179,"Predict the next statement of this code snippet: assert ( CapSize == ( getContext ( ) . getTargetTriple ( ) . isArch64Bit ( ) ? : ) ) ;" LLVM,RISCV,1180,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionCapMode ( ) {" LLVM,RISCV,1181,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionCapMode ( ) {" LLVM,RISCV,1182,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoCapMode ( ) {" LLVM,RISCV,1183,"Predict the next statement of this code snippet: void TargetELFStreamer :: emitDirectiveOptionNoCapMode ( ) {" LLVM,RISCV,1184,"Predict the next statement of this code snippet: TargetELFStreamer :: TargetELFStreamer ( MCStreamer & S , const MCSubtargetInfo & STI ) : TargetStreamer ( S ) , CurrentVendor ( ) { MCAssembler & MCA = getStreamer ( ) . getAssembler ( ) ; const FeatureBitset & Features = STI . getFeatureBits ( ) ; auto & MAB = static_cast < AsmBackend & > ( MCA . getBackend ( ) ) ; ABI = MAB . getTargetABI ( ) ; assert ( ABI != && ) ; unsigned EFlags = MCA . getELFHeaderEFlags ( ) ; if ( Features [ ] ) EFlags |= ELF :: EF__RVC ;" LLVM,RISCV,1185,"Predict the next statement of this code snippet: AttributeItem * getAttributeItem ( unsigned Attribute ) { for ( size_t i = ; i < Contents . size ( ) ; ++ i ) if ( Contents [ i ] . Tag == Attribute ) return & Contents [ i ] ; return nullptr ;" LLVM,RISCV,1186,"Predict the next statement of this code snippet: void setAttributeItem ( unsigned Attribute , StringRef Value , bool OverwriteExisting ) { if ( AttributeItem * Item = getAttributeItem ( Attribute ) ) { if ( ! OverwriteExisting ) return ; Item -> Type = AttributeType :: Text ; Item -> StringValue = std :: string ( Value ) ; return ; }" LLVM,RISCV,1187,"Predict the next statement of this code snippet: if ( AttributeItem * Item = getAttributeItem ( Attribute ) ) { if ( ! OverwriteExisting ) return ; Item -> Type = AttributeType :: Text ; Item -> StringValue = std :: string ( Value ) ;" LLVM,RISCV,1188,"Predict the next statement of this code snippet: if ( ! OverwriteExisting ) return ; Item -> Type = AttributeType :: NumericAndText ; Item -> IntValue = IntValue ; Item -> StringValue = std :: string ( StringValue ) ;" LLVM,RISCV,1189,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Add : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Sub : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: And : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Or :" LLVM,RISCV,1190,"Predict the next statement of this code snippet: Register ScratchReg = MI . getOperand ( ) . getReg ( ) ; Register AddrReg = MI . getOperand ( ) . getReg ( ) ; Register IncrReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ; BuildMI ( LoopMBB , DL , TII -> get ( getLRForRMW ( PtrIsCap , Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Add : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Sub : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: And : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ;" LLVM,RISCV,1191,"Predict the next statement of this code snippet: MF -> insert ( ++ LoopMBB -> getIterator ( ) , DoneMBB ) ; LoopMBB -> addSuccessor ( LoopMBB ) ; LoopMBB -> addSuccessor ( DoneMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopMBB ) ; if ( ! IsMasked ) doAtomicBinOpExpansion ( TII , MI , DL , & MBB , LoopMBB , DoneMBB , BinOp , Width , PtrIsCap ) ; else doMaskedAtomicBinOpExpansion ( TII , MI , DL , & MBB , LoopMBB , DoneMBB , BinOp , Width ) ; NextMBBI = MBB . end ( ) ; MI . eraseFromParent ( ) ;" LLVM,RISCV,1192,"Predict the next statement of this code snippet: DebugLoc DL = MI . getDebugLoc ( ) ; MachineFunction * MF = MBB . getParent ( ) ; auto LoopHeadMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; auto LoopTailMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; auto DoneMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; MF -> insert ( ++ MBB . getIterator ( ) , LoopHeadMBB ) ; MF -> insert ( ++ LoopHeadMBB -> getIterator ( ) , LoopTailMBB ) ; MF -> insert ( ++ LoopTailMBB -> getIterator ( ) , DoneMBB ) ; LoopHeadMBB -> addSuccessor ( LoopTailMBB ) ; LoopHeadMBB -> addSuccessor ( DoneMBB ) ; LoopTailMBB -> addSuccessor ( DoneMBB ) ; LoopTailMBB -> addSuccessor ( LoopHeadMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopHeadMBB ) ; Register DestReg = MI . getOperand ( ) . getReg ( ) ; Register ScratchReg = MI . getOperand ( ) . getReg ( ) ; Register AddrReg = MI . getOperand ( ) . getReg ( ) ; Register CmpValReg = MI . getOperand ( ) . getReg ( ) ; Register NewValReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsMasked ? : ) . getImm ( ) ) ; if ( ! IsMasked ) { BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW ( PtrIsCap , Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( DestReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW ( PtrIsCap , Ordering , Width ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( NewValReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopHeadMBB ) ; } else { assert ( ! PtrIsCap && ) ; Register MaskReg = MI . getOperand ( ) . getReg ( ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW ( false , Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ;" LLVM,RISCV,1193,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; const TargetRegisterInfo * TRI = MF -> getSubtarget ( ) . getRegisterInfo ( ) ; int CLen = TRI -> getRegSizeInBits ( ) ; auto LoopHeadMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; auto LoopTailMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; auto DoneMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; MF -> insert ( ++ MBB . getIterator ( ) , LoopHeadMBB ) ; MF -> insert ( ++ LoopHeadMBB -> getIterator ( ) , LoopTailMBB ) ; MF -> insert ( ++ LoopTailMBB -> getIterator ( ) , DoneMBB ) ; LoopHeadMBB -> addSuccessor ( LoopTailMBB ) ; LoopHeadMBB -> addSuccessor ( DoneMBB ) ; LoopTailMBB -> addSuccessor ( DoneMBB ) ; LoopTailMBB -> addSuccessor ( LoopHeadMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopHeadMBB ) ; Register DestReg = MI . getOperand ( ) . getReg ( ) ; Register ScratchReg = MI . getOperand ( ) . getReg ( ) ; Register AddrReg = MI . getOperand ( ) . getReg ( ) ; Register CmpValReg = MI . getOperand ( ) . getReg ( ) ; Register NewValReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMWCap ( PtrIsCap , Ordering , CLen ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( TRI -> getSubReg ( DestReg , ) ) . addReg ( TRI -> getSubReg ( CmpValReg , ) ) . addMBB ( DoneMBB ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMWCap ( PtrIsCap , Ordering , CLen ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( NewValReg ) ;" LLVM,RISCV,1194,"Predict the next statement of this code snippet: if ( Width == ) return getLRForRMW8 ( PtrIsCap , Ordering ) ; if ( Width == ) return getLRForRMW16 ( PtrIsCap , Ordering ) ;" LLVM,RISCV,1195,"Predict the next statement of this code snippet: static unsigned getLRForRMW ( bool PtrIsCap , AtomicOrdering Ordering , int Width ) { if ( Width == ) return getLRForRMW8 ( PtrIsCap , Ordering ) ; if ( Width == ) return getLRForRMW16 ( PtrIsCap , Ordering ) ;" LLVM,RISCV,1196,"Predict the next statement of this code snippet: assert ( PtrIsCap ) ; switch ( Ordering ) { default : llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return ; case AtomicOrdering :: Acquire :" LLVM,RISCV,1197,"Predict the next statement of this code snippet: return PtrIsCap ? : ; case AtomicOrdering :: Release : return PtrIsCap ? : ; case AtomicOrdering :: AcquireRelease : return PtrIsCap ? : ; case AtomicOrdering :: SequentiallyConsistent :" LLVM,RISCV,1198,"Predict the next statement of this code snippet: return PtrIsCap ? : ; case AtomicOrdering :: Release : return PtrIsCap ? : ; case AtomicOrdering :: AcquireRelease : return PtrIsCap ? : ;" LLVM,RISCV,1199,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return PtrIsCap ? : ; case AtomicOrdering :: Acquire : return PtrIsCap ? : ; case AtomicOrdering :: Release : return PtrIsCap ? : ; case AtomicOrdering :: AcquireRelease :" LLVM,RISCV,1200,"Predict the next statement of this code snippet: return PtrIsCap ? : ; case AtomicOrdering :: Acquire : return PtrIsCap ? : ; case AtomicOrdering :: Release : return PtrIsCap ? : ; case AtomicOrdering :: AcquireRelease : return PtrIsCap ? : ; case AtomicOrdering :: SequentiallyConsistent :" LLVM,RISCV,1201,"Predict the next statement of this code snippet: assert ( PtrIsCap ) ; switch ( Ordering ) { default : llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return ; case AtomicOrdering :: Acquire : return ; case AtomicOrdering :: Release : return ;" LLVM,RISCV,1202,"Predict the next statement of this code snippet: if ( Width == ) return getSCForRMW32 ( PtrIsCap , Ordering ) ; if ( Width == ) return getSCForRMW64 ( PtrIsCap , Ordering ) ; llvm_unreachable ( ) ;" LLVM,RISCV,1203,"Predict the next statement of this code snippet: if ( Width == ) return getSCForRMW16 ( PtrIsCap , Ordering ) ; if ( Width == ) return getSCForRMW32 ( PtrIsCap , Ordering ) ;" LLVM,RISCV,1204,"Predict the next statement of this code snippet: case AtomicOrdering :: Release : return ; case AtomicOrdering :: AcquireRelease : return ; case AtomicOrdering :: SequentiallyConsistent : return ; }" LLVM,RISCV,1205,"Predict the next statement of this code snippet: static unsigned getSCForRMW32 ( bool PtrIsCap , AtomicOrdering Ordering ) { switch ( Ordering ) { default : llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return PtrIsCap ? : ; case AtomicOrdering :: Acquire : return PtrIsCap ? : ; case AtomicOrdering :: Release :" LLVM,RISCV,1206,"Predict the next statement of this code snippet: static unsigned getSCForRMW64 ( bool PtrIsCap , AtomicOrdering Ordering ) { switch ( Ordering ) { default : llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return PtrIsCap ? : ; case AtomicOrdering :: Acquire : return PtrIsCap ? : ; case AtomicOrdering :: Release :" LLVM,RISCV,1207,"Predict the next statement of this code snippet: case AtomicOrdering :: Monotonic : return PtrIsCap ? : ; case AtomicOrdering :: Acquire : return PtrIsCap ? : ; case AtomicOrdering :: Release : return PtrIsCap ? : ;" LLVM,RISCV,1208,"Predict the next statement of this code snippet: case AtomicOrdering :: Acquire : return CLen == ? ( PtrIsCap ? : ) : ( PtrIsCap ? : ) ; case AtomicOrdering :: Release : return CLen == ? ( PtrIsCap ? : ) : ( PtrIsCap ? : ) ; case AtomicOrdering :: AcquireRelease :" LLVM,RISCV,1209,"Predict the next statement of this code snippet: BuildMI ( LoopMBB , DL , TII -> get ( getLRForRMW ( Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Nand : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ;" LLVM,RISCV,1210,"Predict the next statement of this code snippet: Register MaskReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ; BuildMI ( LoopMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( IncrReg ) . addImm ( ) ; break ; case AtomicRMWInst :: Add : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Sub : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ;" LLVM,RISCV,1211,"Predict the next statement of this code snippet: BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Nand : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ScratchReg ) . addImm ( - ) ; break ; } insertMaskedMerge ( TII , DL , LoopMBB , ScratchReg , DestReg , ScratchReg , MaskReg , ScratchReg ) ; BuildMI ( LoopMBB , DL , TII -> get ( getSCForRMW32 ( Ordering ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( ScratchReg ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopMBB ) ;" LLVM,RISCV,1212,"Predict the next statement of this code snippet: LoopMBB -> addSuccessor ( LoopMBB ) ; LoopMBB -> addSuccessor ( DoneMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopMBB ) ;" LLVM,RISCV,1213,"Predict the next statement of this code snippet: BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( DestReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW ( Ordering , Width ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( NewValReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopHeadMBB ) ; } else { Register MaskReg = MI . getOperand ( ) . getReg ( ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW ( Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ;" LLVM,RISCV,1214,"Predict the next statement of this code snippet: bool IsSigned = BinOp == AtomicRMWInst :: Min || BinOp == AtomicRMWInst :: Max ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsSigned ? : ) . getImm ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch2Reg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch1Reg ) . addReg ( DestReg ) . addImm ( ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Max : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( Scratch2Reg ) . addReg ( IncrReg ) . addMBB ( LoopTailMBB ) ; break ; } case AtomicRMWInst :: Min : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( IncrReg ) . addReg ( Scratch2Reg ) . addMBB ( LoopTailMBB ) ; break ; } case AtomicRMWInst :: UMax :" LLVM,RISCV,1215,"Predict the next statement of this code snippet: Register Scratch1Reg = MI . getOperand ( ) . getReg ( ) ; Register Scratch2Reg = MI . getOperand ( ) . getReg ( ) ; Register AddrReg = MI . getOperand ( ) . getReg ( ) ; Register IncrReg = MI . getOperand ( ) . getReg ( ) ; Register MaskReg = MI . getOperand ( ) . getReg ( ) ; bool IsSigned = BinOp == AtomicRMWInst :: Min || BinOp == AtomicRMWInst :: Max ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsSigned ? : ) . getImm ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch2Reg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch1Reg ) . addReg ( DestReg ) . addImm ( ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Max : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( Scratch2Reg ) . addReg ( IncrReg ) . addMBB ( LoopTailMBB ) ; break ; } case AtomicRMWInst :: Min : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( IncrReg ) . addReg ( Scratch2Reg ) . addMBB ( LoopTailMBB ) ;" LLVM,RISCV,1216,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator MBBI = MBB . begin ( ) , E = MBB . end ( ) ; while ( MBBI != E ) { MachineBasicBlock :: iterator NMBBI = std :: next ( MBBI ) ; Modified |= expandMI ( MBB , MBBI , NMBBI ) ; MBBI = NMBBI ;" LLVM,RISCV,1217,"Predict the next statement of this code snippet: case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Add , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Sub , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Max , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Min , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMax , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMin , true , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , false , , NextMBBI ) ; case :" LLVM,RISCV,1218,"Predict the next statement of this code snippet: return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Sub , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Max , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Min , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMax , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMin , true , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , false , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , false , , NextMBBI ) ; case :" LLVM,RISCV,1219,"Predict the next statement of this code snippet: if ( Width == ) return getLRForRMW32 ( Ordering ) ; if ( Width == ) return getLRForRMW64 ( Ordering ) ;" LLVM,RISCV,1220,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return ; case AtomicOrdering :: Acquire : return ; case AtomicOrdering :: Release : return ; case AtomicOrdering :: AcquireRelease : return ; case AtomicOrdering :: SequentiallyConsistent :" LLVM,RISCV,1221,"Predict the next statement of this code snippet: return ; case AtomicOrdering :: Release : return ; case AtomicOrdering :: AcquireRelease : return ; case AtomicOrdering :: SequentiallyConsistent : return ;" LLVM,RISCV,1222,"Predict the next statement of this code snippet: switch ( Ordering ) { default : llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return ; case AtomicOrdering :: Acquire : return ; case AtomicOrdering :: Release : return ; case AtomicOrdering :: AcquireRelease : return ;" LLVM,RISCV,1223,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,RISCV,1224,"Predict the next statement of this code snippet: static unsigned getSCForRMW ( AtomicOrdering Ordering , int Width ) {" LLVM,RISCV,1225,"Predict the next statement of this code snippet: switch ( Ordering ) { default : llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return ; case AtomicOrdering :: Acquire : return ; case AtomicOrdering :: Release : return ; case AtomicOrdering :: AcquireRelease : return ; case AtomicOrdering :: SequentiallyConsistent :" LLVM,RISCV,1226,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return ; case AtomicOrdering :: Acquire : return ; case AtomicOrdering :: Release : return ;" LLVM,RISCV,1227,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case AtomicOrdering :: Monotonic : return ; case AtomicOrdering :: Acquire : return ; case AtomicOrdering :: Release :" LLVM,RISCV,1228,"Predict the next statement of this code snippet: assert ( ScratchReg != MaskReg && ) ; BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( OldValReg ) . addReg ( NewValReg ) ; BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ScratchReg ) . addReg ( MaskReg ) ; BuildMI ( MBB , DL , TII -> get ( ) , DestReg ) . addReg ( OldValReg ) . addReg ( ScratchReg ) ;" LLVM,RISCV,1229,"Predict the next statement of this code snippet: assert ( OldValReg != MaskReg && ) ; assert ( ScratchReg != MaskReg && ) ; BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( OldValReg ) . addReg ( NewValReg ) ; BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ScratchReg ) . addReg ( MaskReg ) ; BuildMI ( MBB , DL , TII -> get ( ) , DestReg ) . addReg ( OldValReg ) . addReg ( ScratchReg ) ;" LLVM,RISCV,1230,"Predict the next statement of this code snippet: BuildMI ( MBB , DL , TII -> get ( ) , ValReg ) . addReg ( ValReg ) . addReg ( ShamtReg ) ;" LLVM,RISCV,1231,"Predict the next statement of this code snippet: bool ExpandAtomicPseudo :: runOnMachineFunction ( MachineFunction & MF ) { TII = static_cast < const InstrInfo * > ( MF . getSubtarget ( ) . getInstrInfo ( ) ) ; bool Modified = false ;" LLVM,RISCV,1232,"Predict the next statement of this code snippet: FunctionPass * llvm :: createExpandCoreVHwlpPseudoPass ( ) {" LLVM,RISCV,1233,"Predict the next statement of this code snippet: FunctionPass * llvm :: createExpandCoreVHwlpPseudoPass ( ) {" LLVM,RISCV,1234,"Predict the next statement of this code snippet: return COREV_EXPAND_HWLP_PSEUDO_NAME ;" LLVM,RISCV,1235,"Predict the next statement of this code snippet: break ; case : InnerEndSymbol = MI -> getOperand ( ) . getMCSymbol ( ) ; break ; default : break ; } if ( InnerEndSymbol && InnerEndSymbol == MI -> getPreInstrSymbol ( ) ) { InnerHwlpEndOffset = Offset ; } unsigned Size = TII -> getInstSizeInBytes ( * MI ) ; if ( Size == ) { Size = ; } Offset += Size ; MachineInstr * Next = MI -> getNextNode ( ) ; if ( ! Next ) { Next = & MI -> getParent ( ) -> getNextNode ( ) -> front ( ) ; } MI = Next ; } assert ( isUInt < > ( StartOffset ) && ) ; assert ( isUInt < > ( EndOffset ) && ) ; MCSymbol * LastInstrSymbol = LastInstr -> getPreInstrSymbol ( ) ; if ( ! LastInstrSymbol ) { LastInstrSymbol = MF . getContext ( ) . createLinkerPrivateTempSymbol ( ) ; LastInstr -> setPreInstrSymbol ( MF , LastInstrSymbol ) ; } DebugLoc DL = HwlpSetup -> getDebugLoc ( ) ; int64_t LoopNum = Changed ? : ; if ( HwlpSetup -> getOpcode ( ) == ) { Register count = HwlpSetup -> getOperand ( ) . getReg ( ) ; if ( StartOffset == ) { BuildMI ( * Preheader , HwlpSetup , DL , TII -> get ( ) ) . addImm ( LoopNum ) . addReg ( count ) . addSym ( LastInstrSymbol ) ; } else { BuildMI ( * Preheader , HwlpSetup , DL , TII -> get ( ) ) . addImm ( LoopNum ) . addReg ( count ) ; BuildMI ( * Preheader , HwlpSetup , DL , TII -> get ( ) ) . addImm ( LoopNum ) . addMBB ( LoopHeader ) ; BuildMI ( * Preheader , HwlpSetup , DL , TII -> get ( ) ) . addImm ( LoopNum ) . addSym ( LastInstrSymbol ) ; } } else { int64_t count = HwlpSetup -> getOperand ( ) . getImm ( ) ; if ( StartOffset == && EndOffset < ) { BuildMI ( * Preheader , HwlpSetup , DL , TII -> get ( ) ) . addImm ( LoopNum ) . addImm ( count ) . addSym ( LastInstrSymbol ) ;" LLVM,RISCV,1236,"Predict the next statement of this code snippet: ExpandCoreVHwlpPseudo ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,1237,"Predict the next statement of this code snippet: ExpandCoreVHwlpPseudo ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,1238,"Predict the next statement of this code snippet: bool Changed = false ; for ( auto & ML : MLI ) { Changed |= ProcessLoop ( ML , MF ) ; }" LLVM,RISCV,1239,"Predict the next statement of this code snippet: return expandLoadLocalAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadTLSIEAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadTLSGDAddress ( MBB , MBBI , NextMBBI ) ; case : return expandReadCSRs ( MBB , MBBI , ) ;" LLVM,RISCV,1240,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , MBBI -> getDebugLoc ( ) , TII -> get ( ) , MBBI -> getOperand ( ) . getReg ( ) ) . addImm ( Address ) . addReg ( ) ; MBBI -> eraseFromParent ( ) ; return true ;" LLVM,RISCV,1241,"Predict the next statement of this code snippet: MachineInstrBuilder MIB = BuildMI ( MBB , MI , DL , TII -> get ( BaseInstr ) ) ; for ( MachineInstr :: const_mop_iterator Op = MI . operands_begin ( ) ; Op != MI . operands_end ( ) ; Op ++ ) { int Op_num = ( int ) MI . getOperandNo ( Op ) ; if ( Op_num == MergeOpIndex || Op_num == SEWIndex ) continue ; if ( ! Op -> isReg ( ) || Op -> getReg ( ) == ) { MIB . add ( * Op ) ; continue ; } Register Reg = Op -> getReg ( ) ; if ( ( & ) -> contains ( Reg ) || ( & ) -> contains ( Reg ) || ( & ) -> contains ( Reg ) ) { Reg = RegInfo -> getSubReg ( Reg , ) ;" LLVM,RISCV,1242,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandAuipccInstPair ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI , unsigned FlagsHi , unsigned SecondOpcode ) { MachineFunction * MF = MBB . getParent ( ) ; MachineInstr & MI = * MBBI ; DebugLoc DL = MI . getDebugLoc ( ) ; bool HasTmpReg = MI . getNumOperands ( ) > ; Register DestReg = MI . getOperand ( ) . getReg ( ) ; Register TmpReg = MI . getOperand ( HasTmpReg ? : ) . getReg ( ) ; const MachineOperand & Symbol = MI . getOperand ( HasTmpReg ? : ) ; MachineBasicBlock * NewMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; NewMBB -> setLabelMustBeEmitted ( ) ; MF -> insert ( ++ MBB . getIterator ( ) , NewMBB ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , TmpReg ) . addDisp ( Symbol , , FlagsHi ) ; BuildMI ( NewMBB , DL , TII -> get ( SecondOpcode ) , DestReg ) . addReg ( TmpReg ) . addMBB ( NewMBB , ) ; NewMBB -> splice ( NewMBB -> end ( ) , & MBB , std :: next ( MBBI ) , MBB . end ( ) ) ; NewMBB -> transferSuccessorsAndUpdatePHIs ( & MBB ) ;" LLVM,RISCV,1243,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandCapLoadGlobalCap ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) {" LLVM,RISCV,1244,"Predict the next statement of this code snippet: unsigned SecondOpcode = STI . is64Bit ( ) ? : ; return expandAuipccInstPair ( MBB , MBBI , NextMBBI , , SecondOpcode ) ;" LLVM,RISCV,1245,"Predict the next statement of this code snippet: return expandAuipccInstPair ( MBB , MBBI , NextMBBI , , ) ;" LLVM,RISCV,1246,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandCapLoadTLSGDCap ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) {" LLVM,RISCV,1247,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandCapLoadTLSGDCap ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) { return expandAuipccInstPair ( MBB , MBBI , NextMBBI , , ) ;" LLVM,RISCV,1248,"Predict the next statement of this code snippet: unsigned SecondOpcode = STI . is64Bit ( ) ? : ;" LLVM,RISCV,1249,"Predict the next statement of this code snippet: SubRegIdx = ; static_assert ( == + , ) ; } else if ( LMUL == ) { Opcode = ; SubRegIdx = ; static_assert ( == + , ) ; } else assert ( LMUL == && ) ; for ( unsigned I = ; I < NF ; ++ I ) { BuildMI ( MBB , MBBI , DL , TII -> get ( Opcode ) , TRI -> getSubReg ( DestReg , SubRegIdx + I ) ) . addReg ( Base ) . addMemOperand ( * ( MBBI -> memoperands_begin ( ) ) ) ; if ( I != NF - ) BuildMI ( MBB , MBBI , DL , TII -> get ( ) , Base ) . addReg ( Base ) . addReg ( VL ) ;" LLVM,RISCV,1250,"Predict the next statement of this code snippet: } else assert ( LMUL == && ) ; for ( unsigned I = ; I < NF ; ++ I ) { BuildMI ( MBB , MBBI , DL , TII -> get ( Opcode ) ) . addReg ( TRI -> getSubReg ( SrcReg , SubRegIdx + I ) ) . addReg ( Base ) . addMemOperand ( * ( MBBI -> memoperands_begin ( ) ) ) ; if ( I != NF - ) BuildMI ( MBB , MBBI , DL , TII -> get ( ) , Base ) . addReg ( Base ) . addReg ( VL ) ; } MBBI -> eraseFromParent ( ) ;" LLVM,RISCV,1251,"Predict the next statement of this code snippet: static void doAtomicBinOpExpansion ( const InstrInfo * TII , MachineInstr & MI , DebugLoc DL , MachineBasicBlock * ThisMBB , MachineBasicBlock * LoopMBB , MachineBasicBlock * DoneMBB , AtomicRMWInst :: BinOp BinOp , int Width ) { unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; unsigned ScratchReg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned IncrReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ;" LLVM,RISCV,1252,"Predict the next statement of this code snippet: assert ( Width == && ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; unsigned ScratchReg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned IncrReg = MI . getOperand ( ) . getReg ( ) ; unsigned MaskReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ; BuildMI ( LoopMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; switch ( BinOp ) { default :" LLVM,RISCV,1253,"Predict the next statement of this code snippet: switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Add : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Sub : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Nand : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ScratchReg ) . addImm ( - ) ; break ;" LLVM,RISCV,1254,"Predict the next statement of this code snippet: DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopHeadMBB ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; unsigned ScratchReg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned CmpValReg = MI . getOperand ( ) . getReg ( ) ; unsigned NewValReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsMasked ? : ) . getImm ( ) ) ; if ( ! IsMasked ) { BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW ( Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( DestReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW ( Ordering , Width ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( NewValReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopHeadMBB ) ; } else { unsigned MaskReg = MI . getOperand ( ) . getReg ( ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW ( Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; insertMaskedMerge ( TII , DL , LoopTailMBB , ScratchReg , DestReg , NewValReg , MaskReg , ScratchReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW ( Ordering , Width ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( ScratchReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopHeadMBB ) ; } NextMBBI = MBB . end ( ) ; MI . eraseFromParent ( ) ; LivePhysRegs LiveRegs ; computeAndAddLiveIns ( LiveRegs , * LoopHeadMBB ) ;" LLVM,RISCV,1255,"Predict the next statement of this code snippet: LoopIfBodyMBB -> addSuccessor ( LoopTailMBB ) ; LoopTailMBB -> addSuccessor ( LoopHeadMBB ) ; LoopTailMBB -> addSuccessor ( DoneMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopHeadMBB ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; unsigned Scratch1Reg = MI . getOperand ( ) . getReg ( ) ; unsigned Scratch2Reg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned IncrReg = MI . getOperand ( ) . getReg ( ) ; unsigned MaskReg = MI . getOperand ( ) . getReg ( ) ; bool IsSigned = BinOp == AtomicRMWInst :: Min || BinOp == AtomicRMWInst :: Max ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsSigned ? : ) . getImm ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch2Reg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch1Reg ) . addReg ( DestReg ) . addImm ( ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Max : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( Scratch2Reg ) . addReg ( IncrReg ) . addMBB ( LoopTailMBB ) ; break ; } case AtomicRMWInst :: Min : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( IncrReg ) . addReg ( Scratch2Reg ) . addMBB ( LoopTailMBB ) ; break ; } case AtomicRMWInst :: UMax : BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( Scratch2Reg ) . addReg ( IncrReg ) . addMBB ( LoopTailMBB ) ; break ; case AtomicRMWInst :: UMin : BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( IncrReg ) . addReg ( Scratch2Reg ) . addMBB ( LoopTailMBB ) ; break ; }" LLVM,RISCV,1256,"Predict the next statement of this code snippet: DebugLoc DL = MI . getDebugLoc ( ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; const MachineOperand & Symbol = MI . getOperand ( ) ; MachineBasicBlock * NewMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; NewMBB -> setLabelMustBeEmitted ( ) ; MF -> insert ( ++ MBB . getIterator ( ) , NewMBB ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , DestReg ) . addDisp ( Symbol , , ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , DestReg ) . addReg ( DestReg ) . addMBB ( NewMBB , ) ; NewMBB -> splice ( NewMBB -> end ( ) , & MBB , std :: next ( MBBI ) , MBB . end ( ) ) ; NewMBB -> transferSuccessorsAndUpdatePHIs ( & MBB ) ; MBB . addSuccessor ( NewMBB ) ; LivePhysRegs LiveRegs ;" LLVM,RISCV,1257,"Predict the next statement of this code snippet: NewMBB -> setLabelMustBeEmitted ( ) ; MF -> insert ( ++ MBB . getIterator ( ) , NewMBB ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , DestReg ) . addDisp ( Symbol , , ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , DestReg ) . addReg ( DestReg ) . addMBB ( NewMBB , ) ; NewMBB -> splice ( NewMBB -> end ( ) , & MBB , std :: next ( MBBI ) , MBB . end ( ) ) ; NewMBB -> transferSuccessorsAndUpdatePHIs ( & MBB ) ;" LLVM,RISCV,1258,"Predict the next statement of this code snippet: switch ( MBBI -> getOpcode ( ) ) { case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Xchg , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Add , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Sub , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Max , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Min , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMax , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMin , true , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , false , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , false , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , true , , NextMBBI ) ; case : return expandLoadLocalAddress ( MBB , MBBI , NextMBBI ) ; } return false ;" LLVM,RISCV,1259,"Predict the next statement of this code snippet: case : case : case : case : case : case : return expandVMSET_VMCLR ( MBB , MBBI , ) ; case : case : case : case : case : case : case : return expandVMSET_VMCLR ( MBB , MBBI , ) ; case : case : case : case : case : case : case : case : case : case : case : return expandVSPILL ( MBB , MBBI ) ; case : case : case : case : case : case : case : case :" LLVM,RISCV,1260,"Predict the next statement of this code snippet: assert ( ( MBBI -> getOpcode ( ) == || MBBI -> getOpcode ( ) == ) && ) ; unsigned Opcode ; if ( MBBI -> getOpcode ( ) == ) Opcode = ; else Opcode = ; const MCInstrDesc & Desc = TII -> get ( Opcode ) ;" LLVM,RISCV,1261,"Predict the next statement of this code snippet: assert ( Desc . getNumOperands ( ) == && ) ; Register DstReg = MBBI -> getOperand ( ) . getReg ( ) ; bool DstIsDead = MBBI -> getOperand ( ) . isDead ( ) ;" LLVM,RISCV,1262,"Predict the next statement of this code snippet: AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsMasked ? : ) . getImm ( ) ) ; if ( ! IsMasked ) { BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW ( Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( DestReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW ( Ordering , Width ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( NewValReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopHeadMBB ) ; } else { Register MaskReg = MI . getOperand ( ) . getReg ( ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW ( Ordering , Width ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; insertMaskedMerge ( TII , DL , LoopTailMBB , ScratchReg , DestReg , NewValReg , MaskReg , ScratchReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW ( Ordering , Width ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( ScratchReg ) ;" LLVM,RISCV,1263,"Predict the next statement of this code snippet: assert ( Width == && ) ; MachineInstr & MI = * MBBI ; DebugLoc DL = MI . getDebugLoc ( ) ; MachineFunction * MF = MBB . getParent ( ) ; auto LoopHeadMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; auto LoopIfBodyMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; auto LoopTailMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; auto DoneMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; MF -> insert ( ++ MBB . getIterator ( ) , LoopHeadMBB ) ; MF -> insert ( ++ LoopHeadMBB -> getIterator ( ) , LoopIfBodyMBB ) ; MF -> insert ( ++ LoopIfBodyMBB -> getIterator ( ) , LoopTailMBB ) ; MF -> insert ( ++ LoopTailMBB -> getIterator ( ) , DoneMBB ) ; LoopHeadMBB -> addSuccessor ( LoopIfBodyMBB ) ; LoopHeadMBB -> addSuccessor ( LoopTailMBB ) ; LoopIfBodyMBB -> addSuccessor ( LoopTailMBB ) ; LoopTailMBB -> addSuccessor ( LoopHeadMBB ) ; LoopTailMBB -> addSuccessor ( DoneMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopHeadMBB ) ; Register DestReg = MI . getOperand ( ) . getReg ( ) ; Register Scratch1Reg = MI . getOperand ( ) . getReg ( ) ; Register Scratch2Reg = MI . getOperand ( ) . getReg ( ) ; Register AddrReg = MI . getOperand ( ) . getReg ( ) ; Register IncrReg = MI . getOperand ( ) . getReg ( ) ; Register MaskReg = MI . getOperand ( ) . getReg ( ) ; bool IsSigned = BinOp == AtomicRMWInst :: Min || BinOp == AtomicRMWInst :: Max ;" LLVM,RISCV,1264,"Predict the next statement of this code snippet: case : case : case : return expandVSetVL ( MBB , MBBI ) ; case : case : case : case : case : case : case : return expandVMSET_VMCLR ( MBB , MBBI , ) ; case : case : case : case : case : case : case : return expandVMSET_VMCLR ( MBB , MBBI , ) ; case : case : case : case : case : case : case : case : case : case : case : return expandVSPILL ( MBB , MBBI ) ; case : case :" LLVM,RISCV,1265,"Predict the next statement of this code snippet: bool DstIsDead = MBBI -> getOperand ( ) . isDead ( ) ; BuildMI ( MBB , MBBI , DL , Desc ) . addReg ( DstReg , RegState :: Define | getDeadRegState ( DstIsDead ) ) . add ( MBBI -> getOperand ( ) ) . add ( MBBI -> getOperand ( ) ) ; MBBI -> eraseFromParent ( ) ; return true ;" LLVM,RISCV,1266,"Predict the next statement of this code snippet: assert ( ( MBBI -> getOpcode ( ) == || MBBI -> getOpcode ( ) == || MBBI -> getOpcode ( ) == ) && ) ; unsigned Opcode ; if ( MBBI -> getOpcode ( ) == ) Opcode = ; else Opcode = ; const MCInstrDesc & Desc = TII -> get ( Opcode ) ; assert ( Desc . getNumOperands ( ) == && ) ; Register DstReg = MBBI -> getOperand ( ) . getReg ( ) ; bool DstIsDead = MBBI -> getOperand ( ) . isDead ( ) ; BuildMI ( MBB , MBBI , DL , Desc ) . addReg ( DstReg , RegState :: Define | getDeadRegState ( DstIsDead ) ) . add ( MBBI -> getOperand ( ) ) . add ( MBBI -> getOperand ( ) ) ;" LLVM,RISCV,1267,"Predict the next statement of this code snippet: unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; const MachineOperand & Symbol = MI . getOperand ( ) ; MachineBasicBlock * NewMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; NewMBB -> setLabelMustBeEmitted ( ) ; MF -> insert ( ++ MBB . getIterator ( ) , NewMBB ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , DestReg ) . addDisp ( Symbol , , FlagsHi ) ; BuildMI ( NewMBB , DL , TII -> get ( SecondOpcode ) , DestReg ) . addReg ( DestReg ) . addMBB ( NewMBB , ) ; NewMBB -> splice ( NewMBB -> end ( ) , & MBB , std :: next ( MBBI ) , MBB . end ( ) ) ; NewMBB -> transferSuccessorsAndUpdatePHIs ( & MBB ) ; MBB . addSuccessor ( NewMBB ) ; LivePhysRegs LiveRegs ; computeAndAddLiveIns ( LiveRegs , * NewMBB ) ; NextMBBI = MBB . end ( ) ; MI . eraseFromParent ( ) ; return true ;" LLVM,RISCV,1268,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandAuipcInstPair ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI , unsigned FlagsHi , unsigned SecondOpcode ) { MachineFunction * MF = MBB . getParent ( ) ; MachineInstr & MI = * MBBI ; DebugLoc DL = MI . getDebugLoc ( ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; const MachineOperand & Symbol = MI . getOperand ( ) ; MachineBasicBlock * NewMBB = MF -> CreateMachineBasicBlock ( MBB . getBasicBlock ( ) ) ; NewMBB -> setLabelMustBeEmitted ( ) ; MF -> insert ( ++ MBB . getIterator ( ) , NewMBB ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , DestReg ) . addDisp ( Symbol , , FlagsHi ) ; BuildMI ( NewMBB , DL , TII -> get ( SecondOpcode ) , DestReg ) . addReg ( DestReg ) . addMBB ( NewMBB , ) ; NewMBB -> splice ( NewMBB -> end ( ) , & MBB , std :: next ( MBBI ) , MBB . end ( ) ) ; NewMBB -> transferSuccessorsAndUpdatePHIs ( & MBB ) ; MBB . addSuccessor ( NewMBB ) ; LivePhysRegs LiveRegs ; computeAndAddLiveIns ( LiveRegs , * NewMBB ) ;" LLVM,RISCV,1269,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandMI ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) { switch ( MBBI -> getOpcode ( ) ) { case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Xchg , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Add , true , , NextMBBI ) ;" LLVM,RISCV,1270,"Predict the next statement of this code snippet: case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Xchg , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Add , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Sub , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Max , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Min , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMax , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMin , true , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , false , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , false , , NextMBBI ) ; case : return expandAtomicCmpXchg ( MBB , MBBI , true , , NextMBBI ) ; case : return expandLoadLocalAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadAddress ( MBB , MBBI , NextMBBI ) ; }" LLVM,RISCV,1271,"Predict the next statement of this code snippet: SubRegIdx = ; static_assert ( == + , ) ; } else assert ( LMUL == && ) ; for ( unsigned I = ; I < NF ; ++ I ) { BuildMI ( MBB , MBBI , DL , TII -> get ( Opcode ) , TRI -> getSubReg ( DestReg , SubRegIdx + I ) ) . addReg ( Base ) . addMemOperand ( * ( MBBI -> memoperands_begin ( ) ) ) ; if ( I != NF - ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , AddrInc ) . addReg ( Base ) . addReg ( VL ) ; Base = AddrInc ; } } MBBI -> eraseFromParent ( ) ;" LLVM,RISCV,1272,"Predict the next statement of this code snippet: static_assert ( == + , ) ; } else if ( LMUL == ) { Opcode = ; SubRegIdx = ; static_assert ( == + , ) ; } else assert ( LMUL == && ) ; for ( unsigned I = ; I < NF ; ++ I ) { BuildMI ( MBB , MBBI , DL , TII -> get ( Opcode ) ) . addReg ( TRI -> getSubReg ( SrcReg , SubRegIdx + I ) ) . addReg ( Base ) . addMemOperand ( * ( MBBI -> memoperands_begin ( ) ) ) ; if ( I != NF - ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , AddrInc ) . addReg ( Base ) . addReg ( VL ) ; Base = AddrInc ; } } MBBI -> eraseFromParent ( ) ;" LLVM,RISCV,1273,"Predict the next statement of this code snippet: static_assert ( == + , ) ; if ( LMUL == ) { Opcode = ; SubRegIdx = ; static_assert ( == + , ) ; } else if ( LMUL == ) { Opcode = ; SubRegIdx = ; static_assert ( == + , ) ; } else assert ( LMUL == && ) ; for ( unsigned I = ; I < NF ; ++ I ) { BuildMI ( MBB , MBBI , DL , TII -> get ( Opcode ) ) . addReg ( TRI -> getSubReg ( SrcReg , SubRegIdx + I ) ) . addReg ( Base ) . addMemOperand ( * ( MBBI -> memoperands_begin ( ) ) ) ; if ( I != NF - ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , AddrInc ) . addReg ( Base ) . addReg ( VL ) ; Base = AddrInc ; } } MBBI -> eraseFromParent ( ) ; return true ;" LLVM,RISCV,1274,"Predict the next statement of this code snippet: static void doAtomicBinOpExpansion ( const InstrInfo * TII , MachineInstr & MI , DebugLoc DL , MachineBasicBlock * ThisMBB , MachineBasicBlock * LoopMBB , MachineBasicBlock * DoneMBB , AtomicRMWInst :: BinOp BinOp , int Width ) { assert ( Width == && ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; unsigned ScratchReg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned IncrReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ; BuildMI ( LoopMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ;" LLVM,RISCV,1275,"Predict the next statement of this code snippet: static void doMaskedAtomicBinOpExpansion ( const InstrInfo * TII , MachineInstr & MI , DebugLoc DL , MachineBasicBlock * ThisMBB , MachineBasicBlock * LoopMBB , MachineBasicBlock * DoneMBB , AtomicRMWInst :: BinOp BinOp , int Width ) { assert ( Width == && ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; unsigned ScratchReg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned IncrReg = MI . getOperand ( ) . getReg ( ) ; unsigned MaskReg = MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,1276,"Predict the next statement of this code snippet: MF -> insert ( ++ MBB . getIterator ( ) , LoopMBB ) ; MF -> insert ( ++ LoopMBB -> getIterator ( ) , DoneMBB ) ; LoopMBB -> addSuccessor ( LoopMBB ) ; LoopMBB -> addSuccessor ( DoneMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopMBB ) ;" LLVM,RISCV,1277,"Predict the next statement of this code snippet: BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( DestReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW32 ( Ordering ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( NewValReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopHeadMBB ) ; } else { unsigned MaskReg = MI . getOperand ( ) . getReg ( ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; insertMaskedMerge ( TII , DL , LoopTailMBB , ScratchReg , DestReg , NewValReg , MaskReg , ScratchReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW32 ( Ordering ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( ScratchReg ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( ) ) . addReg ( ScratchReg ) . addReg ( ) . addMBB ( LoopHeadMBB ) ; } NextMBBI = MBB . end ( ) ; MI . eraseFromParent ( ) ; LivePhysRegs LiveRegs ; computeAndAddLiveIns ( LiveRegs , * LoopHeadMBB ) ;" LLVM,RISCV,1278,"Predict the next statement of this code snippet: LoopTailMBB -> addSuccessor ( DoneMBB ) ; LoopTailMBB -> addSuccessor ( LoopHeadMBB ) ; DoneMBB -> splice ( DoneMBB -> end ( ) , & MBB , MI , MBB . end ( ) ) ; DoneMBB -> transferSuccessors ( & MBB ) ; MBB . addSuccessor ( LoopHeadMBB ) ; unsigned DestReg = MI . getOperand ( ) . getReg ( ) ; unsigned ScratchReg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned CmpValReg = MI . getOperand ( ) . getReg ( ) ; unsigned NewValReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsMasked ? : ) . getImm ( ) ) ; if ( ! IsMasked ) { BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( DestReg ) . addReg ( CmpValReg ) . addMBB ( DoneMBB ) ; BuildMI ( LoopTailMBB , DL , TII -> get ( getSCForRMW32 ( Ordering ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( NewValReg ) ;" LLVM,RISCV,1279,"Predict the next statement of this code snippet: unsigned Scratch2Reg = MI . getOperand ( ) . getReg ( ) ; unsigned AddrReg = MI . getOperand ( ) . getReg ( ) ; unsigned IncrReg = MI . getOperand ( ) . getReg ( ) ; unsigned MaskReg = MI . getOperand ( ) . getReg ( ) ; bool IsSigned = BinOp == AtomicRMWInst :: Min || BinOp == AtomicRMWInst :: Max ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( IsSigned ? : ) . getImm ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch2Reg ) . addReg ( DestReg ) . addReg ( MaskReg ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) , Scratch1Reg ) . addReg ( DestReg ) . addImm ( ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Max : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( Scratch2Reg ) . addReg ( IncrReg ) . addMBB ( LoopTailMBB ) ; break ; } case AtomicRMWInst :: Min : { insertSext ( TII , DL , LoopHeadMBB , Scratch2Reg , MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( IncrReg ) . addReg ( Scratch2Reg ) . addMBB ( LoopTailMBB ) ; break ; } case AtomicRMWInst :: UMax : BuildMI ( LoopHeadMBB , DL , TII -> get ( ) ) . addReg ( Scratch2Reg ) . addReg ( IncrReg ) . addMBB ( LoopTailMBB ) ;" LLVM,RISCV,1280,"Predict the next statement of this code snippet: BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( OldValReg ) . addReg ( NewValReg ) ; BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ScratchReg ) . addReg ( MaskReg ) ; BuildMI ( MBB , DL , TII -> get ( ) , DestReg ) . addReg ( OldValReg ) . addReg ( ScratchReg ) ;" LLVM,RISCV,1281,"Predict the next statement of this code snippet: assert ( OldValReg != MaskReg && ) ; assert ( ScratchReg != MaskReg && ) ; BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( OldValReg ) . addReg ( NewValReg ) ; BuildMI ( MBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ScratchReg ) . addReg ( MaskReg ) ;" LLVM,RISCV,1282,"Predict the next statement of this code snippet: static void insertSext ( const InstrInfo * TII , DebugLoc DL , MachineBasicBlock * MBB , unsigned ValReg , unsigned ShamtReg ) {" LLVM,RISCV,1283,"Predict the next statement of this code snippet: BuildMI ( MBB , DL , TII -> get ( ) , ValReg ) . addReg ( ValReg ) . addReg ( ShamtReg ) ;" LLVM,RISCV,1284,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandMI ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) { switch ( MBBI -> getOpcode ( ) ) { case : return expandLoadLocalAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadAddress ( MBB , MBBI , NextMBBI ) ;" LLVM,RISCV,1285,"Predict the next statement of this code snippet: assert ( Width == && ) ; Register DestReg = MI . getOperand ( ) . getReg ( ) ; Register ScratchReg = MI . getOperand ( ) . getReg ( ) ; Register AddrReg = MI . getOperand ( ) . getReg ( ) ; Register IncrReg = MI . getOperand ( ) . getReg ( ) ; Register MaskReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ; BuildMI ( LoopMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Add : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ;" LLVM,RISCV,1286,"Predict the next statement of this code snippet: static void doMaskedAtomicBinOpExpansion ( const InstrInfo * TII , MachineInstr & MI , DebugLoc DL , MachineBasicBlock * ThisMBB , MachineBasicBlock * LoopMBB , MachineBasicBlock * DoneMBB , AtomicRMWInst :: BinOp BinOp , int Width ) { assert ( Width == && ) ; Register DestReg = MI . getOperand ( ) . getReg ( ) ; Register ScratchReg = MI . getOperand ( ) . getReg ( ) ; Register AddrReg = MI . getOperand ( ) . getReg ( ) ; Register IncrReg = MI . getOperand ( ) . getReg ( ) ; Register MaskReg = MI . getOperand ( ) . getReg ( ) ; AtomicOrdering Ordering = static_cast < AtomicOrdering > ( MI . getOperand ( ) . getImm ( ) ) ; BuildMI ( LoopMBB , DL , TII -> get ( getLRForRMW32 ( Ordering ) ) , DestReg ) . addReg ( AddrReg ) ; switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Add : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Sub : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; break ; case AtomicRMWInst :: Nand : BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( DestReg ) . addReg ( IncrReg ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) , ScratchReg ) . addReg ( ScratchReg ) . addImm ( - ) ; break ; } insertMaskedMerge ( TII , DL , LoopMBB , ScratchReg , DestReg , ScratchReg , MaskReg , ScratchReg ) ; BuildMI ( LoopMBB , DL , TII -> get ( getSCForRMW32 ( Ordering ) ) , ScratchReg ) . addReg ( AddrReg ) . addReg ( ScratchReg ) ;" LLVM,RISCV,1287,"Predict the next statement of this code snippet: case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Xchg , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Add , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Sub , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Max , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: Min , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMax , true , , NextMBBI ) ; case : return expandAtomicMinMaxOp ( MBB , MBBI , AtomicRMWInst :: UMin , true , , NextMBBI ) ;" LLVM,RISCV,1288,"Predict the next statement of this code snippet: return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Xchg , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Add , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Sub , true , , NextMBBI ) ;" LLVM,RISCV,1289,"Predict the next statement of this code snippet: switch ( MBBI -> getOpcode ( ) ) { case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , false , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Xchg , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Add , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Sub , true , , NextMBBI ) ; case : return expandAtomicBinOp ( MBB , MBBI , AtomicRMWInst :: Nand , true , , NextMBBI ) ; case :" LLVM,RISCV,1290,"Predict the next statement of this code snippet: switch ( MBBI -> getOpcode ( ) ) { case : return expandLoadLocalAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadTLSIEAddress ( MBB , MBBI , NextMBBI ) ; case : return expandLoadTLSGDAddress ( MBB , MBBI , NextMBBI ) ; case : return expandVSetVL ( MBB , MBBI ) ; } return false ;" LLVM,RISCV,1291,"Predict the next statement of this code snippet: FunctionPass * createExpandPseudoPass ( ) { return new ExpandPseudo ( ) ;" LLVM,RISCV,1292,"Predict the next statement of this code snippet: FunctionPass * createExpandPseudoPass ( ) {" LLVM,RISCV,1293,"Predict the next statement of this code snippet: NewMBB -> setLabelMustBeEmitted ( ) ; MF -> insert ( ++ MBB . getIterator ( ) , NewMBB ) ; BuildMI ( NewMBB , DL , TII -> get ( ) , DestReg ) . addDisp ( Symbol , , FlagsHi ) ; BuildMI ( NewMBB , DL , TII -> get ( SecondOpcode ) , DestReg ) . addReg ( DestReg ) . addMBB ( NewMBB , ) ; NewMBB -> splice ( NewMBB -> end ( ) , & MBB , std :: next ( MBBI ) , MBB . end ( ) ) ; NewMBB -> transferSuccessorsAndUpdatePHIs ( & MBB ) ;" LLVM,RISCV,1294,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; unsigned SecondOpcode ; unsigned FlagsHi ; if ( MF -> getTarget ( ) . isPositionIndependent ( ) ) { const auto & STI = MF -> getSubtarget < Subtarget > ( ) ; SecondOpcode = STI . is64Bit ( ) ? : ; FlagsHi = ;" LLVM,RISCV,1295,"Predict the next statement of this code snippet: const auto & STI = MF -> getSubtarget < Subtarget > ( ) ; SecondOpcode = STI . is64Bit ( ) ? : ; FlagsHi = ; } else { SecondOpcode = ; FlagsHi = ; }" LLVM,RISCV,1296,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandLoadLocalAddress ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) { return expandAuipcInstPair ( MBB , MBBI , NextMBBI , , ) ;" LLVM,RISCV,1297,"Predict the next statement of this code snippet: return expandAuipcInstPair ( MBB , MBBI , NextMBBI , , ) ;" LLVM,RISCV,1298,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandLoadTLSGDAddress ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) {" LLVM,RISCV,1299,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandLoadTLSGDAddress ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , MachineBasicBlock :: iterator & NextMBBI ) {" LLVM,RISCV,1300,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandMBB ( MachineBasicBlock & MBB ) { bool Modified = false ; MachineBasicBlock :: iterator MBBI = MBB . begin ( ) , E = MBB . end ( ) ; while ( MBBI != E ) { MachineBasicBlock :: iterator NMBBI = std :: next ( MBBI ) ; Modified |= expandMI ( MBB , MBBI , NMBBI ) ; MBBI = NMBBI ; }" LLVM,RISCV,1301,"Predict the next statement of this code snippet: const MCInstrDesc & Desc = TII -> get ( Opcode ) ; BuildMI ( MBB , MBBI , DL , Desc , DstReg ) . addReg ( DstReg , RegState :: Undef ) . addReg ( DstReg , RegState :: Undef ) ; MBBI -> eraseFromParent ( ) ; return true ;" LLVM,RISCV,1302,"Predict the next statement of this code snippet: const MCInstrDesc & Desc = TII -> get ( Opcode ) ; BuildMI ( MBB , MBBI , DL , Desc , DstReg ) . addReg ( DstReg , RegState :: Undef ) . addReg ( DstReg , RegState :: Undef ) ; MBBI -> eraseFromParent ( ) ; return true ;" LLVM,RISCV,1303,"Predict the next statement of this code snippet: bool ExpandPseudo :: expandVSetVL ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI ) { assert ( MBBI -> getNumOperands ( ) == && ) ; DebugLoc DL = MBBI -> getDebugLoc ( ) ; assert ( MBBI -> getOpcode ( ) == && ) ;" LLVM,RISCV,1304,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , Desc ) . addReg ( DstReg , RegState :: Define | getDeadRegState ( DstIsDead ) ) . add ( MBBI -> getOperand ( ) ) . add ( MBBI -> getOperand ( ) ) ;" LLVM,RISCV,1305,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return _EXPAND_PSEUDO_NAME ;" LLVM,RISCV,1306,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,RISCV,1307,"Predict the next statement of this code snippet: ExpandPseudo ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,1308,"Predict the next statement of this code snippet: for ( auto & MBB : MF ) Modified |= expandMBB ( MBB ) ; return Modified ;" LLVM,RISCV,1309,"Predict the next statement of this code snippet: const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; unsigned FP = STI . isRV64 ( ) ? : ; if ( hasFP ( MF ) ) SavedRegs . set ( FP ) ; if ( FI -> getCallsEhReturn ( ) ) FI -> createEhDataRegsFI ( ) ;" LLVM,RISCV,1310,"Predict the next statement of this code snippet: unsigned FrameLowering :: ehDataReg ( unsigned I ) const {" LLVM,RISCV,1311,"Predict the next statement of this code snippet: void FrameLowering :: eliminateCallFramePseudoInstr ( MachineFunction & MF , MachineBasicBlock & MBB , MachineBasicBlock :: iterator I ) const { const InstrInfo & TII = * static_cast < const InstrInfo * > ( MF . getSubtarget ( ) . getInstrInfo ( ) ) ; const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; if ( ! hasReservedCallFrame ( MF ) ) { int64_t Amount = I -> getOperand ( ) . getImm ( ) ; if ( I -> getOpcode ( ) == ) Amount = - Amount ; unsigned SP = STI . isRV64 ( ) ? : ; TII . adjustStackPtr ( SP , Amount , MBB , I ) ;" LLVM,RISCV,1312,"Predict the next statement of this code snippet: MachineFrameInfo * MFI = MF . getFrameInfo ( ) ; FunctionInfo * FI = MF . getInfo < FunctionInfo > ( ) ; const RegisterInfo * RegInfo = static_cast < const RegisterInfo * > ( MF . getSubtarget ( ) . getRegisterInfo ( ) ) ; const InstrInfo & TII = * static_cast < const InstrInfo * > ( MF . getSubtarget ( ) . getInstrInfo ( ) ) ; DebugLoc dl = MBBI -> getDebugLoc ( ) ; const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; unsigned SP = STI . isRV64 ( ) ? : ; unsigned FP = STI . isRV64 ( ) ? : ; unsigned ZERO = STI . isRV64 ( ) ? : ; unsigned ADDu = STI . isRV64 ( ) ? : ; if ( hasFP ( MF ) ) { MachineBasicBlock :: iterator I = MBBI ; for ( unsigned i = ; i < MFI -> getCalleeSavedInfo ( ) . size ( ) ; ++ i ) -- I ; BuildMI ( MBB , I , dl , TII . get ( ADDu ) , SP ) . addReg ( FP ) . addReg ( ZERO ) ;" LLVM,RISCV,1313,"Predict the next statement of this code snippet: unsigned ZERO = STI . isRV64 ( ) ? : ; unsigned ADDu = STI . isRV64 ( ) ? : ; uint64_t StackSize = MFI -> getStackSize ( ) ; if ( StackSize == && ! MFI -> adjustsStack ( ) ) return ; MachineModuleInfo & MMI = MF . getMMI ( ) ; const MCRegisterInfo * MRI = MMI . getContext ( ) . getRegisterInfo ( ) ; MachineLocation DstML , SrcML ; TII . adjustStackPtr ( SP , - StackSize , MBB , MBBI ) ; unsigned CFIIndex = MMI . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - StackSize ) ) ; BuildMI ( MBB , MBBI , dl , TII . get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI -> getCalleeSavedInfo ( ) ; if ( CSI . size ( ) ) { for ( unsigned i = ; i < CSI . size ( ) ; ++ i ) ++ MBBI ; for ( const auto & I : CSI ) { int64_t Offset = MFI -> getObjectOffset ( I . getFrameIdx ( ) ) ; unsigned Reg = I . getReg ( ) ; unsigned CFIIndex = MMI . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , MRI -> getDwarfRegNum ( Reg , ) , Offset ) ) ; BuildMI ( MBB , MBBI , dl , TII . get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } } if ( FI -> getCallsEhReturn ( ) ) { const TargetRegisterClass * RC = & ;" LLVM,RISCV,1314,"Predict the next statement of this code snippet: return MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || MFI -> hasVarSizedObjects ( ) || MFI -> isFrameAddressTaken ( ) ;" LLVM,RISCV,1315,"Predict the next statement of this code snippet: bool FrameLowering :: hasReservedCallFrame ( const MachineFunction & MF ) const { const MachineFrameInfo * MFI = MF . getFrameInfo ( ) ; return isInt < > ( MFI -> getMaxCallFrameSize ( ) + getStackAlignment ( ) ) && ! MFI -> hasVarSizedObjects ( ) ;" LLVM,RISCV,1316,"Predict the next statement of this code snippet: return isInt < > ( MFI -> getMaxCallFrameSize ( ) + getStackAlignment ( ) ) && ! MFI -> hasVarSizedObjects ( ) ;" LLVM,RISCV,1317,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsDown , , ) {" LLVM,RISCV,1318,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsDown , , ) {" LLVM,RISCV,1319,"Predict the next statement of this code snippet: int64_t MaxPosAdjStep = - getStackAlign ( ) . value ( ) ; if ( Val > - && Val <= ( * MaxPosAdjStep ) ) { int64_t FirstAdj = Val < ? - : MaxPosAdjStep ; Val -= FirstAdj ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , DestReg ) . addReg ( SrcReg ) . addImm ( FirstAdj ) . setMIFlag ( Flag ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , DestReg ) . addReg ( DestReg , RegState :: Kill ) . addImm ( Val ) . setMIFlag ( Flag ) ; return ; } unsigned Opc = ; if ( Val < ) { Val = - Val ; Opc = ; } Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , MBBI , DL , ScratchReg , Val , Flag ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( Opc ) , DestReg ) . addReg ( SrcReg ) . addReg ( ScratchReg , RegState :: Kill ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1320,"Predict the next statement of this code snippet: return ; } assert ( getStackAlign ( ) . value ( ) < && ) ; int64_t MaxPosAdjStep = - getStackAlign ( ) . value ( ) ; if ( Val > - && Val <= ( * MaxPosAdjStep ) ) { int64_t FirstAdj = Val < ? - : MaxPosAdjStep ; Val -= FirstAdj ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , DestReg ) . addReg ( SrcReg ) . addImm ( FirstAdj ) . setMIFlag ( Flag ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , DestReg ) . addReg ( DestReg , RegState :: Kill ) . addImm ( Val ) . setMIFlag ( Flag ) ; return ; } unsigned Opc = ; if ( Val < ) { Val = - Val ; Opc = ; } Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , MBBI , DL , ScratchReg , Val , Flag ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( Opc ) , DestReg ) . addReg ( SrcReg ) . addReg ( ScratchReg , RegState :: Kill ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1321,"Predict the next statement of this code snippet: Register FactorRegister = TII -> getVLENFactoredAmount ( MF , MBB , MBBI , DL , Amount , Flag ) ;" LLVM,RISCV,1322,"Predict the next statement of this code snippet: unsigned Opc = ; if ( Amount < ) { Amount = - Amount ; Opc = ; } Register FactorRegister = TII -> getVLENFactoredAmount ( MF , MBB , MBBI , DL , Amount , Flag ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( Opc ) , SPReg ) . addReg ( SPReg ) . addReg ( FactorRegister , RegState :: Kill ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1323,"Predict the next statement of this code snippet: unsigned StackID = MFI . getStackID ( I ) ; if ( StackID != TargetStackID :: ScalableVector ) continue ; if ( MFI . isDeadObjectIndex ( I ) ) continue ; ObjectsToAllocate . push_back ( I ) ; } int64_t Offset = ; Align RVVStackAlign ( ) ; for ( int FI : ObjectsToAllocate ) { int64_t ObjectSize = MFI . getObjectSize ( FI ) ; auto ObjectAlign = std :: max ( Align ( ) , MFI . getObjectAlign ( FI ) ) ; if ( ObjectSize < ) ObjectSize = ; Offset = alignTo ( Offset + ObjectSize , ObjectAlign ) ; MFI . setObjectOffset ( FI , - Offset ) ; RVVStackAlign = std :: max ( RVVStackAlign , ObjectAlign ) ; } uint64_t StackSize = Offset ;" LLVM,RISCV,1324,"Predict the next statement of this code snippet: bool FrameLowering :: canUseAsEpilogue ( const MachineBasicBlock & MBB ) const { const MachineFunction * MF = MBB . getParent ( ) ; MachineBasicBlock * TmpMBB = const_cast < MachineBasicBlock * > ( & MBB ) ; const auto * RVFI = MF -> getInfo < MachineFunctionInfo > ( ) ; if ( ! RVFI -> useSaveRestoreLibCalls ( * MF ) ) return true ;" LLVM,RISCV,1325,"Predict the next statement of this code snippet: SavedRegs . set ( ) ; } if ( hasBP ( MF ) ) SavedRegs . set ( ( ) ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; if ( MF . getFunction ( ) . hasFnAttribute ( ) && MFI . hasCalls ( ) ) { static const MCPhysReg CSRegs [ ] = { , , , , , , , , , , , , , , , , } ; for ( unsigned i = ; CSRegs [ i ] ; ++ i ) SavedRegs . set ( CSRegs [ i ] ) ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) { const MCPhysReg * Regs = MF . getRegInfo ( ) . getCalleeSavedRegs ( ) ; for ( unsigned i = ; Regs [ i ] ; ++ i ) if ( . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) ) SavedRegs . set ( Regs [ i ] ) ; }" LLVM,RISCV,1326,"Predict the next statement of this code snippet: if ( hasBP ( MF ) ) SavedRegs . set ( ( ) ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; if ( MF . getFunction ( ) . hasFnAttribute ( ) && MFI . hasCalls ( ) ) { static const MCPhysReg CSRegs [ ] = { , , , , , , , , , , , , , , , , } ;" LLVM,RISCV,1327,"Predict the next statement of this code snippet: auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; uint64_t FrameSize = MFI . getStackSize ( ) ; Align StackAlign = getStackAlign ( ) ; FrameSize = alignTo ( FrameSize , StackAlign ) ; MFI . setStackSize ( FrameSize ) ; const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ;" LLVM,RISCV,1328,"Predict the next statement of this code snippet: DebugLoc DL = MI -> getDebugLoc ( ) ; if ( ! hasReservedCallFrame ( MF ) ) { int64_t Amount = MI -> getOperand ( ) . getImm ( ) ; if ( Amount != ) { Amount = alignSPAdjust ( Amount ) ; if ( MI -> getOpcode ( ) == ) Amount = - Amount ;" LLVM,RISCV,1329,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; if ( MF . getFunction ( ) . getCallingConv ( ) == CallingConv :: GHC ) return ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getLastNonDebugInstr ( ) ; if ( MBBI != MBB . end ( ) ) DL = MBBI -> getDebugLoc ( ) ; MBBI = MBB . getFirstTerminator ( ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MF , MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = getStackSizeWithRVVPadding ( MF ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; uint64_t RVVStackSize = RVFI -> getRVVStackSize ( ) ; if ( RI -> hasStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } else { if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , LastFrameDestroy , DL , RVVStackSize , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = getStackSizeWithRVVPadding ( MF ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , SPReg , SecondSPAdjustAmount , MachineInstr :: FrameDestroy ) ;" LLVM,RISCV,1330,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getLastNonDebugInstr ( ) ; if ( MBBI != MBB . end ( ) ) DL = MBBI -> getDebugLoc ( ) ; MBBI = MBB . getFirstTerminator ( ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MF , MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = getStackSizeWithRVVPadding ( MF ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; uint64_t RVVStackSize = RVFI -> getRVVStackSize ( ) ; if ( RI -> hasStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } else { if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , LastFrameDestroy , DL , RVVStackSize , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = getStackSizeWithRVVPadding ( MF ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , SPReg , SecondSPAdjustAmount , MachineInstr :: FrameDestroy ) ;" LLVM,RISCV,1331,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlag ( MachineInstr :: FrameSetup ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; adjustReg ( MBB , MBBI , DL , FPReg , SPReg , RealStackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , RVFI -> getVarArgsSaveSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlag ( MachineInstr :: FrameSetup ) ; } if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = getStackSizeWithRVVPadding ( MF ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfaOffset ( nullptr , getStackSizeWithRVVPadding ( MF ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlag ( MachineInstr :: FrameSetup ) ; } } if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , MBBI , DL , - RVVStackSize , MachineInstr :: FrameSetup ) ; if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> hasStackRealignment ( MF ) ) { Align MaxAlignment = MFI . getMaxAlign ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; if ( isInt < > ( - ( int ) MaxAlignment . value ( ) ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( SPReg ) . addImm ( - ( int ) MaxAlignment . value ( ) ) . setMIFlag ( MachineInstr :: FrameSetup ) ; } else {" LLVM,RISCV,1332,"Predict the next statement of this code snippet: const auto & STI = MF . getSubtarget < Subtarget > ( ) ; Register RAReg = STI . getRegisterInfo ( ) -> getRARegister ( ) ; std :: vector < CalleeSavedInfo > & CSI = MF . getFrameInfo ( ) . getCalleeSavedInfo ( ) ; if ( std :: none_of ( CSI . begin ( ) , CSI . end ( ) , [ & ] ( CalleeSavedInfo & CSR ) { return CSR . getReg ( ) == RAReg ; } ) ) return ; Register SCSPReg = ( ) ; auto & Ctx = MF . getFunction ( ) . getContext ( ) ; if ( ! STI . isRegisterReservedByUser ( SCSPReg ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ; } const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( RVFI -> useSaveRestoreLibCalls ( MF ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ;" LLVM,RISCV,1333,"Predict the next statement of this code snippet: } const InstrInfo * TII = STI . getInstrInfo ( ) ; bool IsRV64 = STI . hasFeature ( ) ; int64_t SlotSize = STI . getXLen ( ) / ; BuildMI ( MBB , MI , DL , TII -> get ( IsRV64 ? : ) ) . addReg ( RAReg ) . addReg ( SCSPReg ) . addImm ( ) . setMIFlag ( MachineInstr :: FrameSetup ) ;" LLVM,RISCV,1334,"Predict the next statement of this code snippet: if ( RVFI -> getLibCallStackSize ( ) ) return ; if ( ! isInt < > ( StackSize ) && ( CSI . size ( ) > ) ) {" LLVM,RISCV,1335,"Predict the next statement of this code snippet: const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; uint64_t StackSize = getStackSizeWithRVVPadding ( MF ) ; if ( RVFI -> getLibCallStackSize ( ) ) return ; if ( ! isInt < > ( StackSize ) && ( CSI . size ( ) > ) ) {" LLVM,RISCV,1336,"Predict the next statement of this code snippet: static Register getFPReg ( const Subtarget & STI ) {" LLVM,RISCV,1337,"Predict the next statement of this code snippet: if ( CSI . size ( ) ) { MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } if ( FI >= MinCSFI && FI <= MaxCSFI ) { FrameReg = ; if ( FirstSPAdjustAmount ) Offset += StackOffset :: getFixed ( FirstSPAdjustAmount ) ; else Offset += StackOffset :: getFixed ( getStackSizeWithRVVPadding ( MF ) ) ; return Offset ; } if ( RI -> hasStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) { FrameReg = ( ) ; } else { assert ( ! MFI . hasVarSizedObjects ( ) ) ; FrameReg = ; } } else { FrameReg = RI -> getFrameRegister ( MF ) ; } if ( FrameReg == getFPReg ( STI ) ) { Offset += StackOffset :: getFixed ( RVFI -> getVarArgsSaveSize ( ) ) ; if ( FI >= ) Offset -= StackOffset :: getFixed ( RVFI -> getLibCallStackSize ( ) ) ; if ( MFI . getStackID ( FI ) == TargetStackID :: ScalableVector ) { assert ( ! RI -> hasStackRealignment ( MF ) && ) ; assert ( MFI . getStackSize ( ) == getStackSizeWithRVVPadding ( MF ) && ) ; Offset -= StackOffset :: getFixed ( MFI . getStackSize ( ) ) ; } return Offset ; } assert ( FrameReg == ( ) || ! MFI . hasVarSizedObjects ( ) ) ; if ( MFI . getStackID ( FI ) == TargetStackID :: Default ) { if ( MFI . isFixedObjectIndex ( FI ) ) { assert ( ! RI -> hasStackRealignment ( MF ) && ) ; Offset += StackOffset :: get ( getStackSizeWithRVVPadding ( MF ) + RVFI -> getLibCallStackSize ( ) , RVFI -> getRVVStackSize ( ) ) ; } else { Offset += StackOffset :: getFixed ( MFI . getStackSize ( ) ) ; } } else if ( MFI . getStackID ( FI ) == TargetStackID :: ScalableVector ) { int ScalarLocalVarSize = MFI . getStackSize ( ) - RVFI -> getCalleeSavedStackSize ( ) - RVFI -> getVarArgsSaveSize ( ) + RVFI -> getRVVPadding ( ) ; Offset += StackOffset :: get ( ScalarLocalVarSize , RVFI -> getRVVStackSize ( ) ) ;" LLVM,RISCV,1338,"Predict the next statement of this code snippet: static int getLibCallID ( const MachineFunction & MF , const std :: vector < CalleeSavedInfo > & CSI ) { const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( CSI . empty ( ) || ! RVFI -> useSaveRestoreLibCalls ( MF ) ) return - ; Register MaxReg = ; for ( auto & CS : CSI ) if ( CS . getFrameIdx ( ) < ) MaxReg = std :: max ( MaxReg . id ( ) , CS . getReg ( ) . id ( ) ) ; if ( MaxReg == ) return - ; switch ( MaxReg ) { default : llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,1339,"Predict the next statement of this code snippet: int LibCallID = getLibCallID ( MF , CSI ) ; if ( LibCallID == - ) return nullptr ; return RestoreLibCalls [ LibCallID ] ;" LLVM,RISCV,1340,"Predict the next statement of this code snippet: static const char * getSpillLibCallName ( const MachineFunction & MF , const std :: vector < CalleeSavedInfo > & CSI ) { static const char * const SpillLibCalls [ ] = {" LLVM,RISCV,1341,"Predict the next statement of this code snippet: static Register getSPReg ( const Subtarget & STI ) {" LLVM,RISCV,1342,"Predict the next statement of this code snippet: static Register getSPReg ( const Subtarget & STI ) {" LLVM,RISCV,1343,"Predict the next statement of this code snippet: return TargetStackID :: ScalableVector ;" LLVM,RISCV,1344,"Predict the next statement of this code snippet: TargetStackID :: Value FrameLowering :: getStackIDForScalableVectors ( ) const {" LLVM,RISCV,1345,"Predict the next statement of this code snippet: return alignTo ( MFI . getStackSize ( ) + RVFI -> getRVVPadding ( ) , getStackAlign ( ) ) ;" LLVM,RISCV,1346,"Predict the next statement of this code snippet: const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ; return ( MFI . hasVarSizedObjects ( ) || ( ! hasReservedCallFrame ( MF ) && ( ! MFI . isMaxCallFrameSizeComputed ( ) || MFI . getMaxCallFrameSize ( ) != ) ) ) && TRI -> hasStackRealignment ( MF ) ;" LLVM,RISCV,1347,"Predict the next statement of this code snippet: return ( MFI . hasVarSizedObjects ( ) || ( ! hasReservedCallFrame ( MF ) && ( ! MFI . isMaxCallFrameSizeComputed ( ) || MFI . getMaxCallFrameSize ( ) != ) ) ) && TRI -> hasStackRealignment ( MF ) ;" LLVM,RISCV,1348,"Predict the next statement of this code snippet: return MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || RegInfo -> hasStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) || MFI . isFrameAddressTaken ( ) ;" LLVM,RISCV,1349,"Predict the next statement of this code snippet: const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; return MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || RegInfo -> hasStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) || MFI . isFrameAddressTaken ( ) ;" LLVM,RISCV,1350,"Predict the next statement of this code snippet: bool FrameLowering :: hasReservedCallFrame ( const MachineFunction & MF ) const {" LLVM,RISCV,1351,"Predict the next statement of this code snippet: return ! MF . getFrameInfo ( ) . hasVarSizedObjects ( ) && ! ( hasFP ( MF ) && hasRVVFrameObject ( MF ) ) ;" LLVM,RISCV,1352,"Predict the next statement of this code snippet: return MF . getSubtarget < Subtarget > ( ) . hasVInstructions ( ) ;" LLVM,RISCV,1353,"Predict the next statement of this code snippet: return MF . getSubtarget < Subtarget > ( ) . hasVInstructions ( ) ;" LLVM,RISCV,1354,"Predict the next statement of this code snippet: return any_of ( MF , [ & TII ] ( const MachineBasicBlock & MBB ) { return any_of ( MBB , [ & TII ] ( const MachineInstr & MI ) { return TII . isRVVSpill ( MI , true ) ; } ) ; } ) ;" LLVM,RISCV,1355,"Predict the next statement of this code snippet: return any_of ( MF , [ & TII ] ( const MachineBasicBlock & MBB ) { return any_of ( MBB , [ & TII ] ( const MachineInstr & MI ) { return TII . isRVVSpill ( MI , true ) ; } ) ; } ) ;" LLVM,RISCV,1356,"Predict the next statement of this code snippet: switch ( ID ) { case TargetStackID :: Default : case TargetStackID :: ScalableVector : return true ; case TargetStackID :: NoAlloc :" LLVM,RISCV,1357,"Predict the next statement of this code snippet: if ( RVVStackSize != ) { int RVVRegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RVVRegScavFI ) ; } } if ( MFI . getCalleeSavedInfo ( ) . empty ( ) || RVFI -> useSaveRestoreLibCalls ( MF ) ) { RVFI -> setCalleeSavedStackSize ( ) ; return ; } unsigned Size = ; for ( const auto & Info : MFI . getCalleeSavedInfo ( ) ) {" LLVM,RISCV,1358,"Predict the next statement of this code snippet: if ( CSI . empty ( ) ) return true ; MachineFunction * MF = MBB . getParent ( ) ; const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const auto & NonLibcallCSI = getNonLibcallCSI ( * MF , CSI ) ; for ( auto & CS : NonLibcallCSI ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ; TII . loadRegFromStackSlot ( MBB , MI , Reg , CS . getFrameIdx ( ) , RC , TRI ) ; assert ( MI != MBB . begin ( ) && ) ; } const char * RestoreLibCall = getRestoreLibCallName ( * MF , CSI ) ; if ( RestoreLibCall ) { MachineBasicBlock :: iterator NewMI = BuildMI ( MBB , MI , DL , TII . get ( ) ) . addExternalSymbol ( RestoreLibCall , ) . setMIFlag ( MachineInstr :: FrameDestroy ) ;" LLVM,RISCV,1359,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const char * SpillLibCall = getSpillLibCallName ( * MF , CSI ) ; if ( SpillLibCall ) { BuildMI ( MBB , MI , DL , TII . get ( ) , ) . addExternalSymbol ( SpillLibCall , ) . setMIFlag ( MachineInstr :: FrameSetup ) ; for ( auto & CS : CSI ) MBB . addLiveIn ( CS . getReg ( ) ) ; } const auto & NonLibcallCSI = getNonLibcallCSI ( * MF , CSI ) ; for ( auto & CS : NonLibcallCSI ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ; TII . storeRegToStackSlot ( MBB , MI , Reg , ! MBB . isLiveIn ( Reg ) , CS . getFrameIdx ( ) , RC , TRI ) ; }" LLVM,RISCV,1360,"Predict the next statement of this code snippet: if ( isInt < > ( Val ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , DestReg ) . addReg ( SrcReg ) . addImm ( Val ) . setMIFlag ( Flag ) ; } else if ( isInt < > ( Val ) ) { unsigned Opc = ; bool isSub = Val < ; if ( isSub ) {" LLVM,RISCV,1361,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , TII -> get ( ) , DestReg ) . addReg ( SrcReg ) . addImm ( Val ) . setMIFlag ( Flag ) ; } else if ( isInt < > ( Val ) ) { unsigned Opc = ; bool isSub = Val < ; if ( isSub ) { Val = - Val ; Opc = ; } unsigned ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm32 ( MBB , MBBI , DL , ScratchReg , Val , Flag ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( Opc ) , DestReg ) . addReg ( SrcReg ) . addReg ( ScratchReg , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { report_fatal_error ( ) ; }" LLVM,RISCV,1362,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; if ( MF . getFunction ( ) . hasFnAttribute ( ) && MFI . hasCalls ( ) ) { static const MCPhysReg CSRegs [ ] = { , , , , , , , , , , , , , , , , } ; for ( unsigned i = ; CSRegs [ i ] ; ++ i ) SavedRegs . set ( CSRegs [ i ] ) ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtD ( ) || MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) { const MCPhysReg * Regs = MF . getRegInfo ( ) . getCalleeSavedRegs ( ) ; for ( unsigned i = ; Regs [ i ] ; ++ i ) if ( . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) ) SavedRegs . set ( Regs [ i ] ) ; }" LLVM,RISCV,1363,"Predict the next statement of this code snippet: static const MCPhysReg CSRegs [ ] = { , , , , , , , , , , , , , , , , } ; for ( unsigned i = ; CSRegs [ i ] ; ++ i ) SavedRegs . set ( CSRegs [ i ] ) ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtD ( ) || MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) { const MCPhysReg * Regs = MF . getRegInfo ( ) . getCalleeSavedRegs ( ) ; for ( unsigned i = ; Regs [ i ] ; ++ i ) if ( . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) ) SavedRegs . set ( Regs [ i ] ) ; }" LLVM,RISCV,1364,"Predict the next statement of this code snippet: const RegisterInfo * RI = STI . getRegisterInfo ( ) ; uint64_t FrameSize = MFI . getStackSize ( ) ; uint64_t StackAlign = RI -> needsStackRealignment ( MF ) ? MFI . getMaxAlignment ( ) : getStackAlignment ( ) ; FrameSize = alignTo ( FrameSize , StackAlign ) ; MFI . setStackSize ( FrameSize ) ;" LLVM,RISCV,1365,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const RegisterInfo * RI = STI . getRegisterInfo ( ) ; uint64_t FrameSize = MFI . getStackSize ( ) ; uint64_t StackAlign = RI -> needsStackRealignment ( MF ) ? MFI . getMaxAlignment ( ) : getStackAlignment ( ) ; FrameSize = alignTo ( FrameSize , StackAlign ) ;" LLVM,RISCV,1366,"Predict the next statement of this code snippet: if ( Amount != ) { Amount = alignSPAdjust ( Amount ) ; if ( MI -> getOpcode ( ) == ) Amount = - Amount ; adjustReg ( MBB , MI , DL , SPReg , SPReg , Amount , MachineInstr :: NoFlags ) ; } }" LLVM,RISCV,1367,"Predict the next statement of this code snippet: if ( Amount != ) { Amount = alignSPAdjust ( Amount ) ; if ( MI -> getOpcode ( ) == ) Amount = - Amount ; adjustReg ( MBB , MI , DL , SPReg , SPReg , Amount , MachineInstr :: NoFlags ) ; } } return MBB . erase ( MI ) ;" LLVM,RISCV,1368,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; DebugLoc DL = MBBI -> getDebugLoc ( ) ; unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; auto LastFrameDestroy = std :: prev ( MBBI , MFI . getCalleeSavedInfo ( ) . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ;" LLVM,RISCV,1369,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; MachineBasicBlock :: iterator MBBI = MBB . begin ( ) ; unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; DebugLoc DL ; determineFrameLayout ( MF ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ;" LLVM,RISCV,1370,"Predict the next statement of this code snippet: if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , CSI . size ( ) ) ;" LLVM,RISCV,1371,"Predict the next statement of this code snippet: static unsigned getFPReg ( const Subtarget & STI ) { return ;" LLVM,RISCV,1372,"Predict the next statement of this code snippet: TargetStackID :: Value getStackIDForScalableVectors ( ) const override { return TargetStackID :: Vector ;" LLVM,RISCV,1373,"Predict the next statement of this code snippet: case TargetStackID :: Default : case TargetStackID :: Vector :" LLVM,RISCV,1374,"Predict the next statement of this code snippet: void FrameLowering :: processFunctionBeforeFrameFinalized ( MachineFunction & MF , RegScavenger * RS ) const { const TargetRegisterInfo * RegInfo = MF . getSubtarget ( ) . getRegisterInfo ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const TargetRegisterClass * RC = & ; if ( ! isInt < > ( MFI . estimateStackSize ( MF ) ) ) {" LLVM,RISCV,1375,"Predict the next statement of this code snippet: const TargetRegisterClass * RC = & ; if ( ! isInt < > ( MFI . estimateStackSize ( MF ) ) ) { int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlignment ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ;" LLVM,RISCV,1376,"Predict the next statement of this code snippet: explicit FrameLowering ( const Subtarget & STI ) : TargetFrameLowering ( StackGrowsDown , Align ( ) , ) , STI ( STI ) {" LLVM,RISCV,1377,"Predict the next statement of this code snippet: explicit FrameLowering ( const Subtarget & STI ) : TargetFrameLowering ( StackGrowsDown , Align ( ) , ) , STI ( STI ) {" LLVM,RISCV,1378,"Predict the next statement of this code snippet: for ( int FI : ObjectsToAllocate ) { int64_t ObjectSize = MFI . getObjectSize ( FI ) ; if ( ObjectSize < ) ObjectSize = ; Offset = alignTo ( Offset + ObjectSize , ) ; MFI . setObjectOffset ( FI , - Offset ) ; }" LLVM,RISCV,1379,"Predict the next statement of this code snippet: for ( int FI : ObjectsToAllocate ) { int64_t ObjectSize = MFI . getObjectSize ( FI ) ; if ( ObjectSize < ) ObjectSize = ; Offset = alignTo ( Offset + ObjectSize , ) ; MFI . setObjectOffset ( FI , - Offset ) ; } return Offset ;" LLVM,RISCV,1380,"Predict the next statement of this code snippet: uint64_t FrameSize = MFI . getStackSize ( ) ; Align StackAlign = getStackAlign ( ) ; FrameSize = alignTo ( FrameSize , StackAlign ) ; MFI . setStackSize ( FrameSize ) ;" LLVM,RISCV,1381,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; if ( MF . getFunction ( ) . getCallingConv ( ) == CallingConv :: GHC ) return ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MF , MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ;" LLVM,RISCV,1382,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; if ( MF . getFunction ( ) . getCallingConv ( ) == CallingConv :: GHC ) return ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MF , MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) + RVFI -> getRVVPadding ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; uint64_t RVVStackSize = RVFI -> getRVVStackSize ( ) ; if ( RI -> hasStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } else { if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , LastFrameDestroy , DL , RVVStackSize , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ;" LLVM,RISCV,1383,"Predict the next statement of this code snippet: if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfaOffset ( nullptr , MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlag ( MachineInstr :: FrameSetup ) ; } } if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , MBBI , DL , - RVVStackSize , MachineInstr :: FrameSetup ) ; if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> hasStackRealignment ( MF ) ) { Align MaxAlignment = MFI . getMaxAlign ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; if ( isInt < > ( - ( int ) MaxAlignment . value ( ) ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( SPReg ) . addImm ( - ( int ) MaxAlignment . value ( ) ) . setMIFlag ( MachineInstr :: FrameSetup ) ; } else { unsigned ShiftAmount = Log2 ( MaxAlignment ) ; Register VR = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , VR ) . addReg ( SPReg ) . addImm ( ShiftAmount ) . setMIFlag ( MachineInstr :: FrameSetup ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( VR ) . addImm ( ShiftAmount ) . setMIFlag ( MachineInstr :: FrameSetup ) ; }" LLVM,RISCV,1384,"Predict the next statement of this code snippet: int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ; if ( RVVStackSize != ) { int RVVRegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RVVRegScavFI ) ; } } if ( MFI . getCalleeSavedInfo ( ) . empty ( ) || RVFI -> useSaveRestoreLibCalls ( MF ) ) { RVFI -> setCalleeSavedStackSize ( ) ; return ; } unsigned Size = ; for ( const auto & Info : MFI . getCalleeSavedInfo ( ) ) { int FrameIdx = Info . getFrameIdx ( ) ; if ( MFI . getStackID ( FrameIdx ) != TargetStackID :: Default ) continue ; Size += MFI . getObjectSize ( FrameIdx ) ; }" LLVM,RISCV,1385,"Predict the next statement of this code snippet: if ( RVVStackSize != ) { int RVVRegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RVVRegScavFI ) ; } } if ( MFI . getCalleeSavedInfo ( ) . empty ( ) || RVFI -> useSaveRestoreLibCalls ( MF ) ) { RVFI -> setCalleeSavedStackSize ( ) ; return ; } unsigned Size = ; for ( const auto & Info : MFI . getCalleeSavedInfo ( ) ) { int FrameIdx = Info . getFrameIdx ( ) ; if ( MFI . getStackID ( FrameIdx ) != TargetStackID :: Default ) continue ; Size += MFI . getObjectSize ( FrameIdx ) ; } RVFI -> setCalleeSavedStackSize ( Size ) ;" LLVM,RISCV,1386,"Predict the next statement of this code snippet: if ( MF . getFunction ( ) . hasOptNone ( ) ) return false ; return true ;" LLVM,RISCV,1387,"Predict the next statement of this code snippet: if ( MF . getFunction ( ) . hasOptNone ( ) ) return false ; return true ;" LLVM,RISCV,1388,"Predict the next statement of this code snippet: const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ; return MFI . hasVarSizedObjects ( ) && TRI -> hasStackRealignment ( MF ) ;" LLVM,RISCV,1389,"Predict the next statement of this code snippet: const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ;" LLVM,RISCV,1390,"Predict the next statement of this code snippet: const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; for ( int I = , E = MFI . getObjectIndexEnd ( ) ; I != E ; ++ I ) if ( MFI . getStackID ( I ) == TargetStackID :: ScalableVector ) return true ;" LLVM,RISCV,1391,"Predict the next statement of this code snippet: if ( ! MF . getSubtarget < Subtarget > ( ) . hasStdExtV ( ) ) return false ;" LLVM,RISCV,1392,"Predict the next statement of this code snippet: if ( CSI . empty ( ) ) return true ; MachineFunction * MF = MBB . getParent ( ) ; const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const auto & NonLibcallCSI = getNonLibcallCSI ( * MF , CSI ) ; for ( auto & CS : reverse ( NonLibcallCSI ) ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ; TII . loadRegFromStackSlot ( MBB , MI , Reg , CS . getFrameIdx ( ) , RC , TRI ) ; assert ( MI != MBB . begin ( ) && ) ; } const char * RestoreLibCall = getRestoreLibCallName ( * MF , CSI ) ; if ( RestoreLibCall ) { MachineBasicBlock :: iterator NewMI = BuildMI ( MBB , MI , DL , TII . get ( ) ) . addExternalSymbol ( RestoreLibCall , ) . setMIFlag ( MachineInstr :: FrameDestroy ) ;" LLVM,RISCV,1393,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const auto & NonLibcallCSI = getNonLibcallCSI ( * MF , CSI ) ; for ( auto & CS : reverse ( NonLibcallCSI ) ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ; TII . loadRegFromStackSlot ( MBB , MI , Reg , CS . getFrameIdx ( ) , RC , TRI ) ; assert ( MI != MBB . begin ( ) && ) ;" LLVM,RISCV,1394,"Predict the next statement of this code snippet: explicit FrameLowering ( const Subtarget & STI ) : TargetFrameLowering ( StackGrowsDown , , ) {" LLVM,RISCV,1395,"Predict the next statement of this code snippet: explicit FrameLowering ( const Subtarget & STI ) : TargetFrameLowering ( StackGrowsDown , , ) {" LLVM,RISCV,1396,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const char * SpillLibCall = getSpillLibCallName ( * MF , CSI ) ; if ( SpillLibCall ) { BuildMI ( MBB , MI , DL , TII . get ( ) , ) . addExternalSymbol ( SpillLibCall , ) . setMIFlag ( MachineInstr :: FrameSetup ) ; for ( auto & CS : CSI ) MBB . addLiveIn ( CS . getReg ( ) ) ;" LLVM,RISCV,1397,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; uint64_t FrameSize = MFI . getStackSize ( ) ;" LLVM,RISCV,1398,"Predict the next statement of this code snippet: uint64_t FrameSize = MFI . getStackSize ( ) ; Align StackAlign = getStackAlign ( ) ; uint64_t MaxCallSize = alignTo ( MFI . getMaxCallFrameSize ( ) , StackAlign ) ;" LLVM,RISCV,1399,"Predict the next statement of this code snippet: if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ;" LLVM,RISCV,1400,"Predict the next statement of this code snippet: if ( MF . getFunction ( ) . getCallingConv ( ) == CallingConv :: GHC ) return ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , SPReg , SecondSPAdjustAmount , MachineInstr :: FrameDestroy ) ; } if ( FirstSPAdjustAmount ) StackSize = FirstSPAdjustAmount ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , StackSize , MachineInstr :: FrameDestroy ) ;" LLVM,RISCV,1401,"Predict the next statement of this code snippet: FrameSize += ( MaxStackAlign - StackAlign ) ; StackAlign = MaxStackAlign ; } uint64_t MaxCallSize = alignTo ( MFI . getMaxCallFrameSize ( ) , StackAlign ) ; MFI . setMaxCallFrameSize ( MaxCallSize ) ;" LLVM,RISCV,1402,"Predict the next statement of this code snippet: DebugLoc DL = MBBI -> getDebugLoc ( ) ; Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; auto LastFrameDestroy = std :: prev ( MBBI , MFI . getCalleeSavedInfo ( ) . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t FPOffset = StackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; }" LLVM,RISCV,1403,"Predict the next statement of this code snippet: uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t FPOffset = StackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , SPReg , SecondSPAdjustAmount , MachineInstr :: FrameDestroy ) ; } if ( FirstSPAdjustAmount ) StackSize = FirstSPAdjustAmount ;" LLVM,RISCV,1404,"Predict the next statement of this code snippet: adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } } if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> needsStackRealignment ( MF ) ) { unsigned MaxAlignment = MFI . getMaxAlignment ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; if ( isInt < > ( - ( int ) MaxAlignment ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( SPReg ) . addImm ( - ( int ) MaxAlignment ) ; } else { unsigned ShiftAmount = countTrailingZeros ( MaxAlignment ) ; Register VR = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , VR ) . addReg ( SPReg ) . addImm ( ShiftAmount ) ;" LLVM,RISCV,1405,"Predict the next statement of this code snippet: int64_t Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } } if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> needsStackRealignment ( MF ) ) { unsigned MaxAlignment = MFI . getMaxAlignment ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; if ( isInt < > ( - ( int ) MaxAlignment ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( SPReg ) . addImm ( - ( int ) MaxAlignment ) ; } else { unsigned ShiftAmount = countTrailingZeros ( MaxAlignment ) ; Register VR = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , VR ) . addReg ( SPReg ) . addImm ( ShiftAmount ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( VR ) . addImm ( ShiftAmount ) ; } if ( hasBP ( MF ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , BPReg ) . addReg ( SPReg ) . addImm ( ) ; } }" LLVM,RISCV,1406,"Predict the next statement of this code snippet: uint64_t StackAlign = getStackAlignment ( ) ; if ( ! isInt < > ( StackSize ) && ( CSI . size ( ) > ) ) {" LLVM,RISCV,1407,"Predict the next statement of this code snippet: const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,RISCV,1408,"Predict the next statement of this code snippet: if ( FI >= MinCSFI && FI <= MaxCSFI ) { FrameReg = ; if ( FirstSPAdjustAmount ) Offset += FirstSPAdjustAmount ; else Offset += MF . getFrameInfo ( ) . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) FrameReg = ( ) ; else FrameReg = ; Offset += MF . getFrameInfo ( ) . getStackSize ( ) ;" LLVM,RISCV,1409,"Predict the next statement of this code snippet: if ( ! RVFI -> useSaveRestoreLibCalls ( ) ) return true ; if ( MBB . succ_size ( ) > ) return false ;" LLVM,RISCV,1410,"Predict the next statement of this code snippet: MachineBasicBlock * TmpMBB = const_cast < MachineBasicBlock * > ( & MBB ) ; const auto * RVFI = MBB . getParent ( ) -> getInfo < MachineFunctionInfo > ( ) ; if ( ! RVFI -> useSaveRestoreLibCalls ( ) ) return true ; RegScavenger RS ; RS . enterBasicBlock ( * TmpMBB ) ;" LLVM,RISCV,1411,"Predict the next statement of this code snippet: const auto * RVFI = MBB . getParent ( ) -> getInfo < MachineFunctionInfo > ( ) ; if ( ! RVFI -> useSaveRestoreLibCalls ( ) ) return true ;" LLVM,RISCV,1412,"Predict the next statement of this code snippet: const RegisterInfo * RI = STI . getRegisterInfo ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ;" LLVM,RISCV,1413,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ;" LLVM,RISCV,1414,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const auto & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , getNonLibcallCSI ( CSI ) . size ( ) ) ; for ( const auto & Entry : CSI ) { int FrameIdx = Entry . getFrameIdx ( ) ; int64_t Offset ; if ( FrameIdx < ) Offset = FrameIdx * ( int64_t ) STI . getXLen ( ) / ; else Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) - RVFI -> getLibCallStackSize ( ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; adjustReg ( MBB , MBBI , DL , FPReg , SPReg , RealStackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , RVFI -> getVarArgsSaveSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfaOffset ( nullptr , MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } } if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ;" LLVM,RISCV,1415,"Predict the next statement of this code snippet: const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( CSI . empty ( ) || ! RVFI -> useSaveRestoreLibCalls ( ) ) return - ; Register MaxReg = ; for ( auto & CS : CSI ) if ( CS . getFrameIdx ( ) < ) MaxReg = std :: max ( MaxReg . id ( ) , CS . getReg ( ) ) ; if ( MaxReg == ) return - ; switch ( MaxReg ) { default : llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,1416,"Predict the next statement of this code snippet: Register MaxReg = ; for ( auto & CS : CSI ) if ( CS . getFrameIdx ( ) < ) MaxReg = std :: max ( MaxReg . id ( ) , CS . getReg ( ) ) ; if ( MaxReg == ) return - ; switch ( MaxReg ) { default : llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,1417,"Predict the next statement of this code snippet: else Offset += MFI . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) FrameReg = ( ) ; else FrameReg = ; Offset += MFI . getStackSize ( ) ; if ( FI < ) Offset += RVFI -> getLibCallStackSize ( ) ; } else { FrameReg = RI -> getFrameRegister ( MF ) ; if ( hasFP ( MF ) ) { Offset += RVFI -> getVarArgsSaveSize ( ) ; if ( FI >= ) Offset -= RVFI -> getLibCallStackSize ( ) ;" LLVM,RISCV,1418,"Predict the next statement of this code snippet: SavedRegs . set ( ) ; SavedRegs . set ( ) ; } if ( hasBP ( MF ) ) SavedRegs . set ( ( ) ) ; if ( MF . getFunction ( ) . hasFnAttribute ( ) && MFI . hasCalls ( ) ) { static const MCPhysReg CSRegs [ ] = { , , , , , , , , , , , , , , , , } ; for ( unsigned i = ; CSRegs [ i ] ; ++ i ) SavedRegs . set ( CSRegs [ i ] ) ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtD ( ) || MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) { const MCPhysReg * Regs = MF . getRegInfo ( ) . getCalleeSavedRegs ( ) ; for ( unsigned i = ; Regs [ i ] ; ++ i ) if ( . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) ) SavedRegs . set ( Regs [ i ] ) ; }" LLVM,RISCV,1419,"Predict the next statement of this code snippet: uint64_t FrameSize = MFI . getStackSize ( ) ; for ( int ID = MFI . getObjectIndexBegin ( ) , EID = MFI . getObjectIndexEnd ( ) ; ID < EID ; ID ++ ) { if ( MFI . getStackID ( ID ) == TargetStackID :: Vector && ! MFI . isDeadObjectIndex ( ID ) ) { FrameSize = alignTo ( FrameSize , TRI -> getSpillAlignment ( ) ) ;" LLVM,RISCV,1420,"Predict the next statement of this code snippet: while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) || RVFI -> hasSpillVRs ( ) ) {" LLVM,RISCV,1421,"Predict the next statement of this code snippet: if ( FirstSPAdjustAmount ) Offset += FirstSPAdjustAmount ; else Offset += MFI . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) FrameReg = ( ) ; else FrameReg = ; Offset += MFI . getStackSize ( ) ; if ( FI < ) Offset += RVFI -> getLibCallStackSize ( ) ; } else { FrameReg = RI -> getFrameRegister ( MF ) ; if ( hasFP ( MF ) ) {" LLVM,RISCV,1422,"Predict the next statement of this code snippet: const auto & CSI = getNonLibcallCSI ( MFI . getCalleeSavedInfo ( ) ) ; int MinCSFI = ; int MaxCSFI = - ; int Offset = MFI . getObjectOffset ( FI ) - getOffsetOfLocalArea ( ) + MFI . getOffsetAdjustment ( ) ; uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( CSI . size ( ) ) { MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } if ( FI >= MinCSFI && FI <= MaxCSFI ) { FrameReg = ; if ( FirstSPAdjustAmount ) Offset += FirstSPAdjustAmount ; else Offset += MFI . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) FrameReg = ( ) ; else FrameReg = ; Offset += MFI . getStackSize ( ) ; if ( FI < ) Offset += RVFI -> getLibCallStackSize ( ) ; } else { FrameReg = RI -> getFrameRegister ( MF ) ; if ( hasFP ( MF ) ) { Offset += RVFI -> getVarArgsSaveSize ( ) ; if ( FI >= ) Offset -= RVFI -> getLibCallStackSize ( ) ; } else { Offset += MFI . getStackSize ( ) ; if ( FI < ) Offset += RVFI -> getLibCallStackSize ( ) ; } }" LLVM,RISCV,1423,"Predict the next statement of this code snippet: auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ;" LLVM,RISCV,1424,"Predict the next statement of this code snippet: auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; return ( ( MFI . hasVarSizedObjects ( ) || RVFI -> hasSpillVRs ( ) ) && TRI -> needsStackRealignment ( MF ) ) ;" LLVM,RISCV,1425,"Predict the next statement of this code snippet: auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,RISCV,1426,"Predict the next statement of this code snippet: if ( MFI . getStackID ( FI ) == TargetStackID :: Vector && ! MFI . isDeadObjectIndex ( FI ) ) RVFI -> setHasSpillVRs ( ) ; } if ( ! isInt < > ( MFI . estimateStackSize ( MF ) ) ) { int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ; }" LLVM,RISCV,1427,"Predict the next statement of this code snippet: const InstrInfo * TII = STI . getInstrInfo ( ) ; Register SPReg = getSPReg ( ) ; unsigned Opc = ; if ( Amount < ) { Amount = - Amount ; Opc = ; } Register FactorRegister = TII -> getVLENFactoredAmount ( MF , MBB , MBBI , DL , Amount , Flag ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( Opc ) , SPReg ) . addReg ( SPReg ) . addReg ( FactorRegister , RegState :: Kill ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1428,"Predict the next statement of this code snippet: static const MCPhysReg CSGPCRs [ ] = { , , , , , , , , , , , , , , , , } ; ArrayRef < MCPhysReg > CSRegs ; if ( ( STI . getTargetABI ( ) ) ) CSRegs = CSGPCRs ; else CSRegs = CSGPRs ; for ( unsigned i = ; CSRegs [ i ] ; ++ i ) SavedRegs . set ( CSRegs [ i ] ) ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) { const MCPhysReg * Regs = MF . getRegInfo ( ) . getCalleeSavedRegs ( ) ; for ( unsigned i = ; Regs [ i ] ; ++ i ) if ( . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) ) SavedRegs . set ( Regs [ i ] ) ; } }" LLVM,RISCV,1429,"Predict the next statement of this code snippet: DebugLoc DL = MI -> getDebugLoc ( ) ; unsigned Opcode = MI -> getOpcode ( ) ; assert ( ( Opcode == || Opcode == ) == ( STI . getTargetABI ( ) ) && ) ; if ( ! hasReservedCallFrame ( MF ) ) { int64_t Amount = MI -> getOperand ( ) . getImm ( ) ; if ( Amount != ) { Amount = alignSPAdjust ( Amount ) ; if ( Opcode == || Opcode == ) Amount = - Amount ; adjustReg ( MBB , MI , DL , SPReg , SPReg , Amount , MachineInstr :: NoFlags ) ; } } return MBB . erase ( MI ) ;" LLVM,RISCV,1430,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; Register FPReg = getFPReg ( ) ; Register SPReg = getSPReg ( ) ; if ( MF . getFunction ( ) . getCallingConv ( ) == CallingConv :: GHC ) return ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MF , MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) + RVFI -> getRVVPadding ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; uint64_t RVVStackSize = RVFI -> getRVVStackSize ( ) ; if ( RI -> hasStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } else { if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , LastFrameDestroy , DL , RVVStackSize , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ;" LLVM,RISCV,1431,"Predict the next statement of this code snippet: Register FrameLowering :: getFPReg ( ) const { if ( ( STI . getTargetABI ( ) ) ) return ;" LLVM,RISCV,1432,"Predict the next statement of this code snippet: Register FrameLowering :: getSPReg ( ) const { if ( ( STI . getTargetABI ( ) ) ) return ;" LLVM,RISCV,1433,"Predict the next statement of this code snippet: int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ; if ( RVVStackSize != ) { int RVVRegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RVVRegScavFI ) ; } } if ( MFI . getCalleeSavedInfo ( ) . empty ( ) || RVFI -> useSaveRestoreLibCalls ( MF ) ) { RVFI -> setCalleeSavedStackSize ( ) ; return ; } unsigned Size = ; for ( const auto & Info : MFI . getCalleeSavedInfo ( ) ) { int FrameIdx = Info . getFrameIdx ( ) ; if ( MFI . getStackID ( FrameIdx ) != TargetStackID :: Default ) continue ; Size += MFI . getObjectSize ( FrameIdx ) ;" LLVM,RISCV,1434,"Predict the next statement of this code snippet: TII . loadRegFromStackSlot ( MBB , MI , Reg , CS . getFrameIdx ( ) , RC , TRI ) ; assert ( MI != MBB . begin ( ) && ) ; } const char * RestoreLibCall = getRestoreLibCallName ( * MF , CSI ) ; if ( RestoreLibCall ) { assert ( ! ( STI . getTargetABI ( ) ) && ) ; MachineBasicBlock :: iterator NewMI = BuildMI ( MBB , MI , DL , TII . get ( ) ) . addExternalSymbol ( RestoreLibCall , ) . setMIFlag ( MachineInstr :: FrameDestroy ) ; if ( MI != MBB . end ( ) && MI -> getOpcode ( ) == ) { NewMI -> copyImplicitOps ( * MF , * MI ) ; MI -> eraseFromParent ( ) ;" LLVM,RISCV,1435,"Predict the next statement of this code snippet: if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const auto & NonLibcallCSI = getNonLibcallCSI ( * MF , CSI ) ; for ( auto & CS : reverse ( NonLibcallCSI ) ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ;" LLVM,RISCV,1436,"Predict the next statement of this code snippet: const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t StackAlign = getStackAlignment ( ) ; if ( RVFI -> getLibCallStackSize ( ) ) return ; if ( ! isInt < > ( StackSize ) && ( CSI . size ( ) > ) ) { return - StackAlign ;" LLVM,RISCV,1437,"Predict the next statement of this code snippet: const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t StackAlign = getStackAlignment ( ) ; if ( RVFI -> getLibCallStackSize ( ) ) return ;" LLVM,RISCV,1438,"Predict the next statement of this code snippet: int MinCSFI = ; int MaxCSFI = - ; int Offset = MFI . getObjectOffset ( FI ) - getOffsetOfLocalArea ( ) + MFI . getOffsetAdjustment ( ) ; uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( CSI . size ( ) ) { MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } if ( FI >= MinCSFI && FI <= MaxCSFI ) { FrameReg = ; if ( FirstSPAdjustAmount ) Offset += FirstSPAdjustAmount ; else Offset += MFI . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) FrameReg = ( ) ; else FrameReg = ; Offset += MFI . getStackSize ( ) ; if ( FI < ) Offset += RVFI -> getLibCallStackSize ( ) ;" LLVM,RISCV,1439,"Predict the next statement of this code snippet: MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } if ( FI >= MinCSFI && FI <= MaxCSFI ) { FrameReg = ; if ( FirstSPAdjustAmount ) Offset += FirstSPAdjustAmount ; else Offset += MFI . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) FrameReg = ( ) ; else FrameReg = ; Offset += MFI . getStackSize ( ) ; if ( FI < ) Offset += RVFI -> getLibCallStackSize ( ) ; } else { FrameReg = RI -> getFrameRegister ( MF ) ; if ( hasFP ( MF ) ) { Offset += RVFI -> getVarArgsSaveSize ( ) ; if ( FI >= ) Offset -= RVFI -> getLibCallStackSize ( ) ; } else { Offset += MFI . getStackSize ( ) ;" LLVM,RISCV,1440,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; } auto LastFrameDestroy = std :: prev ( MBBI , MFI . getCalleeSavedInfo ( ) . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t FPOffset = StackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ;" LLVM,RISCV,1441,"Predict the next statement of this code snippet: if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } } if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> needsStackRealignment ( MF ) ) { unsigned MaxAlignment = MFI . getMaxAlignment ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; if ( isInt < > ( - ( int ) MaxAlignment ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( SPReg ) . addImm ( - ( int ) MaxAlignment ) ; } else { unsigned ShiftAmount = countTrailingZeros ( MaxAlignment ) ; Register VR = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , VR ) . addReg ( SPReg ) . addImm ( ShiftAmount ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( VR ) . addImm ( ShiftAmount ) ; } if ( hasBP ( MF ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , BPReg ) . addReg ( SPReg ) . addImm ( ) ; }" LLVM,RISCV,1442,"Predict the next statement of this code snippet: std :: advance ( MBBI , CSI . size ( ) ) ; for ( const auto & Entry : CSI ) { int64_t Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , - RVFI -> getVarArgsSaveSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ;" LLVM,RISCV,1443,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,RISCV,1444,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,RISCV,1445,"Predict the next statement of this code snippet: void FrameLowering :: emitPrologue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,RISCV,1446,"Predict the next statement of this code snippet: void FrameLowering :: emitPrologue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,RISCV,1447,"Predict the next statement of this code snippet: bool FrameLowering :: hasFP ( const MachineFunction & MF ) const { return true ;" LLVM,RISCV,1448,"Predict the next statement of this code snippet: } const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; for ( const auto & Entry : CSI ) { Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createRestore ( nullptr , RI -> getDwarfRegNum ( Reg , true ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } adjustReg ( MBB , MBBI , DL , SPReg , SPReg , StackSize , MachineInstr :: FrameDestroy ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , ) ) ;" LLVM,RISCV,1449,"Predict the next statement of this code snippet: const TargetRegisterInfo * RegInfo = MF . getSubtarget ( ) . getRegisterInfo ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const TargetRegisterClass * RC = & ; if ( ! isInt < > ( MFI . estimateStackSize ( MF ) ) ) { const DataLayout & DL = MF . getDataLayout ( ) ;" LLVM,RISCV,1450,"Predict the next statement of this code snippet: const TargetRegisterInfo * RegInfo = MF . getSubtarget ( ) . getRegisterInfo ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const TargetRegisterClass * RC = & ;" LLVM,RISCV,1451,"Predict the next statement of this code snippet: Register FactorRegister = TII -> getVLENFactoredAmount ( MF , MBB , MBBI , DL , Amount ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( Opc ) , SPReg ) . addReg ( SPReg ) . addReg ( FactorRegister , RegState :: Kill ) ;" LLVM,RISCV,1452,"Predict the next statement of this code snippet: Amount = - Amount ; Opc = ; } Register FactorRegister = TII -> getVLENFactoredAmount ( MF , MBB , MBBI , DL , Amount ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( Opc ) , SPReg ) . addReg ( SPReg ) . addReg ( FactorRegister , RegState :: Kill ) ;" LLVM,RISCV,1453,"Predict the next statement of this code snippet: if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MF , MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) + RVFI -> getRVVPadding ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; uint64_t RVVStackSize = RVFI -> getRVVStackSize ( ) ;" LLVM,RISCV,1454,"Predict the next statement of this code snippet: if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MF , MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) + RVFI -> getRVVPadding ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; uint64_t RVVStackSize = RVFI -> getRVVStackSize ( ) ; if ( RI -> hasStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } else { if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , LastFrameDestroy , DL , RVVStackSize ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) {" LLVM,RISCV,1455,"Predict the next statement of this code snippet: int FrameIdx = Entry . getFrameIdx ( ) ; int64_t Offset ; if ( FrameIdx < ) Offset = FrameIdx * ( int64_t ) STI . getXLen ( ) / ; else Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) - RVFI -> getLibCallStackSize ( ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; adjustReg ( MBB , MBBI , DL , FPReg , SPReg , RealStackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , RVFI -> getVarArgsSaveSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfaOffset ( nullptr , MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } } if ( RVVStackSize ) adjustStackForRVV ( MF , MBB , MBBI , DL , - RVVStackSize ) ; if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ;" LLVM,RISCV,1456,"Predict the next statement of this code snippet: case TargetStackID :: ScalableVector : return true ; case TargetStackID :: NoAlloc : case TargetStackID :: SGPRSpill : return false ; }" LLVM,RISCV,1457,"Predict the next statement of this code snippet: int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RegScavFI ) ; if ( RVVStackSize != ) { int RVVRegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ; RS -> addScavengingFrameIndex ( RVVRegScavFI ) ; } } if ( MFI . getCalleeSavedInfo ( ) . empty ( ) || RVFI -> useSaveRestoreLibCalls ( MF ) ) { RVFI -> setCalleeSavedStackSize ( ) ; return ; } unsigned Size = ; for ( const auto & Info : MFI . getCalleeSavedInfo ( ) ) { int FrameIdx = Info . getFrameIdx ( ) ;" LLVM,RISCV,1458,"Predict the next statement of this code snippet: void FrameLowering :: determineCalleeSaves ( MachineFunction & MF , BitVector & SavedRegs , RegScavenger * RS ) const { TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ; if ( hasFP ( MF ) ) { SavedRegs . set ( ) ;" LLVM,RISCV,1459,"Predict the next statement of this code snippet: TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ;" LLVM,RISCV,1460,"Predict the next statement of this code snippet: unsigned SPReg = getSPReg ( STI ) ; MachineBasicBlock :: iterator LastFrameDestroy = MBBI ; std :: advance ( LastFrameDestroy , - MFI . getCalleeSavedInfo ( ) . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ;" LLVM,RISCV,1461,"Predict the next statement of this code snippet: Register BPReg = ( ) ; while ( MBBI != MBB . end ( ) && MBBI -> getFlag ( MachineInstr :: FrameSetup ) ) ++ MBBI ; DebugLoc DL ; determineFrameLayout ( MF ) ; if ( int LibCallRegs = getLibCallID ( MF , MFI . getCalleeSavedInfo ( ) ) + ) { unsigned LibCallFrameSize = alignTo ( ( STI . getXLen ( ) / ) * LibCallRegs , ) ; RVFI -> setLibCallStackSize ( LibCallFrameSize ) ; } uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; if ( RealStackSize == && ! MFI . adjustsStack ( ) ) return ; if ( STI . isRegisterReservedByUser ( SPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { StackSize = FirstSPAdjustAmount ; RealStackSize = FirstSPAdjustAmount ; } adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - RealStackSize ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const auto & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , getNonLibcallCSI ( CSI ) . size ( ) ) ; for ( const auto & Entry : CSI ) { int FrameIdx = Entry . getFrameIdx ( ) ; int64_t Offset ; if ( FrameIdx < ) Offset = FrameIdx * ( int64_t ) STI . getXLen ( ) / ; else Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) - RVFI -> getLibCallStackSize ( ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ;" LLVM,RISCV,1462,"Predict the next statement of this code snippet: const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const auto & NonLibcallCSI = getNonLibcallCSI ( CSI ) ; for ( auto & CS : reverse ( NonLibcallCSI ) ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ;" LLVM,RISCV,1463,"Predict the next statement of this code snippet: if ( ! isInt < > ( Val ) ) report_fatal_error ( ) ;" LLVM,RISCV,1464,"Predict the next statement of this code snippet: void FrameLowering :: determineCalleeSaves ( MachineFunction & MF , BitVector & SavedRegs , RegScavenger * RS ) const { TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ; SavedRegs . set ( ) ; SavedRegs . set ( ) ;" LLVM,RISCV,1465,"Predict the next statement of this code snippet: void FrameLowering :: determineCalleeSaves ( MachineFunction & MF , BitVector & SavedRegs , RegScavenger * RS ) const { TargetFrameLowering :: determineCalleeSaves ( MF , SavedRegs , RS ) ;" LLVM,RISCV,1466,"Predict the next statement of this code snippet: const RegisterInfo * RI = STI . getRegisterInfo ( ) ; uint64_t FrameSize = MFI . getStackSize ( ) ;" LLVM,RISCV,1467,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const RegisterInfo * RI = STI . getRegisterInfo ( ) ; uint64_t FrameSize = MFI . getStackSize ( ) ; uint64_t StackAlign = RI -> needsStackRealignment ( MF ) ? MFI . getMaxAlignment ( ) : getStackAlignment ( ) ; uint64_t MaxCallFrameSize = MFI . getMaxCallFrameSize ( ) ;" LLVM,RISCV,1468,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const { if ( ! hasFP ( MF ) ) { report_fatal_error ( ) ; } MachineBasicBlock :: iterator MBBI = MBB . getLastNonDebugInstr ( ) ; const RegisterInfo * RI = STI . getRegisterInfo ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; DebugLoc DL = MBBI -> getDebugLoc ( ) ; unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; MachineBasicBlock :: iterator LastFrameDestroy = MBBI ; std :: advance ( LastFrameDestroy , - MFI . getCalleeSavedInfo ( ) . size ( ) ) ;" LLVM,RISCV,1469,"Predict the next statement of this code snippet: unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; DebugLoc DL ; determineFrameLayout ( MF ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , CSI . size ( ) ) ;" LLVM,RISCV,1470,"Predict the next statement of this code snippet: MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } FrameReg = RI -> getFrameRegister ( MF ) ; if ( FI >= MinCSFI && FI <= MaxCSFI ) { FrameReg = ; Offset += MF . getFrameInfo ( ) . getStackSize ( ) ; }" LLVM,RISCV,1471,"Predict the next statement of this code snippet: if ( FI < ) Offset += StackOffset :: getFixed ( RVFI -> getLibCallStackSize ( ) ) ; } else if ( MFI . getStackID ( FI ) == TargetStackID :: ScalableVector ) { Offset += StackOffset :: get ( alignTo ( MFI . getStackSize ( ) - RVFI -> getCalleeSavedStackSize ( ) , ) , RVFI -> getRVVStackSize ( ) ) ; } } else { FrameReg = RI -> getFrameRegister ( MF ) ; if ( hasFP ( MF ) ) { Offset += StackOffset :: getFixed ( RVFI -> getVarArgsSaveSize ( ) ) ; if ( FI >= ) Offset -= StackOffset :: getFixed ( RVFI -> getLibCallStackSize ( ) ) ; if ( MFI . getStackID ( FI ) == TargetStackID :: ScalableVector ) Offset -= StackOffset :: getFixed ( MFI . getStackSize ( ) ) ; } else { if ( MFI . getStackID ( FI ) == TargetStackID :: Default ) { if ( MFI . isFixedObjectIndex ( FI ) ) {" LLVM,RISCV,1472,"Predict the next statement of this code snippet: unsigned SPReg = getSPReg ( STI ) ; auto LastFrameDestroy = std :: prev ( MBBI , MFI . getCalleeSavedInfo ( ) . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t FPOffset = StackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } if ( hasFP ( MF ) ) { for ( auto & I = LastFrameDestroy ; I != MBBI ; ++ I ) { if ( I -> mayLoad ( ) && I -> getOperand ( ) . isReg ( ) ) { unsigned DestReg = I -> getOperand ( ) . getReg ( ) ; if ( DestReg == FPReg ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( SPReg , true ) , - FPOffset ) ) ; BuildMI ( MBB , std :: next ( I ) , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; break ; } } }" LLVM,RISCV,1473,"Predict the next statement of this code snippet: uint64_t StackSize = MFI . getStackSize ( ) ; if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - StackSize ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , CSI . size ( ) ) ; for ( const auto & Entry : CSI ) { int64_t Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) ; unsigned Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ;" LLVM,RISCV,1474,"Predict the next statement of this code snippet: void FrameLowering :: emitPrologue ( MachineFunction & MF , MachineBasicBlock & MBB ) const { assert ( & MF . front ( ) == & MBB && ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; const RegisterInfo * RI = STI . getRegisterInfo ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; MachineBasicBlock :: iterator MBBI = MBB . begin ( ) ; if ( RI -> needsStackRealignment ( MF ) && MFI . hasVarSizedObjects ( ) ) { report_fatal_error ( ) ; } Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; DebugLoc DL ; determineFrameLayout ( MF ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) StackSize = FirstSPAdjustAmount ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - StackSize ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , CSI . size ( ) ) ; for ( const auto & Entry : CSI ) {" LLVM,RISCV,1475,"Predict the next statement of this code snippet: const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; if ( ! hasReservedCallFrame ( MF ) ) { int64_t Amount = I -> getOperand ( ) . getImm ( ) ; if ( I -> getOpcode ( ) == ) Amount = - Amount ; unsigned SP = STI . isRV64 ( ) ? : ; TII . adjustStackPtr ( SP , Amount , MBB , I ) ; } return MBB . erase ( I ) ;" LLVM,RISCV,1476,"Predict the next statement of this code snippet: auto LastFrameDestroy = std :: prev ( MBBI , MFI . getCalleeSavedInfo ( ) . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t FPOffset = StackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , SPReg , SecondSPAdjustAmount , MachineInstr :: FrameDestroy ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - FirstSPAdjustAmount ) ) ; BuildMI ( MBB , LastFrameDestroy , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { for ( auto & I = LastFrameDestroy ; I != MBBI ; ++ I ) { if ( I -> mayLoad ( ) && I -> getOperand ( ) . isReg ( ) ) { Register DestReg = I -> getOperand ( ) . getReg ( ) ; if ( DestReg == FPReg ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( SPReg , true ) , - FPOffset ) ) ; BuildMI ( MBB , std :: next ( I ) , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; break ; } } } } const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; for ( const auto & Entry : CSI ) {" LLVM,RISCV,1477,"Predict the next statement of this code snippet: uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , SPReg , SecondSPAdjustAmount , MachineInstr :: FrameDestroy ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - FirstSPAdjustAmount ) ) ; BuildMI ( MBB , LastFrameDestroy , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { for ( auto & I = LastFrameDestroy ; I != MBBI ; ++ I ) { if ( I -> mayLoad ( ) && I -> getOperand ( ) . isReg ( ) ) { Register DestReg = I -> getOperand ( ) . getReg ( ) ; if ( DestReg == FPReg ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( SPReg , true ) , - FPOffset ) ) ; BuildMI ( MBB , std :: next ( I ) , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ;" LLVM,RISCV,1478,"Predict the next statement of this code snippet: for ( const auto & Entry : CSI ) { int64_t Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> needsStackRealignment ( MF ) ) { unsigned MaxAlignment = MFI . getMaxAlignment ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; if ( isInt < > ( - ( int ) MaxAlignment ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( SPReg ) . addImm ( - ( int ) MaxAlignment ) ; } else { unsigned ShiftAmount = countTrailingZeros ( MaxAlignment ) ; Register VR = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( ) , VR ) . addReg ( SPReg ) . addImm ( ShiftAmount ) ;" LLVM,RISCV,1479,"Predict the next statement of this code snippet: if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> needsStackRealignment ( MF ) ) { unsigned MaxAlignment = MFI . getMaxAlignment ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; if ( isInt < > ( - ( int ) MaxAlignment ) ) { BuildMI ( MBB , MBBI , DL , TII -> get ( ) , SPReg ) . addReg ( SPReg ) . addImm ( - ( int ) MaxAlignment ) ; } else { unsigned ShiftAmount = countTrailingZeros ( MaxAlignment ) ; Register VR = MF . getRegInfo ( ) . createVirtualRegister ( & ) ;" LLVM,RISCV,1480,"Predict the next statement of this code snippet: else Offset += MF . getFrameInfo ( ) . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) ) { assert ( ! MFI . hasVarSizedObjects ( ) && ) ; FrameReg = ; Offset += MF . getFrameInfo ( ) . getStackSize ( ) ; } else { FrameReg = RI -> getFrameRegister ( MF ) ; if ( hasFP ( MF ) ) Offset += RVFI -> getVarArgsSaveSize ( ) ;" LLVM,RISCV,1481,"Predict the next statement of this code snippet: assert ( & MF . front ( ) == & MBB && ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; MachineBasicBlock :: iterator MBBI = MBB . begin ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; DebugLoc DL ; determineFrameLayout ( MF ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , CSI . size ( ) ) ; if ( hasFP ( MF ) ) adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; const MCRegisterInfo * MRI = MF . getMMI ( ) . getContext ( ) . getRegisterInfo ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - StackSize ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ; for ( const auto & Entry : CSI ) { unsigned Reg = Entry . getReg ( ) ; int FI = Entry . getFrameIdx ( ) ; CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , MRI -> getDwarfRegNum ( Reg , true ) , MFI . getObjectOffset ( FI ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) . setMIFlags ( MachineInstr :: FrameSetup ) ;" LLVM,RISCV,1482,"Predict the next statement of this code snippet: void FrameLowering :: emitPrologue ( MachineFunction & MF , MachineBasicBlock & MBB ) const { assert ( & MF . front ( ) == & MBB && ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; MachineBasicBlock :: iterator MBBI = MBB . begin ( ) ; const InstrInfo * TII = STI . getInstrInfo ( ) ; unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; DebugLoc DL ; determineFrameLayout ( MF ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , CSI . size ( ) ) ; if ( hasFP ( MF ) ) adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; const MCRegisterInfo * MRI = MF . getMMI ( ) . getContext ( ) . getRegisterInfo ( ) ;" LLVM,RISCV,1483,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator MBBI = MBB . getLastNonDebugInstr ( ) ; const RegisterInfo * RI = STI . getRegisterInfo ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; DebugLoc DL = MBBI -> getDebugLoc ( ) ; unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; auto LastFrameDestroy = std :: prev ( MBBI , MFI . getCalleeSavedInfo ( ) . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - StackSize + RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameDestroy ) ; }" LLVM,RISCV,1484,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator MBBI = MBB . begin ( ) ; unsigned FPReg = getFPReg ( STI ) ; unsigned SPReg = getSPReg ( STI ) ; DebugLoc DL ; if ( shouldEnableVectorUnit ( MF ) ) { BuildMI ( MBB , MBBI , DL , STI . getInstrInfo ( ) -> get ( ) ) . addImm ( ) ; } determineFrameLayout ( MF ) ; uint64_t StackSize = MFI . getStackSize ( ) ;" LLVM,RISCV,1485,"Predict the next statement of this code snippet: auto & Subtarget = MF . getSubtarget < Subtarget > ( ) ; if ( ! Subtarget . hasStdExtV ( ) ) return false ;" LLVM,RISCV,1486,"Predict the next statement of this code snippet: bool FrameLowering :: shouldEnableVectorUnit ( MachineFunction & MF ) const {" LLVM,RISCV,1487,"Predict the next statement of this code snippet: bool FrameLowering :: hasBP ( const MachineFunction & MF ) const { const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,RISCV,1488,"Predict the next statement of this code snippet: const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ;" LLVM,RISCV,1489,"Predict the next statement of this code snippet: std :: advance ( MBBI , CSI . size ( ) ) ; for ( const auto & Entry : CSI ) { int64_t Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) ; unsigned Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const RegisterInfo * RI = STI . getRegisterInfo ( ) ; if ( RI -> needsStackRealignment ( MF ) ) {" LLVM,RISCV,1490,"Predict the next statement of this code snippet: uint64_t StackSize = MFI . getStackSize ( ) ; if ( StackSize == && ! MFI . adjustsStack ( ) ) return ; if ( STI . isRegisterReservedByUser ( SPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) StackSize = FirstSPAdjustAmount ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - StackSize ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , CSI . size ( ) ) ; for ( const auto & Entry : CSI ) { int64_t Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; adjustReg ( MBB , MBBI , DL , FPReg , SPReg , StackSize - RVFI -> getVarArgsSaveSize ( ) , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfa ( nullptr , RI -> getDwarfRegNum ( FPReg , true ) , ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( FirstSPAdjustAmount ) { uint64_t SecondSPAdjustAmount = MFI . getStackSize ( ) - FirstSPAdjustAmount ; assert ( SecondSPAdjustAmount > && ) ; adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - SecondSPAdjustAmount , MachineInstr :: FrameSetup ) ; if ( ! hasFP ( MF ) ) { unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createDefCfaOffset ( nullptr , - MFI . getStackSize ( ) ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ;" LLVM,RISCV,1491,"Predict the next statement of this code snippet: if ( MF . getFunction ( ) . hasFnAttribute ( ) && MFI . hasCalls ( ) ) { static const MCPhysReg CSRegs [ ] = { , , , , , , , , , , , , , , , , } ; for ( unsigned i = ; CSRegs [ i ] ; ++ i ) SavedRegs . set ( CSRegs [ i ] ) ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtD ( ) || MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) { const MCPhysReg * Regs = MF . getRegInfo ( ) . getCalleeSavedRegs ( ) ; for ( unsigned i = ; Regs [ i ] ; ++ i ) if ( . contains ( Regs [ i ] ) || . contains ( Regs [ i ] ) ) SavedRegs . set ( Regs [ i ] ) ; } }" LLVM,RISCV,1492,"Predict the next statement of this code snippet: SavedRegs . set ( ) ; } if ( hasBP ( MF ) ) SavedRegs . set ( ( ) ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; if ( MF . getFunction ( ) . hasFnAttribute ( ) && MFI . hasCalls ( ) ) {" LLVM,RISCV,1493,"Predict the next statement of this code snippet: void FrameLowering :: determineFrameLayout ( MachineFunction & MF ) const { MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; const RegisterInfo * RI = STI . getRegisterInfo ( ) ; uint64_t FrameSize = MFI . getStackSize ( ) ; Align StackAlign = getStackAlign ( ) ; if ( RI -> needsStackRealignment ( MF ) ) { Align MaxStackAlign = std :: max ( StackAlign , MFI . getMaxAlign ( ) ) ; FrameSize += ( MaxStackAlign . value ( ) - StackAlign . value ( ) ) ; StackAlign = MaxStackAlign ; } uint64_t MaxCallSize = alignTo ( MFI . getMaxCallFrameSize ( ) , StackAlign ) ;" LLVM,RISCV,1494,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator eliminateCallFramePseudoInstr ( MachineFunction & MF , MachineBasicBlock & MBB , MachineBasicBlock :: iterator MI ) const override { return MBB . erase ( MI ) ;" LLVM,RISCV,1495,"Predict the next statement of this code snippet: Register SPReg = getSPReg ( STI ) ; MachineBasicBlock :: iterator MBBI = MBB . end ( ) ; DebugLoc DL ; if ( ! MBB . empty ( ) ) { MBBI = MBB . getFirstTerminator ( ) ; if ( MBBI == MBB . end ( ) ) MBBI = MBB . getLastNonDebugInstr ( ) ; DL = MBBI -> getDebugLoc ( ) ; if ( ! MBBI -> isTerminator ( ) ) MBBI = std :: next ( MBBI ) ; while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; } uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) {" LLVM,RISCV,1496,"Predict the next statement of this code snippet: while ( MBBI != MBB . begin ( ) && std :: prev ( MBBI ) -> getFlag ( MachineInstr :: FrameDestroy ) ) -- MBBI ; } const auto & CSI = getNonLibcallCSI ( MFI . getCalleeSavedInfo ( ) ) ; auto LastFrameDestroy = MBBI ; if ( ! CSI . empty ( ) ) LastFrameDestroy = std :: prev ( MBBI , CSI . size ( ) ) ; uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; uint64_t FPOffset = RealStackSize - RVFI -> getVarArgsSaveSize ( ) ; if ( RI -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) ) { assert ( hasFP ( MF ) && ) ; adjustReg ( MBB , LastFrameDestroy , DL , SPReg , FPReg , - FPOffset , MachineInstr :: FrameDestroy ) ; }" LLVM,RISCV,1497,"Predict the next statement of this code snippet: Register FPReg = getFPReg ( STI ) ; Register SPReg = getSPReg ( STI ) ; Register BPReg = ( ) ; DebugLoc DL ; emitSCSPrologue ( MF , MBB , MBBI , DL ) ; while ( MBBI != MBB . end ( ) && MBBI -> getFlag ( MachineInstr :: FrameSetup ) ) ++ MBBI ; determineFrameLayout ( MF ) ; if ( int LibCallRegs = getLibCallID ( MF , MFI . getCalleeSavedInfo ( ) ) + ) { unsigned LibCallFrameSize = alignTo ( ( STI . getXLen ( ) / ) * LibCallRegs , ) ; RVFI -> setLibCallStackSize ( LibCallFrameSize ) ; } uint64_t StackSize = MFI . getStackSize ( ) ; uint64_t RealStackSize = StackSize + RVFI -> getLibCallStackSize ( ) ; if ( RealStackSize == && ! MFI . adjustsStack ( ) ) return ; if ( STI . isRegisterReservedByUser ( SPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( FirstSPAdjustAmount ) { StackSize = FirstSPAdjustAmount ; RealStackSize = FirstSPAdjustAmount ; } adjustReg ( MBB , MBBI , DL , SPReg , SPReg , - StackSize , MachineInstr :: FrameSetup ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: cfiDefCfaOffset ( nullptr , RealStackSize ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; const auto & CSI = MFI . getCalleeSavedInfo ( ) ; std :: advance ( MBBI , getNonLibcallCSI ( CSI ) . size ( ) ) ; for ( const auto & Entry : CSI ) { int FrameIdx = Entry . getFrameIdx ( ) ; int64_t Offset ; if ( FrameIdx < ) Offset = FrameIdx * ( int64_t ) STI . getXLen ( ) / ; else Offset = MFI . getObjectOffset ( Entry . getFrameIdx ( ) ) - RVFI -> getLibCallStackSize ( ) ; Register Reg = Entry . getReg ( ) ; unsigned CFIIndex = MF . addFrameInst ( MCCFIInstruction :: createOffset ( nullptr , RI -> getDwarfRegNum ( Reg , true ) , Offset ) ) ; BuildMI ( MBB , MBBI , DL , TII -> get ( TargetOpcode :: CFI_INSTRUCTION ) ) . addCFIIndex ( CFIIndex ) ; } if ( hasFP ( MF ) ) { if ( STI . isRegisterReservedByUser ( FPReg ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported {" LLVM,RISCV,1498,"Predict the next statement of this code snippet: if ( ! MF . getFunction ( ) . hasFnAttribute ( Attribute :: ShadowCallStack ) ) return ; const auto & STI = MF . getSubtarget < Subtarget > ( ) ; Register RAReg = STI . getRegisterInfo ( ) -> getRARegister ( ) ; std :: vector < CalleeSavedInfo > & CSI = MF . getFrameInfo ( ) . getCalleeSavedInfo ( ) ; if ( std :: none_of ( CSI . begin ( ) , CSI . end ( ) , [ & ] ( CalleeSavedInfo & CSR ) { return CSR . getReg ( ) == RAReg ; } ) ) return ; Register SCSPReg = ( ) ; auto & Ctx = MF . getFunction ( ) . getContext ( ) ; if ( ! STI . isRegisterReservedByUser ( SCSPReg ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ; } const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( RVFI -> useSaveRestoreLibCalls ( MF ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ; }" LLVM,RISCV,1499,"Predict the next statement of this code snippet: Register RAReg = STI . getRegisterInfo ( ) -> getRARegister ( ) ; std :: vector < CalleeSavedInfo > & CSI = MF . getFrameInfo ( ) . getCalleeSavedInfo ( ) ; if ( std :: none_of ( CSI . begin ( ) , CSI . end ( ) , [ & ] ( CalleeSavedInfo & CSR ) { return CSR . getReg ( ) == RAReg ; } ) ) return ; Register SCSPReg = ( ) ; auto & Ctx = MF . getFunction ( ) . getContext ( ) ; if ( ! STI . isRegisterReservedByUser ( SCSPReg ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ; } const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( RVFI -> useSaveRestoreLibCalls ( MF ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ; }" LLVM,RISCV,1500,"Predict the next statement of this code snippet: Register SCSPReg = ( ) ; auto & Ctx = MF . getFunction ( ) . getContext ( ) ; if ( ! STI . isRegisterReservedByUser ( SCSPReg ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ; } const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( RVFI -> useSaveRestoreLibCalls ( MF ) ) { Ctx . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; return ; } const InstrInfo * TII = STI . getInstrInfo ( ) ; bool IsRV64 = STI . hasFeature ( ) ; int64_t SlotSize = STI . getXLen ( ) / ; BuildMI ( MBB , MI , DL , TII -> get ( IsRV64 ? : ) ) . addReg ( RAReg ) . addReg ( SCSPReg ) . addImm ( ) ; BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( SCSPReg , RegState :: Define ) . addReg ( SCSPReg ) . addImm ( SlotSize ) ;" LLVM,RISCV,1501,"Predict the next statement of this code snippet: if ( RVFI -> getLibCallStackSize ( ) ) return ; if ( ! isInt < > ( StackSize ) && ( CSI . size ( ) > ) ) { return - getStackAlign ( ) . value ( ) ; } return ;" LLVM,RISCV,1502,"Predict the next statement of this code snippet: int MinCSFI = ; int MaxCSFI = - ; int Offset = MFI . getObjectOffset ( FI ) - getOffsetOfLocalArea ( ) + MFI . getOffsetAdjustment ( ) ; uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount ( MF ) ; if ( CSI . size ( ) ) { MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } if ( FI >= MinCSFI && FI <= MaxCSFI ) { FrameReg = ; if ( FirstSPAdjustAmount ) Offset += FirstSPAdjustAmount ; else Offset += MFI . getStackSize ( ) ; } else if ( RI -> needsStackRealignment ( MF ) && ! MFI . isFixedObjectIndex ( FI ) ) { if ( hasBP ( MF ) ) FrameReg = ( ) ; else FrameReg = ; Offset += MFI . getStackSize ( ) ; if ( FI < ) Offset += RVFI -> getLibCallStackSize ( ) ; } else { FrameReg = RI -> getFrameRegister ( MF ) ;" LLVM,RISCV,1503,"Predict the next statement of this code snippet: const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( CSI . empty ( ) || ! RVFI -> useSaveRestoreLibCalls ( MF ) ) return - ; Register MaxReg = ; for ( auto & CS : CSI ) if ( CS . getFrameIdx ( ) < ) MaxReg = std :: max ( MaxReg . id ( ) , CS . getReg ( ) ) ; if ( MaxReg == ) return - ; switch ( MaxReg ) { default : llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,1504,"Predict the next statement of this code snippet: static SmallVector < CalleeSavedInfo , > getNonLibcallCSI ( const std :: vector < CalleeSavedInfo > & CSI ) { SmallVector < CalleeSavedInfo , > NonLibcallCSI ;" LLVM,RISCV,1505,"Predict the next statement of this code snippet: static SmallVector < CalleeSavedInfo , > getNonLibcallCSI ( const std :: vector < CalleeSavedInfo > & CSI ) { SmallVector < CalleeSavedInfo , > NonLibcallCSI ; for ( auto & CS : CSI ) if ( CS . getFrameIdx ( ) >= ) NonLibcallCSI . push_back ( CS ) ;" LLVM,RISCV,1506,"Predict the next statement of this code snippet: const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ;" LLVM,RISCV,1507,"Predict the next statement of this code snippet: bool FrameLowering :: hasBP ( const MachineFunction & MF ) const { const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,RISCV,1508,"Predict the next statement of this code snippet: bool FrameLowering :: hasFP ( const MachineFunction & MF ) const { const TargetRegisterInfo * RegInfo = MF . getSubtarget ( ) . getRegisterInfo ( ) ; const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,RISCV,1509,"Predict the next statement of this code snippet: const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; return MF . getTarget ( ) . Options . DisableFramePointerElim ( MF ) || RegInfo -> needsStackRealignment ( MF ) || MFI . hasVarSizedObjects ( ) || MFI . isFrameAddressTaken ( ) ;" LLVM,RISCV,1510,"Predict the next statement of this code snippet: bool FrameLowering :: hasReservedCallFrame ( const MachineFunction & MF ) const {" LLVM,RISCV,1511,"Predict the next statement of this code snippet: int RegScavFI = MFI . CreateStackObject ( RegInfo -> getSpillSize ( * RC ) , RegInfo -> getSpillAlign ( * RC ) , false ) ;" LLVM,RISCV,1512,"Predict the next statement of this code snippet: const TargetRegisterClass * RC = & ; if ( ! isInt < > ( MFI . estimateStackSize ( MF ) ) ) {" LLVM,RISCV,1513,"Predict the next statement of this code snippet: const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const auto & NonLibcallCSI = getNonLibcallCSI ( CSI ) ; for ( auto & CS : reverse ( NonLibcallCSI ) ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ; TII . loadRegFromStackSlot ( MBB , MI , Reg , CS . getFrameIdx ( ) , RC , TRI ) ; assert ( MI != MBB . begin ( ) && ) ; } const char * RestoreLibCall = getRestoreLibCallName ( * MF , CSI ) ;" LLVM,RISCV,1514,"Predict the next statement of this code snippet: explicit FrameLowering ( const Subtarget & STI ) : TargetFrameLowering ( StackGrowsDown , , ) , STI ( STI ) {" LLVM,RISCV,1515,"Predict the next statement of this code snippet: explicit FrameLowering ( const Subtarget & STI ) : TargetFrameLowering ( StackGrowsDown , , ) , STI ( STI ) {" LLVM,RISCV,1516,"Predict the next statement of this code snippet: bool FrameLowering :: spillCalleeSavedRegisters ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MI , ArrayRef < CalleeSavedInfo > CSI , const TargetRegisterInfo * TRI ) const { if ( CSI . empty ( ) ) return true ; MachineFunction * MF = MBB . getParent ( ) ; const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const char * SpillLibCall = getSpillLibCallName ( * MF , CSI ) ; if ( SpillLibCall ) { BuildMI ( MBB , MI , DL , TII . get ( ) , ) . addExternalSymbol ( SpillLibCall , ) . setMIFlag ( MachineInstr :: FrameSetup ) ;" LLVM,RISCV,1517,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; const TargetInstrInfo & TII = * MF -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL ; if ( MI != MBB . end ( ) && ! MI -> isDebugInstr ( ) ) DL = MI -> getDebugLoc ( ) ; const char * SpillLibCall = getSpillLibCallName ( * MF , CSI ) ; if ( SpillLibCall ) { BuildMI ( MBB , MI , DL , TII . get ( ) , ) . addExternalSymbol ( SpillLibCall , ) . setMIFlag ( MachineInstr :: FrameSetup ) ; for ( auto & CS : CSI ) MBB . addLiveIn ( CS . getReg ( ) ) ; } const auto & NonLibcallCSI = getNonLibcallCSI ( CSI ) ; for ( auto & CS : NonLibcallCSI ) { Register Reg = CS . getReg ( ) ; const TargetRegisterClass * RC = TRI -> getMinimalPhysRegClass ( Reg ) ;" LLVM,RISCV,1518,"Predict the next statement of this code snippet: for ( unsigned i = , e = GEP -> getNumOperands ( ) ; i != e ; ++ i , ++ GTI ) { if ( ! Ops [ i ] -> getType ( ) -> isVectorTy ( ) ) continue ; if ( VecOperand ) return std :: make_pair ( nullptr , nullptr ) ; VecOperand = i ; TypeSize TS = DL -> getTypeAllocSize ( GTI . getIndexedType ( ) ) ; if ( TS . isScalable ( ) ) return std :: make_pair ( nullptr , nullptr ) ; TypeScale = TS . getFixedSize ( ) ; } if ( ! VecOperand ) return std :: make_pair ( nullptr , nullptr ) ; Value * VecIndex = Ops [ * VecOperand ] ; Type * VecIntPtrTy = DL -> getIntPtrType ( GEP -> getType ( ) ) ; if ( VecIndex -> getType ( ) != VecIntPtrTy ) return std :: make_pair ( nullptr , nullptr ) ; Value * Stride ; BinaryOperator * Inc ; PHINode * BasePhi ; if ( ! matchStridedRecurrence ( VecIndex , L , Stride , BasePhi , Inc , Builder ) ) return std :: make_pair ( nullptr , nullptr ) ; assert ( BasePhi -> getNumIncomingValues ( ) == && ) ; unsigned IncrementingBlock = BasePhi -> getOperand ( ) == Inc ? : ; assert ( BasePhi -> getIncomingValue ( IncrementingBlock ) == Inc && ) ; Builder . SetInsertPoint ( GEP ) ; Ops [ * VecOperand ] = BasePhi ;" LLVM,RISCV,1519,"Predict the next statement of this code snippet: assert ( BasePhi -> getNumIncomingValues ( ) == && ) ; unsigned IncrementingBlock = BasePhi -> getOperand ( ) == Inc ? : ; assert ( BasePhi -> getIncomingValue ( IncrementingBlock ) == Inc && ) ; Builder . SetInsertPoint ( GEP ) ; Ops [ * VecOperand ] = BasePhi ; Type * SourceTy = GEP -> getSourceElementType ( ) ; Value * BasePtr = Builder . CreateGEP ( SourceTy , Ops [ ] , makeArrayRef ( Ops ) . drop_front ( ) ) ; Builder . SetInsertPoint ( BasePhi -> getIncomingBlock ( - IncrementingBlock ) -> getTerminator ( ) ) ; Type * IntPtrTy = DL -> getIntPtrType ( BasePtr -> getType ( ) ) ; assert ( Stride -> getType ( ) == IntPtrTy && ) ; if ( TypeScale != ) Stride = Builder . CreateMul ( Stride , ConstantInt :: get ( IntPtrTy , TypeScale ) ) ; auto P = std :: make_pair ( BasePtr , Stride ) ; StridedAddrs [ GEP ] = P ;" LLVM,RISCV,1520,"Predict the next statement of this code snippet: for ( Instruction & I : BB ) { IntrinsicInst * II = dyn_cast < IntrinsicInst > ( & I ) ; if ( II && II -> getIntrinsicID ( ) == && isa < FixedVectorType > ( II -> getType ( ) ) ) { Gathers . push_back ( II ) ; } else if ( II && II -> getIntrinsicID ( ) == && isa < FixedVectorType > ( II -> getArgOperand ( ) -> getType ( ) ) ) { Scatters . push_back ( II ) ; } } } for ( auto * II : Gathers ) Changed |= tryCreateStridedLoadStore ( II , II -> getType ( ) , II -> getArgOperand ( ) , II -> getArgOperand ( ) ) ; for ( auto * II : Scatters ) Changed |= tryCreateStridedLoadStore ( II , II -> getArgOperand ( ) -> getType ( ) , II -> getArgOperand ( ) , II -> getArgOperand ( ) ) ; while ( ! MaybeDeadPHIs . empty ( ) ) { if ( auto * Phi = dyn_cast_or_null < PHINode > ( MaybeDeadPHIs . pop_back_val ( ) ) ) RecursivelyDeleteDeadPHINode ( Phi ) ; } return Changed ;" LLVM,RISCV,1521,"Predict the next statement of this code snippet: if ( BO -> getOpcode ( ) == Instruction :: Or && ! haveNoCommonBitsSet ( BO -> getOperand ( ) , BO -> getOperand ( ) , * DL ) ) return false ; Value * OtherOp ; if ( isa < Instruction > ( BO -> getOperand ( ) ) && L -> contains ( cast < Instruction > ( BO -> getOperand ( ) ) ) ) { Index = cast < Instruction > ( BO -> getOperand ( ) ) ; OtherOp = BO -> getOperand ( ) ; } else if ( isa < Instruction > ( BO -> getOperand ( ) ) && L -> contains ( cast < Instruction > ( BO -> getOperand ( ) ) ) ) { Index = cast < Instruction > ( BO -> getOperand ( ) ) ; OtherOp = BO -> getOperand ( ) ; } else { return false ; } if ( ! L -> isLoopInvariant ( OtherOp ) ) return false ; Value * SplatOp = getSplatValue ( OtherOp ) ; if ( ! SplatOp ) return false ; if ( ! matchStridedRecurrence ( Index , L , Stride , BasePtr , Inc , Builder ) ) return false ; unsigned StepIndex = Inc -> getOperand ( ) == BasePtr ? : ; unsigned StartBlock = BasePtr -> getOperand ( ) == Inc ? : ; Value * Step = Inc -> getOperand ( StepIndex ) ; Value * Start = BasePtr -> getOperand ( StartBlock ) ; Builder . SetInsertPoint ( BasePtr -> getIncomingBlock ( StartBlock ) -> getTerminator ( ) ) ; Builder . SetCurrentDebugLocation ( DebugLoc ( ) ) ; switch ( BO -> getOpcode ( ) ) {" LLVM,RISCV,1522,"Predict the next statement of this code snippet: auto & TM = TPC . getTM < TargetMachine > ( ) ; ST = & TM . getSubtarget < Subtarget > ( F ) ; if ( ! ST -> hasStdExtV ( ) || ! ST -> useRVVForFixedLengthVectors ( ) ) return false ; TLI = ST -> getTargetLowering ( ) ; DL = & F . getParent ( ) -> getDataLayout ( ) ; LI = & getAnalysis < LoopInfoWrapperPass > ( ) . getLoopInfo ( ) ; SmallVector < IntrinsicInst * , > Gathers ; SmallVector < IntrinsicInst * , > Scatters ; bool Changed = false ; for ( BasicBlock & BB : F ) { for ( Instruction & I : BB ) { IntrinsicInst * II = dyn_cast < IntrinsicInst > ( & I ) ; if ( II && II -> getIntrinsicID ( ) == && isa < FixedVectorType > ( II -> getType ( ) ) ) { Gathers . push_back ( II ) ; } else if ( II && II -> getIntrinsicID ( ) == && isa < FixedVectorType > ( II -> getArgOperand ( ) -> getType ( ) ) ) { Scatters . push_back ( II ) ; } } } for ( auto * II : Gathers ) Changed |= tryCreateStridedLoadStore ( II , II -> getType ( ) , II -> getArgOperand ( ) , II -> getArgOperand ( ) ) ; for ( auto * II : Scatters ) Changed |= tryCreateStridedLoadStore ( II , II -> getArgOperand ( ) -> getType ( ) , II -> getArgOperand ( ) , II -> getArgOperand ( ) ) ; while ( ! MaybeDeadPHIs . empty ( ) ) { if ( auto * Phi = dyn_cast_or_null < PHINode > ( MaybeDeadPHIs . pop_back_val ( ) ) ) RecursivelyDeleteDeadPHINode ( Phi ) ; } return Changed ;" LLVM,RISCV,1523,"Predict the next statement of this code snippet: SmallVector < IntrinsicInst * , > Scatters ; bool Changed = false ; for ( BasicBlock & BB : F ) { for ( Instruction & I : BB ) { IntrinsicInst * II = dyn_cast < IntrinsicInst > ( & I ) ; if ( II && II -> getIntrinsicID ( ) == && isa < FixedVectorType > ( II -> getType ( ) ) ) { Gathers . push_back ( II ) ; } else if ( II && II -> getIntrinsicID ( ) == && isa < FixedVectorType > ( II -> getArgOperand ( ) -> getType ( ) ) ) { Scatters . push_back ( II ) ; } } } for ( auto * II : Gathers ) Changed |= tryCreateStridedLoadStore ( II , II -> getType ( ) , II -> getArgOperand ( ) , II -> getArgOperand ( ) ) ;" LLVM,RISCV,1524,"Predict the next statement of this code snippet: FunctionPass * llvm :: createGatherScatterLoweringPass ( ) {" LLVM,RISCV,1525,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override { AU . setPreservesCFG ( ) ; AU . addRequired < TargetPassConfig > ( ) ; AU . addRequired < LoopInfoWrapperPass > ( ) ;" LLVM,RISCV,1526,"Predict the next statement of this code snippet: AU . addRequired < TargetPassConfig > ( ) ;" LLVM,RISCV,1527,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,RISCV,1528,"Predict the next statement of this code snippet: Type * ScalarType = DataType -> getScalarType ( ) ; if ( ! TLI -> isLegalElementTypeForRVV ( ScalarType ) ) return false ;" LLVM,RISCV,1529,"Predict the next statement of this code snippet: if ( ! StartVal ) return std :: make_pair ( nullptr , nullptr ) ; APInt StrideVal ( StartVal -> getValue ( ) . getBitWidth ( ) , ) ; ConstantInt * Prev = StartVal ; for ( unsigned i = ; i != NumElts ; ++ i ) { auto * C = dyn_cast_or_null < ConstantInt > ( StartC -> getAggregateElement ( i ) ) ; if ( ! C ) return std :: make_pair ( nullptr , nullptr ) ; APInt LocalStride = C -> getValue ( ) - Prev -> getValue ( ) ; if ( i == ) StrideVal = LocalStride ; else if ( StrideVal != LocalStride ) return std :: make_pair ( nullptr , nullptr ) ; Prev = C ; } Value * Stride = ConstantInt :: get ( StartVal -> getType ( ) , StrideVal ) ;" LLVM,RISCV,1530,"Predict the next statement of this code snippet: return true ; } auto * BO = dyn_cast < BinaryOperator > ( Index ) ; if ( ! BO ) return false ; if ( BO -> getOpcode ( ) != Instruction :: Add && BO -> getOpcode ( ) != Instruction :: Or && BO -> getOpcode ( ) != Instruction :: Mul && BO -> getOpcode ( ) != Instruction :: Shl ) return false ; if ( BO -> getOpcode ( ) == Instruction :: Shl && ! isa < Constant > ( BO -> getOperand ( ) ) ) return false ; if ( BO -> getOpcode ( ) == Instruction :: Or && ! haveNoCommonBitsSet ( BO -> getOperand ( ) , BO -> getOperand ( ) , * DL ) ) return false ; Value * OtherOp ; if ( isa < Instruction > ( BO -> getOperand ( ) ) && L -> contains ( cast < Instruction > ( BO -> getOperand ( ) ) ) ) { Index = cast < Instruction > ( BO -> getOperand ( ) ) ; OtherOp = BO -> getOperand ( ) ; } else if ( isa < Instruction > ( BO -> getOperand ( ) ) && L -> contains ( cast < Instruction > ( BO -> getOperand ( ) ) ) ) { Index = cast < Instruction > ( BO -> getOperand ( ) ) ; OtherOp = BO -> getOperand ( ) ; } else { return false ; } if ( ! L -> isLoopInvariant ( OtherOp ) ) return false ; Value * SplatOp = getSplatValue ( OtherOp ) ; if ( ! SplatOp ) return false ; if ( ! matchStridedRecurrence ( Index , L , Stride , BasePtr , Inc , Builder ) ) return false ; unsigned StepIndex = Inc -> getOperand ( ) == BasePtr ? : ; unsigned StartBlock = BasePtr -> getOperand ( ) == Inc ? : ; Value * Step = Inc -> getOperand ( StepIndex ) ;" LLVM,RISCV,1531,"Predict the next statement of this code snippet: static std :: pair < Value * , Value * > matchStridedStart ( Value * Start , IRBuilder < > & Builder ) { auto * StartC = dyn_cast < Constant > ( Start ) ; if ( StartC ) return matchStridedConstant ( StartC ) ; auto * BO = dyn_cast < BinaryOperator > ( Start ) ; if ( ! BO || BO -> getOpcode ( ) != Instruction :: Add ) return std :: make_pair ( nullptr , nullptr ) ; unsigned OtherIndex = ; Value * Splat = getSplatValue ( BO -> getOperand ( ) ) ; if ( ! Splat ) { Splat = getSplatValue ( BO -> getOperand ( ) ) ; OtherIndex = ; }" LLVM,RISCV,1532,"Predict the next statement of this code snippet: GatherScatterLowering ( ) : FunctionPass ( ID ) {" LLVM,RISCV,1533,"Predict the next statement of this code snippet: GatherScatterLowering ( ) : FunctionPass ( ID ) {" LLVM,RISCV,1534,"Predict the next statement of this code snippet: auto & TPC = getAnalysis < TargetPassConfig > ( ) ; auto & TM = TPC . getTM < TargetMachine > ( ) ; ST = & TM . getSubtarget < Subtarget > ( F ) ; if ( ! ST -> hasVInstructions ( ) || ! ST -> useRVVForFixedLengthVectors ( ) ) return false ; TLI = ST -> getTargetLowering ( ) ; DL = & F . getParent ( ) -> getDataLayout ( ) ; LI = & getAnalysis < LoopInfoWrapperPass > ( ) . getLoopInfo ( ) ; SmallVector < IntrinsicInst * , > Gathers ; SmallVector < IntrinsicInst * , > Scatters ; bool Changed = false ; for ( BasicBlock & BB : F ) { for ( Instruction & I : BB ) { IntrinsicInst * II = dyn_cast < IntrinsicInst > ( & I ) ; if ( II && II -> getIntrinsicID ( ) == && isa < FixedVectorType > ( II -> getType ( ) ) ) { Gathers . push_back ( II ) ;" LLVM,RISCV,1535,"Predict the next statement of this code snippet: bool GatherScatterLowering :: runOnFunction ( Function & F ) { if ( skipFunction ( F ) ) return false ; auto & TPC = getAnalysis < TargetPassConfig > ( ) ; auto & TM = TPC . getTM < TargetMachine > ( ) ; ST = & TM . getSubtarget < Subtarget > ( F ) ; if ( ! ST -> hasVInstructions ( ) || ! ST -> useRVVForFixedLengthVectors ( ) ) return false ; TLI = ST -> getTargetLowering ( ) ; DL = & F . getParent ( ) -> getDataLayout ( ) ;" LLVM,RISCV,1536,"Predict the next statement of this code snippet: if ( ! BasePtr ) return false ; assert ( Stride != nullptr ) ; Builder . SetInsertPoint ( II ) ; CallInst * Call ; if ( II -> getIntrinsicID ( ) == ) Call = Builder . CreateIntrinsic ( , { DataType , BasePtr -> getType ( ) , Stride -> getType ( ) } , { II -> getArgOperand ( ) , BasePtr , Stride , II -> getArgOperand ( ) } ) ; else Call = Builder . CreateIntrinsic ( , { DataType , BasePtr -> getType ( ) , Stride -> getType ( ) } , { II -> getArgOperand ( ) , BasePtr , Stride , II -> getArgOperand ( ) } ) ; Call -> takeName ( II ) ; II -> replaceAllUsesWith ( Call ) ; II -> eraseFromParent ( ) ; if ( GEP -> use_empty ( ) ) RecursivelyDeleteTriviallyDeadInstructions ( GEP ) ; return true ;" LLVM,RISCV,1537,"Predict the next statement of this code snippet: if ( ! BasePtr ) return false ; assert ( Stride != nullptr ) ; Builder . SetInsertPoint ( II ) ; CallInst * Call ; if ( II -> getIntrinsicID ( ) == ) Call = Builder . CreateIntrinsic ( , { DataType , BasePtr -> getType ( ) , Stride -> getType ( ) } , { II -> getArgOperand ( ) , BasePtr , Stride , II -> getArgOperand ( ) } ) ; else Call = Builder . CreateIntrinsic ( , { DataType , BasePtr -> getType ( ) , Stride -> getType ( ) } , { II -> getArgOperand ( ) , BasePtr , Stride , II -> getArgOperand ( ) } ) ; Call -> takeName ( II ) ;" LLVM,RISCV,1538,"Predict the next statement of this code snippet: if ( InstrInfo . hasAVLReg ( ) && InstrInfo . AVLReg == ) { if ( SEW == InstrInfo . SEW ) return true ; } if ( ! hasSameAVL ( InstrInfo ) ) return false ; if ( hasSameVTYPE ( InstrInfo ) ) return true ; if ( InstrInfo . MaskRegOp && hasSameVLMAX ( InstrInfo ) && TailAgnostic == InstrInfo . TailAgnostic && MaskAgnostic == InstrInfo . MaskAgnostic ) return true ;" LLVM,RISCV,1539,"Predict the next statement of this code snippet: assert ( isValid ( ) && ) ;" LLVM,RISCV,1540,"Predict the next statement of this code snippet: if ( CurInfo . isCompatible ( Require ) ) return false ; if ( ! CurInfo . isUnknown ( ) && Require . hasAVLReg ( ) && Require . getAVLReg ( ) . isVirtual ( ) && ! CurInfo . hasSEWLMULRatioOnly ( ) && Require . hasSameVTYPE ( CurInfo ) ) { if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) {" LLVM,RISCV,1541,"Predict the next statement of this code snippet: VSETVLIInfo InstrInfo ; unsigned NumOperands = MI . getNumExplicitOperands ( ) ; bool HasPolicy = ( TSFlags ) ; bool ForceTailAgnostic = ( TSFlags ) ; bool TailAgnostic = true ; if ( HasPolicy ) { const MachineOperand & Op = MI . getOperand ( MI . getNumExplicitOperands ( ) - ) ; TailAgnostic = Op . getImm ( ) & ; } unsigned UseOpIdx ; if ( ! ( ForceTailAgnostic || ( HasPolicy && TailAgnostic ) ) && MI . isRegTiedToUseOperand ( , & UseOpIdx ) ) { TailAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI -> getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ; } } if ( HasPolicy ) -- NumOperands ; VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( NumOperands - ) . getImm ( ) ; bool MaskRegOp = Log2SEW == ; unsigned SEW = Log2SEW ? << Log2SEW : ;" LLVM,RISCV,1542,"Predict the next statement of this code snippet: VSETVLIInfo InstrInfo ; unsigned NumOperands = MI . getNumExplicitOperands ( ) ; bool HasPolicy = ( TSFlags ) ; bool ForceTailAgnostic = ( TSFlags ) ; bool TailAgnostic = true ; if ( HasPolicy ) { const MachineOperand & Op = MI . getOperand ( MI . getNumExplicitOperands ( ) - ) ; TailAgnostic = Op . getImm ( ) & ; } unsigned UseOpIdx ; if ( ! ( ForceTailAgnostic || ( HasPolicy && TailAgnostic ) ) && MI . isRegTiedToUseOperand ( , & UseOpIdx ) ) { TailAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI -> getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ; } } if ( HasPolicy ) -- NumOperands ; VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( NumOperands - ) . getImm ( ) ; bool MaskRegOp = Log2SEW == ; unsigned SEW = Log2SEW ? << Log2SEW : ; assert ( VType :: isValidSEW ( SEW ) && ) ; bool StoreOp = MI . getNumExplicitDefs ( ) == ; bool ScalarMovOp = isScalarMoveInstr ( MI ) ; if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( NumOperands - ) ; if ( VLOp . isImm ( ) ) { int64_t Imm = VLOp . getImm ( ) ; if ( Imm == ) InstrInfo . setAVLReg ( ) ; else InstrInfo . setAVLImm ( Imm ) ; } else { InstrInfo . setAVLReg ( VLOp . getReg ( ) ) ; } } else InstrInfo . setAVLReg ( ) ; InstrInfo . setVTYPE ( VLMul , SEW , TailAgnostic , false , MaskRegOp , StoreOp , ScalarMovOp ) ;" LLVM,RISCV,1543,"Predict the next statement of this code snippet: MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; } MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; if ( ! CurInfo . isValid ( ) ) { assert ( BlockInfo [ MBB . getNumber ( ) ] . Pred . isValid ( ) && ) ; if ( needVSETVLI ( NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) && needVSETVLIPHI ( NewInfo , MBB ) ) { insertVSETVLI ( MBB , MI , NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) ; CurInfo = NewInfo ; } } else { if ( ! canSkipVSETVLIForLoadStore ( MI , NewInfo , CurInfo ) && needVSETVLI ( NewInfo , CurInfo ) ) { bool NeedInsertVSETVLI = true ; if ( PrevVSETVLIMI ) { bool HasSameAVL = CurInfo . hasSameAVL ( NewInfo ) || ( NewInfo . hasAVLReg ( ) && NewInfo . getAVLReg ( ) . isVirtual ( ) && NewInfo . getAVLReg ( ) == PrevVSETVLIMI -> getOperand ( ) . getReg ( ) ) ; if ( HasSameAVL && CurInfo . getSEWLMULRatio ( ) == NewInfo . getSEWLMULRatio ( ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ; NeedInsertVSETVLI = false ; } if ( isScalarMoveInstr ( MI ) && ( ( CurInfo . hasNonZeroAVL ( ) && NewInfo . hasNonZeroAVL ( ) ) || ( CurInfo . hasZeroAVL ( ) && NewInfo . hasZeroAVL ( ) ) ) && NewInfo . hasSameVLMAX ( CurInfo ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ; NeedInsertVSETVLI = false ; } } if ( NeedInsertVSETVLI ) insertVSETVLI ( MBB , MI , NewInfo , CurInfo ) ; CurInfo = NewInfo ; } } PrevVSETVLIMI = nullptr ; }" LLVM,RISCV,1544,"Predict the next statement of this code snippet: if ( PrevVSETVLIMI ) { bool HasSameAVL = CurInfo . hasSameAVL ( NewInfo ) || ( NewInfo . hasAVLReg ( ) && NewInfo . getAVLReg ( ) . isVirtual ( ) && NewInfo . getAVLReg ( ) == PrevVSETVLIMI -> getOperand ( ) . getReg ( ) ) ; if ( HasSameAVL && CurInfo . getSEWLMULRatio ( ) == NewInfo . getSEWLMULRatio ( ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ; NeedInsertVSETVLI = false ; } if ( isScalarMoveInstr ( MI ) && ( ( CurInfo . hasNonZeroAVL ( ) && NewInfo . hasNonZeroAVL ( ) ) || ( CurInfo . hasZeroAVL ( ) && NewInfo . hasZeroAVL ( ) ) ) && NewInfo . hasSameVLMAX ( CurInfo ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ; NeedInsertVSETVLI = false ; } } if ( NeedInsertVSETVLI ) insertVSETVLI ( MBB , MI , NewInfo , CurInfo ) ; CurInfo = NewInfo ; } } PrevVSETVLIMI = nullptr ; } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) { CurInfo = ( ) ; PrevVSETVLIMI = nullptr ;" LLVM,RISCV,1545,"Predict the next statement of this code snippet: if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) { if ( DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == ) { VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( DefInfo . hasSameAVL ( CurInfo ) && DefInfo . hasSameVTYPE ( CurInfo ) ) return false ;" LLVM,RISCV,1546,"Predict the next statement of this code snippet: Register AVLReg = Require . getAVLReg ( ) ; if ( ! AVLReg . isVirtual ( ) ) return true ; MachineInstr * PHI = MRI -> getVRegDef ( AVLReg ) ; if ( ! PHI || PHI -> getOpcode ( ) != || PHI -> getParent ( ) != & MBB ) return true ; for ( unsigned PHIOp = , NumOps = PHI -> getNumOperands ( ) ; PHIOp != NumOps ; PHIOp += ) { Register InReg = PHI -> getOperand ( PHIOp ) . getReg ( ) ; MachineBasicBlock * PBB = PHI -> getOperand ( PHIOp + ) . getMBB ( ) ;" LLVM,RISCV,1547,"Predict the next statement of this code snippet: if ( PBBInfo . Exit . isUnknown ( ) || ! PBBInfo . Exit . hasCompatibleVTYPE ( Require , false ) ) return true ; MachineInstr * DefMI = MRI -> getVRegDef ( InReg ) ; if ( ! DefMI || ( DefMI -> getOpcode ( ) != && DefMI -> getOpcode ( ) != && DefMI -> getOpcode ( ) != ) ) return true ; VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( ! DefInfo . hasSameAVL ( PBBInfo . Exit ) || ! DefInfo . hasSameVTYPE ( PBBInfo . Exit ) ) return true ;" LLVM,RISCV,1548,"Predict the next statement of this code snippet: } if ( HasPolicy ) -- NumOperands ; VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( NumOperands - ) . getImm ( ) ; bool MaskRegOp = Log2SEW == ; unsigned SEW = Log2SEW ? << Log2SEW : ; assert ( VType :: isValidSEW ( SEW ) && ) ; bool StoreOp = MI . getNumExplicitDefs ( ) == ; bool ScalarMovOp = isScalarMoveInstr ( MI ) ; if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( NumOperands - ) ; if ( VLOp . isImm ( ) ) { int64_t Imm = VLOp . getImm ( ) ; if ( Imm == ) InstrInfo . setAVLReg ( ) ; else InstrInfo . setAVLImm ( Imm ) ; } else { InstrInfo . setAVLReg ( VLOp . getReg ( ) ) ; }" LLVM,RISCV,1549,"Predict the next statement of this code snippet: if ( isVectorConfigInstr ( MI ) ) { HadVectorOp = true ; BBInfo . Change = getInfoForVSETVLI ( MI ) ; continue ; } uint64_t TSFlags = MI . getDesc ( ) . TSFlags ; if ( ( TSFlags ) ) { HadVectorOp = true ; VSETVLIInfo NewInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; if ( ! BBInfo . Change . isValid ( ) ) { BBInfo . Change = NewInfo ; } else { if ( ! canSkipVSETVLIForLoadStore ( MI , NewInfo , BBInfo . Change ) && needVSETVLI ( NewInfo , BBInfo . Change ) ) BBInfo . Change = NewInfo ; } } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) { BBInfo . Change = ( ) ; }" LLVM,RISCV,1550,"Predict the next statement of this code snippet: MachineOperand & VLOp = MI . getOperand ( MI . getNumExplicitOperands ( ) - Offset ) ; if ( VLOp . isReg ( ) ) { VLOp . setReg ( ) ; VLOp . setIsKill ( false ) ; } MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; } MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; if ( ! CurInfo . isValid ( ) ) { assert ( BlockInfo [ MBB . getNumber ( ) ] . Pred . isValid ( ) && ) ; if ( needVSETVLI ( NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) && needVSETVLIPHI ( NewInfo , MBB ) ) { insertVSETVLI ( MBB , MI , NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) ; CurInfo = NewInfo ; } } else { if ( ! canSkipVSETVLIForLoadStore ( MI , NewInfo , CurInfo ) && needVSETVLI ( NewInfo , CurInfo ) ) { bool NeedInsertVSETVLI = true ; if ( PrevVSETVLIMI ) { bool HasSameAVL = CurInfo . hasSameAVL ( NewInfo ) || ( NewInfo . hasAVLReg ( ) && NewInfo . getAVLReg ( ) . isVirtual ( ) && NewInfo . getAVLReg ( ) == PrevVSETVLIMI -> getOperand ( ) . getReg ( ) ) ; if ( HasSameAVL && CurInfo . getSEWLMULRatio ( ) == NewInfo . getSEWLMULRatio ( ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ;" LLVM,RISCV,1551,"Predict the next statement of this code snippet: bool hasCompatibleVTYPE ( const VSETVLIInfo & InstrInfo , bool Strict ) const { if ( hasSameVTYPE ( InstrInfo ) ) return true ; if ( Strict ) return false ; if ( InstrInfo . MaskRegOp && hasSameVLMAX ( InstrInfo ) && TailAgnostic == InstrInfo . TailAgnostic && MaskAgnostic == InstrInfo . MaskAgnostic ) return true ; return false ;" LLVM,RISCV,1552,"Predict the next statement of this code snippet: if ( InstrInfo . MaskRegOp && hasSameVLMAX ( InstrInfo ) && TailAgnostic == InstrInfo . TailAgnostic && MaskAgnostic == InstrInfo . MaskAgnostic ) return true ;" LLVM,RISCV,1553,"Predict the next statement of this code snippet: if ( hasAVLReg ( ) ) return getAVLReg ( ) == ;" LLVM,RISCV,1554,"Predict the next statement of this code snippet: bool hasSamePolicy ( const VSETVLIInfo & Other ) const {" LLVM,RISCV,1555,"Predict the next statement of this code snippet: bool hasSameSEW ( const VSETVLIInfo & Other ) const { assert ( isValid ( ) && Other . isValid ( ) && ) ;" LLVM,RISCV,1556,"Predict the next statement of this code snippet: if ( hasAVLImm ( ) ) return getAVLImm ( ) == ; return false ;" LLVM,RISCV,1557,"Predict the next statement of this code snippet: assert ( ! InstrInfo . SEWLMULRatioOnly && ) ; if ( isUnknown ( ) || InstrInfo . isUnknown ( ) ) return false ; if ( SEWLMULRatioOnly ) return false ; if ( ! Strict && InstrInfo . hasAVLReg ( ) && InstrInfo . AVLReg == ) {" LLVM,RISCV,1558,"Predict the next statement of this code snippet: default : return false ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : return true ; }" LLVM,RISCV,1559,"Predict the next statement of this code snippet: return MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ;" LLVM,RISCV,1560,"Predict the next statement of this code snippet: if ( ! CurInfo . isUnknown ( ) && Require . hasAVLReg ( ) && Require . getAVLReg ( ) . isVirtual ( ) && ! CurInfo . hasSEWLMULRatioOnly ( ) && CurInfo . hasCompatibleVTYPE ( Require , false ) ) { if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) { if ( isVectorConfigInstr ( * DefMI ) ) { VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( DefInfo . hasSameAVL ( CurInfo ) && DefInfo . hasSameVTYPE ( CurInfo ) ) return false ; } }" LLVM,RISCV,1561,"Predict the next statement of this code snippet: bool InsertVSETVLI :: needVSETVLIPHI ( const VSETVLIInfo & Require , const MachineBasicBlock & MBB ) { if ( DisableInsertVSETVLPHIOpt ) return true ; if ( ! Require . hasAVLReg ( ) ) return true ; Register AVLReg = Require . getAVLReg ( ) ; if ( ! AVLReg . isVirtual ( ) ) return true ; MachineInstr * PHI = MRI -> getVRegDef ( AVLReg ) ; if ( ! PHI || PHI -> getOpcode ( ) != || PHI -> getParent ( ) != & MBB ) return true ; for ( unsigned PHIOp = , NumOps = PHI -> getNumOperands ( ) ; PHIOp != NumOps ; PHIOp += ) {" LLVM,RISCV,1562,"Predict the next statement of this code snippet: if ( ! Require . hasAVLReg ( ) ) return true ; Register AVLReg = Require . getAVLReg ( ) ; if ( ! AVLReg . isVirtual ( ) ) return true ; MachineInstr * PHI = MRI -> getVRegDef ( AVLReg ) ; if ( ! PHI || PHI -> getOpcode ( ) != || PHI -> getParent ( ) != & MBB ) return true ; for ( unsigned PHIOp = , NumOps = PHI -> getNumOperands ( ) ; PHIOp != NumOps ; PHIOp += ) { Register InReg = PHI -> getOperand ( PHIOp ) . getReg ( ) ; MachineBasicBlock * PBB = PHI -> getOperand ( PHIOp + ) . getMBB ( ) ;" LLVM,RISCV,1563,"Predict the next statement of this code snippet: bool InsertVSETVLI :: runOnMachineFunction ( MachineFunction & MF ) { const Subtarget & ST = MF . getSubtarget < Subtarget > ( ) ; if ( ! ST . hasVInstructions ( ) ) return false ; TII = ST . getInstrInfo ( ) ; MRI = & MF . getRegInfo ( ) ; assert ( BlockInfo . empty ( ) && ) ; BlockInfo . resize ( MF . getNumBlockIDs ( ) ) ; bool HaveVectorOp = false ; for ( const MachineBasicBlock & MBB : MF ) HaveVectorOp |= computeVLVTYPEChanges ( MBB ) ; if ( HaveVectorOp ) { for ( const MachineBasicBlock & MBB : MF ) {" LLVM,RISCV,1564,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) , TailAgnostic ( false ) , MaskAgnostic ( false ) , MaskRegOp ( false ) , StoreOp ( false ) , ScalarMovOp ( false ) , SEWLMULRatioOnly ( false ) {" LLVM,RISCV,1565,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) , TailAgnostic ( false ) , MaskAgnostic ( false ) , MaskRegOp ( false ) , StoreOp ( false ) , ScalarMovOp ( false ) , SEWLMULRatioOnly ( false ) {" LLVM,RISCV,1566,"Predict the next statement of this code snippet: if ( ! CurInfo . isValid ( ) ) { assert ( BlockInfo [ MBB . getNumber ( ) ] . Pred . isValid ( ) && ) ; if ( ! ( BBLocalInfo . isValid ( ) && canSkipVSETVLIForLoadStore ( MI , NewInfo , BBLocalInfo ) ) && needVSETVLI ( NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) && needVSETVLIPHI ( NewInfo , MBB ) ) { insertVSETVLI ( MBB , MI , NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) ; CurInfo = NewInfo ; BBLocalInfo = NewInfo ; } if ( ! BBLocalInfo . isValid ( ) ) BBLocalInfo = NewInfo ; } else { assert ( BBLocalInfo . isValid ( ) ) ; if ( ! canSkipVSETVLIForLoadStore ( MI , NewInfo , CurInfo ) && needVSETVLI ( NewInfo , CurInfo ) ) { bool NeedInsertVSETVLI = true ; if ( PrevVSETVLIMI ) { bool HasSameAVL = CurInfo . hasSameAVL ( NewInfo ) || ( NewInfo . hasAVLReg ( ) && NewInfo . getAVLReg ( ) . isVirtual ( ) && NewInfo . getAVLReg ( ) == PrevVSETVLIMI -> getOperand ( ) . getReg ( ) ) ; if ( HasSameAVL && CurInfo . getSEWLMULRatio ( ) == NewInfo . getSEWLMULRatio ( ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ; NeedInsertVSETVLI = false ; } if ( isScalarMoveInstr ( MI ) && ( ( CurInfo . hasNonZeroAVL ( ) && NewInfo . hasNonZeroAVL ( ) ) || ( CurInfo . hasZeroAVL ( ) && NewInfo . hasZeroAVL ( ) ) ) && NewInfo . hasSameVLMAX ( CurInfo ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ; NeedInsertVSETVLI = false ; } } if ( NeedInsertVSETVLI ) insertVSETVLI ( MBB , MI , NewInfo , CurInfo ) ; CurInfo = NewInfo ; BBLocalInfo = NewInfo ; } } PrevVSETVLIMI = nullptr ; } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) { CurInfo = ( ) ;" LLVM,RISCV,1567,"Predict the next statement of this code snippet: } if ( ! hasSameAVL ( InstrInfo ) ) return false ; if ( hasCompatibleVTYPE ( InstrInfo , Strict ) ) return true ; if ( Strict ) return false ;" LLVM,RISCV,1568,"Predict the next statement of this code snippet: if ( SEWLMULRatioOnly ) return false ; if ( ! Strict && InstrInfo . hasAVLReg ( ) && InstrInfo . AVLReg == ) { if ( SEW == InstrInfo . SEW ) return true ; } if ( ! hasSameAVL ( InstrInfo ) ) return false ;" LLVM,RISCV,1569,"Predict the next statement of this code snippet: bool TailAgnostic = true ; bool UsesMaskPolicy = ( TSFlags ) ; bool MaskAgnostic = UsesMaskPolicy ; unsigned UseOpIdx ; if ( HasPolicy ) { const MachineOperand & Op = MI . getOperand ( MI . getNumExplicitOperands ( ) - ) ; uint64_t Policy = Op . getImm ( ) ; assert ( Policy <= ( | ) && ) ; TailAgnostic = Policy & ; MaskAgnostic = Policy & ; } else if ( MI . isRegTiedToUseOperand ( , & UseOpIdx ) ) { TailAgnostic = false ; if ( UsesMaskPolicy ) MaskAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI -> getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) { TailAgnostic = true ; if ( UsesMaskPolicy ) MaskAgnostic = true ; } } if ( ( TSFlags ) ) TailAgnostic = true ; } if ( HasPolicy ) -- NumOperands ; VLMul = ( TSFlags ) ;" LLVM,RISCV,1570,"Predict the next statement of this code snippet: const MachineOperand & Op = MI . getOperand ( MI . getNumExplicitOperands ( ) - ) ; TailAgnostic = Op . getImm ( ) & ; } unsigned UseOpIdx ; if ( ! ( ForceTailAgnostic || ( HasPolicy && TailAgnostic ) ) && MI . isRegTiedToUseOperand ( , & UseOpIdx ) ) { TailAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI -> getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ; } } if ( HasPolicy ) -- NumOperands ; VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( NumOperands - ) . getImm ( ) ;" LLVM,RISCV,1571,"Predict the next statement of this code snippet: bool TailAgnostic = true ; if ( HasPolicy ) { const MachineOperand & Op = MI . getOperand ( MI . getNumExplicitOperands ( ) - ) ; TailAgnostic = Op . getImm ( ) & ; } unsigned UseOpIdx ; if ( ! ( ForceTailAgnostic || ( HasPolicy && TailAgnostic ) ) && MI . isRegTiedToUseOperand ( , & UseOpIdx ) ) { TailAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI -> getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ; } } if ( HasPolicy ) -- NumOperands ; VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( NumOperands - ) . getImm ( ) ; bool MaskRegOp = Log2SEW == ; unsigned SEW = Log2SEW ? << Log2SEW : ; assert ( VType :: isValidSEW ( SEW ) && ) ; if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( NumOperands - ) ;" LLVM,RISCV,1572,"Predict the next statement of this code snippet: } if ( ! hasSameVTYPE ( InstrInfo ) && ! ( InstrInfo . MaskRegOp && hasSameVLMAX ( InstrInfo ) && TailAgnostic == InstrInfo . TailAgnostic && MaskAgnostic == InstrInfo . MaskAgnostic ) ) return false ; return hasSameAVL ( InstrInfo ) ;" LLVM,RISCV,1573,"Predict the next statement of this code snippet: if ( isUnknown ( ) || hasSEWLMULRatioOnly ( ) ) return false ; if ( ! hasSameAVL ( InstrInfo ) ) return false ;" LLVM,RISCV,1574,"Predict the next statement of this code snippet: if ( isUnknown ( ) || hasSEWLMULRatioOnly ( ) ) return false ; if ( ! hasSameAVL ( InstrInfo ) ) return false ; if ( TailAgnostic != InstrInfo . TailAgnostic || MaskAgnostic != InstrInfo . MaskAgnostic ) return false ;" LLVM,RISCV,1575,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) , TailAgnostic ( false ) , MaskAgnostic ( false ) , MaskRegOp ( false ) , SEWLMULRatioOnly ( false ) {" LLVM,RISCV,1576,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) , TailAgnostic ( false ) , MaskAgnostic ( false ) , MaskRegOp ( false ) , SEWLMULRatioOnly ( false ) {" LLVM,RISCV,1577,"Predict the next statement of this code snippet: BBInfo . InQueue = false ; VSETVLIInfo InInfo ; if ( MBB . pred_empty ( ) ) { InInfo . setUnknown ( ) ; } else { for ( MachineBasicBlock * P : MBB . predecessors ( ) ) InInfo = InInfo . intersect ( BlockInfo [ P -> getNumber ( ) ] . Exit ) ; }" LLVM,RISCV,1578,"Predict the next statement of this code snippet: if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) { TailAgnostic = true ; if ( UsesMaskPolicy ) MaskAgnostic = true ; } } if ( ( TSFlags ) ) TailAgnostic = true ; } VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( getSEWOpNum ( MI ) ) . getImm ( ) ; bool MaskRegOp = Log2SEW == ; unsigned SEW = Log2SEW ? << Log2SEW : ; assert ( VType :: isValidSEW ( SEW ) && ) ; bool StoreOp = MI . getNumExplicitDefs ( ) == ; bool ScalarMovOp = isScalarMoveInstr ( MI ) ; if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( getVLOpNum ( MI ) ) ; if ( VLOp . isImm ( ) ) { int64_t Imm = VLOp . getImm ( ) ; if ( Imm == ) InstrInfo . setAVLReg ( ) ; else InstrInfo . setAVLImm ( Imm ) ; } else { InstrInfo . setAVLReg ( VLOp . getReg ( ) ) ; }" LLVM,RISCV,1579,"Predict the next statement of this code snippet: if ( UseMI && UseMI -> isImplicitDef ( ) ) { TailAgnostic = true ; if ( UsesMaskPolicy ) MaskAgnostic = true ; } } if ( ( TSFlags ) ) TailAgnostic = true ; } VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( getSEWOpNum ( MI ) ) . getImm ( ) ; bool MaskRegOp = Log2SEW == ; unsigned SEW = Log2SEW ? << Log2SEW : ; assert ( VType :: isValidSEW ( SEW ) && ) ; bool StoreOp = MI . getNumExplicitDefs ( ) == ; bool ScalarMovOp = isScalarMoveInstr ( MI ) ; if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( getVLOpNum ( MI ) ) ; if ( VLOp . isImm ( ) ) { int64_t Imm = VLOp . getImm ( ) ; if ( Imm == ) InstrInfo . setAVLReg ( ) ;" LLVM,RISCV,1580,"Predict the next statement of this code snippet: bool InsertVSETVLI :: computeVLVTYPEChanges ( const MachineBasicBlock & MBB ) { bool HadVectorOp = false ; BlockData & BBInfo = BlockInfo [ MBB . getNumber ( ) ] ; BBInfo . Change = BBInfo . Pred ; for ( const MachineInstr & MI : MBB ) { if ( isVectorConfigInstr ( MI ) ) { HadVectorOp = true ; BBInfo . Change = getInfoForVSETVLI ( MI ) ; continue ; } uint64_t TSFlags = MI . getDesc ( ) . TSFlags ; if ( ( TSFlags ) ) { HadVectorOp = true ; VSETVLIInfo NewInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; if ( ! BBInfo . Change . isValid ( ) ) { BBInfo . Change = NewInfo ; } else { if ( needVSETVLI ( MI , NewInfo , BBInfo . Change ) ) BBInfo . Change = NewInfo ; }" LLVM,RISCV,1581,"Predict the next statement of this code snippet: if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . readsRegister ( ) ) UsedVL = true ; if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . readsRegister ( ) ) UsedVTYPE = true ; if ( ! isVectorConfigInstr ( MI ) ) continue ; if ( PrevMI ) { if ( ! UsedVL && ! UsedVTYPE ) { ToDelete . push_back ( PrevMI ) ; } else if ( ! UsedVTYPE && isVLPreservingConfig ( MI ) ) { PrevMI -> getOperand ( ) . setImm ( MI . getOperand ( ) . getImm ( ) ) ; ToDelete . push_back ( & MI ) ; continue ; } } PrevMI = & MI ; UsedVL = false ; UsedVTYPE = false ; Register VRegDef = MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,1582,"Predict the next statement of this code snippet: if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . readsRegister ( ) ) UsedVTYPE = true ; if ( ! isVectorConfigInstr ( MI ) ) continue ; if ( PrevMI ) { if ( ! UsedVL && ! UsedVTYPE ) { ToDelete . push_back ( PrevMI ) ; } else if ( ! UsedVTYPE && isVLPreservingConfig ( MI ) ) { PrevMI -> getOperand ( ) . setImm ( MI . getOperand ( ) . getImm ( ) ) ; ToDelete . push_back ( & MI ) ; continue ;" LLVM,RISCV,1583,"Predict the next statement of this code snippet: } } if ( Require . hasAVLReg ( ) && Require . getAVLReg ( ) . isVirtual ( ) ) { if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) { if ( isVectorConfigInstr ( * DefMI ) ) { VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( DefInfo . hasSameVLMAX ( Require ) && ( DefInfo . hasAVLImm ( ) || DefInfo . getAVLReg ( ) == ) ) { MachineOperand & VLOp = MI . getOperand ( getVLOpNum ( MI ) ) ; if ( DefInfo . hasAVLImm ( ) ) VLOp . ChangeToImmediate ( DefInfo . getAVLImm ( ) ) ; else VLOp . ChangeToRegister ( DefInfo . getAVLReg ( ) , false ) ; CurInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; continue ; } } } } } CurInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; continue ; }" LLVM,RISCV,1584,"Predict the next statement of this code snippet: if ( ( TSFlags ) ) { if ( AvailableInfo != computeInfoForInstr ( MI , TSFlags , MRI ) ) return ; Found = true ; break ; } } if ( ! Found ) return ; auto OldInfo = BlockInfo [ UnavailablePred -> getNumber ( ) ] . Exit ; LLVM_DEBUG ( dbgs ( ) << << MBB . getName ( ) << << UnavailablePred -> getName ( ) << << AvailableInfo << ) ; BlockInfo [ UnavailablePred -> getNumber ( ) ] . Exit = AvailableInfo ; BlockInfo [ MBB . getNumber ( ) ] . Pred = AvailableInfo ;" LLVM,RISCV,1585,"Predict the next statement of this code snippet: VSETVLIInfo AvailableInfo ; for ( MachineBasicBlock * P : MBB . predecessors ( ) ) { const VSETVLIInfo & PredInfo = BlockInfo [ P -> getNumber ( ) ] . Exit ; if ( PredInfo . isUnknown ( ) ) { if ( UnavailablePred ) return ; UnavailablePred = P ; } else if ( ! AvailableInfo . isValid ( ) ) { AvailableInfo = PredInfo ; } else if ( AvailableInfo != PredInfo ) { return ; } } if ( ! UnavailablePred || ! AvailableInfo . isValid ( ) ) return ; if ( UnavailablePred -> succ_size ( ) != ) return ; if ( ! hasFixedResult ( AvailableInfo , ST ) ) return ; bool Found = false ; for ( auto & MI : MBB ) {" LLVM,RISCV,1586,"Predict the next statement of this code snippet: print ( dbgs ( ) ) ; dbgs ( ) << ;" LLVM,RISCV,1587,"Predict the next statement of this code snippet: print ( dbgs ( ) ) ; dbgs ( ) << ;" LLVM,RISCV,1588,"Predict the next statement of this code snippet: MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; } MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; if ( ! CurInfo . isValid ( ) ) { CurInfo = BlockInfo [ MBB . getNumber ( ) ] . Pred ; assert ( CurInfo . isValid ( ) && ) ; if ( needVSETVLI ( NewInfo , CurInfo ) ) { if ( needVSETVLIPHI ( NewInfo , MBB ) ) insertVSETVLI ( MBB , MI , NewInfo , CurInfo ) ; CurInfo = NewInfo ; } } else { if ( needVSETVLI ( MI , NewInfo , CurInfo ) ) { insertVSETVLI ( MBB , MI , NewInfo , CurInfo ) ; CurInfo = NewInfo ; } } } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) { CurInfo = ( ) ; } } if ( ! UseStrictAsserts ) { const VSETVLIInfo & ExitInfo = BlockInfo [ MBB . getNumber ( ) ] . Exit ; if ( CurInfo . isValid ( ) && ExitInfo . isValid ( ) && ! ExitInfo . isUnknown ( ) && CurInfo != ExitInfo ) { auto InsertPt = MBB . getFirstInstrTerminator ( ) ; insertVSETVLI ( MBB , InsertPt , MBB . findDebugLoc ( InsertPt ) , ExitInfo , CurInfo ) ; CurInfo = ExitInfo ; } }" LLVM,RISCV,1589,"Predict the next statement of this code snippet: unsigned getSEW ( ) const { return SEW ;" LLVM,RISCV,1590,"Predict the next statement of this code snippet: unsigned getSEW ( ) const { return SEW ;" LLVM,RISCV,1591,"Predict the next statement of this code snippet: getVLMUL ( ) const { return VLMul ;" LLVM,RISCV,1592,"Predict the next statement of this code snippet: return VLMul ;" LLVM,RISCV,1593,"Predict the next statement of this code snippet: static unsigned getVLOpNum ( const MachineInstr & MI ) { return ( MI . getDesc ( ) ) ;" LLVM,RISCV,1594,"Predict the next statement of this code snippet: if ( hasSameVTYPE ( Require ) ) return true ;" LLVM,RISCV,1595,"Predict the next statement of this code snippet: bool hasCompatibleVTYPE ( const VSETVLIInfo & Require ) const { if ( hasSameVTYPE ( Require ) ) return true ;" LLVM,RISCV,1596,"Predict the next statement of this code snippet: static bool hasFixedResult ( const VSETVLIInfo & Info , const Subtarget & ST ) { if ( ! Info . hasAVLImm ( ) ) return == Info . getAVLReg ( ) ;" LLVM,RISCV,1597,"Predict the next statement of this code snippet: BuildMI ( MBB , InsertPt , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addImm ( Info . getAVLImm ( ) ) . addImm ( Info . encodeVTYPE ( ) ) ; return ; } Register AVLReg = Info . getAVLReg ( ) ; if ( AVLReg == ) { if ( PrevInfo . isValid ( ) && ! PrevInfo . isUnknown ( ) && Info . hasSameVLMAX ( PrevInfo ) ) { BuildMI ( MBB , InsertPt , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) . addImm ( Info . encodeVTYPE ( ) ) . addReg ( , RegState :: Implicit ) ; return ; }" LLVM,RISCV,1598,"Predict the next statement of this code snippet: if ( SEWLMULRatioOnly ) return false ; if ( Require . hasAVLReg ( ) && Require . AVLReg == ) if ( SEW == Require . SEW ) return true ; if ( Require . ScalarMovOp && Require . hasAVLImm ( ) && ( ( hasNonZeroAVL ( ) && Require . hasNonZeroAVL ( ) ) || ( hasZeroAVL ( ) && Require . hasZeroAVL ( ) ) ) && hasSameSEW ( Require ) && hasSamePolicy ( Require ) ) return true ; if ( ! hasSameAVL ( Require ) ) return false ; if ( hasCompatibleVTYPE ( Require ) ) return true ; if ( Require . StoreOp && VLMul == Require . VLMul && SEW == Require . SEW ) return true ;" LLVM,RISCV,1599,"Predict the next statement of this code snippet: if ( ! hasSameAVL ( Require ) ) return false ;" LLVM,RISCV,1600,"Predict the next statement of this code snippet: assert ( == MI . getOperand ( ) . getReg ( ) ) ;" LLVM,RISCV,1601,"Predict the next statement of this code snippet: static bool isVLPreservingConfig ( const MachineInstr & MI ) { if ( MI . getOpcode ( ) != ) return false ;" LLVM,RISCV,1602,"Predict the next statement of this code snippet: bool InsertVSETVLI :: needVSETVLI ( const MachineInstr & MI , const VSETVLIInfo & Require , const VSETVLIInfo & CurInfo ) const { if ( ! needVSETVLI ( Require , CurInfo ) ) return false ; return ! canSkipVSETVLIForLoadStore ( MI , Require , CurInfo ) ;" LLVM,RISCV,1603,"Predict the next statement of this code snippet: const BlockData & PBBInfo = BlockInfo [ PBB -> getNumber ( ) ] ; if ( PBBInfo . Exit . isUnknown ( ) || ! PBBInfo . Exit . hasCompatibleVTYPE ( Require ) ) return true ; MachineInstr * DefMI = MRI -> getVRegDef ( InReg ) ; if ( ! DefMI || ! isVectorConfigInstr ( * DefMI ) ) return true ; VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( ! DefInfo . hasSameAVL ( PBBInfo . Exit ) || ! DefInfo . hasSameVTYPE ( PBBInfo . Exit ) ) return true ;" LLVM,RISCV,1604,"Predict the next statement of this code snippet: if ( hasAVLReg ( ) ) OS << << ( unsigned ) AVLReg ; if ( hasAVLImm ( ) ) OS << << ( unsigned ) AVLImm ;" LLVM,RISCV,1605,"Predict the next statement of this code snippet: assert ( BlockInfo . empty ( ) && ) ; BlockInfo . resize ( MF . getNumBlockIDs ( ) ) ; for ( MachineBasicBlock & MBB : MF ) doLocalPrepass ( MBB ) ; bool HaveVectorOp = false ; for ( const MachineBasicBlock & MBB : MF ) { HaveVectorOp |= computeVLVTYPEChanges ( MBB ) ; BlockData & BBInfo = BlockInfo [ MBB . getNumber ( ) ] ; BBInfo . Exit = BBInfo . Change ; LLVM_DEBUG ( dbgs ( ) << << printMBBReference ( MBB ) << << BBInfo . Exit << ) ; } if ( ! HaveVectorOp ) { BlockInfo . clear ( ) ; return false ; } for ( const MachineBasicBlock & MBB : MF ) { WorkList . push ( & MBB ) ; BlockInfo [ MBB . getNumber ( ) ] . InQueue = true ; } while ( ! WorkList . empty ( ) ) { const MachineBasicBlock & MBB = * WorkList . front ( ) ; WorkList . pop ( ) ; computeIncomingVLVTYPE ( MBB ) ; } for ( MachineBasicBlock & MBB : MF ) doPRE ( MBB ) ; for ( MachineBasicBlock & MBB : MF ) emitVSETVLIs ( MBB ) ; for ( MachineBasicBlock & MBB : MF ) doLocalPostpass ( MBB ) ; for ( MachineBasicBlock & MBB : MF ) { for ( MachineInstr & MI : MBB ) { if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) {" LLVM,RISCV,1606,"Predict the next statement of this code snippet: UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ; } } if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( MI . getNumExplicitOperands ( ) - ) ; if ( VLOp . isImm ( ) ) InstrInfo . setAVLImm ( VLOp . getImm ( ) ) ; else InstrInfo . setAVLReg ( VLOp . getReg ( ) ) ; } else InstrInfo . setAVLReg ( ) ; InstrInfo . setVTYPE ( VLMul , SEW , TailAgnostic , false ) ;" LLVM,RISCV,1607,"Predict the next statement of this code snippet: if ( ! BBInfo . Change . isValid ( ) ) { BBInfo . Change = NewInfo ; } else { if ( needVSETVLI ( NewInfo , BBInfo . Change ) ) BBInfo . Change = NewInfo ; } } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) {" LLVM,RISCV,1608,"Predict the next statement of this code snippet: BlockData & BBInfo = BlockInfo [ MBB . getNumber ( ) ] ; for ( const MachineInstr & MI : MBB ) { if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { HadVectorOp = true ; BBInfo . Change = getInfoForVSETVLI ( MI ) ; continue ; } uint64_t TSFlags = MI . getDesc ( ) . TSFlags ; if ( ( TSFlags ) ) { HadVectorOp = true ; VSETVLIInfo NewInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; if ( ! BBInfo . Change . isValid ( ) ) { BBInfo . Change = NewInfo ; } else { if ( needVSETVLI ( NewInfo , BBInfo . Change ) ) BBInfo . Change = NewInfo ; } } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) { BBInfo . Change = ( ) ; }" LLVM,RISCV,1609,"Predict the next statement of this code snippet: MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; if ( ! CurInfo . isValid ( ) ) { assert ( BlockInfo [ MBB . getNumber ( ) ] . Pred . isValid ( ) && ) ; if ( needVSETVLI ( NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) ) { insertVSETVLI ( MBB , MI , NewInfo ) ; CurInfo = NewInfo ; } } else { if ( needVSETVLI ( NewInfo , CurInfo ) ) { insertVSETVLI ( MBB , MI , NewInfo ) ; CurInfo = NewInfo ; } } } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) { CurInfo = ( ) ; }" LLVM,RISCV,1610,"Predict the next statement of this code snippet: return VType :: encodeVTYPE ( VLMul , SEW , TailAgnostic , MaskAgnostic ) ;" LLVM,RISCV,1611,"Predict the next statement of this code snippet: return VType :: encodeVTYPE ( VLMul , SEW , TailAgnostic , MaskAgnostic ) ;" LLVM,RISCV,1612,"Predict the next statement of this code snippet: NewInfo . setAVLReg ( AVLReg ) ; } else { assert ( MI . getOpcode ( ) == ) ; NewInfo . setAVLImm ( MI . getOperand ( ) . getImm ( ) ) ; } NewInfo . setVTYPE ( MI . getOperand ( ) . getImm ( ) ) ; return NewInfo ;" LLVM,RISCV,1613,"Predict the next statement of this code snippet: bool hasSameVTYPE ( const VSETVLIInfo & Other ) const { assert ( isValid ( ) && Other . isValid ( ) && ) ;" LLVM,RISCV,1614,"Predict the next statement of this code snippet: BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) . addImm ( Info . encodeVTYPE ( ) ) . addReg ( , RegState :: Implicit ) ; return ; } Register DestReg = ; if ( AVLReg == ) DestReg = MRI -> createVirtualRegister ( & ) ;" LLVM,RISCV,1615,"Predict the next statement of this code snippet: if ( * this == Other ) return * this ;" LLVM,RISCV,1616,"Predict the next statement of this code snippet: if ( ! isValid ( ) ) return Other ; if ( * this == Other ) return * this ; return ( ) ;" LLVM,RISCV,1617,"Predict the next statement of this code snippet: if ( hasAVLImm ( ) != Other . hasAVLImm ( ) ) return false ; if ( hasAVLImm ( ) ) return getAVLImm ( ) == Other . getAVLImm ( ) ;" LLVM,RISCV,1618,"Predict the next statement of this code snippet: if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) { if ( DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == ) { VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( DefInfo . hasSameAVL ( CurInfo ) && DefInfo . hasSameVTYPE ( CurInfo ) ) return false ; } }" LLVM,RISCV,1619,"Predict the next statement of this code snippet: void setVTYPE ( L , unsigned S , bool TA , bool MA ) { assert ( isValid ( ) && ! isUnknown ( ) && ) ;" LLVM,RISCV,1620,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) {" LLVM,RISCV,1621,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) {" LLVM,RISCV,1622,"Predict the next statement of this code snippet: if ( ( TSFlags ) ) { HadVectorOp = true ; VSETVLIInfo NewInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; if ( ! BBInfo . Change . isValid ( ) ) { BBInfo . Change = NewInfo ; } else { if ( ! canSkipVSETVLIForLoadStore ( MI , NewInfo , BBInfo . Change ) && needVSETVLI ( NewInfo , BBInfo . Change ) ) BBInfo . Change = NewInfo ; } } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) {" LLVM,RISCV,1623,"Predict the next statement of this code snippet: DebugLoc DL = MI . getDebugLoc ( ) ; if ( PrevInfo . isValid ( ) && ! PrevInfo . isUnknown ( ) && Info . hasSameAVL ( PrevInfo ) && Info . hasSameVLMAX ( PrevInfo ) ) { BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) . addImm ( Info . encodeVTYPE ( ) ) . addReg ( , RegState :: Implicit ) ; return ; } if ( Info . hasAVLImm ( ) ) { BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addImm ( Info . getAVLImm ( ) ) . addImm ( Info . encodeVTYPE ( ) ) ;" LLVM,RISCV,1624,"Predict the next statement of this code snippet: return ; } if ( Info . hasAVLImm ( ) ) { BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addImm ( Info . getAVLImm ( ) ) . addImm ( Info . encodeVTYPE ( ) ) ; return ; } Register AVLReg = Info . getAVLReg ( ) ; if ( AVLReg == ) { if ( PrevInfo . isValid ( ) && ! PrevInfo . isUnknown ( ) && Info . hasSameVLMAX ( PrevInfo ) ) { BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) . addImm ( Info . encodeVTYPE ( ) ) . addReg ( , RegState :: Implicit ) ; return ; }" LLVM,RISCV,1625,"Predict the next statement of this code snippet: if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) { if ( DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == ) { VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ;" LLVM,RISCV,1626,"Predict the next statement of this code snippet: Register InReg = PHI -> getOperand ( PHIOp ) . getReg ( ) ; MachineBasicBlock * PBB = PHI -> getOperand ( PHIOp + ) . getMBB ( ) ; const BlockData & PBBInfo = BlockInfo [ PBB -> getNumber ( ) ] ; if ( PBBInfo . Exit . isUnknown ( ) || ! PBBInfo . Exit . hasSameVTYPE ( Require ) ) return true ; MachineInstr * DefMI = MRI -> getVRegDef ( InReg ) ;" LLVM,RISCV,1627,"Predict the next statement of this code snippet: MachineBasicBlock * PBB = PHI -> getOperand ( PHIOp + ) . getMBB ( ) ; const BlockData & PBBInfo = BlockInfo [ PBB -> getNumber ( ) ] ; if ( PBBInfo . Exit . isUnknown ( ) || ! PBBInfo . Exit . hasSameVTYPE ( Require ) ) return true ; MachineInstr * DefMI = MRI -> getVRegDef ( InReg ) ; if ( ! DefMI || ( DefMI -> getOpcode ( ) != && DefMI -> getOpcode ( ) != ) ) return true ; VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( ! DefInfo . hasSameAVL ( PBBInfo . Exit ) || ! DefInfo . hasSameVTYPE ( PBBInfo . Exit ) ) return true ; } return false ;" LLVM,RISCV,1628,"Predict the next statement of this code snippet: TailAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI -> getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ; } } if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( MI . getNumExplicitOperands ( ) - ) ; if ( VLOp . isImm ( ) ) InstrInfo . setAVLImm ( VLOp . getImm ( ) ) ; else InstrInfo . setAVLReg ( VLOp . getReg ( ) ) ; } else InstrInfo . setAVLReg ( ) ; InstrInfo . setVTYPE ( VLMul , SEW , TailAgnostic , false , MaskRegOp ) ;" LLVM,RISCV,1629,"Predict the next statement of this code snippet: std :: tie ( LMul , Fractional ) = VType :: decodeVLMUL ( VLMul ) ; LMul = Fractional ? ( / LMul ) : ( LMul * ) ;" LLVM,RISCV,1630,"Predict the next statement of this code snippet: BlockData ( ) {" LLVM,RISCV,1631,"Predict the next statement of this code snippet: BlockData ( ) {" LLVM,RISCV,1632,"Predict the next statement of this code snippet: VSETVLIInfo InInfo ; if ( MBB . pred_empty ( ) ) { InInfo . setUnknown ( ) ; } else { for ( MachineBasicBlock * P : MBB . predecessors ( ) ) InInfo = InInfo . intersect ( BlockInfo [ P -> getNumber ( ) ] . Exit ) ; } if ( ! InInfo . isValid ( ) ) return ; BBInfo . Pred = InInfo ; VSETVLIInfo TmpStatus = BBInfo . Pred . merge ( BBInfo . Change ) ; if ( BBInfo . Exit == TmpStatus ) return ; BBInfo . Exit = TmpStatus ;" LLVM,RISCV,1633,"Predict the next statement of this code snippet: if ( HasPolicy ) -- NumOperands ; VLMul = ( TSFlags ) ; unsigned Log2SEW = MI . getOperand ( NumOperands - ) . getImm ( ) ; bool MaskRegOp = Log2SEW == ; unsigned SEW = Log2SEW ? << Log2SEW : ; assert ( VType :: isValidSEW ( SEW ) && ) ; bool StoreOp = MI . getNumExplicitDefs ( ) == ; if ( ( TSFlags ) ) { const MachineOperand & VLOp = MI . getOperand ( NumOperands - ) ; if ( VLOp . isImm ( ) ) {" LLVM,RISCV,1634,"Predict the next statement of this code snippet: if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { HadVectorOp = true ; BBInfo . Change = getInfoForVSETVLI ( MI ) ; continue ; } uint64_t TSFlags = MI . getDesc ( ) . TSFlags ; if ( ( TSFlags ) ) { HadVectorOp = true ; VSETVLIInfo NewInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; if ( ! BBInfo . Change . isValid ( ) ) { BBInfo . Change = NewInfo ;" LLVM,RISCV,1635,"Predict the next statement of this code snippet: HadVectorOp = true ; VSETVLIInfo NewInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; if ( ! BBInfo . Change . isValid ( ) ) { BBInfo . Change = NewInfo ; } else { if ( ! canSkipVSETVLIForLoadStore ( MI , NewInfo , BBInfo . Change ) && needVSETVLI ( NewInfo , BBInfo . Change ) ) BBInfo . Change = NewInfo ; } } if ( MI . isCall ( ) || MI . isInlineAsm ( ) || MI . modifiesRegister ( ) || MI . modifiesRegister ( ) ) { BBInfo . Change = ( ) ;" LLVM,RISCV,1636,"Predict the next statement of this code snippet: FunctionPass * llvm :: createInsertVSETVLIPass ( ) {" LLVM,RISCV,1637,"Predict the next statement of this code snippet: return new InsertVSETVLI ( ) ;" LLVM,RISCV,1638,"Predict the next statement of this code snippet: if ( ! Register :: isVirtualRegister ( MI -> getOperand ( ) . getReg ( ) ) ) return nullptr ; MI = MRI -> getVRegDef ( MI -> getOperand ( ) . getReg ( ) ) ; if ( ! MI ) return nullptr ;" LLVM,RISCV,1639,"Predict the next statement of this code snippet: static MachineInstr * elideCopies ( MachineInstr * MI , const MachineRegisterInfo * MRI ) { while ( true ) {" LLVM,RISCV,1640,"Predict the next statement of this code snippet: MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; } MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; if ( ! CurInfo . isValid ( ) ) { assert ( BlockInfo [ MBB . getNumber ( ) ] . Pred . isValid ( ) && ) ; if ( needVSETVLI ( NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) && needVSETVLIPHI ( NewInfo , MBB ) ) { insertVSETVLI ( MBB , MI , NewInfo , BlockInfo [ MBB . getNumber ( ) ] . Pred ) ; CurInfo = NewInfo ; } } else { if ( ! canSkipVSETVLIForLoadStore ( MI , NewInfo , CurInfo ) && needVSETVLI ( NewInfo , CurInfo ) ) { bool NeedInsertVSETVLI = true ; if ( PrevVSETVLIMI ) { bool HasSameAVL = CurInfo . hasSameAVL ( NewInfo ) || ( NewInfo . hasAVLReg ( ) && NewInfo . getAVLReg ( ) . isVirtual ( ) && NewInfo . getAVLReg ( ) == PrevVSETVLIMI -> getOperand ( ) . getReg ( ) ) ; if ( HasSameAVL && CurInfo . getSEWLMULRatio ( ) == NewInfo . getSEWLMULRatio ( ) ) { PrevVSETVLIMI -> getOperand ( ) . setImm ( NewInfo . encodeVTYPE ( ) ) ; NeedInsertVSETVLI = false ; } } if ( NeedInsertVSETVLI ) insertVSETVLI ( MBB , MI , NewInfo , CurInfo ) ; CurInfo = NewInfo ; } }" LLVM,RISCV,1641,"Predict the next statement of this code snippet: if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { assert ( MI . getOperand ( ) . getReg ( ) == && MI . getOperand ( ) . getReg ( ) == && ) ; MI . getOperand ( ) . setIsDead ( false ) ; MI . getOperand ( ) . setIsDead ( false ) ; CurInfo = getInfoForVSETVLI ( MI ) ; PrevVSETVLIMI = & MI ; continue ; } uint64_t TSFlags = MI . getDesc ( ) . TSFlags ; if ( ( TSFlags ) ) { VSETVLIInfo NewInfo = computeInfoForInstr ( MI , TSFlags , MRI ) ; if ( ( TSFlags ) ) { unsigned Offset = ; if ( ( TSFlags ) ) Offset = ; MachineOperand & VLOp = MI . getOperand ( MI . getNumExplicitOperands ( ) - Offset ) ; if ( VLOp . isReg ( ) ) { VLOp . setReg ( ) ; VLOp . setIsKill ( false ) ; } MI . addOperand ( MachineOperand :: CreateReg ( , false , true ) ) ; }" LLVM,RISCV,1642,"Predict the next statement of this code snippet: assert ( hasAVLImm ( ) ) ; return AVLImm ;" LLVM,RISCV,1643,"Predict the next statement of this code snippet: unsigned getAVLImm ( ) const { assert ( hasAVLImm ( ) ) ; return AVLImm ;" LLVM,RISCV,1644,"Predict the next statement of this code snippet: assert ( hasAVLReg ( ) ) ; return AVLReg ;" LLVM,RISCV,1645,"Predict the next statement of this code snippet: assert ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) ; Register AVLReg = MI . getOperand ( ) . getReg ( ) ; assert ( ( AVLReg != || MI . getOperand ( ) . getReg ( ) != ) && ) ; NewInfo . setAVLReg ( AVLReg ) ;" LLVM,RISCV,1646,"Predict the next statement of this code snippet: static VSETVLIInfo getInfoForVSETVLI ( const MachineInstr & MI ) { VSETVLIInfo NewInfo ; if ( MI . getOpcode ( ) == ) { NewInfo . setAVLImm ( MI . getOperand ( ) . getImm ( ) ) ; } else { assert ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) ; Register AVLReg = MI . getOperand ( ) . getReg ( ) ; assert ( ( AVLReg != || MI . getOperand ( ) . getReg ( ) != ) && ) ; NewInfo . setAVLReg ( AVLReg ) ; } NewInfo . setVTYPE ( MI . getOperand ( ) . getImm ( ) ) ;" LLVM,RISCV,1647,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return _INSERT_VSETVLI_NAME ;" LLVM,RISCV,1648,"Predict the next statement of this code snippet: return _INSERT_VSETVLI_NAME ;" LLVM,RISCV,1649,"Predict the next statement of this code snippet: unsigned getSEWLMULRatio ( ) const {" LLVM,RISCV,1650,"Predict the next statement of this code snippet: assert ( isValid ( ) && ! isUnknown ( ) && ) ; return getSEWLMULRatio ( SEW , VLMul ) ;" LLVM,RISCV,1651,"Predict the next statement of this code snippet: Info . setUnknown ( ) ; return Info ;" LLVM,RISCV,1652,"Predict the next statement of this code snippet: bool hasAVLImm ( ) const { return State == AVLIsImm ;" LLVM,RISCV,1653,"Predict the next statement of this code snippet: bool hasAVLImm ( ) const { return State == AVLIsImm ;" LLVM,RISCV,1654,"Predict the next statement of this code snippet: return State == AVLIsReg ;" LLVM,RISCV,1655,"Predict the next statement of this code snippet: assert ( ! isUnknown ( ) && ! Other . isUnknown ( ) && ) ; if ( hasAVLReg ( ) && Other . hasAVLReg ( ) ) return getAVLReg ( ) == Other . getAVLReg ( ) ; if ( hasAVLImm ( ) && Other . hasAVLImm ( ) ) return getAVLImm ( ) == Other . getAVLImm ( ) ; return false ;" LLVM,RISCV,1656,"Predict the next statement of this code snippet: if ( hasAVLReg ( ) && Other . hasAVLReg ( ) ) return getAVLReg ( ) == Other . getAVLReg ( ) ; if ( hasAVLImm ( ) && Other . hasAVLImm ( ) ) return getAVLImm ( ) == Other . getAVLImm ( ) ;" LLVM,RISCV,1657,"Predict the next statement of this code snippet: bool hasSameVLMAX ( const VSETVLIInfo & Other ) const { assert ( isValid ( ) && Other . isValid ( ) && ) ;" LLVM,RISCV,1658,"Predict the next statement of this code snippet: assert ( ! isUnknown ( ) && ! Other . isUnknown ( ) && ) ; return getSEWLMULRatio ( ) == Other . getSEWLMULRatio ( ) ;" LLVM,RISCV,1659,"Predict the next statement of this code snippet: bool hasSameVTYPE ( const VSETVLIInfo & Other ) const { assert ( isValid ( ) && Other . isValid ( ) && ) ; assert ( ! isUnknown ( ) && ! Other . isUnknown ( ) && ) ; assert ( ! SEWLMULRatioOnly && ! Other . SEWLMULRatioOnly && ) ; return std :: tie ( VLMul , SEW , TailAgnostic , MaskAgnostic ) == std :: tie ( Other . VLMul , Other . SEW , Other . TailAgnostic , Other . MaskAgnostic ) ;" LLVM,RISCV,1660,"Predict the next statement of this code snippet: bool hasSEWLMULRatioOnly ( ) const { return SEWLMULRatioOnly ;" LLVM,RISCV,1661,"Predict the next statement of this code snippet: return ; } if ( Info . hasAVLImm ( ) ) { BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addImm ( Info . getAVLImm ( ) ) . addImm ( Info . encodeVTYPE ( ) ) ; return ; } Register AVLReg = Info . getAVLReg ( ) ; if ( AVLReg == ) { if ( PrevInfo . isValid ( ) && ! PrevInfo . isUnknown ( ) && Info . hasSameVLMAX ( PrevInfo ) ) { BuildMI ( MBB , MI , DL , TII -> get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) . addImm ( Info . encodeVTYPE ( ) ) . addReg ( , RegState :: Implicit ) ; return ; }" LLVM,RISCV,1662,"Predict the next statement of this code snippet: VSETVLIInfo intersect ( const VSETVLIInfo & Other ) const { if ( ! Other . isValid ( ) ) return * this ;" LLVM,RISCV,1663,"Predict the next statement of this code snippet: if ( hasSameVTYPE ( InstrInfo ) ) return true ; if ( Strict ) return false ; if ( InstrInfo . MaskRegOp && hasSameVLMAX ( InstrInfo ) && TailAgnostic == InstrInfo . TailAgnostic && MaskAgnostic == InstrInfo . MaskAgnostic ) return true ;" LLVM,RISCV,1664,"Predict the next statement of this code snippet: assert ( EEW == InstrInfo . SEW && ) ; if ( isUnknown ( ) || hasSEWLMULRatioOnly ( ) ) return false ; if ( ! hasSameAVL ( InstrInfo ) ) return false ;" LLVM,RISCV,1665,"Predict the next statement of this code snippet: bool isUnknown ( ) const {" LLVM,RISCV,1666,"Predict the next statement of this code snippet: bool isUnknown ( ) const {" LLVM,RISCV,1667,"Predict the next statement of this code snippet: bool isValid ( ) const {" LLVM,RISCV,1668,"Predict the next statement of this code snippet: if ( isCompatible ( Other , true ) ) return * this ; return Other ;" LLVM,RISCV,1669,"Predict the next statement of this code snippet: VSETVLIInfo merge ( const VSETVLIInfo & Other ) const { assert ( isValid ( ) && ) ; if ( ! Other . isValid ( ) ) return * this ; if ( isCompatible ( Other , true ) ) return * this ; return Other ;" LLVM,RISCV,1670,"Predict the next statement of this code snippet: bool InsertVSETVLI :: needVSETVLI ( const VSETVLIInfo & Require , const VSETVLIInfo & CurInfo ) { if ( CurInfo . isCompatible ( Require , false ) ) return false ; if ( ! CurInfo . isUnknown ( ) && Require . hasAVLReg ( ) && Require . getAVLReg ( ) . isVirtual ( ) && ! CurInfo . hasSEWLMULRatioOnly ( ) && Require . hasSameVTYPE ( CurInfo ) ) { if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) { if ( DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == ) {" LLVM,RISCV,1671,"Predict the next statement of this code snippet: if ( MachineInstr * DefMI = MRI -> getVRegDef ( Require . getAVLReg ( ) ) ) { if ( DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == || DefMI -> getOpcode ( ) == ) { VSETVLIInfo DefInfo = getInfoForVSETVLI ( * DefMI ) ; if ( DefInfo . hasSameAVL ( CurInfo ) && DefInfo . hasSameVTYPE ( CurInfo ) ) return false ; } } }" LLVM,RISCV,1672,"Predict the next statement of this code snippet: if ( DisableInsertVSETVLPHIOpt ) return true ; if ( ! Require . hasAVLReg ( ) ) return true ; Register AVLReg = Require . getAVLReg ( ) ; if ( ! AVLReg . isVirtual ( ) ) return true ; MachineInstr * PHI = MRI -> getVRegDef ( AVLReg ) ; if ( ! PHI || PHI -> getOpcode ( ) != || PHI -> getParent ( ) != & MBB ) return true ; for ( unsigned PHIOp = , NumOps = PHI -> getNumOperands ( ) ; PHIOp != NumOps ; PHIOp += ) { Register InReg = PHI -> getOperand ( PHIOp ) . getReg ( ) ; MachineBasicBlock * PBB = PHI -> getOperand ( PHIOp + ) . getMBB ( ) ;" LLVM,RISCV,1673,"Predict the next statement of this code snippet: initializeInsertVSETVLIPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,RISCV,1674,"Predict the next statement of this code snippet: InsertVSETVLI ( ) : MachineFunctionPass ( ID ) { initializeInsertVSETVLIPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,RISCV,1675,"Predict the next statement of this code snippet: const Subtarget & ST = MF . getSubtarget < Subtarget > ( ) ; if ( ! ST . hasStdExtV ( ) ) return false ; TII = ST . getInstrInfo ( ) ; MRI = & MF . getRegInfo ( ) ; assert ( BlockInfo . empty ( ) && ) ; BlockInfo . resize ( MF . getNumBlockIDs ( ) ) ; bool HaveVectorOp = false ; for ( const MachineBasicBlock & MBB : MF ) HaveVectorOp |= computeVLVTYPEChanges ( MBB ) ; if ( HaveVectorOp ) { for ( const MachineBasicBlock & MBB : MF ) {" LLVM,RISCV,1676,"Predict the next statement of this code snippet: void setAVLImm ( unsigned Imm ) { AVLImm = Imm ;" LLVM,RISCV,1677,"Predict the next statement of this code snippet: AVLReg = Reg ;" LLVM,RISCV,1678,"Predict the next statement of this code snippet: void setAVLReg ( Register Reg ) {" LLVM,RISCV,1679,"Predict the next statement of this code snippet: void setUnknown ( ) { State = Unknown ;" LLVM,RISCV,1680,"Predict the next statement of this code snippet: void setVTYPE ( L , unsigned S , bool TA , bool MA , bool MRO , bool IsStore ) { assert ( isValid ( ) && ! isUnknown ( ) && ) ; VLMul = L ; SEW = S ; TailAgnostic = TA ; MaskAgnostic = MA ; MaskRegOp = MRO ; StoreOp = IsStore ;" LLVM,RISCV,1681,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) , TailAgnostic ( false ) , MaskAgnostic ( false ) , MaskRegOp ( false ) , StoreOp ( false ) , SEWLMULRatioOnly ( false ) {" LLVM,RISCV,1682,"Predict the next statement of this code snippet: VSETVLIInfo ( ) : AVLImm ( ) , TailAgnostic ( false ) , MaskAgnostic ( false ) , MaskRegOp ( false ) , StoreOp ( false ) , SEWLMULRatioOnly ( false ) {" LLVM,RISCV,1683,"Predict the next statement of this code snippet: uint64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ;" LLVM,RISCV,1684,"Predict the next statement of this code snippet: O << '(' ; O << getRegisterName ( Base ) << ')' ;" LLVM,RISCV,1685,"Predict the next statement of this code snippet: void InstPrinter :: printBDAddrOperand ( const MCInst * MI , int OpNum , raw_ostream & O ) {" LLVM,RISCV,1686,"Predict the next statement of this code snippet: void InstPrinter :: printBDXAddrOperand ( const MCInst * MI , int OpNum , raw_ostream & O ) {" LLVM,RISCV,1687,"Predict the next statement of this code snippet: void InstPrinter :: printBranchTarget ( const MCInst * MI , int opNum , raw_ostream & OS ) { if ( MI -> getOperand ( opNum ) . isImm ( ) ) { OS << ; } printOperand ( MI , opNum , OS ) ;" LLVM,RISCV,1688,"Predict the next statement of this code snippet: void InstPrinter :: printBranchTarget ( const MCInst * MI , int opNum , raw_ostream & OS ) { if ( MI -> getOperand ( opNum ) . isImm ( ) ) { OS << ;" LLVM,RISCV,1689,"Predict the next statement of this code snippet: void InstPrinter :: printCallOperand ( const MCInst * MI , int OpNum , raw_ostream & O ) { printOperand ( MI , OpNum , O ) ;" LLVM,RISCV,1690,"Predict the next statement of this code snippet: static const char * const CondNames [ ] = { , , , , , , , , , , , , , } ; uint64_t Imm = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( Imm > && Imm < && ) ;" LLVM,RISCV,1691,"Predict the next statement of this code snippet: switch ( Kind ) { default : llvm_unreachable ( ) ; case MCSymbolRefExpr :: VK_None : break ; case MCSymbolRefExpr :: VK_Mips_ABS_HI : OS << ; break ; case MCSymbolRefExpr :: VK_Mips_ABS_LO : OS << ; break ; case MCSymbolRefExpr :: VK_Mips_TPREL_HI : OS << ; break ; case MCSymbolRefExpr :: VK_Mips_TPREL_LO : OS << ; break ; } OS << SRE -> getSymbol ( ) ; if ( Offset ) { if ( Offset > ) OS << '+' ; OS << Offset ; } if ( Kind != MCSymbolRefExpr :: VK_None ) OS << ')' ;" LLVM,RISCV,1692,"Predict the next statement of this code snippet: void InstPrinter :: printInst ( const MCInst * MI , raw_ostream & O , StringRef Annot , const MCSubtargetInfo & STI ) { printInstruction ( MI , O ) ;" LLVM,RISCV,1693,"Predict the next statement of this code snippet: void InstPrinter :: printInst ( const MCInst * MI , raw_ostream & O , StringRef Annot , const MCSubtargetInfo & STI ) { printInstruction ( MI , O ) ; printAnnotation ( O , Annot ) ;" LLVM,RISCV,1694,"Predict the next statement of this code snippet: void InstPrinter :: printMemOperand ( const MCInst * MI , int opNum , raw_ostream & OS ) { printOperand ( MI , opNum , OS ) ; OS << ; OS << getRegisterName ( MI -> getOperand ( opNum + ) . getReg ( ) ) ; OS << ;" LLVM,RISCV,1695,"Predict the next statement of this code snippet: OS << ; OS << ; OS << getRegisterName ( MI -> getOperand ( opNum ) . getReg ( ) ) ;" LLVM,RISCV,1696,"Predict the next statement of this code snippet: printOperand ( MI -> getOperand ( OpNum ) , O ) ;" LLVM,RISCV,1697,"Predict the next statement of this code snippet: printOperand ( MI -> getOperand ( OpNum ) , O ) ;" LLVM,RISCV,1698,"Predict the next statement of this code snippet: void InstPrinter :: printRegName ( raw_ostream & O , unsigned RegNo ) const {" LLVM,RISCV,1699,"Predict the next statement of this code snippet: if ( MI -> getOperand ( OpNum ) . isImm ( ) ) {" LLVM,RISCV,1700,"Predict the next statement of this code snippet: void InstPrinter :: printS20ImmOperand ( const MCInst * MI , int OpNum , raw_ostream & O ) { if ( MI -> getOperand ( OpNum ) . isImm ( ) ) { int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( isInt < > ( Value ) && ) ;" LLVM,RISCV,1701,"Predict the next statement of this code snippet: if ( MI -> getOperand ( OpNum ) . isImm ( ) ) { int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( isInt < > ( Value ) && ) ; O << Value ; } else printOperand ( MI , OpNum , O ) ;" LLVM,RISCV,1702,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( isInt < > ( Value ) && ) ; O << Value ;" LLVM,RISCV,1703,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( isInt < > ( Value ) && ) ; O << Value ; } else printOperand ( MI , OpNum , O ) ;" LLVM,RISCV,1704,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ;" LLVM,RISCV,1705,"Predict the next statement of this code snippet: assert ( isUInt < > ( Value ) && ) ; O << Value ;" LLVM,RISCV,1706,"Predict the next statement of this code snippet: if ( MI -> getOperand ( OpNum ) . isImm ( ) ) { int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ;" LLVM,RISCV,1707,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( isUInt < > ( Value ) && ) ; O << Value ;" LLVM,RISCV,1708,"Predict the next statement of this code snippet: if ( MI -> getOperand ( OpNum ) . isImm ( ) ) { int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ;" LLVM,RISCV,1709,"Predict the next statement of this code snippet: assert ( MO . isReg ( ) && ) ; O << ; printRegName ( O , MO . getReg ( ) ) ;" LLVM,RISCV,1710,"Predict the next statement of this code snippet: const MCOperand & MO = MI -> getOperand ( OpNo ) ; assert ( MO . isReg ( ) && ) ; O << ;" LLVM,RISCV,1711,"Predict the next statement of this code snippet: void InstPrinter :: printFenceArg ( const MCInst * MI , unsigned OpNo , raw_ostream & O ) { unsigned FenceArg = MI -> getOperand ( OpNo ) . getImm ( ) ; if ( ( FenceArg & ) != ) O << 'i' ; if ( ( FenceArg & ) != ) O << 'o' ; if ( ( FenceArg & ) != ) O << 'r' ; if ( ( FenceArg & ) != ) O << 'w' ;" LLVM,RISCV,1712,"Predict the next statement of this code snippet: unsigned FenceArg = MI -> getOperand ( OpNo ) . getImm ( ) ; if ( ( FenceArg & ) != ) O << 'i' ;" LLVM,RISCV,1713,"Predict the next statement of this code snippet: assert ( ( Modifier == || Modifier [ ] == ) && ) ; const MCOperand & MO = MI -> getOperand ( OpNo ) ; if ( MO . isReg ( ) ) { printRegName ( O , MO . getReg ( ) ) ; return ; } if ( MO . isImm ( ) ) { O << MO . getImm ( ) ; return ;" LLVM,RISCV,1714,"Predict the next statement of this code snippet: assert ( MO . isImm ( ) && ) ;" LLVM,RISCV,1715,"Predict the next statement of this code snippet: const MCOperand & MO = MI -> getOperand ( OpNo ) ; assert ( MO . isImm ( ) && ) ; O << MO . getImm ( ) + ;" LLVM,RISCV,1716,"Predict the next statement of this code snippet: unsigned Lmul = Imm & ; Lmul = << Lmul ; Sew = << ( Sew + ) ; O << << Sew << << Lmul ;" LLVM,RISCV,1717,"Predict the next statement of this code snippet: void InstPrinter :: printInst ( const MCInst * MI , raw_ostream & O , StringRef Annot , const MCSubtargetInfo & STI ) { bool Res = false ; const MCInst * NewMI = MI ; MCInst UncompressedMI ; if ( ! NoAliases ) Res = uncompressInst ( UncompressedMI , * MI , MRI , STI ) ; if ( Res ) NewMI = const_cast < MCInst * > ( & UncompressedMI ) ; if ( NoAliases || ! printAliasInstr ( NewMI , STI , O ) ) printInstruction ( NewMI , STI , O ) ;" LLVM,RISCV,1718,"Predict the next statement of this code snippet: O << << Lmul ; } else { Lmul = << Lmul ; O << << Lmul ; } bool TailAgnostic = Imm & ; bool MaskedoffAgnostic = Imm & ; if ( TailAgnostic ) O << ; else O << ;" LLVM,RISCV,1719,"Predict the next statement of this code snippet: void InstPrinter :: printSpecialCapRegister ( const MCInst * MI , unsigned OpNo , const MCSubtargetInfo & STI , raw_ostream & O ) { unsigned Imm = MI -> getOperand ( OpNo ) . getImm ( ) ;" LLVM,RISCV,1720,"Predict the next statement of this code snippet: unsigned Imm = MI -> getOperand ( OpNo ) . getImm ( ) ; auto SpecialCapReg = ( Imm ) ; if ( SpecialCapReg ) O << SpecialCapReg -> Name ;" LLVM,RISCV,1721,"Predict the next statement of this code snippet: if ( Opt == ) { NoAliases = true ; return true ; } if ( Opt == ) {" LLVM,RISCV,1722,"Predict the next statement of this code snippet: const MCOperand & MO = MI -> getOperand ( OpNo ) ; assert ( MO . isReg ( ) && ) ;" LLVM,RISCV,1723,"Predict the next statement of this code snippet: unsigned FenceArg = MI -> getOperand ( OpNo ) . getImm ( ) ; assert ( ( ( FenceArg >> ) == ) && ) ; if ( ( FenceArg & ) != ) O << 'i' ; if ( ( FenceArg & ) != ) O << 'o' ;" LLVM,RISCV,1724,"Predict the next statement of this code snippet: if ( Res ) NewMI = const_cast < MCInst * > ( & UncompressedMI ) ; if ( NoAliases || ! printAliasInstr ( NewMI , Address , STI , O ) ) printInstruction ( NewMI , Address , STI , O ) ; printAnnotation ( O , Annot ) ;" LLVM,RISCV,1725,"Predict the next statement of this code snippet: bool Res = false ; const MCInst * NewMI = MI ; MCInst UncompressedMI ;" LLVM,RISCV,1726,"Predict the next statement of this code snippet: void InstPrinter :: printOperand ( const MCInst * MI , unsigned OpNo , const MCSubtargetInfo & STI , raw_ostream & O , const char * Modifier ) { assert ( ( Modifier == || Modifier [ ] == ) && ) ; const MCOperand & MO = MI -> getOperand ( OpNo ) ; if ( MO . isReg ( ) ) { printRegName ( O , MO . getReg ( ) ) ; return ;" LLVM,RISCV,1727,"Predict the next statement of this code snippet: void InstPrinter :: printVTypeI ( const MCInst * MI , unsigned OpNo , const MCSubtargetInfo & STI , raw_ostream & O ) { unsigned Imm = MI -> getOperand ( OpNo ) . getImm ( ) ;" LLVM,RISCV,1728,"Predict the next statement of this code snippet: unsigned Imm = MI -> getOperand ( OpNo ) . getImm ( ) ; VType :: printVType ( Imm , O ) ;" LLVM,RISCV,1729,"Predict the next statement of this code snippet: if ( ! NoAliases ) Res = uncompressInst ( UncompressedMI , * MI , MRI , STI ) ; if ( Res ) NewMI = const_cast < MCInst * > ( & UncompressedMI ) ;" LLVM,RISCV,1730,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : { if ( MO . isReg ( ) && ( MO . getReg ( ) == ) ) { printRegName ( O , ) ; return ; } } } if ( MO . isReg ( ) ) {" LLVM,RISCV,1731,"Predict the next statement of this code snippet: void InstPrinter :: printVectorRegister ( const MCInst * MI , unsigned OpNo , const MCSubtargetInfo & STI , raw_ostream & O ) { unsigned Reg = MI -> getOperand ( OpNo ) . getReg ( ) ; printRegName ( O , Reg ) ;" LLVM,RISCV,1732,"Predict the next statement of this code snippet: void InstPrinter :: printVTypeImm ( const MCInst * MI , unsigned OpNo , const MCSubtargetInfo & STI , raw_ostream & O ) { unsigned Imm = MI -> getOperand ( OpNo ) . getImm ( ) ; unsigned Ediv = ( Imm >> ) & ; unsigned Sew = ( Imm >> ) & ; unsigned Lmul = Imm & ; Sew = << ( Sew + ) ; Lmul = << Lmul ; Ediv = << Ediv ; O << << Sew ; O << << Lmul ;" LLVM,RISCV,1733,"Predict the next statement of this code snippet: unsigned Lmul = Imm & ; Sew = << ( Sew + ) ; Lmul = << Lmul ; Ediv = << Ediv ;" LLVM,RISCV,1734,"Predict the next statement of this code snippet: void InstPrinter :: printFRMArg ( const MCInst * MI , unsigned OpNo , raw_ostream & O ) { auto FRMArg = static_cast < > ( MI -> getOperand ( OpNo ) . getImm ( ) ) ; O << ( FRMArg ) ;" LLVM,RISCV,1735,"Predict the next statement of this code snippet: if ( NoAliases || ! printAliasInstr ( MI , O ) ) printInstruction ( MI , O ) ;" LLVM,RISCV,1736,"Predict the next statement of this code snippet: if ( Fractional ) { Lmul = - Lmul ; Lmul = << Lmul ; O << << Lmul ; } else { Lmul = << Lmul ; O << << Lmul ; } bool TailAgnostic = Imm & ; bool MaskedoffAgnostic = Imm & ; if ( TailAgnostic ) O << ; else O << ; if ( MaskedoffAgnostic ) O << ;" LLVM,RISCV,1737,"Predict the next statement of this code snippet: if ( MC . isReg ( ) ) O << getRegisterName ( MC . getReg ( ) ) ; else if ( MC . isImm ( ) ) O << MC . getImm ( ) ;" LLVM,RISCV,1738,"Predict the next statement of this code snippet: if ( MC . isReg ( ) ) O << getRegisterName ( MC . getReg ( ) ) ; else if ( MC . isImm ( ) ) O << MC . getImm ( ) ; else if ( MC . isExpr ( ) ) MC . getExpr ( ) -> print ( O , & MAI , true ) ;" LLVM,RISCV,1739,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( isUInt < > ( Value ) && ) ; O << Value ;" LLVM,RISCV,1740,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; assert ( isUInt < > ( Value ) && ) ;" LLVM,RISCV,1741,"Predict the next statement of this code snippet: void InstPrinter :: printUimm32contig0Operand ( const MCInst * MI , int OpNum , raw_ostream & O ) { if ( MI -> getOperand ( OpNum ) . isImm ( ) ) { int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ;" LLVM,RISCV,1742,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; O << Value ;" LLVM,RISCV,1743,"Predict the next statement of this code snippet: void InstPrinter :: printUimm32contig1endOperand ( const MCInst * MI , int OpNum , raw_ostream & O ) { if ( MI -> getOperand ( OpNum ) . isImm ( ) ) { int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ;" LLVM,RISCV,1744,"Predict the next statement of this code snippet: void InstPrinter :: printUimm32contig1endOperand ( const MCInst * MI , int OpNum , raw_ostream & O ) { if ( MI -> getOperand ( OpNum ) . isImm ( ) ) { int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ;" LLVM,RISCV,1745,"Predict the next statement of this code snippet: int64_t Value = MI -> getOperand ( OpNum ) . getImm ( ) ; O << Value ; } else printOperand ( MI , OpNum , O ) ;" LLVM,RISCV,1746,"Predict the next statement of this code snippet: if ( ( FenceArg & ) != ) O << 'i' ; if ( ( FenceArg & ) != ) O << 'o' ;" LLVM,RISCV,1747,"Predict the next statement of this code snippet: if ( ( FenceArg & ) != ) O << 'o' ; if ( ( FenceArg & ) != ) O << 'r' ;" LLVM,RISCV,1748,"Predict the next statement of this code snippet: bool Res = false ; const MCInst * NewMI = MI ; MCInst UncompressedMI ; if ( ! NoAliases ) Res = uncompressInst ( UncompressedMI , * MI , MRI , STI ) ;" LLVM,RISCV,1749,"Predict the next statement of this code snippet: if ( NoAliases || ! printAliasInstr ( MI , STI , O ) ) printInstruction ( MI , STI , O ) ;" LLVM,RISCV,1750,"Predict the next statement of this code snippet: return true ; } if ( Opt == ) { ArchRegNames = true ;" LLVM,RISCV,1751,"Predict the next statement of this code snippet: return getRegisterName ( RegNo , ArchRegNames ? : ) ;" LLVM,RISCV,1752,"Predict the next statement of this code snippet: if ( ! MO . isImm ( ) ) return printOperand ( MI , OpNo , STI , O ) ; if ( PrintBranchImmAsAddress ) { uint64_t Target = Address + MO . getImm ( ) ; if ( ! STI . hasFeature ( ) ) Target &= ; O << formatHex ( Target ) ; } else { O << MO . getImm ( ) ;" LLVM,RISCV,1753,"Predict the next statement of this code snippet: auto SysReg = ( Imm ) ;" LLVM,RISCV,1754,"Predict the next statement of this code snippet: auto SysReg = ( Imm ) ; if ( SysReg && SysReg -> haveRequiredFeatures ( STI . getFeatureBits ( ) ) ) O << SysReg -> Name ;" LLVM,RISCV,1755,"Predict the next statement of this code snippet: unsigned FenceArg = MI -> getOperand ( OpNo ) . getImm ( ) ; assert ( ( ( FenceArg >> ) == ) && ) ; if ( ( FenceArg & ) != ) O << 'i' ; if ( ( FenceArg & ) != ) O << 'o' ; if ( ( FenceArg & ) != ) O << 'r' ; if ( ( FenceArg & ) != ) O << 'w' ;" LLVM,RISCV,1756,"Predict the next statement of this code snippet: assert ( ( ( FenceArg >> ) == ) && ) ; if ( ( FenceArg & ) != ) O << 'i' ;" LLVM,RISCV,1757,"Predict the next statement of this code snippet: auto FRMArg = static_cast < > ( MI -> getOperand ( OpNo ) . getImm ( ) ) ;" LLVM,RISCV,1758,"Predict the next statement of this code snippet: MCInst UncompressedMI ; if ( PrintAliases && ! NoAliases ) Res = uncompressInst ( UncompressedMI , * MI , MRI , STI ) ;" LLVM,RISCV,1759,"Predict the next statement of this code snippet: MCInst UncompressedMI ; if ( PrintAliases && ! NoAliases ) Res = uncompressInst ( UncompressedMI , * MI , MRI , STI ) ; if ( Res ) NewMI = const_cast < MCInst * > ( & UncompressedMI ) ;" LLVM,RISCV,1760,"Predict the next statement of this code snippet: assert ( ( Modifier == nullptr || Modifier [ ] == ) && ) ; const MCOperand & MO = MI -> getOperand ( OpNo ) ; if ( MO . isReg ( ) ) { printRegName ( O , MO . getReg ( ) ) ; return ; } if ( MO . isImm ( ) ) {" LLVM,RISCV,1761,"Predict the next statement of this code snippet: void InstPrinter :: printZeroOffsetMemOp ( const MCInst * MI , unsigned OpNo , const MCSubtargetInfo & STI , raw_ostream & O ) { const MCOperand & MO = MI -> getOperand ( OpNo ) ; assert ( MO . isReg ( ) && ) ; O << ; printRegName ( O , MO . getReg ( ) ) ; O << ;" LLVM,RISCV,1762,"Predict the next statement of this code snippet: InstPrinter ( const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) : MCInstPrinter ( MAI , MII , MRI ) {" LLVM,RISCV,1763,"Predict the next statement of this code snippet: InstPrinter ( const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) : MCInstPrinter ( MAI , MII , MRI ) {" LLVM,RISCV,1764,"Predict the next statement of this code snippet: MachineFunction & MF = * MI -> getParent ( ) -> getParent ( ) ; MachineFrameInfo * MFFrame = MF . getFrameInfo ( ) ; const MCInstrDesc & MCID = MI -> getDesc ( ) ; unsigned Flags = ; if ( MCID . mayLoad ( ) ) Flags |= MachineMemOperand :: MOLoad ; if ( MCID . mayStore ( ) ) Flags |= MachineMemOperand :: MOStore ; int64_t Offset = ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI , Offset ) , Flags , MFFrame -> getObjectSize ( FI ) , MFFrame -> getObjectAlignment ( FI ) ) ;" LLVM,RISCV,1765,"Predict the next statement of this code snippet: MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI , Offset ) , Flags , MFFrame -> getObjectSize ( FI ) , MFFrame -> getObjectAlignment ( FI ) ) ; return MIB . addImm ( Offset ) . addFrameIndex ( FI ) . addMemOperand ( MMO ) ;" LLVM,RISCV,1766,"Predict the next statement of this code snippet: if ( MCID . mayLoad ( ) ) Flags |= MachineMemOperand :: MOLoad ; if ( MCID . mayStore ( ) ) Flags |= MachineMemOperand :: MOStore ; int64_t Offset = ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI , Offset ) , Flags , MFFrame -> getObjectSize ( FI ) , MFFrame -> getObjectAlignment ( FI ) ) ; return MIB . addImm ( Offset ) . addFrameIndex ( FI ) . addMemOperand ( MMO ) ;" LLVM,RISCV,1767,"Predict the next statement of this code snippet: unsigned ADDI = STI . isRV64 ( ) ? : ; if ( isInt < > ( Amount ) ) BuildMI ( MBB , I , DL , get ( ADDI ) , SP ) . addReg ( SP ) . addImm ( Amount ) ; else { unsigned Reg ; loadImmediate ( MBB , I , & Reg , Amount ) ; BuildMI ( MBB , I , DL , get ( ADD ) , SP ) . addReg ( SP ) . addReg ( Reg , RegState :: Kill ) ;" LLVM,RISCV,1768,"Predict the next statement of this code snippet: if ( isInt < > ( Amount ) ) BuildMI ( MBB , I , DL , get ( ADDI ) , SP ) . addReg ( SP ) . addImm ( Amount ) ; else { unsigned Reg ; loadImmediate ( MBB , I , & Reg , Amount ) ; BuildMI ( MBB , I , DL , get ( ADD ) , SP ) . addReg ( SP ) . addReg ( Reg , RegState :: Kill ) ;" LLVM,RISCV,1769,"Predict the next statement of this code snippet: if ( ThisCond [ ] . getImm ( ) == ) { if ( ! AllowModify ) { TBB = ThisTarget -> getMBB ( ) ; continue ; } while ( std :: next ( I ) != MBB . end ( ) ) std :: next ( I ) -> eraseFromParent ( ) ; Cond . clear ( ) ; FBB = ; TBB = ThisTarget -> getMBB ( ) ; continue ; } if ( Cond . empty ( ) ) { FBB = TBB ; TBB = ThisTarget -> getMBB ( ) ; Cond . push_back ( MachineOperand :: CreateImm ( ThisCond [ ] . getImm ( ) ) ) ; for ( unsigned int i = ; i < ( I -> getNumExplicitOperands ( ) ) ; i ++ ) Cond . push_back ( I -> getOperand ( i ) ) ; continue ; } assert ( Cond . size ( ) <= ) ; assert ( TBB ) ; if ( TBB != ThisTarget -> getMBB ( ) ) return true ;" LLVM,RISCV,1770,"Predict the next statement of this code snippet: } else if ( . contains ( SrcReg ) && . contains ( DestReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) { Opcode = STI . isRV64 ( ) ? : ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ;" LLVM,RISCV,1771,"Predict the next statement of this code snippet: bool InstrInfo :: expandPostRAPseudo ( MachineBasicBlock :: iterator MI ) const { switch ( MI -> getOpcode ( ) ) {" LLVM,RISCV,1772,"Predict the next statement of this code snippet: bool InstrInfo :: expandPostRAPseudo ( MachineBasicBlock :: iterator MI ) const {" LLVM,RISCV,1773,"Predict the next statement of this code snippet: return ( STI . isRV64 ( ) || STI . isRV32 ( ) ) ? : ;" LLVM,RISCV,1774,"Predict the next statement of this code snippet: return ( STI . isRV64 ( ) || STI . isRV32 ( ) ) ? : ;" LLVM,RISCV,1775,"Predict the next statement of this code snippet: } if ( isInt < > ( Offset ) && isInt < > ( Offset2 ) ) { return Opcode ; }" LLVM,RISCV,1776,"Predict the next statement of this code snippet: unsigned InstrInfo :: getOpcodeForOffset ( unsigned Opcode , int64_t Offset ) const { int64_t Offset2 = Offset ; if ( isInt < > ( Offset ) && isInt < > ( Offset2 ) ) { return Opcode ; } if ( isInt < > ( Offset ) && isInt < > ( Offset2 ) ) { return Opcode ; }" LLVM,RISCV,1777,"Predict the next statement of this code snippet: unsigned count = InsertBranchAtInst ( MBB , MBB . end ( ) , TBB , Cond , DL ) ; BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ; count ++ ; return count ;" LLVM,RISCV,1778,"Predict the next statement of this code snippet: break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case | : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case | : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; default : llvm_unreachable ( ) ; }" LLVM,RISCV,1779,"Predict the next statement of this code snippet: case ( | ) : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case ( | ) : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case :" LLVM,RISCV,1780,"Predict the next statement of this code snippet: Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( | ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( | ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( | ) ; Target = & MI -> getOperand ( ) ; return true ; case : case : Cond [ ] . setImm ( ) ;" LLVM,RISCV,1781,"Predict the next statement of this code snippet: unsigned InstrInfo :: isLoadFromStackSlot ( const MachineInstr * MI , int & FrameIndex ) const {" LLVM,RISCV,1782,"Predict the next statement of this code snippet: unsigned InstrInfo :: isLoadFromStackSlot ( const MachineInstr * MI , int & FrameIndex ) const { return isSimpleMove ( MI , FrameIndex , ) ;" LLVM,RISCV,1783,"Predict the next statement of this code snippet: const MCInstrDesc & MCID = MI -> getDesc ( ) ; if ( ( MCID . TSFlags & Flag ) && MI -> getOperand ( ) . isFI ( ) && MI -> getOperand ( ) . getImm ( ) == && MI -> getOperand ( ) . getReg ( ) == ) { FrameIndex = MI -> getOperand ( ) . getIndex ( ) ;" LLVM,RISCV,1784,"Predict the next statement of this code snippet: unsigned InstrInfo :: isStoreToStackSlot ( const MachineInstr * MI , int & FrameIndex ) const { return isSimpleMove ( MI , FrameIndex , ) ;" LLVM,RISCV,1785,"Predict the next statement of this code snippet: void InstrInfo :: loadImmediate ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , unsigned * Reg , int64_t Value ) const { DebugLoc DL = MBBI != MBB . end ( ) ? MBBI -> getDebugLoc ( ) : DebugLoc ( ) ; unsigned Opcode ; MachineRegisterInfo & RegInfo = MBB . getParent ( ) -> getRegInfo ( ) ; const TargetRegisterClass * RC = STI . isRV64 ( ) ? & : & ; unsigned ZERO = STI . isRV64 ( ) ? : ; * Reg = RegInfo . createVirtualRegister ( RC ) ; if ( isInt < > ( Value ) ) { Opcode = STI . isRV64 ( ) ? : ;" LLVM,RISCV,1786,"Predict the next statement of this code snippet: getLoadStoreOpcodes ( RC , LoadOpcode , StoreOpcode ) ;" LLVM,RISCV,1787,"Predict the next statement of this code snippet: const MachineOperand * Target ; if ( ! isBranch ( I , Cond , Target ) ) break ; if ( ! Target -> isMBB ( ) ) break ; I -> eraseFromParent ( ) ;" LLVM,RISCV,1788,"Predict the next statement of this code snippet: SmallVector < MachineOperand , > Cond ; Cond . push_back ( MachineOperand :: CreateImm ( ) ) ; const MachineOperand * Target ; if ( ! isBranch ( I , Cond , Target ) ) break ; if ( ! Target -> isMBB ( ) ) break ; I -> eraseFromParent ( ) ; I = MBB . end ( ) ;" LLVM,RISCV,1789,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & sti ) : GenInstrInfo ( , ) , RI ( sti ) , STI ( sti ) {" LLVM,RISCV,1790,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & sti ) : GenInstrInfo ( , ) , RI ( sti ) , STI ( sti ) {" LLVM,RISCV,1791,"Predict the next statement of this code snippet: unsigned LoadOpcode , StoreOpcode ; getLoadStoreOpcodes ( RC , LoadOpcode , StoreOpcode ) ; addFrameReference ( BuildMI ( MBB , MBBI , DL , get ( StoreOpcode ) ) . addReg ( SrcReg , getKillRegState ( isKill ) ) , FrameIdx ) ;" LLVM,RISCV,1792,"Predict the next statement of this code snippet: J ++ ) { NumTerminators ++ ; if ( J -> getDesc ( ) . isUnconditionalBranch ( ) || J -> getDesc ( ) . isIndirectBranch ( ) ) { FirstUncondOrIndirectBr = J . getReverse ( ) ; } } if ( AllowModify && FirstUncondOrIndirectBr != MBB . end ( ) ) { while ( std :: next ( FirstUncondOrIndirectBr ) != MBB . end ( ) ) { std :: next ( FirstUncondOrIndirectBr ) -> eraseFromParent ( ) ; NumTerminators -- ; } I = FirstUncondOrIndirectBr ; } if ( I -> getDesc ( ) . isIndirectBranch ( ) ) return true ; if ( NumTerminators > ) return true ; if ( NumTerminators == && I -> getDesc ( ) . isUnconditionalBranch ( ) ) { TBB = getBranchDestBlock ( * I ) ; return false ; } if ( NumTerminators == && I -> getDesc ( ) . isConditionalBranch ( ) ) { parseCondBranch ( * I , TBB , Cond ) ; return false ;" LLVM,RISCV,1793,"Predict the next statement of this code snippet: if ( getMemOperandWithOffsetWidth ( MIa , BaseOpA , OffsetA , WidthA , TRI ) && getMemOperandWithOffsetWidth ( MIb , BaseOpB , OffsetB , WidthB , TRI ) ) { if ( BaseOpA -> isIdenticalTo ( * BaseOpB ) ) { int LowOffset = std :: min ( OffsetA , OffsetB ) ; int HighOffset = std :: max ( OffsetA , OffsetB ) ; int LowWidth = ( LowOffset == OffsetA ) ? WidthA : WidthB ;" LLVM,RISCV,1794,"Predict the next statement of this code snippet: assert ( MIb . mayLoadOrStore ( ) && ) ; if ( MIa . hasUnmodeledSideEffects ( ) || MIb . hasUnmodeledSideEffects ( ) || MIa . hasOrderedMemoryRef ( ) || MIb . hasOrderedMemoryRef ( ) ) return false ; const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ; const MachineOperand * BaseOpA = nullptr , * BaseOpB = nullptr ; int64_t OffsetA = , OffsetB = ; unsigned int WidthA = , WidthB = ; if ( getMemOperandWithOffsetWidth ( MIa , BaseOpA , OffsetA , WidthA , TRI ) && getMemOperandWithOffsetWidth ( MIb , BaseOpB , OffsetB , WidthB , TRI ) ) { if ( BaseOpA -> isIdenticalTo ( * BaseOpB ) ) { int LowOffset = std :: min ( OffsetA , OffsetB ) ; int HighOffset = std :: max ( OffsetA , OffsetB ) ;" LLVM,RISCV,1795,"Predict the next statement of this code snippet: MBB . addLiveIn ( ) ;" LLVM,RISCV,1796,"Predict the next statement of this code snippet: case CASE_VFMA_SPLATS ( FNMSUB ) : case CASE_VFMA_OPCODE_LMULS ( FMACC , VV ) : case CASE_VFMA_OPCODE_LMULS ( FMSAC , VV ) : case CASE_VFMA_OPCODE_LMULS ( FNMACC , VV ) : case CASE_VFMA_OPCODE_LMULS ( FNMSAC , VV ) : case CASE_VFMA_OPCODE_LMULS ( MADD , VX ) : case CASE_VFMA_OPCODE_LMULS ( NMSUB , VX ) : case CASE_VFMA_OPCODE_LMULS ( MACC , VX ) : case CASE_VFMA_OPCODE_LMULS ( NMSAC , VX ) : case CASE_VFMA_OPCODE_LMULS ( MACC , VV ) : case CASE_VFMA_OPCODE_LMULS ( NMSAC , VV ) : { assert ( ( OpIdx1 == || OpIdx2 == ) && ) ; assert ( ( OpIdx1 == || OpIdx2 == ) && ) ; unsigned Opc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMACC , FMADD ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMADD , FMACC ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMSAC , FMSUB ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMSUB , FMSAC ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMACC , FNMADD ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMADD , FNMACC ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMSAC , FNMSUB ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMSUB , FNMSAC ) CASE_VFMA_CHANGE_OPCODE_LMULS ( FMACC , FMADD , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( FMSAC , FMSUB , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( FNMACC , FNMADD , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( FNMSAC , FNMSUB , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( MACC , MADD , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( MADD , MACC , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( NMSAC , NMSUB , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( NMSUB , NMSAC , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( MACC , MADD , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( NMSAC , NMSUB , VV ) } auto & WorkingMI = cloneIfNew ( MI ) ;" LLVM,RISCV,1797,"Predict the next statement of this code snippet: case CASE_WIDEOP_OPCODE_LMULS ( FWADD_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( FWSUB_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WADD_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WADDU_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUB_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUBU_WV ) : { unsigned NewOpc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADDU_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUBU_WV ) } MachineBasicBlock & MBB = * MI . getParent ( ) ; MachineInstrBuilder MIB = BuildMI ( MBB , MI , MI . getDebugLoc ( ) , get ( NewOpc ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) ; MIB . copyImplicitOps ( MI ) ; if ( LV ) { unsigned NumOps = MI . getNumOperands ( ) ; for ( unsigned I = ; I < NumOps ; ++ I ) { MachineOperand & Op = MI . getOperand ( I ) ; if ( Op . isReg ( ) && Op . isKill ( ) ) LV -> replaceKillInstruction ( Op . getReg ( ) , MI , * MIB ) ; } } return MIB ; } } return nullptr ;" LLVM,RISCV,1798,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADDU_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUBU_WV ) } MachineBasicBlock & MBB = * MI . getParent ( ) ; MachineInstrBuilder MIB = BuildMI ( MBB , MI , MI . getDebugLoc ( ) , get ( NewOpc ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) ; MIB . copyImplicitOps ( MI ) ; if ( LV ) { unsigned NumOps = MI . getNumOperands ( ) ; for ( unsigned I = ; I < NumOps ; ++ I ) { MachineOperand & Op = MI . getOperand ( I ) ; if ( Op . isReg ( ) && Op . isKill ( ) ) LV -> replaceKillInstruction ( Op . getReg ( ) , MI , * MIB ) ; } } return MIB ;" LLVM,RISCV,1799,"Predict the next statement of this code snippet: Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else { llvm_unreachable ( ) ; } if ( IsScalableVector ) { if ( NF == ) { BuildMI ( MBB , MBBI , DL , get ( Opc ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; } else { const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ; int I = , End = NF , Incr = ; unsigned SrcEncoding = TRI -> getEncodingValue ( SrcReg ) ; unsigned DstEncoding = TRI -> getEncodingValue ( DstReg ) ; if ( forwardCopyWillClobberTuple ( DstEncoding , SrcEncoding , NF * LMul ) ) {" LLVM,RISCV,1800,"Predict the next statement of this code snippet: const unsigned Mask = ; return std :: make_pair ( TF & Mask , TF & ~ Mask ) ;" LLVM,RISCV,1801,"Predict the next statement of this code snippet: return ( ( DstReg - SrcReg ) & ) < NumRegs ;" LLVM,RISCV,1802,"Predict the next statement of this code snippet: int NumOp = MI . getNumExplicitOperands ( ) ;" LLVM,RISCV,1803,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,1804,"Predict the next statement of this code snippet: return ; case : case : return ; case : return ; case TargetOpcode :: INLINEASM : case TargetOpcode :: INLINEASM_BR : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { unsigned NF = isRVVSpillForZvlsseg ( Opcode ) -> first ;" LLVM,RISCV,1805,"Predict the next statement of this code snippet: if ( ! LdSt . hasOneMemOperand ( ) ) return false ; Width = ( * LdSt . memoperands_begin ( ) ) -> getSize ( ) ; BaseReg = & LdSt . getOperand ( ) ; Offset = LdSt . getOperand ( ) . getImm ( ) ; return true ;" LLVM,RISCV,1806,"Predict the next statement of this code snippet: bool InstrInfo :: getMemOperandWithOffsetWidth ( const MachineInstr & LdSt , const MachineOperand * & BaseReg , int64_t & Offset , unsigned & Width , const TargetRegisterInfo * TRI ) const { if ( ! LdSt . mayLoadOrStore ( ) ) return false ;" LLVM,RISCV,1807,"Predict the next statement of this code snippet: return MCInstBuilder ( ) . addReg ( ) . addReg ( ) . addImm ( ) ;" LLVM,RISCV,1808,"Predict the next statement of this code snippet: if ( STI . getFeatureBits ( ) [ ] ) return MCInstBuilder ( ) ; return MCInstBuilder ( ) . addReg ( ) . addReg ( ) . addImm ( ) ;" LLVM,RISCV,1809,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,1810,"Predict the next statement of this code snippet: auto CannotInsertCall = [ ] ( outliner :: Candidate & C ) { const TargetRegisterInfo * TRI = C . getMF ( ) -> getSubtarget ( ) . getRegisterInfo ( ) ; C . initLRU ( * TRI ) ; LiveRegUnits LRU = C . LRU ; return ! LRU . available ( ) ; } ; llvm :: erase_if ( RepeatedSequenceLocs , CannotInsertCall ) ;" LLVM,RISCV,1811,"Predict the next statement of this code snippet: return RI ;" LLVM,RISCV,1812,"Predict the next statement of this code snippet: ArrayRef < std :: pair < unsigned , const char * >> InstrInfo :: getSerializableDirectMachineOperandTargetFlags ( ) const { using namespace II ; static const std :: pair < unsigned , const char * > TargetFlags [ ] = {" LLVM,RISCV,1813,"Predict the next statement of this code snippet: using namespace II ; static const std :: pair < unsigned , const char * > TargetFlags [ ] = {" LLVM,RISCV,1814,"Predict the next statement of this code snippet: const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; int64_t NumOfVReg = Amount / ; Register VL = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . setMIFlag ( Flag ) ; assert ( isInt < > ( NumOfVReg ) && ) ; if ( isPowerOf2_32 ( NumOfVReg ) ) { uint32_t ShiftAmount = Log2_32 ( NumOfVReg ) ; if ( ShiftAmount == ) return VL ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL , RegState :: Kill ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; } else if ( isPowerOf2_32 ( NumOfVReg - ) ) { Register ScaledRegister = MRI . createVirtualRegister ( & ) ; uint32_t ShiftAmount = Log2_32 ( NumOfVReg - ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( ScaledRegister , RegState :: Kill ) . addReg ( VL , RegState :: Kill ) . setMIFlag ( Flag ) ; } else if ( isPowerOf2_32 ( NumOfVReg + ) ) { Register ScaledRegister = MRI . createVirtualRegister ( & ) ; uint32_t ShiftAmount = Log2_32 ( NumOfVReg + ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( ScaledRegister , RegState :: Kill ) . addReg ( VL , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { Register N = MRI . createVirtualRegister ( & ) ; if ( ! isInt < > ( NumOfVReg ) ) movImm ( MBB , II , DL , N , NumOfVReg ) ; else { BuildMI ( MBB , II , DL , TII -> get ( ) , N ) . addReg ( ) . addImm ( NumOfVReg ) . setMIFlag ( Flag ) ; } if ( ! MF . getSubtarget < Subtarget > ( ) . hasStdExtM ( ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL , RegState :: Kill ) . addReg ( N , RegState :: Kill ) . setMIFlag ( Flag ) ; } return VL ;" LLVM,RISCV,1815,"Predict the next statement of this code snippet: BuildMI ( MBB , II , DL , TII -> get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( ScaledRegister , RegState :: Kill ) . addReg ( VL , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { Register N = MRI . createVirtualRegister ( & ) ; if ( ! isInt < > ( NumOfVReg ) ) movImm ( MBB , II , DL , N , NumOfVReg ) ; else { BuildMI ( MBB , II , DL , TII -> get ( ) , N ) . addReg ( ) . addImm ( NumOfVReg ) . setMIFlag ( Flag ) ; } if ( ! MF . getSubtarget < Subtarget > ( ) . hasStdExtM ( ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL , RegState :: Kill ) . addReg ( N , RegState :: Kill ) . setMIFlag ( Flag ) ; } return VL ;" LLVM,RISCV,1816,"Predict the next statement of this code snippet: auto CC = static_cast < > ( Cond [ ] . getImm ( ) ) ; MachineInstr & CondMI = * BuildMI ( & MBB , DL , getBrCond ( CC ) ) . add ( Cond [ ] ) . add ( Cond [ ] ) . addMBB ( TBB ) ; if ( BytesAdded ) * BytesAdded += getInstSizeInBytes ( CondMI ) ; if ( ! FBB ) return ;" LLVM,RISCV,1817,"Predict the next statement of this code snippet: if ( ! isInt < > ( BrOffset ) ) report_fatal_error ( ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; auto II = MBB . end ( ) ; MachineInstr & MI = * BuildMI ( MBB , II , DL , get ( ) ) . addReg ( ScratchReg , RegState :: Define | RegState :: Dead ) . addMBB ( & DestBB , ) ; RS -> enterBasicBlockEnd ( MBB ) ; unsigned Scav = RS -> scavengeRegisterBackwards ( , MI . getIterator ( ) , false , ) ;" LLVM,RISCV,1818,"Predict the next statement of this code snippet: assert ( MBB . empty ( ) && ) ; assert ( MBB . pred_size ( ) == ) ; MachineFunction * MF = MBB . getParent ( ) ; MachineRegisterInfo & MRI = MF -> getRegInfo ( ) ; if ( ! isInt < > ( BrOffset ) ) report_fatal_error ( ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; auto II = MBB . end ( ) ; MachineInstr & MI = * BuildMI ( MBB , II , DL , get ( ) ) . addReg ( ScratchReg , RegState :: Define | RegState :: Dead ) . addMBB ( & DestBB , ) ; RS -> enterBasicBlockEnd ( MBB ) ; unsigned Scav = RS -> scavengeRegisterBackwards ( , MI . getIterator ( ) , false , ) ; MRI . replaceRegWith ( ScratchReg , Scav ) ; MRI . clearVirtRegs ( ) ; RS -> setRegUsed ( Scav ) ; return ;" LLVM,RISCV,1819,"Predict the next statement of this code snippet: case : case : case : return ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) || ( MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) ;" LLVM,RISCV,1820,"Predict the next statement of this code snippet: break ; case : case : return MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,1821,"Predict the next statement of this code snippet: case : case : return isIntN ( , BrOffset ) ; case : case : return isIntN ( , BrOffset ) ; case :" LLVM,RISCV,1822,"Predict the next statement of this code snippet: bool InstrInfo :: isBranchOffsetInRange ( unsigned BranchOp , int64_t BrOffset ) const { unsigned XLen = STI . getXLen ( ) ; switch ( BranchOp ) { default : llvm_unreachable ( ) ; case : case : case : case : case :" LLVM,RISCV,1823,"Predict the next statement of this code snippet: case : if ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ) return DestSourcePair { MI . getOperand ( ) , MI . getOperand ( ) } ; break ;" LLVM,RISCV,1824,"Predict the next statement of this code snippet: if ( MI . isMoveReg ( ) ) return DestSourcePair { MI . getOperand ( ) , MI . getOperand ( ) } ; switch ( MI . getOpcode ( ) ) { default : break ; case : if ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) return DestSourcePair { MI . getOperand ( ) , MI . getOperand ( ) } ; break ; case : case : if ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ) return DestSourcePair { MI . getOperand ( ) , MI . getOperand ( ) } ;" LLVM,RISCV,1825,"Predict the next statement of this code snippet: if ( ! OutlineFromLinkOnceODRs && F . hasLinkOnceODRLinkage ( ) ) return false ;" LLVM,RISCV,1826,"Predict the next statement of this code snippet: const Function & F = MF . getFunction ( ) ; if ( ! OutlineFromLinkOnceODRs && F . hasLinkOnceODRLinkage ( ) ) return false ; if ( F . hasSection ( ) ) return false ;" LLVM,RISCV,1827,"Predict the next statement of this code snippet: case : case : case : case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ;" LLVM,RISCV,1828,"Predict the next statement of this code snippet: bool InstrInfo :: isMBBSafeToOutlineFrom ( MachineBasicBlock & MBB , unsigned & Flags ) const {" LLVM,RISCV,1829,"Predict the next statement of this code snippet: if ( ! ( Opcode ) && ! isRVVWholeLoadStore ( Opcode ) && ! isRVVSpillForZvlsseg ( Opcode ) ) return false ; return ! CheckFIs || any_of ( MI . operands ( ) , [ ] ( const MachineOperand & MO ) { return MO . isFI ( ) ; } ) ;" LLVM,RISCV,1830,"Predict the next statement of this code snippet: bool InstrInfo :: isRVVSpill ( const MachineInstr & MI , bool CheckFIs ) const { unsigned Opcode = MI . getOpcode ( ) ; if ( ! ( Opcode ) && ! isRVVWholeLoadStore ( Opcode ) && ! isRVVSpillForZvlsseg ( Opcode ) ) return false ; return ! CheckFIs || any_of ( MI . operands ( ) , [ ] ( const MachineOperand & MO ) {" LLVM,RISCV,1831,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,RISCV,1832,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,RISCV,1833,"Predict the next statement of this code snippet: if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,1834,"Predict the next statement of this code snippet: unsigned InstrInfo :: isStoreToStackSlot ( const MachineInstr & MI , int & FrameIndex ) const { switch ( MI . getOpcode ( ) ) { default : return ; case : case : case : case : case : case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ;" LLVM,RISCV,1835,"Predict the next statement of this code snippet: bool IsZvlsseg = true ; if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; if ( IsScalableVector ) { MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOLoad , MemoryLocation :: UnknownSize , MFI . getObjectAlign ( FI ) ) ; MFI . setStackID ( FI , TargetStackID :: ScalableVector ) ;" LLVM,RISCV,1836,"Predict the next statement of this code snippet: IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; if ( IsScalableVector ) { MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOLoad , MemoryLocation :: UnknownSize , MFI . getObjectAlign ( FI ) ) ; MFI . setStackID ( FI , TargetStackID :: ScalableVector ) ; auto MIB = BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addMemOperand ( MMO ) ; if ( IsZvlsseg ) { MIB . addReg ( ) ; } } else { MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOLoad , MFI . getObjectSize ( FI ) , MFI . getObjectAlign ( FI ) ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; }" LLVM,RISCV,1837,"Predict the next statement of this code snippet: unsigned Num = ; if ( ! STI . is64Bit ( ) && ! isInt < > ( Val ) ) report_fatal_error ( ) ; Seq = ( Val , STI . getFeatureBits ( ) ) ; assert ( ! Seq . empty ( ) ) ; for ( & Inst : Seq ) { if ( ++ Num == Seq . size ( ) ) Result = DstReg ; if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( SrcReg , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1838,"Predict the next statement of this code snippet: unsigned Num = ; if ( ! STI . is64Bit ( ) && ! isInt < > ( Val ) ) report_fatal_error ( ) ; Seq = ( Val , STI . getFeatureBits ( ) ) ; assert ( ! Seq . empty ( ) ) ; for ( & Inst : Seq ) { if ( ++ Num == Seq . size ( ) ) Result = DstReg ; if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( SrcReg , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } SrcReg = Result ; }" LLVM,RISCV,1839,"Predict the next statement of this code snippet: static void parseCondBranch ( MachineInstr & LastInst , MachineBasicBlock * & Target , SmallVectorImpl < MachineOperand > & Cond ) {" LLVM,RISCV,1840,"Predict the next statement of this code snippet: if ( I == MBB . begin ( ) ) return ; -- I ; if ( ! I -> getDesc ( ) . isConditionalBranch ( ) ) return ; if ( BytesRemoved ) * BytesRemoved += getInstSizeInBytes ( * I ) ; I -> eraseFromParent ( ) ; return ;" LLVM,RISCV,1841,"Predict the next statement of this code snippet: I = MBB . end ( ) ; if ( I == MBB . begin ( ) ) return ; -- I ; if ( ! I -> getDesc ( ) . isConditionalBranch ( ) ) return ; if ( BytesRemoved ) * BytesRemoved += getInstSizeInBytes ( * I ) ; I -> eraseFromParent ( ) ;" LLVM,RISCV,1842,"Predict the next statement of this code snippet: auto CC = static_cast < > ( Cond [ ] . getImm ( ) ) ;" LLVM,RISCV,1843,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & STI ) : GenInstrInfo ( , ) , STI ( STI ) {" LLVM,RISCV,1844,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & STI ) : GenInstrInfo ( , ) , STI ( STI ) {" LLVM,RISCV,1845,"Predict the next statement of this code snippet: if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; MachineFunction * MF = MBB . getParent ( ) ; MachineFrameInfo & MFI = MF -> getFrameInfo ( ) ; unsigned Opcode ; bool IsScalableVector = true ; bool IsZvlsseg = true ; if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) {" LLVM,RISCV,1846,"Predict the next statement of this code snippet: Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : if ( STI . getTargetTriple ( ) . isArch64Bit ( ) ) Ok = isUInt < > ( Imm ) ; else Ok = isUInt < > ( Imm ) ;" LLVM,RISCV,1847,"Predict the next statement of this code snippet: Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ;" LLVM,RISCV,1848,"Predict the next statement of this code snippet: unsigned Opc ; if ( . contains ( DstReg , SrcReg ) ) Opc = ; else if ( . contains ( DstReg , SrcReg ) ) Opc = ; else llvm_unreachable ( ) ; BuildMI ( MBB , MBBI , DL , get ( Opc ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,RISCV,1849,"Predict the next statement of this code snippet: default : { if ( MI . getParent ( ) && MI . getParent ( ) -> getParent ( ) ) { const auto MF = MI . getMF ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF -> getTarget ( ) ) ; const MCRegisterInfo & MRI = * TM . getMCRegisterInfo ( ) ; const MCSubtargetInfo & STI = * TM . getMCSubtargetInfo ( ) ; const Subtarget & ST = MF -> getSubtarget < Subtarget > ( ) ; if ( isCompressibleInst ( MI , & ST , MRI , STI ) ) return ; } return get ( Opcode ) . getSize ( ) ; } case TargetOpcode :: EH_LABEL : case TargetOpcode :: IMPLICIT_DEF : case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case : case : case : case : case : case : case : case : return ; case : case :" LLVM,RISCV,1850,"Predict the next statement of this code snippet: for ( ; I != E ; ++ I ) SequenceSize += getInstSizeInBytes ( * I ) ; unsigned CallOverhead = ; for ( auto & C : RepeatedSequenceLocs ) C . setCallInfo ( MachineOutlinerDefault , CallOverhead ) ; unsigned FrameOverhead = ; if ( RepeatedSequenceLocs [ ] . getMF ( ) -> getSubtarget ( ) . getFeatureBits ( ) [ ] ) FrameOverhead = ;" LLVM,RISCV,1851,"Predict the next statement of this code snippet: if ( MI . isPosition ( ) ) { if ( MI . isCFIInstruction ( ) ) return outliner :: InstrType :: Invisible ; return outliner :: InstrType :: Illegal ; } if ( MI . isInlineAsm ( ) ) return outliner :: InstrType :: Illegal ; if ( MI . isTerminator ( ) && ! MBB -> succ_empty ( ) ) return outliner :: InstrType :: Illegal ; if ( MI . isReturn ( ) ) return outliner :: InstrType :: Illegal ;" LLVM,RISCV,1852,"Predict the next statement of this code snippet: unsigned Opc = Cond [ ] . getImm ( ) ; MachineInstr & CondMI = * BuildMI ( & MBB , DL , get ( Opc ) ) . add ( Cond [ ] ) . add ( Cond [ ] ) . addMBB ( TBB ) ; if ( BytesAdded ) * BytesAdded += getInstSizeInBytes ( CondMI ) ; if ( ! FBB ) return ; MachineInstr & MI = * BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ; if ( BytesAdded ) * BytesAdded += getInstSizeInBytes ( MI ) ; return ;" LLVM,RISCV,1853,"Predict the next statement of this code snippet: MachineInstr & MI = * BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; if ( BytesAdded ) * BytesAdded += getInstSizeInBytes ( MI ) ; return ; } unsigned Opc = Cond [ ] . getImm ( ) ; MachineInstr & CondMI = * BuildMI ( & MBB , DL , get ( Opc ) ) . add ( Cond [ ] ) . add ( Cond [ ] ) . addMBB ( TBB ) ;" LLVM,RISCV,1854,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; MachineRegisterInfo & MRI = MF -> getRegInfo ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF -> getTarget ( ) ) ; if ( TM . isPositionIndependent ( ) ) report_fatal_error ( ) ; if ( ! isInt < > ( BrOffset ) ) report_fatal_error ( ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ;" LLVM,RISCV,1855,"Predict the next statement of this code snippet: case : return ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) ; }" LLVM,RISCV,1856,"Predict the next statement of this code snippet: case : case : case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ;" LLVM,RISCV,1857,"Predict the next statement of this code snippet: case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; }" LLVM,RISCV,1858,"Predict the next statement of this code snippet: else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,1859,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ;" LLVM,RISCV,1860,"Predict the next statement of this code snippet: void InstrInfo :: movImm ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , Register DstReg , uint64_t Val , MachineInstr :: MIFlag Flag ) const { MachineFunction * MF = MBB . getParent ( ) ; MachineRegisterInfo & MRI = MF -> getRegInfo ( ) ; bool IsRV64 = MF -> getSubtarget < Subtarget > ( ) . is64Bit ( ) ; Register SrcReg = ; Register Result = MRI . createVirtualRegister ( & ) ;" LLVM,RISCV,1861,"Predict the next statement of this code snippet: Register SrcReg = ; Register Result = MRI . createVirtualRegister ( & ) ; unsigned Num = ; if ( ! IsRV64 && ! isInt < > ( Val ) ) report_fatal_error ( ) ; Seq ; ( Val , IsRV64 , Seq ) ; assert ( Seq . size ( ) > ) ; for ( & Inst : Seq ) { if ( ++ Num == Seq . size ( ) ) Result = DstReg ;" LLVM,RISCV,1862,"Predict the next statement of this code snippet: void InstrInfo :: storeRegToStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , Register SrcReg , bool IsKill , int FI , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ;" LLVM,RISCV,1863,"Predict the next statement of this code snippet: case CASE_WIDEOP_OPCODE_LMULS ( WADDU_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUB_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUBU_WV ) : { unsigned NewOpc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADDU_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUBU_WV ) } MachineInstrBuilder MIB = BuildMI ( * MBB , MI , MI . getDebugLoc ( ) , get ( NewOpc ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) ;" LLVM,RISCV,1864,"Predict the next statement of this code snippet: MachineInstr * InstrInfo :: convertToThreeAddress ( MachineFunction :: iterator & MBB , MachineInstr & MI , LiveVariables * LV ) const { switch ( MI . getOpcode ( ) ) { default : break ; case CASE_WIDEOP_OPCODE_LMULS ( FWADD_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( FWSUB_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WADD_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WADDU_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUB_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUBU_WV ) : { unsigned NewOpc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADDU_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUBU_WV ) } MachineInstrBuilder MIB = BuildMI ( * MBB , MI , MI . getDebugLoc ( ) , get ( NewOpc ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) ; MIB . copyImplicitOps ( MI ) ; if ( LV ) { unsigned NumOps = MI . getNumOperands ( ) ; for ( unsigned I = ; I < NumOps ; ++ I ) { MachineOperand & Op = MI . getOperand ( I ) ; if ( Op . isReg ( ) && Op . isKill ( ) ) LV -> replaceKillInstruction ( Op . getReg ( ) , MI , * MIB ) ; } } return MIB ;" LLVM,RISCV,1865,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; MachineRegisterInfo & MRI = MF -> getRegInfo ( ) ; Register SrcReg = ; Register Result = MRI . createVirtualRegister ( & ) ; unsigned Num = ; if ( ! STI . is64Bit ( ) && ! isInt < > ( Val ) ) report_fatal_error ( ) ; Seq = ( Val , STI . getFeatureBits ( ) ) ; assert ( ! Seq . empty ( ) ) ; for ( & Inst : Seq ) { if ( ++ Num == Seq . size ( ) ) Result = DstReg ; if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == ) {" LLVM,RISCV,1866,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( ) . setMIFlag ( Flag ) ; } else { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } SrcReg = Result ; }" LLVM,RISCV,1867,"Predict the next statement of this code snippet: case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : if ( STI . getTargetTriple ( ) . isArch64Bit ( ) ) Ok = isUInt < > ( Imm ) ; else Ok = isUInt < > ( Imm ) ; break ; } if ( ! Ok ) { ErrInfo = ;" LLVM,RISCV,1868,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isInt < > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : if ( STI . getTargetTriple ( ) . isArch64Bit ( ) ) Ok = isUInt < > ( Imm ) ; else Ok = isUInt < > ( Imm ) ; break ; } if ( ! Ok ) { ErrInfo = ; return false ; }" LLVM,RISCV,1869,"Predict the next statement of this code snippet: return TargetInstrInfo :: isMBBSafeToOutlineFrom ( MBB , Flags ) ;" LLVM,RISCV,1870,"Predict the next statement of this code snippet: return TargetInstrInfo :: isMBBSafeToOutlineFrom ( MBB , Flags ) ;" LLVM,RISCV,1871,"Predict the next statement of this code snippet: case CASE_WIDEOP_OPCODE_LMULS ( FWSUB_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WADD_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WADDU_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUB_WV ) : case CASE_WIDEOP_OPCODE_LMULS ( WSUBU_WV ) : { unsigned NewOpc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( FWSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADD_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WADDU_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUB_WV ) CASE_WIDEOP_CHANGE_OPCODE_LMULS ( WSUBU_WV ) } MachineBasicBlock & MBB = * MI . getParent ( ) ; MachineInstrBuilder MIB = BuildMI ( MBB , MI , MI . getDebugLoc ( ) , get ( NewOpc ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) ; MIB . copyImplicitOps ( MI ) ; if ( LV ) { unsigned NumOps = MI . getNumOperands ( ) ; for ( unsigned I = ; I < NumOps ; ++ I ) { MachineOperand & Op = MI . getOperand ( I ) ; if ( Op . isReg ( ) && Op . isKill ( ) ) LV -> replaceKillInstruction ( Op . getReg ( ) , MI , * MIB ) ;" LLVM,RISCV,1872,"Predict the next statement of this code snippet: MachineBasicBlock & MBB = * MI . getParent ( ) ; MachineInstrBuilder MIB = BuildMI ( MBB , MI , MI . getDebugLoc ( ) , get ( NewOpc ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) . add ( MI . getOperand ( ) ) ; MIB . copyImplicitOps ( MI ) ; if ( LV ) { unsigned NumOps = MI . getNumOperands ( ) ; for ( unsigned I = ; I < NumOps ; ++ I ) { MachineOperand & Op = MI . getOperand ( I ) ; if ( Op . isReg ( ) && Op . isKill ( ) ) LV -> replaceKillInstruction ( Op . getReg ( ) , MI , * MIB ) ; } } if ( LIS ) {" LLVM,RISCV,1873,"Predict the next statement of this code snippet: void InstrInfo :: insertIndirectBranch ( MachineBasicBlock & MBB , MachineBasicBlock & DestBB , MachineBasicBlock & RestoreBB , const DebugLoc & DL , int64_t BrOffset , RegScavenger * RS ) const { assert ( RS && ) ; assert ( MBB . empty ( ) && ) ; assert ( MBB . pred_size ( ) == ) ; MachineFunction * MF = MBB . getParent ( ) ; MachineRegisterInfo & MRI = MF -> getRegInfo ( ) ; if ( ! isInt < > ( BrOffset ) ) report_fatal_error ( ) ;" LLVM,RISCV,1874,"Predict the next statement of this code snippet: if ( MBBI -> getOperand ( ) . getReg ( ) != ) return false ; if ( MBBI -> getOperand ( ) . isImm ( ) ) return false ; if ( MBBI -> getOperand ( ) . getReg ( ) != ) return false ; continue ; } unsigned VType = MBBI -> getOperand ( ) . getImm ( ) ; if ( FirstVSetVLI ) { if ( VType :: getSEW ( VType ) != FirstSEW ) return false ; } if ( ! VType :: isTailAgnostic ( VType ) ) return false ; return LMul == VType :: getVLMUL ( VType ) ; } else if ( MBBI -> isInlineAsm ( ) || MBBI -> isCall ( ) ) { return false ; } else if ( MBBI -> getNumDefs ( ) ) { if ( MBBI -> modifiesRegister ( ) ) return false ; for ( const MachineOperand & MO : MBBI -> operands ( ) ) { if ( ! MO . isReg ( ) || ! MO . isDef ( ) ) continue ; if ( ! FoundDef && TRI -> isSubRegisterEq ( MO . getReg ( ) , SrcReg ) ) { if ( MO . getReg ( ) != SrcReg ) return false ; uint64_t TSFlags = MBBI -> getDesc ( ) . TSFlags ; if ( ( TSFlags ) ) return false ; FoundDef = true ; DefMBBI = MBBI ; if ( ! ( TSFlags ) ) return false ; break ; } }" LLVM,RISCV,1875,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; MachineRegisterInfo & MRI = MF -> getRegInfo ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF -> getTarget ( ) ) ; const auto & STI = MF -> getSubtarget < Subtarget > ( ) ; if ( TM . isPositionIndependent ( ) || STI . is64Bit ( ) ) report_fatal_error ( ) ; if ( ! isInt < > ( BrOffset ) ) report_fatal_error ( ) ; unsigned ScratchReg = MRI . createVirtualRegister ( & ) ; auto II = MBB . end ( ) ;" LLVM,RISCV,1876,"Predict the next statement of this code snippet: MachineRegisterInfo & MRI = MF -> getRegInfo ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF -> getTarget ( ) ) ; const auto & STI = MF -> getSubtarget < Subtarget > ( ) ; if ( TM . isPositionIndependent ( ) || STI . is64Bit ( ) ) report_fatal_error ( ) ; if ( ! isInt < > ( BrOffset ) ) report_fatal_error ( ) ; unsigned ScratchReg = MRI . createVirtualRegister ( & ) ; auto II = MBB . end ( ) ; MachineInstr & LuiMI = * BuildMI ( MBB , II , DL , get ( ) , ScratchReg ) . addMBB ( & DestBB , ) ;" LLVM,RISCV,1877,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ;" LLVM,RISCV,1878,"Predict the next statement of this code snippet: if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,1879,"Predict the next statement of this code snippet: void InstrInfo :: storeRegToStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , unsigned SrcReg , bool IsKill , int FI , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) ) . addReg ( SrcReg , getKillRegState ( IsKill ) ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,1880,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ;" LLVM,RISCV,1881,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , unsigned DstReg , unsigned SrcReg , bool KillSrc ) const { assert ( . contains ( DstReg , SrcReg ) && ) ; BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addImm ( ) ;" LLVM,RISCV,1882,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , unsigned DstReg , unsigned SrcReg , bool KillSrc ) const { assert ( . contains ( DstReg , SrcReg ) && ) ;" LLVM,RISCV,1883,"Predict the next statement of this code snippet: case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case TargetOpcode :: INLINEASM : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ;" LLVM,RISCV,1884,"Predict the next statement of this code snippet: const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ; }" LLVM,RISCV,1885,"Predict the next statement of this code snippet: void InstrInfo :: loadRegFromStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , unsigned DstReg , int FI , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const {" LLVM,RISCV,1886,"Predict the next statement of this code snippet: if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ;" LLVM,RISCV,1887,"Predict the next statement of this code snippet: unsigned InstrInfo :: getInstSizeInBytes ( const MachineInstr & MI ) const { unsigned Opcode = MI . getOpcode ( ) ; switch ( Opcode ) { default : { return get ( Opcode ) . getSize ( ) ; } case TargetOpcode :: EH_LABEL : case TargetOpcode :: IMPLICIT_DEF : case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case : case : case : case : case : case : case : return ;" LLVM,RISCV,1888,"Predict the next statement of this code snippet: DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; MachineFunction * MF = MBB . getParent ( ) ; const MachineFrameInfo & MFI = MF -> getFrameInfo ( ) ;" LLVM,RISCV,1889,"Predict the next statement of this code snippet: DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; MachineFunction * MF = MBB . getParent ( ) ; const MachineFrameInfo & MFI = MF -> getFrameInfo ( ) ; MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FI ) , MFI . getObjectAlign ( FI ) ) ; unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ;" LLVM,RISCV,1890,"Predict the next statement of this code snippet: static bool forwardCopyWillClobberTuple ( unsigned DstReg , unsigned SrcReg , unsigned NumRegs ) { return DstReg > SrcReg && ( DstReg - SrcReg ) < NumRegs ;" LLVM,RISCV,1891,"Predict the next statement of this code snippet: return DstReg > SrcReg && ( DstReg - SrcReg ) < NumRegs ;" LLVM,RISCV,1892,"Predict the next statement of this code snippet: return TargetInstrInfo :: commuteInstructionImpl ( WorkingMI , false , OpIdx1 , OpIdx2 ) ; } case CASE_VFMA_OPCODE_LMULS ( FMADD , VV ) : case CASE_VFMA_OPCODE_LMULS ( FMSUB , VV ) : case CASE_VFMA_OPCODE_LMULS ( FNMADD , VV ) : case CASE_VFMA_OPCODE_LMULS ( FNMSUB , VV ) : { assert ( ( OpIdx1 == || OpIdx2 == ) && ) ; if ( OpIdx1 == || OpIdx2 == ) { unsigned Opc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_VFMA_CHANGE_OPCODE_LMULS ( FMADD , FMACC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( FMSUB , FMSAC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( FNMADD , FNMACC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( FNMSUB , FNMSAC , VV ) } auto & WorkingMI = cloneIfNew ( MI ) ; WorkingMI . setDesc ( get ( Opc ) ) ; return TargetInstrInfo :: commuteInstructionImpl ( WorkingMI , false , OpIdx1 , OpIdx2 ) ; } break ;" LLVM,RISCV,1893,"Predict the next statement of this code snippet: MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; int64_t NumOfVReg = Amount / ; Register VL = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) ; assert ( isInt < > ( NumOfVReg ) && ) ; if ( isPowerOf2_32 ( NumOfVReg ) ) { uint32_t ShiftAmount = Log2_32 ( NumOfVReg ) ; if ( ShiftAmount == ) return VL ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL , RegState :: Kill ) . addImm ( ShiftAmount ) ; } else if ( isPowerOf2_32 ( NumOfVReg - ) ) { Register ScaledRegister = MRI . createVirtualRegister ( & ) ; uint32_t ShiftAmount = Log2_32 ( NumOfVReg - ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) ;" LLVM,RISCV,1894,"Predict the next statement of this code snippet: for ( & Inst : Seq ) { if ( ++ Num == Seq . size ( ) ) Result = DstReg ; if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } else { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } SrcReg = Result ; }" LLVM,RISCV,1895,"Predict the next statement of this code snippet: case CASE_VFMA_OPCODE_LMULS ( MACC , VV ) : case CASE_VFMA_OPCODE_LMULS ( NMSAC , VV ) : { assert ( ( OpIdx1 == || OpIdx2 == ) && ) ; assert ( ( OpIdx1 == || OpIdx2 == ) && ) ; unsigned Opc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMACC , FMADD ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMADD , FMACC ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMSAC , FMSUB ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FMSUB , FMSAC ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMACC , FNMADD ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMADD , FNMACC ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMSAC , FNMSUB ) CASE_VFMA_CHANGE_OPCODE_SPLATS ( FNMSUB , FNMSAC ) CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FMACC , FMADD , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FMSAC , FMSUB , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FNMACC , FNMADD , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FNMSAC , FNMSUB , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( MACC , MADD , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( MADD , MACC , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( NMSAC , NMSUB , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( NMSUB , NMSAC , VX ) CASE_VFMA_CHANGE_OPCODE_LMULS ( MACC , MADD , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( NMSAC , NMSUB , VV ) } auto & WorkingMI = cloneIfNew ( MI ) ; WorkingMI . setDesc ( get ( Opc ) ) ; return TargetInstrInfo :: commuteInstructionImpl ( WorkingMI , false , OpIdx1 , OpIdx2 ) ; } case CASE_VFMA_OPCODE_LMULS_MF4 ( FMADD , VV ) : case CASE_VFMA_OPCODE_LMULS_MF4 ( FMSUB , VV ) : case CASE_VFMA_OPCODE_LMULS_MF4 ( FNMADD , VV ) : case CASE_VFMA_OPCODE_LMULS_MF4 ( FNMSUB , VV ) : case CASE_VFMA_OPCODE_LMULS ( MADD , VV ) : case CASE_VFMA_OPCODE_LMULS ( NMSUB , VV ) : { assert ( ( OpIdx1 == || OpIdx2 == ) && ) ; if ( OpIdx1 == || OpIdx2 == ) { unsigned Opc ; switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FMADD , FMACC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FMSUB , FMSAC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FNMADD , FNMACC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS_MF4 ( FNMSUB , FNMSAC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( MADD , MACC , VV ) CASE_VFMA_CHANGE_OPCODE_LMULS ( NMSUB , NMSAC , VV ) } auto & WorkingMI = cloneIfNew ( MI ) ; WorkingMI . setDesc ( get ( Opc ) ) ; return TargetInstrInfo :: commuteInstructionImpl ( WorkingMI , false , OpIdx1 , OpIdx2 ) ; } break ; }" LLVM,RISCV,1896,"Predict the next statement of this code snippet: for ( unsigned I = ; I < NumOps ; ++ I ) { MachineOperand & Op = MI . getOperand ( I ) ; if ( Op . isReg ( ) && Op . isKill ( ) ) LV -> replaceKillInstruction ( Op . getReg ( ) , MI , * MIB ) ; } } if ( LIS ) { SlotIndex Idx = LIS -> ReplaceMachineInstrInMaps ( MI , * MIB ) ; if ( MI . getOperand ( ) . isEarlyClobber ( ) ) { LiveInterval & LI = LIS -> getInterval ( MI . getOperand ( ) . getReg ( ) ) ; LiveRange :: Segment * S = LI . getSegmentContaining ( Idx ) ; if ( S -> end == Idx . getRegSlot ( true ) ) S -> end = Idx . getRegSlot ( ) ; }" LLVM,RISCV,1897,"Predict the next statement of this code snippet: if ( MI . getParent ( ) && MI . getParent ( ) -> getParent ( ) ) { const auto MF = MI . getMF ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF -> getTarget ( ) ) ; const MCRegisterInfo & MRI = * TM . getMCRegisterInfo ( ) ; const MCSubtargetInfo & STI = * TM . getMCSubtargetInfo ( ) ; const Subtarget & ST = MF -> getSubtarget < Subtarget > ( ) ; if ( isCompressibleInst ( MI , & ST , MRI , STI ) ) return ; } return get ( Opcode ) . getSize ( ) ;" LLVM,RISCV,1898,"Predict the next statement of this code snippet: void InstrInfo :: insertIndirectBranch ( MachineBasicBlock & MBB , MachineBasicBlock & DestBB , MachineBasicBlock & RestoreBB , const DebugLoc & DL , int64_t BrOffset , RegScavenger * RS ) const { assert ( RS && ) ; assert ( MBB . empty ( ) && ) ; assert ( MBB . pred_size ( ) == ) ;" LLVM,RISCV,1899,"Predict the next statement of this code snippet: It = MBB . insert ( It , BuildMI ( MF , DebugLoc ( ) , get ( ) , ) . addGlobalAddress ( M . getNamedValue ( MF . getName ( ) ) , , ) ) ; return It ;" LLVM,RISCV,1900,"Predict the next statement of this code snippet: It = MBB . insert ( It , BuildMI ( MF , DebugLoc ( ) , get ( ) , ) . addGlobalAddress ( M . getNamedValue ( MF . getName ( ) ) , , ) ) ; return It ;" LLVM,RISCV,1901,"Predict the next statement of this code snippet: const TargetRegisterInfo * TRI = STI . getRegisterInfo ( ) ; bool FoundDef = false ; bool FirstVSetVLI = false ; unsigned FirstSEW = ; while ( MBBI != MBB . begin ( ) ) { -- MBBI ; if ( MBBI -> isMetaInstruction ( ) ) continue ; if ( MBBI -> getOpcode ( ) == || MBBI -> getOpcode ( ) == || MBBI -> getOpcode ( ) == ) { if ( ! FoundDef ) { if ( ! FirstVSetVLI ) { FirstVSetVLI = true ; unsigned FirstVType = MBBI -> getOperand ( ) . getImm ( ) ; FirstLMul = VType :: getVLMUL ( FirstVType ) ; FirstSEW = VType :: getSEW ( FirstVType ) ; if ( FirstLMul != LMul ) return false ; } if ( MBBI -> getOperand ( ) . getReg ( ) != ) return false ; if ( MBBI -> getOperand ( ) . isImm ( ) ) return false ; if ( MBBI -> getOperand ( ) . getReg ( ) != ) return false ; continue ;" LLVM,RISCV,1902,"Predict the next statement of this code snippet: if ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ) return DestSourcePair { MI . getOperand ( ) , MI . getOperand ( ) } ; break ;" LLVM,RISCV,1903,"Predict the next statement of this code snippet: for ( & Inst : Seq ) { if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( SrcReg , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addReg ( SrcReg , RegState :: Kill ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } SrcReg = DstReg ; }" LLVM,RISCV,1904,"Predict the next statement of this code snippet: } else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( SrcReg , RegState :: Kill ) . setMIFlag ( Flag ) ; } else {" LLVM,RISCV,1905,"Predict the next statement of this code snippet: } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else { llvm_unreachable ( ) ; } if ( IsScalableVector ) { bool UseVMV_V_V = false ; MachineBasicBlock :: const_iterator DefMBBI ; unsigned DefExplicitOpNum ; unsigned VIOpc ; if ( isConvertibleToVMV_V_V ( STI , MBB , MBBI , DefMBBI , LMul ) ) { UseVMV_V_V = true ; DefExplicitOpNum = DefMBBI -> getNumExplicitOperands ( ) ; switch ( LMul ) { default : llvm_unreachable ( ) ; case : Opc = ; VIOpc = ; break ; case : Opc = ; VIOpc = ; break ; case : Opc = ; VIOpc = ; break ; case : Opc = ; VIOpc = ; break ; } } bool UseVMV_V_I = false ; if ( UseVMV_V_V && ( DefMBBI -> getOpcode ( ) == VIOpc ) ) { UseVMV_V_I = true ; Opc = VIOpc ; } if ( NF == ) {" LLVM,RISCV,1906,"Predict the next statement of this code snippet: unsigned Imm = MI . getOperand ( OpIdx ) . getImm ( ) ; VType :: printVType ( Imm , OS ) ; } else if ( ( TSFlags ) ) { unsigned NumOperands = MI . getNumExplicitOperands ( ) ; bool HasPolicy = ( TSFlags ) ; if ( OpIdx != NumOperands - HasPolicy - ) return std :: string ( ) ; unsigned Log2SEW = MI . getOperand ( OpIdx ) . getImm ( ) ;" LLVM,RISCV,1907,"Predict the next statement of this code snippet: } if ( MI . isInlineAsm ( ) ) return outliner :: InstrType :: Illegal ; if ( MI . isTerminator ( ) && ! MBB -> succ_empty ( ) ) return outliner :: InstrType :: Illegal ; if ( MI . isReturn ( ) ) return outliner :: InstrType :: Illegal ; if ( MI . modifiesRegister ( , TRI ) || MI . getDesc ( ) . hasImplicitDefOfPhysReg ( ) ) return outliner :: InstrType :: Illegal ; for ( const auto & MO : MI . operands ( ) ) if ( MO . isMBB ( ) || MO . isBlockAddress ( ) || MO . isCPI ( ) || MO . isJTI ( ) ) return outliner :: InstrType :: Illegal ;" LLVM,RISCV,1908,"Predict the next statement of this code snippet: if ( MI . modifiesRegister ( , TRI ) || MI . getDesc ( ) . hasImplicitDefOfPhysReg ( ) ) return outliner :: InstrType :: Illegal ; for ( const auto & MO : MI . operands ( ) ) if ( MO . isMBB ( ) || MO . isBlockAddress ( ) || MO . isCPI ( ) || MO . isJTI ( ) ) return outliner :: InstrType :: Illegal ;" LLVM,RISCV,1909,"Predict the next statement of this code snippet: uint32_t ShiftAmount = Log2_32 ( NumOfVReg - ) ; BuildMI ( MBB , II , DL , get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; BuildMI ( MBB , II , DL , get ( ) , VL ) . addReg ( ScaledRegister , RegState :: Kill ) . addReg ( VL , RegState :: Kill ) . setMIFlag ( Flag ) ; } else if ( isPowerOf2_32 ( NumOfVReg + ) ) { Register ScaledRegister = MRI . createVirtualRegister ( & ) ; uint32_t ShiftAmount = Log2_32 ( NumOfVReg + ) ; BuildMI ( MBB , II , DL , get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; BuildMI ( MBB , II , DL , get ( ) , VL ) . addReg ( ScaledRegister , RegState :: Kill ) . addReg ( VL , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { Register N = MRI . createVirtualRegister ( & ) ; movImm ( MBB , II , DL , N , NumOfVReg , Flag ) ; if ( ! STI . hasStdExtM ( ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; BuildMI ( MBB , II , DL , get ( ) , VL ) . addReg ( VL , RegState :: Kill ) . addReg ( N , RegState :: Kill ) . setMIFlag ( Flag ) ; }" LLVM,RISCV,1910,"Predict the next statement of this code snippet: } BuildMI ( MBB , II , DL , get ( Opc ) , VL ) . addReg ( VL , RegState :: Kill ) . addReg ( VL ) . setMIFlag ( Flag ) ; } else if ( isPowerOf2_32 ( NumOfVReg - ) ) { Register ScaledRegister = MRI . createVirtualRegister ( & ) ; uint32_t ShiftAmount = Log2_32 ( NumOfVReg - ) ; BuildMI ( MBB , II , DL , get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; BuildMI ( MBB , II , DL , get ( ) , VL ) . addReg ( ScaledRegister , RegState :: Kill ) . addReg ( VL , RegState :: Kill ) . setMIFlag ( Flag ) ; } else if ( isPowerOf2_32 ( NumOfVReg + ) ) { Register ScaledRegister = MRI . createVirtualRegister ( & ) ; uint32_t ShiftAmount = Log2_32 ( NumOfVReg + ) ; BuildMI ( MBB , II , DL , get ( ) , ScaledRegister ) . addReg ( VL ) . addImm ( ShiftAmount ) . setMIFlag ( Flag ) ; BuildMI ( MBB , II , DL , get ( ) , VL ) . addReg ( ScaledRegister , RegState :: Kill ) . addReg ( VL , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { Register N = MRI . createVirtualRegister ( & ) ; movImm ( MBB , II , DL , N , NumOfVReg , Flag ) ; if ( ! STI . hasStdExtM ( ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported {" LLVM,RISCV,1911,"Predict the next statement of this code snippet: void InstrInfo :: movImm ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , Register DstReg , uint64_t Val , MachineInstr :: MIFlag Flag ) const { Register SrcReg = ; if ( ! STI . is64Bit ( ) && ! isInt < > ( Val ) ) report_fatal_error ( ) ; Seq = ( Val , STI . getFeatureBits ( ) ) ; assert ( ! Seq . empty ( ) ) ; for ( & Inst : Seq ) { switch ( Inst . getOpndKind ( ) ) { case : BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1912,"Predict the next statement of this code snippet: for ( & Inst : Seq ) { switch ( Inst . getOpndKind ( ) ) { case : BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; break ; case : BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( ) . setMIFlag ( Flag ) ; break ; case : BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( SrcReg , RegState :: Kill ) . setMIFlag ( Flag ) ; break ; case : BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , DstReg ) . addReg ( SrcReg , RegState :: Kill ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; break ; } SrcReg = DstReg ; }" LLVM,RISCV,1913,"Predict the next statement of this code snippet: bool InstrInfo :: shouldOutlineFromFunctionByDefault ( MachineFunction & MF ) const {" LLVM,RISCV,1914,"Predict the next statement of this code snippet: isVector = true ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; isVector = true ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; isVector = true ; } else llvm_unreachable ( ) ; if ( isVector ) { RVFI -> setHasSpillVRs ( ) ; MFI . setStackID ( FI , TargetStackID :: Vector ) ; BuildMI ( MBB , I , DL , get ( Opcode ) ) . addReg ( SrcReg , getKillRegState ( IsKill ) ) . addFrameIndex ( FI ) ; } else {" LLVM,RISCV,1915,"Predict the next statement of this code snippet: MachineFunction * MF = MBB . getParent ( ) ; MachineFrameInfo & MFI = MF -> getFrameInfo ( ) ; MachineFunctionInfo * RVFI = MF -> getInfo < MachineFunctionInfo > ( ) ; DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; unsigned Opcode ; bool isVector = false ; if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) { Opcode = ; isVector = true ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ;" LLVM,RISCV,1916,"Predict the next statement of this code snippet: if ( . contains ( DstReg , SrcReg ) ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addImm ( ) . setMIFlag ( Flag ) ; return ; } else if ( . contains ( DstReg , SrcReg ) ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . setMIFlag ( Flag ) ; return ; } unsigned Opc ; bool IsScalableVector = true ; unsigned NF = ; unsigned LMul = ; unsigned SubRegIdx = ; if ( . contains ( DstReg , SrcReg ) ) { Opc = ; IsScalableVector = false ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; IsScalableVector = false ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; IsScalableVector = false ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ; NF = ; LMul = ; } else if ( . contains ( DstReg , SrcReg ) ) { Opc = ; SubRegIdx = ;" LLVM,RISCV,1917,"Predict the next statement of this code snippet: Optional < int64_t > InstrInfo :: getAsIntImmediate ( const MachineOperand & Op , const MachineRegisterInfo & MRI ) const { if ( Op . isImm ( ) ) return Op . getImm ( ) ; if ( Op . isReg ( ) ) { Register Reg = Op . getReg ( ) ; if ( Reg == ) return ; if ( Reg . isVirtual ( ) ) { auto * Def = MRI . getUniqueVRegDef ( Reg ) ; switch ( Def -> getOpcode ( ) ) { default : return None ; case : case : case :" LLVM,RISCV,1918,"Predict the next statement of this code snippet: if ( Reg == ) return ; if ( Reg . isVirtual ( ) ) { auto * Def = MRI . getUniqueVRegDef ( Reg ) ; switch ( Def -> getOpcode ( ) ) { default : return None ; case : case :" LLVM,RISCV,1919,"Predict the next statement of this code snippet: { MO_CALL , } , { MO_PLT , } , { MO_LO , } , { MO_HI , } , { MO_PCREL_LO , } , { MO_PCREL_HI , } , { MO_GOT_HI , } , { MO_TPREL_LO , } , { MO_TPREL_HI , } , { MO_TPREL_ADD , } , { MO_TLS_GOT_HI , } , { MO_TLS_GD_HI , } , { MO_CAPTAB_PCREL_HI , } , { MO_TPREL_CINCOFFSET , } , { MO_TLS_IE_CAPTAB_PCREL_HI , } , { MO_TLS_GD_CAPTAB_PCREL_HI , } , { MO_CCALL , } } ;" LLVM,RISCV,1920,"Predict the next statement of this code snippet: ArrayRef < std :: pair < unsigned , const char * >> InstrInfo :: getSerializableDirectMachineOperandTargetFlags ( ) const { using namespace II ; static const std :: pair < unsigned , const char * > TargetFlags [ ] = { { MO_CALL , } , { MO_PLT , } , { MO_LO , } , { MO_HI , } , { MO_PCREL_LO , } , { MO_PCREL_HI , } , { MO_GOT_HI , } , { MO_TPREL_LO , } , { MO_TPREL_HI , } , { MO_TPREL_ADD , } , { MO_TLS_GOT_HI , } , { MO_TLS_GD_HI , } , { MO_CAPTAB_PCREL_HI , } , { MO_TPREL_CINCOFFSET , } , { MO_TLS_IE_CAPTAB_PCREL_HI , } , { MO_TLS_GD_CAPTAB_PCREL_HI , } , { MO_CCALL , } } ;" LLVM,RISCV,1921,"Predict the next statement of this code snippet: if ( BytesAdded ) * BytesAdded = ; assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; MachineFunction * MF = MBB . getParent ( ) ; const Subtarget & ST = MF -> getSubtarget < Subtarget > ( ) ; unsigned PseudoOpcode ; if ( ( ST . getTargetABI ( ) ) ) PseudoOpcode = ; else PseudoOpcode = ; if ( Cond . empty ( ) ) { MachineInstr & MI = * BuildMI ( & MBB , DL , get ( PseudoOpcode ) ) . addMBB ( TBB ) ; if ( BytesAdded ) * BytesAdded += getInstSizeInBytes ( MI ) ;" LLVM,RISCV,1922,"Predict the next statement of this code snippet: unsigned InstrInfo :: insertBranch ( MachineBasicBlock & MBB , MachineBasicBlock * TBB , MachineBasicBlock * FBB , ArrayRef < MachineOperand > Cond , const DebugLoc & DL , int * BytesAdded ) const { if ( BytesAdded ) * BytesAdded = ; assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; MachineFunction * MF = MBB . getParent ( ) ; const Subtarget & ST = MF -> getSubtarget < Subtarget > ( ) ; unsigned PseudoOpcode ; if ( ( ST . getTargetABI ( ) ) ) PseudoOpcode = ; else PseudoOpcode = ; if ( Cond . empty ( ) ) {" LLVM,RISCV,1923,"Predict the next statement of this code snippet: const TargetRegisterClass * RC ; unsigned PseudoOpcode ; if ( ( ST . getTargetABI ( ) ) ) { RC = & ; PseudoOpcode = ; } else { RC = & ; PseudoOpcode = ; } Register ScratchReg = MRI . createVirtualRegister ( RC ) ; auto II = MBB . end ( ) ; MachineInstr & MI = * BuildMI ( MBB , II , DL , get ( PseudoOpcode ) ) . addReg ( ScratchReg , RegState :: Define | RegState :: Dead ) . addMBB ( & DestBB , ) ; RS -> enterBasicBlockEnd ( MBB ) ; unsigned Scav = RS -> scavengeRegisterBackwards ( * RC , MI . getIterator ( ) , false , ) ; MRI . replaceRegWith ( ScratchReg , Scav ) ; MRI . clearVirtRegs ( ) ;" LLVM,RISCV,1924,"Predict the next statement of this code snippet: return true ; case : return ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) || ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) ; case : return ( MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) || ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) ; case : case : return MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ; case : case :" LLVM,RISCV,1925,"Predict the next statement of this code snippet: switch ( Opcode ) { default : break ; case : return true ; case : return ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) || ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) ; case : return ( MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) || ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ) ; case : case : return MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ; case : case :" LLVM,RISCV,1926,"Predict the next statement of this code snippet: switch ( BranchOp ) { default : llvm_unreachable ( ) ; case : case : case : case : case : case : return isIntN ( , BrOffset ) ; case : case :" LLVM,RISCV,1927,"Predict the next statement of this code snippet: switch ( MI . getOpcode ( ) ) { default : return ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,RISCV,1928,"Predict the next statement of this code snippet: case : case : case : Base = & I . getOperand ( ) ; Size = & I . getOperand ( ) ; return true ;" LLVM,RISCV,1929,"Predict the next statement of this code snippet: unsigned InstrInfo :: isStoreToStackSlot ( const MachineInstr & MI , int & FrameIndex ) const { switch ( MI . getOpcode ( ) ) { default : return ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,RISCV,1930,"Predict the next statement of this code snippet: case : case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) {" LLVM,RISCV,1931,"Predict the next statement of this code snippet: IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else { llvm_unreachable ( ) ; } } else { if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ;" LLVM,RISCV,1932,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & STI ) : GenInstrInfo ( ( STI . getTargetABI ( ) ) ? : , ( STI . getTargetABI ( ) ) ? : ) , STI ( STI ) {" LLVM,RISCV,1933,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & STI ) : GenInstrInfo ( ( STI . getTargetABI ( ) ) ? : , ( STI . getTargetABI ( ) ) ? : ) , STI ( STI ) {" LLVM,RISCV,1934,"Predict the next statement of this code snippet: Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; } if ( IsScalableVector ) { MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOStore , MemoryLocation :: UnknownSize , MFI . getObjectAlign ( FI ) ) ; MFI . setStackID ( FI , TargetStackID :: ScalableVector ) ; auto MIB = BuildMI ( MBB , I , DL , get ( Opcode ) ) . addReg ( SrcReg , getKillRegState ( IsKill ) ) . addFrameIndex ( FI ) . addMemOperand ( MMO ) ; if ( IsZvlsseg ) { MIB . addReg ( ) ; } } else { MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOStore , MFI . getObjectSize ( FI ) , MFI . getObjectAlign ( FI ) ) ; BuildMI ( MBB , I , DL , get ( Opcode ) ) . addReg ( SrcReg , getKillRegState ( IsKill ) ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ;" LLVM,RISCV,1935,"Predict the next statement of this code snippet: const Subtarget & ST = MBB . getParent ( ) -> getSubtarget < Subtarget > ( ) ; DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; MachineFunction * MF = MBB . getParent ( ) ; MachineFrameInfo & MFI = MF -> getFrameInfo ( ) ; unsigned Opcode ; bool IsScalableVector = true ; bool IsZvlsseg = true ; if ( ( ST . getTargetABI ( ) ) ) { if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else { llvm_unreachable ( ) ; } } else { if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = TRI -> getRegSizeInBits ( ) == ? : ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) {" LLVM,RISCV,1936,"Predict the next statement of this code snippet: switch ( Opcode ) { default : { if ( MI . getParent ( ) && MI . getParent ( ) -> getParent ( ) ) { const auto MF = MI . getMF ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF -> getTarget ( ) ) ; const MCRegisterInfo & MRI = * TM . getMCRegisterInfo ( ) ; const MCSubtargetInfo & STI = * TM . getMCSubtargetInfo ( ) ; const Subtarget & ST = MF -> getSubtarget < Subtarget > ( ) ; if ( isCompressibleInst ( MI , & ST , MRI , STI ) ) return ; } return get ( Opcode ) . getSize ( ) ; } case TargetOpcode :: EH_LABEL : case TargetOpcode :: IMPLICIT_DEF : case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case :" LLVM,RISCV,1937,"Predict the next statement of this code snippet: int NumTerminators = ; for ( auto J = I . getReverse ( ) ; J != MBB . rend ( ) && isUnpredicatedTerminator ( * J ) ; J ++ ) { NumTerminators ++ ; if ( J -> getDesc ( ) . isUnconditionalBranch ( ) || J -> getDesc ( ) . isIndirectBranch ( ) ) { FirstUncondOrIndirectBr = J . getReverse ( ) ; } } if ( AllowModify && FirstUncondOrIndirectBr != MBB . end ( ) ) { while ( std :: next ( FirstUncondOrIndirectBr ) != MBB . end ( ) ) { std :: next ( FirstUncondOrIndirectBr ) -> eraseFromParent ( ) ; NumTerminators -- ; } I = FirstUncondOrIndirectBr ; } if ( I -> getDesc ( ) . isIndirectBranch ( ) ) return true ; if ( NumTerminators > ) return true ; if ( NumTerminators == && I -> getDesc ( ) . isUnconditionalBranch ( ) ) { TBB = getBranchDestBlock ( * I ) ; return false ; } if ( NumTerminators == && I -> getDesc ( ) . isConditionalBranch ( ) ) { parseCondBranch ( * I , TBB , Cond ) ;" LLVM,RISCV,1938,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator FirstUncondOrIndirectBr = MBB . end ( ) ; int NumTerminators = ; for ( auto J = I . getReverse ( ) ; J != MBB . rend ( ) && isUnpredicatedTerminator ( * J ) ; J ++ ) { NumTerminators ++ ; if ( J -> getDesc ( ) . isUnconditionalBranch ( ) || J -> getDesc ( ) . isIndirectBranch ( ) ) { FirstUncondOrIndirectBr = J . getReverse ( ) ; } } if ( AllowModify && FirstUncondOrIndirectBr != MBB . end ( ) ) { while ( std :: next ( FirstUncondOrIndirectBr ) != MBB . end ( ) ) { std :: next ( FirstUncondOrIndirectBr ) -> eraseFromParent ( ) ; NumTerminators -- ; } I = FirstUncondOrIndirectBr ; } if ( I -> getDesc ( ) . isIndirectBranch ( ) ) return true ; if ( NumTerminators > ) return true ; if ( NumTerminators == && I -> getDesc ( ) . isUnconditionalBranch ( ) ) { TBB = getBranchDestBlock ( * I ) ; return false ; } if ( NumTerminators == && I -> getDesc ( ) . isConditionalBranch ( ) ) { parseCondBranch ( * I , TBB , Cond ) ; return false ; } if ( NumTerminators == && std :: prev ( I ) -> getDesc ( ) . isConditionalBranch ( ) && I -> getDesc ( ) . isUnconditionalBranch ( ) ) { parseCondBranch ( * std :: prev ( I ) , TBB , Cond ) ; FBB = getBranchDestBlock ( * I ) ;" LLVM,RISCV,1939,"Predict the next statement of this code snippet: case : case : case : case : return isIntN ( , BrOffset ) ; case : case : return isIntN ( , BrOffset ) ; case :" LLVM,RISCV,1940,"Predict the next statement of this code snippet: return true ; } assert ( ( Cond . size ( ) == ) && ) ; Cond [ ] . setImm ( getOppositeBranchOpcode ( Cond [ ] . getImm ( ) ) ) ; return false ;" LLVM,RISCV,1941,"Predict the next statement of this code snippet: Cond [ ] . setImm ( getOppositeBranchOpcode ( Cond [ ] . getImm ( ) ) ) ;" LLVM,RISCV,1942,"Predict the next statement of this code snippet: case : Ok = isInt < > ( Imm ) ; break ; case : Ok = isShiftedInt < , > ( Imm ) ; break ; case : Ok = isUInt < > ( Imm ) ; break ; case : Ok = isShiftedInt < , > ( Imm ) ; break ; case : if ( STI . getTargetTriple ( ) . isArch64Bit ( ) ) Ok = isUInt < > ( Imm ) ; else Ok = isUInt < > ( Imm ) ; break ;" LLVM,RISCV,1943,"Predict the next statement of this code snippet: auto E = MBB . end ( ) ; for ( ; I != E ; ++ I ) { if ( I -> isCFIInstruction ( ) ) { I -> removeFromParent ( ) ; Changed = true ; break ; }" LLVM,RISCV,1944,"Predict the next statement of this code snippet: if ( . contains ( DstReg , SrcReg ) ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addImm ( ) ; return ; } unsigned Opc ; if ( . contains ( DstReg , SrcReg ) ) Opc = ; else if ( . contains ( DstReg , SrcReg ) ) Opc = ; else if ( . contains ( DstReg , SrcReg ) || . contains ( DstReg , SrcReg ) || . contains ( DstReg , SrcReg ) || . contains ( DstReg , SrcReg ) || ( . contains ( DstReg ) && . contains ( SrcReg ) ) ) { Opc = ; BuildMI ( MBB , MBBI , DL , get ( Opc ) , ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; }" LLVM,RISCV,1945,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , MCRegister DstReg , MCRegister SrcReg , bool KillSrc ) const { if ( . contains ( DstReg , SrcReg ) ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addImm ( ) ; return ; } unsigned Opc ; if ( . contains ( DstReg , SrcReg ) ) Opc = ; else if ( . contains ( DstReg , SrcReg ) ) Opc = ; else if ( . contains ( DstReg , SrcReg ) || . contains ( DstReg , SrcReg ) || . contains ( DstReg , SrcReg ) || . contains ( DstReg , SrcReg ) || ( . contains ( DstReg ) && . contains ( SrcReg ) ) ) { Opc = ; BuildMI ( MBB , MBBI , DL , get ( Opc ) , ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; }" LLVM,RISCV,1946,"Predict the next statement of this code snippet: return get ( Opcode ) . getSize ( ) ; } case TargetOpcode :: EH_LABEL : case TargetOpcode :: IMPLICIT_DEF : case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case : case : case : case : case : case : case : return ; case TargetOpcode :: INLINEASM : case TargetOpcode :: INLINEASM_BR : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ; }" LLVM,RISCV,1947,"Predict the next statement of this code snippet: default : return ; case : case : case : case : case : case : case : case : case : case : break ; } if ( ( MI . getOpcode ( ) == ) && MI . getOperand ( ) . isFI ( ) ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; } else if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ;" LLVM,RISCV,1948,"Predict the next statement of this code snippet: unsigned InstrInfo :: isLoadFromStackSlot ( const MachineInstr & MI , int & FrameIndex ) const { switch ( MI . getOpcode ( ) ) { default : return ; case : case : case : case : case : case : case : case : case : case : break ; } if ( ( MI . getOpcode ( ) == ) && MI . getOperand ( ) . isFI ( ) ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; } else if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ;" LLVM,RISCV,1949,"Predict the next statement of this code snippet: case : break ; } if ( ( MI . getOpcode ( ) == ) && MI . getOperand ( ) . isFI ( ) ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; } else if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; } return ;" LLVM,RISCV,1950,"Predict the next statement of this code snippet: case : case : case : break ; } if ( ( MI . getOpcode ( ) == ) && MI . getOperand ( ) . isFI ( ) ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; } else if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ;" LLVM,RISCV,1951,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) || . hasSubClassEq ( RC ) || . hasSubClassEq ( RC ) || . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; if ( Opcode == ) { BuildMI ( MBB , I , DL , get ( Opcode ) ) . addReg ( SrcReg , getKillRegState ( IsKill ) ) . addFrameIndex ( FI ) ; } else {" LLVM,RISCV,1952,"Predict the next statement of this code snippet: if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; if ( RC == & ) BuildMI ( MBB , I , DL , get ( ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,1953,"Predict the next statement of this code snippet: if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; if ( RC == & ) BuildMI ( MBB , I , DL , get ( ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ; else llvm_unreachable ( ) ;" LLVM,RISCV,1954,"Predict the next statement of this code snippet: if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ;" LLVM,RISCV,1955,"Predict the next statement of this code snippet: void InstrInfo :: storeRegToStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , unsigned SrcReg , bool IsKill , int FI , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc DL ;" LLVM,RISCV,1956,"Predict the next statement of this code snippet: case TargetOpcode :: DBG_VALUE : return ; case : case : case : return ; case TargetOpcode :: INLINEASM : case TargetOpcode :: INLINEASM_BR : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ; }" LLVM,RISCV,1957,"Predict the next statement of this code snippet: case TargetOpcode :: INLINEASM_BR : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ;" LLVM,RISCV,1958,"Predict the next statement of this code snippet: unsigned ScratchReg = MRI . createVirtualRegister ( & ) ; auto II = MBB . end ( ) ; MachineInstr & LuiMI = * BuildMI ( MBB , II , DL , get ( ) , ScratchReg ) . addMBB ( & DestBB , ) ; BuildMI ( MBB , II , DL , get ( ) ) . addReg ( ScratchReg , RegState :: Kill ) . addMBB ( & DestBB , ) ; RS -> enterBasicBlockEnd ( MBB ) ;" LLVM,RISCV,1959,"Predict the next statement of this code snippet: if ( ShiftAmount == ) return VL ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL , RegState :: Kill ) . addImm ( ShiftAmount ) ; } else { Register N = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , N ) . addReg ( ) . addImm ( NumOfVReg ) ;" LLVM,RISCV,1960,"Predict the next statement of this code snippet: int64_t NumOfVReg = Amount / ; Register VL = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) ; assert ( isInt < > ( NumOfVReg ) && ) ; if ( isPowerOf2_32 ( NumOfVReg ) ) { uint32_t ShiftAmount = Log2_32 ( NumOfVReg ) ; if ( ShiftAmount == ) return VL ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL , RegState :: Kill ) . addImm ( ShiftAmount ) ; } else { Register N = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , N ) . addReg ( ) . addImm ( NumOfVReg ) ;" LLVM,RISCV,1961,"Predict the next statement of this code snippet: Width = ( * LdSt . memoperands_begin ( ) ) -> getSize ( ) ; BaseReg = & LdSt . getOperand ( ) ; Offset = LdSt . getOperand ( ) . getImm ( ) ; return true ;" LLVM,RISCV,1962,"Predict the next statement of this code snippet: if ( LdSt . getNumExplicitOperands ( ) != ) return false ; if ( ! LdSt . getOperand ( ) . isReg ( ) || ! LdSt . getOperand ( ) . isImm ( ) ) return false ; if ( ! LdSt . hasOneMemOperand ( ) ) return false ; Width = ( * LdSt . memoperands_begin ( ) ) -> getSize ( ) ; BaseReg = & LdSt . getOperand ( ) ; Offset = LdSt . getOperand ( ) . getImm ( ) ; return true ;" LLVM,RISCV,1963,"Predict the next statement of this code snippet: else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; if ( IsScalableVector ) { MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOLoad , MemoryLocation :: UnknownSize , MFI . getObjectAlign ( FI ) ) ; MFI . setStackID ( FI , TargetStackID :: ScalableVector ) ; auto MIB = BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) ; if ( IsZvlsseg ) { Register AddrInc = MF -> getRegInfo ( ) . createVirtualRegister ( & ) ; MIB . addReg ( AddrInc , RegState :: Define ) ; } MIB . addFrameIndex ( FI ) . addMemOperand ( MMO ) ; if ( IsZvlsseg ) { MIB . addReg ( ) ; } } else { MachineMemOperand * MMO = MF -> getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( * MF , FI ) , MachineMemOperand :: MOLoad , MFI . getObjectSize ( FI ) , MFI . getObjectAlign ( FI ) ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ;" LLVM,RISCV,1964,"Predict the next statement of this code snippet: } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsScalableVector = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) { Opcode = ; IsZvlsseg = false ; } else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ;" LLVM,RISCV,1965,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , unsigned DstReg , unsigned SrcReg , bool KillSrc ) const { if ( . contains ( DstReg , SrcReg ) ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addImm ( ) ; return ;" LLVM,RISCV,1966,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ;" LLVM,RISCV,1967,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,1968,"Predict the next statement of this code snippet: unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ;" LLVM,RISCV,1969,"Predict the next statement of this code snippet: else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,1970,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ;" LLVM,RISCV,1971,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addReg ( SrcReg , RegState :: Kill ) . setMIFlag ( Flag ) ; } else { BuildMI ( MBB , MBBI , DL , get ( Inst . Opc ) , Result ) . addReg ( SrcReg , RegState :: Kill ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; }" LLVM,RISCV,1972,"Predict the next statement of this code snippet: unsigned Num = ; if ( ! STI . is64Bit ( ) && ! isInt < > ( Val ) ) report_fatal_error ( ) ; Seq = ( Val , STI . getFeatureBits ( ) ) ; assert ( ! Seq . empty ( ) ) ; for ( & Inst : Seq ) { if ( ++ Num == Seq . size ( ) ) Result = DstReg ; if ( Inst . Opc == ) { BuildMI ( MBB , MBBI , DL , get ( ) , Result ) . addImm ( Inst . Imm ) . setMIFlag ( Flag ) ; } else if ( Inst . Opc == ) {" LLVM,RISCV,1973,"Predict the next statement of this code snippet: case : return ; case TargetOpcode :: INLINEASM : case TargetOpcode :: INLINEASM_BR : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ; } }" LLVM,RISCV,1974,"Predict the next statement of this code snippet: } case TargetOpcode :: EH_LABEL : case TargetOpcode :: IMPLICIT_DEF : case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case : case : case : case : return ; case TargetOpcode :: INLINEASM : case TargetOpcode :: INLINEASM_BR : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ;" LLVM,RISCV,1975,"Predict the next statement of this code snippet: case : if ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ) return DestSourcePair { MI . getOperand ( ) , MI . getOperand ( ) } ; break ; } return None ;" LLVM,RISCV,1976,"Predict the next statement of this code snippet: case : if ( MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == MI . getOperand ( ) . getReg ( ) ) return DestSourcePair { MI . getOperand ( ) , MI . getOperand ( ) } ; break ; } return None ;" LLVM,RISCV,1977,"Predict the next statement of this code snippet: TBB = ThisTarget -> getMBB ( ) ; continue ; } while ( std :: next ( I ) != MBB . end ( ) ) std :: next ( I ) -> eraseFromParent ( ) ; Cond . clear ( ) ; FBB = ; TBB = ThisTarget -> getMBB ( ) ; continue ; } if ( Cond . empty ( ) ) { FBB = TBB ; TBB = ThisTarget -> getMBB ( ) ; Cond . push_back ( MachineOperand :: CreateImm ( ThisCond [ ] . getImm ( ) ) ) ; for ( unsigned int i = ; i < ( I -> getNumExplicitOperands ( ) ) ; i ++ ) Cond . push_back ( I -> getOperand ( i ) ) ; continue ; } assert ( Cond . size ( ) <= ) ; assert ( TBB ) ;" LLVM,RISCV,1978,"Predict the next statement of this code snippet: bool InstrInfo :: analyzeBranch ( MachineBasicBlock & MBB , MachineBasicBlock * & TBB , MachineBasicBlock * & FBB , SmallVectorImpl < MachineOperand > & Cond , bool AllowModify ) const { MachineBasicBlock :: iterator I = MBB . end ( ) ; while ( I != MBB . begin ( ) ) { -- I ; if ( I -> isDebugValue ( ) ) continue ; if ( ! isUnpredicatedTerminator ( * I ) ) break ; SmallVector < MachineOperand , > ThisCond ; ThisCond . push_back ( MachineOperand :: CreateImm ( ) ) ; const MachineOperand * ThisTarget ; if ( ! isBranch ( I , ThisCond , ThisTarget ) ) return true ; if ( ! ThisTarget -> isMBB ( ) ) return true ; if ( ThisCond [ ] . getImm ( ) == ) { if ( ! AllowModify ) { TBB = ThisTarget -> getMBB ( ) ; continue ; } while ( std :: next ( I ) != MBB . end ( ) ) std :: next ( I ) -> eraseFromParent ( ) ; Cond . clear ( ) ; FBB = ; TBB = ThisTarget -> getMBB ( ) ; continue ; } if ( Cond . empty ( ) ) { FBB = TBB ; TBB = ThisTarget -> getMBB ( ) ; Cond . push_back ( MachineOperand :: CreateImm ( ThisCond [ ] . getImm ( ) ) ) ;" LLVM,RISCV,1979,"Predict the next statement of this code snippet: else if ( . contains ( DestReg , SrcReg ) ) Opcode = ; else if ( . contains ( DestReg , SrcReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( DestReg , SrcReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( SrcReg ) && . contains ( DestReg ) ) { Opcode = STI . isRV64 ( ) ? : ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( SrcReg ) && . contains ( DestReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( SrcReg ) && . contains ( DestReg ) ) { Opcode = ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; return ; } else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) { Opcode = STI . isRV64 ( ) ? : ; BuildMI ( MBB , MBBI , DL , get ( Opcode ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,RISCV,1980,"Predict the next statement of this code snippet: bool InstrInfo :: expandPostRAPseudo ( MachineInstr & MI ) const { switch ( MI . getOpcode ( ) ) { default :" LLVM,RISCV,1981,"Predict the next statement of this code snippet: unsigned InstrInfo :: InsertBranch ( MachineBasicBlock & MBB , MachineBasicBlock * TBB , MachineBasicBlock * FBB , ArrayRef < MachineOperand > Cond , const DebugLoc & DL ) const { if ( FBB ) { unsigned count = InsertBranchAtInst ( MBB , MBB . end ( ) , TBB , Cond , DL ) ; BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ;" LLVM,RISCV,1982,"Predict the next statement of this code snippet: BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ; count ++ ; return count ; }" LLVM,RISCV,1983,"Predict the next statement of this code snippet: BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case ( | ) : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case ( | ) : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addMBB ( TBB ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case | :" LLVM,RISCV,1984,"Predict the next statement of this code snippet: break ; case ( | ) : BuildMI ( MBB , I , DL , get ( ) ) . addImm ( offset ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addImm ( offset ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case ( | ) : BuildMI ( MBB , I , DL , get ( ) ) . addImm ( offset ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addImm ( offset ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case : BuildMI ( MBB , I , DL , get ( ) ) . addImm ( offset ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case | : BuildMI ( MBB , I , DL , get ( ) ) . addImm ( offset ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; case | : BuildMI ( MBB , I , DL , get ( ) ) . addImm ( offset ) . addReg ( Cond [ ] . getReg ( ) ) . addReg ( Cond [ ] . getReg ( ) ) ; break ; default : llvm_unreachable ( ) ; }" LLVM,RISCV,1985,"Predict the next statement of this code snippet: return isSimpleMove ( MI , FrameIndex , ) ;" LLVM,RISCV,1986,"Predict the next statement of this code snippet: static int isSimpleMove ( const MachineInstr & MI , int & FrameIndex , int Flag ) { const MCInstrDesc & MCID = MI . getDesc ( ) ; if ( ( MCID . TSFlags & Flag ) && MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . getImm ( ) == && MI . getOperand ( ) . getReg ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,1987,"Predict the next statement of this code snippet: const MCInstrDesc & MCID = MI . getDesc ( ) ; if ( ( MCID . TSFlags & Flag ) && MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . getImm ( ) == && MI . getOperand ( ) . getReg ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,1988,"Predict the next statement of this code snippet: unsigned InstrInfo :: isStoreToStackSlot ( const MachineInstr & MI , int & FrameIndex ) const {" LLVM,RISCV,1989,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,1990,"Predict the next statement of this code snippet: case : return isIntN ( , BrOffset ) ; case : case : return isIntN ( , BrOffset ) ; case : return true ; }" LLVM,RISCV,1991,"Predict the next statement of this code snippet: assert ( ( Cond . size ( ) == ) && ) ; if ( Cond [ ] . getImm ( ) == ) return true ; Cond [ ] . setImm ( getOppositeBranchOpcode ( Cond [ ] . getImm ( ) ) ) ; return false ;" LLVM,RISCV,1992,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addImm ( Hi20 ) . setMIFlag ( Flag ) ; BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( DstReg , RegState :: Kill ) . addImm ( Lo12 ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1993,"Predict the next statement of this code snippet: void InstrInfo :: movImm32 ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , Register DstReg , uint64_t Val , MachineInstr :: MIFlag Flag ) const { assert ( isInt < > ( Val ) && ) ; uint64_t Hi20 = ( ( Val + ) >> ) & ; uint64_t Lo12 = SignExtend64 < > ( Val ) ; BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addImm ( Hi20 ) . setMIFlag ( Flag ) ;" LLVM,RISCV,1994,"Predict the next statement of this code snippet: const MachineOperand * ThisTarget ; if ( ! isBranch ( I , ThisCond , ThisTarget ) ) return true ; if ( ! ThisTarget -> isMBB ( ) ) return true ; if ( ThisCond [ ] . getImm ( ) == ) { if ( ! AllowModify ) { TBB = ThisTarget -> getMBB ( ) ; continue ; } while ( std :: next ( I ) != MBB . end ( ) ) std :: next ( I ) -> eraseFromParent ( ) ; Cond . clear ( ) ; FBB = ; TBB = ThisTarget -> getMBB ( ) ; continue ; } if ( Cond . empty ( ) ) { FBB = TBB ; TBB = ThisTarget -> getMBB ( ) ; Cond . push_back ( MachineOperand :: CreateImm ( ThisCond [ ] . getImm ( ) ) ) ; for ( unsigned int i = ; i < ( I -> getNumExplicitOperands ( ) ) ; i ++ ) Cond . push_back ( I -> getOperand ( i ) ) ; continue ; } assert ( Cond . size ( ) <= ) ; assert ( TBB ) ; if ( TBB != ThisTarget -> getMBB ( ) ) return true ; unsigned OldCond = Cond [ ] . getImm ( ) ; if ( OldCond == ThisCond [ ] . getImm ( ) ) continue ; }" LLVM,RISCV,1995,"Predict the next statement of this code snippet: void InstrInfo :: loadRegFromStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , unsigned DstReg , int FI , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc DL ;" LLVM,RISCV,1996,"Predict the next statement of this code snippet: void InstrInfo :: loadRegFromStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , unsigned DstReg , int FI , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = Subtarget . is64Bit ( ) ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ;" LLVM,RISCV,1997,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( const Subtarget & Subtarget ) : GenInstrInfo ( , ) , Subtarget ( Subtarget ) {" LLVM,RISCV,1998,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( const Subtarget & Subtarget ) : GenInstrInfo ( , ) , Subtarget ( Subtarget ) {" LLVM,RISCV,1999,"Predict the next statement of this code snippet: DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = Subtarget . is64Bit ( ) ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) ) . addReg ( SrcReg , getKillRegState ( IsKill ) ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,2000,"Predict the next statement of this code snippet: BuildMI ( MBB , MBBI , DL , get ( ) , MaxVL ) . addImm ( ) . addReg ( ) ; BuildMI ( MBB , MBBI , DL , get ( ) , ) . addDef ( ) . addReg ( MaxVL , getKillRegState ( true ) ) ; BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addImm ( ) . addReg ( ) ; BuildMI ( MBB , MBBI , DL , get ( ) , ) . addDef ( ) . addReg ( SavedVL , getKillRegState ( true ) ) ; return ; } unsigned Opc ; if ( . contains ( DstReg , SrcReg ) ) Opc = ; else if ( . contains ( DstReg , SrcReg ) ) Opc = ;" LLVM,RISCV,2001,"Predict the next statement of this code snippet: case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case : case : case : case : case : case : return ; case TargetOpcode :: INLINEASM : case TargetOpcode :: INLINEASM_BR : {" LLVM,RISCV,2002,"Predict the next statement of this code snippet: } case TargetOpcode :: EH_LABEL : case TargetOpcode :: IMPLICIT_DEF : case TargetOpcode :: KILL : case TargetOpcode :: DBG_VALUE : return ; case : case : case : case : case : case : return ; case TargetOpcode :: INLINEASM : case TargetOpcode :: INLINEASM_BR : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ;" LLVM,RISCV,2003,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , unsigned DstReg , unsigned SrcReg , bool KillSrc ) const { if ( . contains ( DstReg , SrcReg ) ) { BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) . addImm ( ) ; return ;" LLVM,RISCV,2004,"Predict the next statement of this code snippet: return ; case : case : return ; case TargetOpcode :: INLINEASM : { const MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const auto & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return getInlineAsmLength ( MI . getOperand ( ) . getSymbolName ( ) , * TM . getMCAsmInfo ( ) ) ; }" LLVM,RISCV,2005,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case : return ; case : return ; case :" LLVM,RISCV,2006,"Predict the next statement of this code snippet: assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( Cond . empty ( ) ) { MachineInstr & MI = * BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; if ( BytesAdded ) * BytesAdded += getInstSizeInBytes ( MI ) ;" LLVM,RISCV,2007,"Predict the next statement of this code snippet: unsigned InstrInfo :: isLoadFromStackSlot ( const MachineInstr & MI , int & FrameIndex ) const { switch ( MI . getOpcode ( ) ) { default : return ; case : case : case : case : case : case : case : case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; } return ;" LLVM,RISCV,2008,"Predict the next statement of this code snippet: } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; } return ;" LLVM,RISCV,2009,"Predict the next statement of this code snippet: switch ( MI . getOpcode ( ) ) { default : return ; case : case : case : case : case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) { FrameIndex = MI . getOperand ( ) . getIndex ( ) ; return MI . getOperand ( ) . getReg ( ) ; }" LLVM,RISCV,2010,"Predict the next statement of this code snippet: case : case : case : break ; } if ( MI . getOperand ( ) . isFI ( ) && MI . getOperand ( ) . isImm ( ) && MI . getOperand ( ) . getImm ( ) == ) {" LLVM,RISCV,2011,"Predict the next statement of this code snippet: void InstrInfo :: loadRegFromStackSlot ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , unsigned DstReg , int FI , const TargetRegisterClass * RC , const TargetRegisterInfo * TRI ) const { DebugLoc DL ; if ( I != MBB . end ( ) ) DL = I -> getDebugLoc ( ) ; unsigned Opcode ; if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,2012,"Predict the next statement of this code snippet: else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ; BuildMI ( MBB , I , DL , get ( Opcode ) , DstReg ) . addFrameIndex ( FI ) . addImm ( ) ;" LLVM,RISCV,2013,"Predict the next statement of this code snippet: void InstrInfo :: movImm32 ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator MBBI , const DebugLoc & DL , unsigned DstReg , uint64_t Val , MachineInstr :: MIFlag Flag ) const { assert ( isInt < > ( Val ) && ) ; uint64_t Hi20 = ( ( Val + ) >> ) & ; uint64_t Lo12 = SignExtend64 < > ( Val ) ; BuildMI ( MBB , MBBI , DL , get ( ) , DstReg ) . addImm ( Hi20 ) . setMIFlag ( Flag ) ;" LLVM,RISCV,2014,"Predict the next statement of this code snippet: Target = LastInst . getOperand ( ) . getMBB ( ) ; Cond . push_back ( MachineOperand :: CreateImm ( LastInst . getOpcode ( ) ) ) ;" LLVM,RISCV,2015,"Predict the next statement of this code snippet: Target = LastInst . getOperand ( ) . getMBB ( ) ; Cond . push_back ( MachineOperand :: CreateImm ( LastInst . getOpcode ( ) ) ) ; Cond . push_back ( LastInst . getOperand ( ) ) ; Cond . push_back ( LastInst . getOperand ( ) ) ;" LLVM,RISCV,2016,"Predict the next statement of this code snippet: I -> eraseFromParent ( ) ; if ( BytesRemoved ) * BytesRemoved += getInstSizeInBytes ( * I ) ; I = MBB . end ( ) ; if ( I == MBB . begin ( ) ) return ; -- I ; if ( ! I -> getDesc ( ) . isConditionalBranch ( ) ) return ;" LLVM,RISCV,2017,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator I = MBB . getLastNonDebugInstr ( ) ; if ( I == MBB . end ( ) ) return ; if ( ! I -> getDesc ( ) . isUnconditionalBranch ( ) && ! I -> getDesc ( ) . isConditionalBranch ( ) ) return ; I -> eraseFromParent ( ) ; if ( BytesRemoved ) * BytesRemoved += getInstSizeInBytes ( * I ) ; I = MBB . end ( ) ; if ( I == MBB . begin ( ) ) return ; -- I ; if ( ! I -> getDesc ( ) . isConditionalBranch ( ) ) return ; I -> eraseFromParent ( ) ;" LLVM,RISCV,2018,"Predict the next statement of this code snippet: assert ( ( Cond . size ( ) == ) && ) ; Cond [ ] . setImm ( getOppositeBranchOpcode ( Cond [ ] . getImm ( ) ) ) ;" LLVM,RISCV,2019,"Predict the next statement of this code snippet: Cond [ ] . setImm ( getOppositeBranchOpcode ( Cond [ ] . getImm ( ) ) ) ;" LLVM,RISCV,2020,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : GenInstrInfo ( , ) {" LLVM,RISCV,2021,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : GenInstrInfo ( , ) {" LLVM,RISCV,2022,"Predict the next statement of this code snippet: else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ;" LLVM,RISCV,2023,"Predict the next statement of this code snippet: if ( . hasSubClassEq ( RC ) ) Opcode = TRI -> getRegSizeInBits ( ) == ? : ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else if ( . hasSubClassEq ( RC ) ) Opcode = ; else llvm_unreachable ( ) ;" LLVM,RISCV,2024,"Predict the next statement of this code snippet: InstructionSelector :: InstructionSelector ( const TargetMachine & TM , const Subtarget & STI , const RegisterBankInfo & RBI ) : STI ( STI ) , TII ( * STI . getInstrInfo ( ) ) , TRI ( * STI . getRegisterInfo ( ) ) , RBI ( RBI ) , {" LLVM,RISCV,2025,"Predict the next statement of this code snippet: InstructionSelector :: InstructionSelector ( const TargetMachine & TM , const Subtarget & STI , const RegisterBankInfo & RBI ) : STI ( STI ) , TII ( * STI . getInstrInfo ( ) ) , TRI ( * STI . getRegisterInfo ( ) ) , RBI ( RBI ) , {" LLVM,RISCV,2026,"Predict the next statement of this code snippet: InstructionSelector * createInstructionSelector ( const TargetMachine & TM , Subtarget & Subtarget , RegisterBankInfo & RBI ) {" LLVM,RISCV,2027,"Predict the next statement of this code snippet: return new InstructionSelector ( TM , Subtarget , RBI ) ;" LLVM,RISCV,2028,"Predict the next statement of this code snippet: static const char * getName ( ) {" LLVM,RISCV,2029,"Predict the next statement of this code snippet: static const char * getName ( ) { return DEBUG_TYPE ;" LLVM,RISCV,2030,"Predict the next statement of this code snippet: InstructionSelector :: InstructionSelector ( const TargetMachine & TM , const Subtarget & STI , const RegisterBankInfo & RBI ) : InstructionSelector ( ) , STI ( STI ) , TII ( * STI . getInstrInfo ( ) ) , TRI ( * STI . getRegisterInfo ( ) ) , RBI ( RBI ) , {" LLVM,RISCV,2031,"Predict the next statement of this code snippet: InstructionSelector :: InstructionSelector ( const TargetMachine & TM , const Subtarget & STI , const RegisterBankInfo & RBI ) : InstructionSelector ( ) , STI ( STI ) , TII ( * STI . getInstrInfo ( ) ) , TRI ( * STI . getRegisterInfo ( ) ) , RBI ( RBI ) , {" LLVM,RISCV,2032,"Predict the next statement of this code snippet: return true ; }" LLVM,RISCV,2033,"Predict the next statement of this code snippet: return true ; } if ( selectImpl ( I , * CoverageInfo ) ) return true ; return false ;" LLVM,RISCV,2034,"Predict the next statement of this code snippet: return new DAGToDAGISel ( TM , OptLevel ) ;" LLVM,RISCV,2035,"Predict the next statement of this code snippet: void dump ( ) { errs ( ) << << this << '\n' ; errs ( ) << ;" LLVM,RISCV,2036,"Predict the next statement of this code snippet: } if ( Opcode == || CurDAG -> isBaseWithConstantOffset ( N ) ) { SDValue Op0 = N . getOperand ( ) ; SDValue Op1 = N . getOperand ( ) ; unsigned Op0Code = Op0 -> getOpcode ( ) ; unsigned Op1Code = Op1 -> getOpcode ( ) ; if ( Op0Code == ) return expandOffset ( AM , IsBase , Op1 , cast < ConstantSDNode > ( Op0 ) ) ;" LLVM,RISCV,2037,"Predict the next statement of this code snippet: static bool expandOffset ( AddressingMode & AM , bool IsBase , SDValue Op0 , ConstantSDNode * Op1 ) { int64_t TestOffset = AM . Offset + Op1 -> getSExtValue ( ) ; if ( selectOffset ( AM . OffR , TestOffset ) ) { AM . Base = Op0 ;" LLVM,RISCV,2038,"Predict the next statement of this code snippet: Base = AM . Base ; if ( ! Base . getNode ( ) ) Base = CurDAG -> getRegister ( , VT ) ; else if ( Base . getOpcode ( ) == ) { int64_t FrameIndex = cast < FrameIndexSDNode > ( Base ) -> getIndex ( ) ; Offset = CurDAG -> getTargetFrameIndex ( FrameIndex , VT ) ; Base = CurDAG -> getTargetConstant ( AM . Offset , SDLoc ( Base ) , VT ) ; return ; } else if ( Base . getValueType ( ) != VT ) { assert ( VT == && Base . getValueType ( ) == && ) ; SDLoc DL ( Base ) ; SDValue Trunc = CurDAG -> getNode ( , DL , VT , Base ) ; insertDAGNode ( CurDAG , Base . getNode ( ) , Trunc ) ; Base = Trunc ; }" LLVM,RISCV,2039,"Predict the next statement of this code snippet: inline SDValue getImm ( const SDNode * Node , uint64_t Imm ) { return CurDAG -> getTargetConstant ( Imm , SDLoc ( Node ) , Node -> getValueType ( ) ) ;" LLVM,RISCV,2040,"Predict the next statement of this code snippet: return CurDAG -> getTargetConstant ( Imm , SDLoc ( Node ) , Node -> getValueType ( ) ) ;" LLVM,RISCV,2041,"Predict the next statement of this code snippet: return ;" LLVM,RISCV,2042,"Predict the next statement of this code snippet: DAG -> RepositionNode ( Pos -> getIterator ( ) , N . getNode ( ) ) ; N . getNode ( ) -> setNodeId ( Pos -> getNodeId ( ) ) ; }" LLVM,RISCV,2043,"Predict the next statement of this code snippet: static bool isValidOffset ( OffR , int64_t Val ) {" LLVM,RISCV,2044,"Predict the next statement of this code snippet: for ( auto & MBB : MF ) for ( auto & I : MBB ) {" LLVM,RISCV,2045,"Predict the next statement of this code snippet: AddressingMode ( AddrForm form , OffRange offr ) : Form ( form ) , OffR ( offr ) , Base ( ) , Offset ( ) {" LLVM,RISCV,2046,"Predict the next statement of this code snippet: AddressingMode ( AddrForm form , OffRange offr ) : Form ( form ) , OffR ( offr ) , Base ( ) , Offset ( ) {" LLVM,RISCV,2047,"Predict the next statement of this code snippet: DAGToDAGISel ( TargetMachine & TM , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( TM , OptLevel ) , Lowering ( * TM . getSubtargetImpl ( ) -> getTargetLowering ( ) ) , Subtarget ( * TM . getSubtargetImpl ( ) ) {" LLVM,RISCV,2048,"Predict the next statement of this code snippet: DAGToDAGISel ( TargetMachine & TM , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( TM , OptLevel ) , Lowering ( * TM . getSubtargetImpl ( ) -> getTargetLowering ( ) ) , Subtarget ( * TM . getSubtargetImpl ( ) ) {" LLVM,RISCV,2049,"Predict the next statement of this code snippet: bool DAGToDAGISel :: runOnMachineFunction ( MachineFunction & MF ) { bool ret = SelectionDAGISel :: runOnMachineFunction ( MF ) ; processFunctionAfterISel ( MF ) ;" LLVM,RISCV,2050,"Predict the next statement of this code snippet: bool DAGToDAGISel :: runOnMachineFunction ( MachineFunction & MF ) {" LLVM,RISCV,2051,"Predict the next statement of this code snippet: switch ( Opcode ) { case : { SDValue imm = CurDAG -> getTargetConstant ( , DL , Subtarget . isRV64 ( ) ? : ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , getTargetLowering ( ) -> getPointerTy ( CurDAG -> getDataLayout ( ) ) ) ; unsigned Opc = Subtarget . isRV64 ( ) ? : ; EVT VT = Subtarget . isRV64 ( ) ? : ; if ( Node -> hasOneUse ( ) ) return CurDAG -> SelectNodeTo ( Node , Opc , VT , TFI , imm ) ; return CurDAG -> getMachineNode ( Opc , DL , VT , TFI , imm ) ; } } SDNode * ResNode = SelectCode ( Node ) ; DEBUG ( errs ( ) << ; if ( ResNode == NULL || ResNode == Node ) Node -> dump ( CurDAG ) ; else ResNode -> dump ( CurDAG ) ;" LLVM,RISCV,2052,"Predict the next statement of this code snippet: selectMemRegAddr ( Op , Base , Offset ) ; OutOps . push_back ( Base ) ; OutOps . push_back ( Offset ) ;" LLVM,RISCV,2053,"Predict the next statement of this code snippet: } if ( CurDAG -> isBaseWithConstantOffset ( Addr ) ) { ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ; if ( isInt < > ( CN -> getSExtValue ( ) ) ) { if ( FrameIndexSDNode * FIN = dyn_cast < FrameIndexSDNode > ( Addr . getOperand ( ) ) ) Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , ValTy ) ; else Base = Addr . getOperand ( ) ; Offset = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , SDLoc ( Addr ) , ValTy ) ; return true ; } }" LLVM,RISCV,2054,"Predict the next statement of this code snippet: case :" LLVM,RISCV,2055,"Predict the next statement of this code snippet: if ( Addr . getOpcode ( ) == ) { Target = Addr . getOperand ( ) ; return true ; } return false ;" LLVM,RISCV,2056,"Predict the next statement of this code snippet: bool selectRegAddr ( SDValue Addr , SDValue & Base ) { Base = Addr ; return true ;" LLVM,RISCV,2057,"Predict the next statement of this code snippet: bool selectRegAddr ( SDValue Addr , SDValue & Base ) {" LLVM,RISCV,2058,"Predict the next statement of this code snippet: SDValue Upper = CurDAG -> getConstant ( UpperVal , DL , VT ) ; if ( Op0 . getNode ( ) ) Upper = CurDAG -> getNode ( Opcode , DL , VT , Op0 , Upper ) ; Upper = SDValue ( Select ( Upper . getNode ( ) ) , ) ; SDValue Lower = CurDAG -> getConstant ( LowerVal , DL , VT ) ;" LLVM,RISCV,2059,"Predict the next statement of this code snippet: } EVT VT = Node -> getValueType ( ) ; if ( Opcode == && VT == XLenVT ) { auto * ConstNode = cast < ConstantSDNode > ( Node ) ; if ( ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } } if ( Opcode == ) { SDLoc DL ( Node ) ; SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = dyn_cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; EVT VT = Node -> getValueType ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ;" LLVM,RISCV,2060,"Predict the next statement of this code snippet: ReplaceNode ( Node , New . getNode ( ) ) ; return ; } } if ( Opcode == ) { SDLoc DL ( Node ) ; SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = dyn_cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; EVT VT = Node -> getValueType ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; }" LLVM,RISCV,2061,"Predict the next statement of this code snippet: case InlineAsm :: Constraint_m : OutOps . push_back ( Op ) ; return false ; default :" LLVM,RISCV,2062,"Predict the next statement of this code snippet: return selectRVVSimm5 ( N , Width , Imm ) ;" LLVM,RISCV,2063,"Predict the next statement of this code snippet: bool selectShiftMask32 ( SDValue N , SDValue & ShAmt ) {" LLVM,RISCV,2064,"Predict the next statement of this code snippet: return selectShiftMask ( N , Subtarget -> getXLen ( ) , ShAmt ) ;" LLVM,RISCV,2065,"Predict the next statement of this code snippet: return selectShiftMask ( N , Subtarget -> getXLen ( ) , ShAmt ) ;" LLVM,RISCV,2066,"Predict the next statement of this code snippet: if ( N -> use_empty ( ) || ! N -> isMachineOpcode ( ) ) continue ; int OffsetOpIdx ; int BaseOpIdx ; switch ( N -> getMachineOpcode ( ) ) { default : continue ; case : case : case : case : case : case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; case : case : case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; } if ( ! isa < ConstantSDNode > ( N -> getOperand ( OffsetOpIdx ) ) || N -> getConstantOperandVal ( OffsetOpIdx ) != ) continue ; SDValue Base = N -> getOperand ( BaseOpIdx ) ; if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != ) continue ; SDValue ImmOperand = Base . getOperand ( ) ; if ( auto Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetConstant ( Const -> getSExtValue ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , GA -> getOffset ( ) , GA -> getTargetFlags ( ) ) ; } else { continue ; } LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( Base -> dump ( CurDAG ) ) ;" LLVM,RISCV,2067,"Predict the next statement of this code snippet: switch ( ConstraintID ) { case InlineAsm :: Constraint_i : case InlineAsm :: Constraint_m : OutOps . push_back ( Op ) ; return false ; case InlineAsm :: Constraint_A : OutOps . push_back ( Op ) ; return false ; default : break ; }" LLVM,RISCV,2068,"Predict the next statement of this code snippet: return false ; case InlineAsm :: Constraint_A : OutOps . push_back ( Op ) ; return false ; default :" LLVM,RISCV,2069,"Predict the next statement of this code snippet: if ( ! I ) return false ; unsigned MaskOpIdx = I -> MaskOpIdx ; if ( ! isa < RegisterSDNode > ( N -> getOperand ( MaskOpIdx ) ) || cast < RegisterSDNode > ( N -> getOperand ( MaskOpIdx ) ) -> getReg ( ) != ) return false ; const auto * Glued = N -> getGluedNode ( ) ; if ( ! Glued || Glued -> getOpcode ( ) != ) return false ; if ( ! isa < RegisterSDNode > ( Glued -> getOperand ( ) ) || cast < RegisterSDNode > ( Glued -> getOperand ( ) ) -> getReg ( ) != ) return false ; SDValue MaskSetter = Glued -> getOperand ( ) ; const auto IsVMSet = [ ] ( unsigned Opc ) { return Opc == || Opc == || Opc == || Opc == || Opc == || Opc == || Opc == ; } ; if ( ! MaskSetter -> isMachineOpcode ( ) || ! IsVMSet ( MaskSetter . getMachineOpcode ( ) ) ) return false ; Optional < unsigned > TailPolicyOpIdx ; const InstrInfo * TII = static_cast < const InstrInfo * > ( CurDAG -> getSubtarget ( ) . getInstrInfo ( ) ) ; const MCInstrDesc & MaskedMCID = TII -> get ( N -> getMachineOpcode ( ) ) ; if ( ( MaskedMCID . TSFlags ) ) { TailPolicyOpIdx = N -> getNumOperands ( ) - ; if ( N -> getOperand ( * TailPolicyOpIdx ) . getValueType ( ) == ) ( * TailPolicyOpIdx ) -- ; if ( N -> getOperand ( * TailPolicyOpIdx ) . getValueType ( ) == ) ( * TailPolicyOpIdx ) -- ; if ( N -> getConstantOperandVal ( * TailPolicyOpIdx ) != ) return false ; } const MCInstrDesc & UnmaskedMCID = TII -> get ( I -> UnmaskedPseudo ) ; assert ( ! ( UnmaskedMCID . TSFlags ) && ( UnmaskedMCID . TSFlags ) && ! ( UnmaskedMCID . TSFlags ) && ) ; ( void ) UnmaskedMCID ; SmallVector < SDValue , > Ops ;" LLVM,RISCV,2070,"Predict the next statement of this code snippet: return hasAllNBitUsers ( Node , ) ;" LLVM,RISCV,2071,"Predict the next statement of this code snippet: bool hasAllWUsers ( SDNode * Node ) const {" LLVM,RISCV,2072,"Predict the next statement of this code snippet: return hasAllNBitUsers ( Node , ) ;" LLVM,RISCV,2073,"Predict the next statement of this code snippet: HandleSDNode Dummy ( CurDAG -> getRoot ( ) ) ; SelectionDAG :: allnodes_iterator Position = CurDAG -> allnodes_end ( ) ; bool MadeChange = false ; while ( Position != CurDAG -> allnodes_begin ( ) ) {" LLVM,RISCV,2074,"Predict the next statement of this code snippet: SDValue StackSlot = CurDAG -> getFrameIndex ( FI , TLI . getPointerTy ( CurDAG -> getDataLayout ( ) ) ) ; SDValue Chain = CurDAG -> getEntryNode ( ) ; Lo = CurDAG -> getStore ( Chain , DL , Lo , StackSlot , MPI , Align ( ) ) ; SDValue OffsetSlot = CurDAG -> getMemBasePlusOffset ( StackSlot , TypeSize :: Fixed ( ) , DL ) ; Hi = CurDAG -> getStore ( Chain , DL , Hi , OffsetSlot , MPI . getWithOffset ( ) , Align ( ) ) ; Chain = CurDAG -> getNode ( , DL , , Lo , Hi ) ; SDVTList VTs = CurDAG -> getVTList ( { VT , } ) ; SDValue IntID = CurDAG -> getTargetConstant ( , DL , ) ; SDValue Ops [ ] = { Chain , IntID , Passthru , StackSlot , CurDAG -> getRegister ( , ) , VL } ; SDValue Result = CurDAG -> getMemIntrinsicNode ( , DL , VTs , Ops , , MPI , Align ( ) , MachineMemOperand :: MOLoad ) ; -- I ; CurDAG -> ReplaceAllUsesOfValueWith ( SDValue ( N , ) , Result ) ;" LLVM,RISCV,2075,"Predict the next statement of this code snippet: if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SrcReg , CurDAG -> getRegister ( , XLenVT ) ) ; else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SrcReg ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; SrcReg = SDValue ( Result , ) ; } return Result ;" LLVM,RISCV,2076,"Predict the next statement of this code snippet: SDNode * Load = CurDAG -> getMachineNode ( , DL , VT , Addr , Offset , CurDAG -> getEntryNode ( ) ) ; MachineFunction & MF = CurDAG -> getMachineFunction ( ) ; MachineMemOperand * MemOp = MF . getMachineMemOperand ( MachinePointerInfo :: getConstantPool ( MF ) , MachineMemOperand :: MOLoad , LLT ( VT ) , CP -> getAlign ( ) ) ; CurDAG -> setNodeMemRefs ( cast < MachineSDNode > ( Load ) , { MemOp } ) ; return Load ;" LLVM,RISCV,2077,"Predict the next statement of this code snippet: if ( N . getOpcode ( ) == && isa < ConstantSDNode > ( N . getOperand ( ) ) ) { const APInt & AndMask = N -> getConstantOperandAPInt ( ) ; assert ( isPowerOf2_32 ( ShiftWidth ) && ) ; APInt ShMask ( AndMask . getBitWidth ( ) , ShiftWidth - ) ; if ( ShMask . isSubsetOf ( AndMask ) ) { ShAmt = N . getOperand ( ) ; return true ; } KnownBits Known = CurDAG -> computeKnownBits ( N -> getOperand ( ) ) ; if ( ShMask . isSubsetOf ( AndMask | Known . Zero ) ) { ShAmt = N . getOperand ( ) ; return true ;" LLVM,RISCV,2078,"Predict the next statement of this code snippet: VL = CurDAG -> getTargetConstant ( C -> getZExtValue ( ) , SDLoc ( N ) , N -> getValueType ( ) ) ; } else if ( C && C -> isAllOnesValue ( ) ) { VL = CurDAG -> getTargetConstant ( , SDLoc ( N ) , N -> getValueType ( ) ) ; } else if ( isa < RegisterSDNode > ( N ) && cast < RegisterSDNode > ( N ) -> getReg ( ) == ) { VL = CurDAG -> getTargetConstant ( , SDLoc ( N ) , N -> getValueType ( ) ) ; } else { VL = N ; }" LLVM,RISCV,2079,"Predict the next statement of this code snippet: if ( C && isUInt < > ( C -> getZExtValue ( ) ) ) { VL = CurDAG -> getTargetConstant ( C -> getZExtValue ( ) , SDLoc ( N ) , N -> getValueType ( ) ) ;" LLVM,RISCV,2080,"Predict the next statement of this code snippet: SDLoc DL ( Node ) ; unsigned NF = Node -> getNumValues ( ) - ; MVT VT = Node -> getSimpleValueType ( ) ; unsigned Log2SEW = Log2_32 ( VT . getScalarSizeInBits ( ) ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; unsigned CurOp = ; SmallVector < SDValue , > Operands ; if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } MVT IndexVT ; addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , true , Operands , true , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ; unsigned IndexLog2EEW = Log2_32 ( IndexVT . getScalarSizeInBits ( ) ) ; if ( IndexLog2EEW == && ! Subtarget -> is64Bit ( ) ) { report_fatal_error ( ) ; } const * P = ( NF , IsMasked , IsOrdered , IndexLog2EEW , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ;" LLVM,RISCV,2081,"Predict the next statement of this code snippet: assert ( ( IntNo == || IntNo == || IntNo == || IntNo == ) && ) ; bool VLMax = IntNo == || IntNo == ; unsigned Offset = IntNoOffset + ( VLMax ? : ) ; assert ( Node -> getNumOperands ( ) == Offset + && ) ; unsigned SEW = VType :: decodeVSEW ( Node -> getConstantOperandVal ( Offset ) & ) ; VLMul = static_cast < > ( Node -> getConstantOperandVal ( Offset + ) & ) ; unsigned VTypeI = VType :: encodeVTYPE ( VLMul , SEW , true , false ) ; SDValue VTypeIOp = CurDAG -> getTargetConstant ( VTypeI , DL , XLenVT ) ; SmallVector < EVT , > VTs = { XLenVT } ; if ( HasChain ) VTs . push_back ( ) ; SDValue VLOperand ; unsigned Opcode = ; if ( VLMax ) {" LLVM,RISCV,2082,"Predict the next statement of this code snippet: if ( N . getOpcode ( ) != || ! N . getOperand ( ) . isUndef ( ) ) return false ;" LLVM,RISCV,2083,"Predict the next statement of this code snippet: assert ( XLenVT == N . getOperand ( ) . getSimpleValueType ( ) && ) ; MVT EltVT = N . getSimpleValueType ( ) . getVectorElementType ( ) ; if ( EltVT . bitsLT ( XLenVT ) ) SplatImm = SignExtend64 ( SplatImm , EltVT . getSizeInBits ( ) ) ; if ( ! ValidateImm ( SplatImm ) ) return false ; SplatVal = DAG . getTargetConstant ( SplatImm , SDLoc ( N ) , XLenVT ) ; return true ;" LLVM,RISCV,2084,"Predict the next statement of this code snippet: int64_t SplatImm = cast < ConstantSDNode > ( N . getOperand ( ) ) -> getSExtValue ( ) ; if ( ! isUInt < > ( SplatImm ) ) return false ; SplatVal = CurDAG -> getTargetConstant ( SplatImm , SDLoc ( N ) , Subtarget -> getXLenVT ( ) ) ;" LLVM,RISCV,2085,"Predict the next statement of this code snippet: int64_t SplatImm = cast < ConstantSDNode > ( N . getOperand ( ) ) -> getSExtValue ( ) ; if ( ! isUInt < > ( SplatImm ) ) return false ; SplatVal = CurDAG -> getTargetConstant ( SplatImm , SDLoc ( N ) , Subtarget -> getXLenVT ( ) ) ;" LLVM,RISCV,2086,"Predict the next statement of this code snippet: report_fatal_error ( ) ; } const * P = ( NF , IsMasked , IsOrdered , IndexLog2EEW , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; MachineSDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Store , { MemOp -> getMemOperand ( ) } ) ; ReplaceNode ( Node , Store ) ;" LLVM,RISCV,2087,"Predict the next statement of this code snippet: Operands . push_back ( Base ) ; if ( IsStridedOrIndexed ) { Operands . push_back ( Node -> getOperand ( CurOp ++ ) ) ; if ( IndexVT ) * IndexVT = Operands . back ( ) -> getSimpleValueType ( ) ; } if ( IsMasked ) { SDValue Mask = Node -> getOperand ( CurOp ++ ) ; Chain = CurDAG -> getCopyToReg ( Chain , DL , , Mask , SDValue ( ) ) ; Glue = Chain . getValue ( ) ; Operands . push_back ( CurDAG -> getRegister ( , Mask . getValueType ( ) ) ) ;" LLVM,RISCV,2088,"Predict the next statement of this code snippet: break ; case : if ( Bits < Subtarget -> getXLen ( ) - User -> getConstantOperandVal ( ) ) return false ; break ; case : case : case : case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; } }" LLVM,RISCV,2089,"Predict the next statement of this code snippet: SDValue SDImm = CurDAG -> getTargetConstant ( Inst . Imm , DL , XLenVT ) ; if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SrcReg , CurDAG -> getRegister ( , XLenVT ) ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; SrcReg = SDValue ( Result , ) ;" LLVM,RISCV,2090,"Predict the next statement of this code snippet: MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) { unsigned SubRegIdx = TargetLowering :: getSubregIndexByMVT ( VT , I ) ; ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( SubRegIdx , DL , VT , SuperReg ) ) ; } ReplaceUses ( SDValue ( Node , NF ) , SDValue ( Load , ) ) ; CurDAG -> RemoveDeadNode ( Node ) ;" LLVM,RISCV,2091,"Predict the next statement of this code snippet: SDLoc DL ( Node ) ; unsigned NF = Node -> getNumValues ( ) - ; MVT VT = Node -> getSimpleValueType ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; unsigned Log2SEW = Log2_32 ( VT . getScalarSizeInBits ( ) ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; unsigned CurOp = ; SmallVector < SDValue , > Operands ; if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , false , Operands ) ; const * P = ( NF , IsMasked , false , true , Log2SEW , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , , Operands ) ; SDNode * ReadVL = CurDAG -> getMachineNode ( , DL , XLenVT , SDValue ( Load , ) ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ; SDValue SuperReg = SDValue ( Load , ) ;" LLVM,RISCV,2092,"Predict the next statement of this code snippet: if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , false , Operands ) ; const * P = ( NF , IsMasked , false , true , Log2SEW , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , , Operands ) ; SDNode * ReadVL = CurDAG -> getMachineNode ( , DL , XLenVT , SDValue ( Load , ) ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ; SDValue SuperReg = SDValue ( Load , ) ;" LLVM,RISCV,2093,"Predict the next statement of this code snippet: SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } MVT IndexVT ; addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , true , Operands , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ; unsigned IndexLog2EEW = Log2_32 ( IndexVT . getScalarSizeInBits ( ) ) ;" LLVM,RISCV,2094,"Predict the next statement of this code snippet: MVT IndexVT ; addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , true , Operands , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ; unsigned IndexLog2EEW = Log2_32 ( IndexVT . getScalarSizeInBits ( ) ) ; const * P = ( NF , IsMasked , IsOrdered , IndexLog2EEW , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) { unsigned SubRegIdx = TargetLowering :: getSubregIndexByMVT ( VT , I ) ; ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( SubRegIdx , DL , VT , SuperReg ) ) ;" LLVM,RISCV,2095,"Predict the next statement of this code snippet: unsigned NF = Node -> getNumOperands ( ) - ; if ( IsMasked ) -- NF ; MVT VT = Node -> getOperand ( ) -> getSimpleValueType ( ) ; unsigned Log2SEW = Log2_32 ( VT . getScalarSizeInBits ( ) ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ; unsigned CurOp = + NF ; MVT IndexVT ; addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , true , Operands , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ; unsigned IndexLog2EEW = Log2_32 ( IndexVT . getScalarSizeInBits ( ) ) ; const * P = ( NF , IsMasked , IsOrdered , IndexLog2EEW , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; MachineSDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Store , { MemOp -> getMemOperand ( ) } ) ;" LLVM,RISCV,2096,"Predict the next statement of this code snippet: MVT VT = Node -> getOperand ( ) -> getSimpleValueType ( ) ; unsigned Log2SEW = Log2_32 ( VT . getScalarSizeInBits ( ) ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ; unsigned CurOp = + NF ; MVT IndexVT ; addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , true , Operands , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ;" LLVM,RISCV,2097,"Predict the next statement of this code snippet: SDValue Add ; unsigned AddBaseIdx ; if ( Base . getMachineOpcode ( ) == && Base . hasOneUse ( ) ) { Add = Base ; SDValue Op0 = Base . getOperand ( ) ; SDValue Op1 = Base . getOperand ( ) ; if ( Op0 . isMachineOpcode ( ) && Op0 . getMachineOpcode ( ) == && ! isa < FrameIndexSDNode > ( Op0 . getOperand ( ) ) && isa < ConstantSDNode > ( Op0 . getOperand ( ) ) ) { AddBaseIdx = ; Base = Op0 ; } else if ( Op1 . isMachineOpcode ( ) && Op1 . getMachineOpcode ( ) == && ! isa < FrameIndexSDNode > ( Op1 . getOperand ( ) ) && isa < ConstantSDNode > ( Op1 . getOperand ( ) ) ) { AddBaseIdx = ; Base = Op1 ; } else if ( Op1 . isMachineOpcode ( ) && Op1 . getMachineOpcode ( ) == && isa < ConstantSDNode > ( Op1 . getOperand ( ) ) && Op1 . getOperand ( ) . isMachineOpcode ( ) && Op1 . getOperand ( ) . getMachineOpcode ( ) == ) { uint64_t Imm = Op1 . getOperand ( ) . getConstantOperandVal ( ) ; Imm <<= ; Imm = SignExtend64 < > ( Imm ) ; uint64_t LoImm = cast < ConstantSDNode > ( Op1 . getOperand ( ) ) -> getSExtValue ( ) ; Imm += LoImm ; if ( ! isInt < > ( Imm ) ) return false ; AddBaseIdx = ; Base = Op1 ; } else return false ;" LLVM,RISCV,2098,"Predict the next statement of this code snippet: unsigned MaskOpIdx = I -> MaskOpIdx ; if ( ! isa < RegisterSDNode > ( N -> getOperand ( MaskOpIdx ) ) || cast < RegisterSDNode > ( N -> getOperand ( MaskOpIdx ) ) -> getReg ( ) != ) return false ; const auto * Glued = N -> getGluedNode ( ) ; if ( ! Glued || Glued -> getOpcode ( ) != ) return false ; if ( ! isa < RegisterSDNode > ( Glued -> getOperand ( ) ) || cast < RegisterSDNode > ( Glued -> getOperand ( ) ) -> getReg ( ) != ) return false ; SDValue MaskSetter = Glued -> getOperand ( ) ; const auto IsVMSet = [ ] ( unsigned Opc ) { return Opc == || Opc == || Opc == || Opc == || Opc == || Opc == || Opc == ; } ; if ( ! MaskSetter -> isMachineOpcode ( ) || ! IsVMSet ( MaskSetter . getMachineOpcode ( ) ) ) return false ; Optional < unsigned > TailPolicyOpIdx ; const InstrInfo * TII = static_cast < const InstrInfo * > ( CurDAG -> getSubtarget ( ) . getInstrInfo ( ) ) ; const MCInstrDesc & MaskedMCID = TII -> get ( N -> getMachineOpcode ( ) ) ; bool IsTA = true ; if ( ( MaskedMCID . TSFlags ) ) { TailPolicyOpIdx = N -> getNumOperands ( ) - ; if ( N -> getOperand ( * TailPolicyOpIdx ) . getValueType ( ) == ) ( * TailPolicyOpIdx ) -- ; if ( N -> getOperand ( * TailPolicyOpIdx ) . getValueType ( ) == ) ( * TailPolicyOpIdx ) -- ; if ( ! ( N -> getConstantOperandVal ( * TailPolicyOpIdx ) & ) ) { if ( I -> UnmaskedTUPseudo == I -> MaskedPseudo && ! N -> getOperand ( ) . isUndef ( ) ) return false ; if ( ! N -> getOperand ( ) . isUndef ( ) ) IsTA = false ; } } if ( IsTA ) { uint64_t TSFlags = TII -> get ( I -> UnmaskedPseudo ) . TSFlags ;" LLVM,RISCV,2099,"Predict the next statement of this code snippet: case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } SDValue N00 = N0 . getOperand ( ) ; SDValue N01 = N0 . getOperand ( ) ; if ( N0 . getMachineOpcode ( ) == && ! isUInt < > ( cast < ConstantSDNode > ( N01 ) -> getSExtValue ( ) ) ) break ; SDNode * Result = CurDAG -> getMachineNode ( Opc , SDLoc ( N ) , N -> getValueType ( ) , N00 , N01 ) ; ReplaceUses ( N , Result ) ; return true ; } case : case : case : case : case : case : case : ReplaceUses ( N , N0 . getNode ( ) ) ; return true ;" LLVM,RISCV,2100,"Predict the next statement of this code snippet: case : if ( Bits < Subtarget -> getXLen ( ) - User -> getConstantOperandVal ( ) ) return false ; break ; case : if ( Bits < ( - countLeadingZeros ( User -> getConstantOperandVal ( ) ) ) ) return false ; break ; case : if ( Bits < ) return false ; break ; case : case : case : case : if ( Bits < ) return false ; break ; case : case : case : case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; } } return true ;" LLVM,RISCV,2101,"Predict the next statement of this code snippet: static bool isAllUndef ( ArrayRef < SDValue > Values ) { return llvm :: all_of ( Values , [ ] ( SDValue V ) { return V -> isUndef ( ) ; } ) ;" LLVM,RISCV,2102,"Predict the next statement of this code snippet: SDNode * Result = nullptr ; SDValue SrcReg = CurDAG -> getRegister ( , XLenVT ) ; for ( & Inst : Seq ) { SDValue SDImm = CurDAG -> getTargetConstant ( Inst . Imm , DL , XLenVT ) ; switch ( Inst . getOpndKind ( ) ) { case : Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SDImm ) ; break ; case : Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , CurDAG -> getRegister ( , XLenVT ) ) ; break ; case : Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SrcReg ) ; break ; case : Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; break ; }" LLVM,RISCV,2103,"Predict the next statement of this code snippet: SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; bool IsTU = IsMasked || ! isAllUndef ( Regs ) ; if ( IsTU ) { SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; } CurOp += NF ; addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , false , Operands , true ) ; const * P = ( NF , IsMasked , IsTU , false , true , Log2SEW , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , , Operands ) ; bool TailAgnostic = true ; bool MaskAgnostic = false ; if ( IsMasked ) { uint64_t Policy = Node -> getConstantOperandVal ( Node -> getNumOperands ( ) - ) ; TailAgnostic = Policy & ; MaskAgnostic = Policy & ; } unsigned VType = VType :: encodeVTYPE ( LMUL , SEW , TailAgnostic , MaskAgnostic ) ; SDValue VTypeOp = CurDAG -> getTargetConstant ( VType , DL , XLenVT ) ;" LLVM,RISCV,2104,"Predict the next statement of this code snippet: bool MaskAgnostic = false ; if ( IsMasked ) { uint64_t Policy = Node -> getConstantOperandVal ( Node -> getNumOperands ( ) - ) ; TailAgnostic = Policy & ; MaskAgnostic = Policy & ; } unsigned VType = VType :: encodeVTYPE ( LMUL , SEW , TailAgnostic , MaskAgnostic ) ; SDValue VTypeOp = CurDAG -> getTargetConstant ( VType , DL , XLenVT ) ; SDNode * ReadVL = CurDAG -> getMachineNode ( , DL , XLenVT , VTypeOp , SDValue ( Load , ) ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) { unsigned SubRegIdx = TargetLowering :: getSubregIndexByMVT ( VT , I ) ; ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( SubRegIdx , DL , VT , SuperReg ) ) ; } ReplaceUses ( SDValue ( Node , NF ) , SDValue ( ReadVL , ) ) ; ReplaceUses ( SDValue ( Node , NF + ) , SDValue ( Load , ) ) ; CurDAG -> RemoveDeadNode ( Node ) ;" LLVM,RISCV,2105,"Predict the next statement of this code snippet: Operands . push_back ( Node -> getOperand ( CurOp ++ ) ) ; if ( IndexVT ) * IndexVT = Operands . back ( ) -> getSimpleValueType ( ) ; } if ( IsMasked ) { SDValue Mask = Node -> getOperand ( CurOp ++ ) ; Chain = CurDAG -> getCopyToReg ( Chain , DL , , Mask , SDValue ( ) ) ; Glue = Chain . getValue ( ) ; Operands . push_back ( CurDAG -> getRegister ( , Mask . getValueType ( ) ) ) ; } SDValue VL ; selectVLOp ( Node -> getOperand ( CurOp ++ ) , VL ) ; Operands . push_back ( VL ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; SDValue SEWOp = CurDAG -> getTargetConstant ( Log2_32 ( SEW ) , DL , XLenVT ) ; Operands . push_back ( SEWOp ) ; Operands . push_back ( Chain ) ;" LLVM,RISCV,2106,"Predict the next statement of this code snippet: SDValue Base = N -> getOperand ( BaseOpIdx ) ; if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != ) continue ; SDValue ImmOperand = Base . getOperand ( ) ; uint64_t Offset2 = N -> getConstantOperandVal ( OffsetOpIdx ) ; if ( auto * Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { int64_t Offset1 = Const -> getSExtValue ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; if ( ! isInt < > ( CombinedOffset ) ) continue ; ImmOperand = CurDAG -> getTargetConstant ( CombinedOffset , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto * GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { const DataLayout & DL = CurDAG -> getDataLayout ( ) ; Align Alignment = GA -> getGlobal ( ) -> getPointerAlignment ( DL ) ; if ( Offset2 != && Alignment <= Offset2 ) continue ; int64_t Offset1 = GA -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , CombinedOffset , GA -> getTargetFlags ( ) ) ; } else if ( auto * CP = dyn_cast < ConstantPoolSDNode > ( ImmOperand ) ) { Align Alignment = CP -> getAlign ( ) ; if ( Offset2 != && Alignment <= Offset2 ) continue ; int64_t Offset1 = CP -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ;" LLVM,RISCV,2107,"Predict the next statement of this code snippet: assert ( N -> getOpcode ( ) == ) ; assert ( N -> getOperand ( ) . getOpcode ( ) == ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) ) ) ;" LLVM,RISCV,2108,"Predict the next statement of this code snippet: if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ;" LLVM,RISCV,2109,"Predict the next statement of this code snippet: SDNode * Result = nullptr ; SDValue SrcReg = CurDAG -> getRegister ( , XLenVT ) ; for ( & Inst : Seq ) { SDValue SDImm = CurDAG -> getTargetConstant ( Inst . Imm , DL , XLenVT ) ;" LLVM,RISCV,2110,"Predict the next statement of this code snippet: if ( N . getOpcode ( ) == && cast < VTSDNode > ( N . getOperand ( ) ) -> getVT ( ) == ) { Val = N . getOperand ( ) ; return true ; } if ( N . getOpcode ( ) == && cast < VTSDNode > ( N -> getOperand ( ) ) -> getVT ( ) . bitsLE ( ) ) { Val = N ;" LLVM,RISCV,2111,"Predict the next statement of this code snippet: return true ; } if ( N . getOpcode ( ) == && cast < VTSDNode > ( N -> getOperand ( ) ) -> getVT ( ) . bitsLE ( ) ) { Val = N ; return true ; }" LLVM,RISCV,2112,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget -> getXLenVT ( ) ; unsigned ScalarSize = VT . getScalarSizeInBits ( ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; unsigned CurOp = ; SmallVector < SDValue , > Operands ; if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } addVectorLoadStoreOperands ( Node , ScalarSize , DL , CurOp , IsMasked , false , Operands ) ; const * P = ( NF , IsMasked , false , true , ScalarSize , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , , Operands ) ; SDNode * ReadVL = CurDAG -> getMachineNode ( , DL , XLenVT , SDValue ( Load , ) ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) { unsigned SubRegIdx = TargetLowering :: getSubregIndexByMVT ( VT , I ) ; ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( SubRegIdx , DL , VT , SuperReg ) ) ;" LLVM,RISCV,2113,"Predict the next statement of this code snippet: void DAGToDAGISel :: selectVLSEGFF ( SDNode * Node , bool IsMasked ) { SDLoc DL ( Node ) ; unsigned NF = Node -> getNumValues ( ) - ; MVT VT = Node -> getSimpleValueType ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; unsigned ScalarSize = VT . getScalarSizeInBits ( ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; unsigned CurOp = ; SmallVector < SDValue , > Operands ; if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ;" LLVM,RISCV,2114,"Predict the next statement of this code snippet: LMUL = TargetLowering :: getLMUL ( VT ) ; unsigned CurOp = ; SmallVector < SDValue , > Operands ; if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } MVT IndexVT ; addVectorLoadStoreOperands ( Node , ScalarSize , DL , CurOp , IsMasked , true , Operands , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ; unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( NF , IsMasked , IsOrdered , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ;" LLVM,RISCV,2115,"Predict the next statement of this code snippet: if ( IsStrided ) NF -- ; if ( IsMasked ) NF -- ; MVT VT = Node -> getOperand ( ) -> getSimpleValueType ( ) ; unsigned ScalarSize = VT . getScalarSizeInBits ( ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ;" LLVM,RISCV,2116,"Predict the next statement of this code snippet: SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ; unsigned CurOp = + NF ; addVectorLoadStoreOperands ( Node , ScalarSize , DL , CurOp , IsMasked , IsStrided , Operands ) ; const * P = ( NF , IsMasked , IsStrided , ScalarSize , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Store , { MemOp -> getMemOperand ( ) } ) ; ReplaceNode ( Node , Store ) ;" LLVM,RISCV,2117,"Predict the next statement of this code snippet: SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ; unsigned CurOp = + NF ; MVT IndexVT ; addVectorLoadStoreOperands ( Node , ScalarSize , DL , CurOp , IsMasked , true , Operands , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ; unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( NF , IsMasked , IsOrdered , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; MachineSDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Store , { MemOp -> getMemOperand ( ) } ) ;" LLVM,RISCV,2118,"Predict the next statement of this code snippet: LMUL = TargetLowering :: getLMUL ( VT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ; unsigned CurOp = + NF ; MVT IndexVT ;" LLVM,RISCV,2119,"Predict the next statement of this code snippet: if ( N . getOpcode ( ) == && cast < VTSDNode > ( N -> getOperand ( ) ) -> getVT ( ) . bitsLE ( ) ) { Val = N ; return true ;" LLVM,RISCV,2120,"Predict the next statement of this code snippet: auto * C = dyn_cast < ConstantSDNode > ( N . getOperand ( ) ) ; if ( C && C -> getZExtValue ( ) == UINT64_C ( ) ) { Val = N . getOperand ( ) ; return true ; } } if ( N . getOpcode ( ) == && cast < VTSDNode > ( N -> getOperand ( ) ) -> getVT ( ) . bitsLE ( ) ) { Val = N ; return true ; } return false ;" LLVM,RISCV,2121,"Predict the next statement of this code snippet: BaseOpIdx = ; OffsetOpIdx = ; break ; case : case : case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; } if ( ! isa < ConstantSDNode > ( N -> getOperand ( OffsetOpIdx ) ) || N -> getConstantOperandVal ( OffsetOpIdx ) != ) continue ; SDValue Base = N -> getOperand ( BaseOpIdx ) ; if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != ) continue ; SDValue ImmOperand = Base . getOperand ( ) ; if ( auto Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetConstant ( Const -> getSExtValue ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , GA -> getOffset ( ) , GA -> getTargetFlags ( ) ) ; } else if ( auto CP = dyn_cast < ConstantPoolSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetConstantPool ( CP -> getConstVal ( ) , ImmOperand . getValueType ( ) , CP -> getAlign ( ) , CP -> getOffset ( ) , CP -> getTargetFlags ( ) ) ; } else { continue ; } LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( Base -> dump ( CurDAG ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( N -> dump ( CurDAG ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ;" LLVM,RISCV,2122,"Predict the next statement of this code snippet: case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; } if ( ! isa < ConstantSDNode > ( N -> getOperand ( OffsetOpIdx ) ) || N -> getConstantOperandVal ( OffsetOpIdx ) != ) continue ; SDValue Base = N -> getOperand ( BaseOpIdx ) ; if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != ) continue ; SDValue ImmOperand = Base . getOperand ( ) ; if ( auto Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetConstant ( Const -> getSExtValue ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , GA -> getOffset ( ) , GA -> getTargetFlags ( ) ) ; } else if ( auto CP = dyn_cast < ConstantPoolSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetConstantPool ( CP -> getConstVal ( ) , ImmOperand . getValueType ( ) , CP -> getAlign ( ) , CP -> getOffset ( ) , CP -> getTargetFlags ( ) ) ; } else { continue ; } LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( Base -> dump ( CurDAG ) ) ;" LLVM,RISCV,2123,"Predict the next statement of this code snippet: static bool isConstantMask ( SDNode * Node , uint64_t & Mask ) { if ( Node -> getOpcode ( ) == && Node -> getOperand ( ) . getOpcode ( ) == ) { Mask = cast < ConstantSDNode > ( Node -> getOperand ( ) ) -> getZExtValue ( ) ; return true ; }" LLVM,RISCV,2124,"Predict the next statement of this code snippet: doPeepholeLoadStoreADDI ( ) ;" LLVM,RISCV,2125,"Predict the next statement of this code snippet: EVT VT = Node -> getValueType ( ) ; switch ( Opcode ) { case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDValue Op0 = Node -> getOperand ( ) ; SDValue Op1 = Node -> getOperand ( ) ; uint64_t Mask ; if ( Op1 . getOpcode ( ) == && isConstantMask ( Op0 . getNode ( ) , Mask ) ) { uint64_t ShAmt = cast < ConstantSDNode > ( Op1 . getNode ( ) ) -> getZExtValue ( ) ; if ( ( Mask | maskTrailingOnes < uint64_t > ( ShAmt ) ) == ) { SDValue ShAmtVal = CurDAG -> getTargetConstant ( ShAmt , SDLoc ( Node ) , XLenVT ) ; CurDAG -> SelectNodeTo ( Node , , XLenVT , Op0 . getOperand ( ) , ShAmtVal ) ; return ;" LLVM,RISCV,2126,"Predict the next statement of this code snippet: return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDValue Op0 = Node -> getOperand ( ) ; SDValue Op1 = Node -> getOperand ( ) ; uint64_t Mask ; if ( Op1 . getOpcode ( ) == && isConstantMask ( Op0 . getNode ( ) , Mask ) ) { uint64_t ShAmt = cast < ConstantSDNode > ( Op1 . getNode ( ) ) -> getZExtValue ( ) ; if ( ( Mask | maskTrailingOnes < uint64_t > ( ShAmt ) ) == ) { SDValue ShAmtVal = CurDAG -> getTargetConstant ( ShAmt , SDLoc ( Node ) , XLenVT ) ; CurDAG -> SelectNodeTo ( Node , , XLenVT , Op0 . getOperand ( ) , ShAmtVal ) ; return ; } } break ; } case : assert ( ! Subtarget -> is64Bit ( ) && ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , , , , Node -> getOperand ( ) ) ) ; return ; } SelectCode ( Node ) ;" LLVM,RISCV,2127,"Predict the next statement of this code snippet: static SDNode * selectImm ( SelectionDAG * CurDAG , const SDLoc & DL , int64_t Imm , MVT XLenVT ) { Seq ; ( Imm , XLenVT == , Seq ) ; SDNode * Result = nullptr ; SDValue SrcReg = CurDAG -> getRegister ( , XLenVT ) ; for ( & Inst : Seq ) { SDValue SDImm = CurDAG -> getTargetConstant ( Inst . Imm , DL , XLenVT ) ; if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; SrcReg = SDValue ( Result , ) ;" LLVM,RISCV,2128,"Predict the next statement of this code snippet: SDValue SDImm = CurDAG -> getTargetConstant ( Inst . Imm , DL , XLenVT ) ; if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; SrcReg = SDValue ( Result , ) ;" LLVM,RISCV,2129,"Predict the next statement of this code snippet: case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , DL , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , DL , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDNode * Op0 = Node -> getOperand ( ) . getNode ( ) ; uint64_t Mask ; if ( isa < ConstantSDNode > ( Node -> getOperand ( ) ) && isConstantMask ( Op0 , Mask ) ) {" LLVM,RISCV,2130,"Predict the next statement of this code snippet: uint64_t VC2 = Shl . getConstantOperandVal ( ) ; if ( VC2 < && VC1 == ( ( uint64_t ) << VC2 ) ) { RS1 = Shl . getOperand ( ) ;" LLVM,RISCV,2131,"Predict the next statement of this code snippet: if ( N . getOpcode ( ) != || cast < VTSDNode > ( N . getOperand ( ) ) -> getVT ( ) != ) return false ; SDValue Or = N . getOperand ( ) ; if ( Or . getOpcode ( ) != || ! isa < ConstantSDNode > ( Or . getOperand ( ) ) ) return false ; SDValue Shl = Or . getOperand ( ) ; if ( Shl . getOpcode ( ) != || ! isa < ConstantSDNode > ( Shl . getOperand ( ) ) ) return false ; uint64_t VC1 = Or . getConstantOperandVal ( ) ; uint64_t VC2 = Shl . getConstantOperandVal ( ) ; if ( VC2 >= || VC1 != maskTrailingOnes < uint64_t > ( VC2 ) ) return false ; RS1 = Shl . getOperand ( ) ; Shamt = CurDAG -> getTargetConstant ( VC2 , SDLoc ( N ) , Shl . getOperand ( ) . getValueType ( ) ) ; return true ;" LLVM,RISCV,2132,"Predict the next statement of this code snippet: return true ; } } if ( XLenVT == ) { uint32_t VC1 = Or . getConstantOperandVal ( ) ; uint32_t VC2 = Srl . getConstantOperandVal ( ) ; if ( VC1 == maskLeadingOnes < uint32_t > ( VC2 ) ) { RS1 = Srl . getOperand ( ) ; Shamt = CurDAG -> getTargetConstant ( VC2 , SDLoc ( N ) , Srl . getOperand ( ) . getValueType ( ) ) ; return true ; } } } }" LLVM,RISCV,2133,"Predict the next statement of this code snippet: assert ( Subtarget -> is64Bit ( ) && ) ; if ( N . getOpcode ( ) != || ! isa < ConstantSDNode > ( N . getOperand ( ) ) ) return false ; SDValue Srl = N . getOperand ( ) ; if ( Srl . getOpcode ( ) != || ! isa < ConstantSDNode > ( Srl . getOperand ( ) ) ) return false ; uint64_t VC1 = N . getConstantOperandVal ( ) ; uint64_t VC2 = Srl . getConstantOperandVal ( ) ; if ( VC2 >= || VC1 != maskTrailingZeros < uint64_t > ( - VC2 ) ) return false ;" LLVM,RISCV,2134,"Predict the next statement of this code snippet: return ; } unsigned Opcode = Node -> getOpcode ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; SDLoc DL ( Node ) ; EVT VT = Node -> getValueType ( ) ; switch ( Opcode ) { case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : {" LLVM,RISCV,2135,"Predict the next statement of this code snippet: SDNode * Result ; SDValue SrcReg = CurDAG -> getRegister ( , XLenVT ) ; for ( & Inst : Seq ) { SDValue SDImm = CurDAG -> getTargetConstant ( Inst . Imm , DL , XLenVT ) ; if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; SrcReg = SDValue ( Result , ) ;" LLVM,RISCV,2136,"Predict the next statement of this code snippet: if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; SrcReg = SDValue ( Result , ) ; } return Result ;" LLVM,RISCV,2137,"Predict the next statement of this code snippet: const SDValue ImmOp0 = CurDAG -> getTargetConstant ( Imm - Imm / , DL , VT ) ; const SDValue ImmOp1 = CurDAG -> getTargetConstant ( Imm / , DL , VT ) ; auto * NodeAddi0 = CurDAG -> getMachineNode ( , DL , VT , Node -> getOperand ( ) , ImmOp0 ) ; auto * NodeAddi1 = CurDAG -> getMachineNode ( , DL , VT , SDValue ( NodeAddi0 , ) , ImmOp1 ) ; ReplaceNode ( Node , NodeAddi1 ) ; return ; } break ; } case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDValue Op0 = Node -> getOperand ( ) ; SDValue Op1 = Node -> getOperand ( ) ; uint64_t Mask ; if ( Op1 . getOpcode ( ) == && isConstantMask ( Op0 . getNode ( ) , Mask ) ) { uint64_t ShAmt = cast < ConstantSDNode > ( Op1 . getNode ( ) ) -> getZExtValue ( ) ; if ( ( Mask | maskTrailingOnes < uint64_t > ( ShAmt ) ) == ) { SDValue ShAmtVal = CurDAG -> getTargetConstant ( ShAmt , SDLoc ( Node ) , XLenVT ) ; CurDAG -> SelectNodeTo ( Node , , XLenVT , Op0 . getOperand ( ) , ShAmtVal ) ; return ; } } break ; } case : {" LLVM,RISCV,2138,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectRORI ( SDValue N , SDValue & RS1 , SDValue & Shamt ) { MVT XLenVT = Subtarget -> getXLenVT ( ) ; if ( N . getOpcode ( ) == ) { if ( isa < ConstantSDNode > ( N . getOperand ( ) ) ) { if ( XLenVT == ) { uint64_t VC = N . getConstantOperandVal ( ) ; Shamt = CurDAG -> getTargetConstant ( ( - VC ) , SDLoc ( N ) , N . getOperand ( ) . getValueType ( ) ) ; RS1 = N . getOperand ( ) ; return true ; } if ( XLenVT == ) { uint32_t VC = N . getConstantOperandVal ( ) ; Shamt = CurDAG -> getTargetConstant ( ( - VC ) , SDLoc ( N ) , N . getOperand ( ) . getValueType ( ) ) ; RS1 = N . getOperand ( ) ;" LLVM,RISCV,2139,"Predict the next statement of this code snippet: if ( N . getOpcode ( ) == && Subtarget -> getXLenVT ( ) == && cast < VTSDNode > ( N . getOperand ( ) ) -> getVT ( ) == ) { if ( N . getOperand ( ) . getOpcode ( ) == ) { SDValue Or = N . getOperand ( ) ; if ( Or . getOperand ( ) . getOpcode ( ) == && Or . getOperand ( ) . getOpcode ( ) == ) { SDValue Shl = Or . getOperand ( ) ; SDValue Srl = Or . getOperand ( ) ; if ( Srl . getOperand ( ) . getOpcode ( ) == ) { SDValue And = Srl . getOperand ( ) ; if ( isa < ConstantSDNode > ( Srl . getOperand ( ) ) && isa < ConstantSDNode > ( Shl . getOperand ( ) ) && isa < ConstantSDNode > ( And . getOperand ( ) ) ) { uint32_t VC1 = Srl . getConstantOperandVal ( ) ; uint32_t VC2 = Shl . getConstantOperandVal ( ) ; uint32_t VC3 = And . getConstantOperandVal ( ) ; if ( VC2 == ( - VC1 ) && VC3 == maskLeadingOnes < uint32_t > ( VC2 ) ) { RS1 = Shl . getOperand ( ) ; Shamt = CurDAG -> getTargetConstant ( VC1 , SDLoc ( N ) , Srl . getOperand ( ) . getValueType ( ) ) ; return true ; } } } } } } return false ;" LLVM,RISCV,2140,"Predict the next statement of this code snippet: SDValue Or = N . getOperand ( ) ; if ( Or . getOperand ( ) . getOpcode ( ) == && Or . getOperand ( ) . getOpcode ( ) == ) { SDValue Shl = Or . getOperand ( ) ; SDValue Srl = Or . getOperand ( ) ; if ( Srl . getOperand ( ) . getOpcode ( ) == ) { SDValue And = Srl . getOperand ( ) ; if ( isa < ConstantSDNode > ( Srl . getOperand ( ) ) && isa < ConstantSDNode > ( Shl . getOperand ( ) ) && isa < ConstantSDNode > ( And . getOperand ( ) ) ) { uint32_t VC1 = Srl . getConstantOperandVal ( ) ; uint32_t VC2 = Shl . getConstantOperandVal ( ) ; uint32_t VC3 = And . getConstantOperandVal ( ) ; if ( VC2 == ( - VC1 ) && VC3 == maskLeadingOnes < uint32_t > ( VC2 ) ) { RS1 = Shl . getOperand ( ) ; Shamt = CurDAG -> getTargetConstant ( VC1 , SDLoc ( N ) , Srl . getOperand ( ) . getValueType ( ) ) ; return true ; } } }" LLVM,RISCV,2141,"Predict the next statement of this code snippet: SDValue Or = N ; if ( Or . getOperand ( ) . getOpcode ( ) == ) { SDValue Srl = Or . getOperand ( ) ; if ( isa < ConstantSDNode > ( Srl . getOperand ( ) ) && isa < ConstantSDNode > ( Or . getOperand ( ) ) ) {" LLVM,RISCV,2142,"Predict the next statement of this code snippet: if ( isa < ConstantSDNode > ( Srl . getOperand ( ) ) && isa < ConstantSDNode > ( Or . getOperand ( ) ) ) { uint32_t VC1 = Or . getConstantOperandVal ( ) ; uint32_t VC2 = Srl . getConstantOperandVal ( ) ; if ( VC1 == maskLeadingOnes < uint32_t > ( VC2 ) ) { RS1 = Srl . getOperand ( ) ; Shamt = CurDAG -> getTargetConstant ( VC2 , SDLoc ( N ) , Srl . getOperand ( ) . getValueType ( ) ) ; return true ; } } } } return false ;" LLVM,RISCV,2143,"Predict the next statement of this code snippet: case : case : BaseOpIdx = ; OffsetOpIdx = ; OffsettingOpcode = ; break ; case : case : case : case : case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; OffsettingOpcode = ; break ; } if ( ! isa < ConstantSDNode > ( N -> getOperand ( OffsetOpIdx ) ) ) continue ; SDValue Base = N -> getOperand ( BaseOpIdx ) ; if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != OffsettingOpcode ) continue ; SDValue ImmOperand = Base . getOperand ( ) ; uint64_t Offset2 = N -> getConstantOperandVal ( OffsetOpIdx ) ; if ( auto * Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { int64_t Offset1 = Const -> getSExtValue ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; if ( ! isInt < > ( CombinedOffset ) ) continue ; ImmOperand = CurDAG -> getTargetConstant ( CombinedOffset , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto * GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { const DataLayout & DL = CurDAG -> getDataLayout ( ) ; Align Alignment = GA -> getGlobal ( ) -> getPointerAlignment ( DL ) ; if ( Offset2 != && Alignment <= Offset2 ) continue ;" LLVM,RISCV,2144,"Predict the next statement of this code snippet: void DAGToDAGISel :: PostprocessISelDAG ( ) { doPeepholeLoadStoreOffset ( ) ;" LLVM,RISCV,2145,"Predict the next statement of this code snippet: void DAGToDAGISel :: PostprocessISelDAG ( ) {" LLVM,RISCV,2146,"Predict the next statement of this code snippet: I != E ; ) { SDNode * N = & * I ++ ; if ( N -> getOpcode ( ) != ) continue ; assert ( N -> getNumOperands ( ) == && ) ; MVT VT = N -> getSimpleValueType ( ) ; SDValue Lo = N -> getOperand ( ) ; SDValue Hi = N -> getOperand ( ) ; SDValue VL = N -> getOperand ( ) ; assert ( VT . getVectorElementType ( ) == && VT . isScalableVector ( ) && Lo . getValueType ( ) == && Hi . getValueType ( ) == && ) ; MachineFunction & MF = CurDAG -> getMachineFunction ( ) ; MachineFunctionInfo * FuncInfo = MF . getInfo < MachineFunctionInfo > ( ) ; SDLoc DL ( N ) ; int FI = FuncInfo -> getMoveF64FrameIndex ( MF ) ; MachinePointerInfo MPI = MachinePointerInfo :: getFixedStack ( MF , FI ) ; const TargetLowering & TLI = CurDAG -> getTargetLoweringInfo ( ) ;" LLVM,RISCV,2147,"Predict the next statement of this code snippet: I != E ; ) { SDNode * N = & * I ++ ; if ( N -> getOpcode ( ) != ) continue ; assert ( N -> getNumOperands ( ) == && ) ; MVT VT = N -> getSimpleValueType ( ) ; SDValue Lo = N -> getOperand ( ) ; SDValue Hi = N -> getOperand ( ) ; SDValue VL = N -> getOperand ( ) ; assert ( VT . getVectorElementType ( ) == && VT . isScalableVector ( ) && Lo . getValueType ( ) == && Hi . getValueType ( ) == && ) ; MachineFunction & MF = CurDAG -> getMachineFunction ( ) ; MachineFunctionInfo * FuncInfo = MF . getInfo < MachineFunctionInfo > ( ) ; SDLoc DL ( N ) ; int FI = FuncInfo -> getMoveF64FrameIndex ( MF ) ; MachinePointerInfo MPI = MachinePointerInfo :: getFixedStack ( MF , FI ) ; const TargetLowering & TLI = CurDAG -> getTargetLoweringInfo ( ) ;" LLVM,RISCV,2148,"Predict the next statement of this code snippet: if ( auto * FIN = dyn_cast < FrameIndexSDNode > ( Addr ) ) { if ( Addr . getValueType ( ) . isScalarInteger ( ) ) { Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , Subtarget -> getXLenVT ( ) ) ; return true ; } }" LLVM,RISCV,2149,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectAddrFI ( SDValue Addr , SDValue & Base ) { if ( auto * FIN = dyn_cast < FrameIndexSDNode > ( Addr ) ) { if ( Addr . getValueType ( ) . isScalarInteger ( ) ) { Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , Subtarget -> getXLenVT ( ) ) ; return true ; }" LLVM,RISCV,2150,"Predict the next statement of this code snippet: if ( auto * FIN = dyn_cast < FrameIndexSDNode > ( Addr ) ) Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , Subtarget -> getXLenVT ( ) ) ;" LLVM,RISCV,2151,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectBaseAddr ( SDValue Addr , SDValue & Base ) { if ( Addr . getValueType ( ) . isFatPointer ( ) ) return false ; assert ( Addr . getValueType ( ) . isInteger ( ) || Addr . getValueType ( ) == ) ; if ( auto * FIN = dyn_cast < FrameIndexSDNode > ( Addr ) ) Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , Subtarget -> getXLenVT ( ) ) ; else Base = Addr ;" LLVM,RISCV,2152,"Predict the next statement of this code snippet: Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , Subtarget -> typeForCapabilities ( ) ) ; return true ; } }" LLVM,RISCV,2153,"Predict the next statement of this code snippet: Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , Subtarget -> typeForCapabilities ( ) ) ; return true ;" LLVM,RISCV,2154,"Predict the next statement of this code snippet: for ( auto UI = Node -> use_begin ( ) , UE = Node -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; if ( ! User -> isMachineOpcode ( ) ) return false ; switch ( User -> getMachineOpcode ( ) ) { default : return false ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : if ( Bits < ) return false ; break ; case : if ( Bits < Subtarget -> getXLen ( ) - User -> getConstantOperandVal ( ) ) return false ; break ; case : case : case : case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ;" LLVM,RISCV,2155,"Predict the next statement of this code snippet: bool SelectAddr ( SDValue N , SDValue & Base ) { Base = N ;" LLVM,RISCV,2156,"Predict the next statement of this code snippet: Base = N ; return true ;" LLVM,RISCV,2157,"Predict the next statement of this code snippet: Node -> setNodeId ( - ) ; return ; } EVT VT = Node -> getValueType ( ) ; if ( Opcode == && VT == XLenVT ) { auto * ConstNode = cast < ConstantSDNode > ( Node ) ; if ( ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } } SelectCode ( Node ) ;" LLVM,RISCV,2158,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : case : case : case : return createM1Tuple ( CurDAG , Regs , NF ) ; case : return createM2Tuple ( CurDAG , Regs , NF ) ; case :" LLVM,RISCV,2159,"Predict the next statement of this code snippet: return createM1Tuple ( CurDAG , Regs , NF ) ; case : return createM2Tuple ( CurDAG , Regs , NF ) ; case : return createM4Tuple ( CurDAG , Regs , NF ) ;" LLVM,RISCV,2160,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; case : case : case : case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; } if ( ! isa < ConstantSDNode > ( N -> getOperand ( OffsetOpIdx ) ) ) continue ; SDValue Base = N -> getOperand ( BaseOpIdx ) ; if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != ) continue ; SDValue ImmOperand = Base . getOperand ( ) ; uint64_t Offset2 = N -> getConstantOperandVal ( OffsetOpIdx ) ; if ( auto Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { int64_t Offset1 = Const -> getSExtValue ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; if ( ! isInt < > ( CombinedOffset ) ) continue ; ImmOperand = CurDAG -> getTargetConstant ( CombinedOffset , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { const DataLayout & DL = CurDAG -> getDataLayout ( ) ; Align Alignment = GA -> getGlobal ( ) -> getPointerAlignment ( DL ) ; if ( Offset2 != && Alignment <= Offset2 ) continue ; int64_t Offset1 = GA -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , CombinedOffset , GA -> getTargetFlags ( ) ) ; } else if ( auto CP = dyn_cast < ConstantPoolSDNode > ( ImmOperand ) ) { Align Alignment = CP -> getAlign ( ) ; if ( Offset2 != && Alignment <= Offset2 ) continue ; int64_t Offset1 = CP -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; ImmOperand = CurDAG -> getTargetConstantPool ( CP -> getConstVal ( ) , ImmOperand . getValueType ( ) , CP -> getAlign ( ) , CombinedOffset , CP -> getTargetFlags ( ) ) ; } else { continue ; } LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( Base -> dump ( CurDAG ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( N -> dump ( CurDAG ) ) ;" LLVM,RISCV,2161,"Predict the next statement of this code snippet: Align Alignment = GA -> getGlobal ( ) -> getPointerAlignment ( DL ) ; if ( Offset2 != && Alignment <= Offset2 ) continue ; int64_t Offset1 = GA -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , CombinedOffset , GA -> getTargetFlags ( ) ) ; } else if ( auto CP = dyn_cast < ConstantPoolSDNode > ( ImmOperand ) ) { Align Alignment = CP -> getAlign ( ) ; if ( Offset2 != && Alignment <= Offset2 ) continue ; int64_t Offset1 = CP -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; ImmOperand = CurDAG -> getTargetConstantPool ( CP -> getConstVal ( ) , ImmOperand . getValueType ( ) , CP -> getAlign ( ) , CombinedOffset , CP -> getTargetFlags ( ) ) ; } else { continue ; } LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( Base -> dump ( CurDAG ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( N -> dump ( CurDAG ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ; if ( BaseOpIdx == ) CurDAG -> UpdateNodeOperands ( N , Base . getOperand ( ) , ImmOperand , N -> getOperand ( ) ) ; else CurDAG -> UpdateNodeOperands ( N , N -> getOperand ( ) , Base . getOperand ( ) , ImmOperand , N -> getOperand ( ) ) ; if ( Base . getNode ( ) -> use_empty ( ) ) CurDAG -> RemoveDeadNode ( Base . getNode ( ) ) ; }" LLVM,RISCV,2162,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,2163,"Predict the next statement of this code snippet: return + Index ; } else if ( LMUL == ) { static_assert ( == + , ) ; return + Index ; } else if ( LMUL == ) { static_assert ( == + , ) ; return + Index ; }" LLVM,RISCV,2164,"Predict the next statement of this code snippet: assert ( N -> getOperand ( ) . getOpcode ( ) == ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) ) ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) . getOperand ( ) ) ) ; SDValue Shl = N -> getOperand ( ) ; if ( Subtarget -> is64Bit ( ) ) {" LLVM,RISCV,2165,"Predict the next statement of this code snippet: assert ( N -> getOperand ( ) . getOpcode ( ) == ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) ) ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) . getOperand ( ) ) ) ; SDValue Srl = N -> getOperand ( ) ; if ( Subtarget -> is64Bit ( ) ) { uint64_t VC1 = N -> getConstantOperandVal ( ) ; uint64_t VC2 = Srl . getConstantOperandVal ( ) ; return VC1 == maskLeadingOnes < uint64_t > ( VC2 ) ; } uint32_t VC1 = N -> getConstantOperandVal ( ) ;" LLVM,RISCV,2166,"Predict the next statement of this code snippet: assert ( N -> getOperand ( ) . getOpcode ( ) == ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) ) ) ;" LLVM,RISCV,2167,"Predict the next statement of this code snippet: Operands . push_back ( Node -> getOperand ( ) ) ; const * P = ( IntNo , ScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( ) ) ; SDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( getSubregIndexByEVT ( VT , I ) , DL , VT , SuperReg ) ) ; ReplaceUses ( SDValue ( Node , NF ) , SDValue ( Load , ) ) ; CurDAG -> RemoveDeadNode ( Node ) ;" LLVM,RISCV,2168,"Predict the next statement of this code snippet: SmallVector < SDValue , > Operands ; Operands . push_back ( Node -> getOperand ( ) ) ; Operands . push_back ( Node -> getOperand ( ) ) ; Operands . push_back ( SEW ) ; Operands . push_back ( Node -> getOperand ( ) ) ; const * P = ( IntNo , ScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( ) ) ; SDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , , Operands ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( getSubregIndexByEVT ( VT , I ) , DL , VT , SuperReg ) ) ;" LLVM,RISCV,2169,"Predict the next statement of this code snippet: void DAGToDAGISel :: selectVLSEGFFMask ( SDNode * Node ) { SDLoc DL ( Node ) ; unsigned IntNo = cast < ConstantSDNode > ( Node -> getOperand ( ) ) -> getZExtValue ( ) ; unsigned NF = Node -> getNumValues ( ) - ; EVT VT = Node -> getValueType ( ) ; unsigned ScalarSize = VT . getScalarSizeInBits ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; VLMUL LMUL = getLMUL ( VT ) ; SDValue SEW = CurDAG -> getTargetConstant ( ScalarSize , DL , XLenVT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ;" LLVM,RISCV,2170,"Predict the next statement of this code snippet: VLMUL LMUL = getLMUL ( VT ) ; SDValue SEW = CurDAG -> getTargetConstant ( ScalarSize , DL , XLenVT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( MaskedOff ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( SEW ) ; Operands . push_back ( Node -> getOperand ( ) ) ; const * P = ( IntNo , ScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( ) ) ; SDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , , Operands ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( getSubregIndexByEVT ( VT , I ) , DL , VT , SuperReg ) ) ; ReplaceUses ( SDValue ( Node , NF ) , SDValue ( Load , ) ) ;" LLVM,RISCV,2171,"Predict the next statement of this code snippet: void DAGToDAGISel :: selectVLSEGMask ( SDNode * Node , unsigned IntNo , bool IsStrided ) { SDLoc DL ( Node ) ; unsigned NF = Node -> getNumValues ( ) - ; EVT VT = Node -> getValueType ( ) ; unsigned ScalarSize = VT . getScalarSizeInBits ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; VLMUL LMUL = getLMUL ( VT ) ; SDValue SEW = CurDAG -> getTargetConstant ( ScalarSize , DL , XLenVT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( MaskedOff ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; if ( IsStrided ) { Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; } else { Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; } Operands . push_back ( SEW ) ; Operands . push_back ( Node -> getOperand ( ) ) ; const * P = ( IntNo , ScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( ) ) ; SDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ; SDValue SuperReg = SDValue ( Load , ) ;" LLVM,RISCV,2172,"Predict the next statement of this code snippet: if ( IsStrided ) { Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; } else { Operands . push_back ( Node -> getOperand ( NF + ) ) ; Operands . push_back ( Node -> getOperand ( NF + ) ) ; } Operands . push_back ( SEW ) ; Operands . push_back ( Node -> getOperand ( ) ) ; const * P = ( IntNo , ScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( ) ) ; SDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ;" LLVM,RISCV,2173,"Predict the next statement of this code snippet: unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( IntNo , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; SDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( getSubregIndexByEVT ( VT , I ) , DL , VT , SuperReg ) ) ;" LLVM,RISCV,2174,"Predict the next statement of this code snippet: EVT IndexVT = Node -> getOperand ( ) -> getValueType ( ) ; VLMUL IndexLMUL = getLMUL ( IndexVT ) ; unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( IntNo , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; SDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ; SDValue SuperReg = SDValue ( Load , ) ; for ( unsigned I = ; I < NF ; ++ I ) ReplaceUses ( SDValue ( Node , I ) , CurDAG -> getTargetExtractSubreg ( getSubregIndexByEVT ( VT , I ) , DL , VT , SuperReg ) ) ; ReplaceUses ( SDValue ( Node , NF ) , SDValue ( Load , ) ) ;" LLVM,RISCV,2175,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget -> getXLenVT ( ) ; VLMUL LMUL = getLMUL ( VT ) ; SDValue SEW = CurDAG -> getTargetConstant ( ScalarSize , DL , XLenVT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SDValue Operands [ ] = { MaskedOff , Node -> getOperand ( NF + ) , Node -> getOperand ( NF + ) , Node -> getOperand ( NF + ) , Node -> getOperand ( NF + ) , SEW , Node -> getOperand ( ) } ; EVT IndexVT = Node -> getOperand ( NF + ) -> getValueType ( ) ; VLMUL IndexLMUL = getLMUL ( IndexVT ) ;" LLVM,RISCV,2176,"Predict the next statement of this code snippet: bool DAGToDAGISel :: selectVSplat ( SDValue N , SDValue & SplatVal ) { if ( N . getOpcode ( ) != && N . getOpcode ( ) != ) return false ;" LLVM,RISCV,2177,"Predict the next statement of this code snippet: assert ( XLenVT == N . getOperand ( ) . getSimpleValueType ( ) && ) ; auto EltVT = N . getValueType ( ) . getVectorElementType ( ) ; if ( EltVT . bitsLT ( XLenVT ) ) { SplatImm = SignExtend64 ( SplatImm , EltVT . getSizeInBits ( ) ) ; } if ( ! isInt < > ( SplatImm ) ) return false ;" LLVM,RISCV,2178,"Predict the next statement of this code snippet: int64_t SplatImm = cast < ConstantSDNode > ( N . getOperand ( ) ) -> getSExtValue ( ) ; if ( ! isUInt < > ( SplatImm ) ) return false ;" LLVM,RISCV,2179,"Predict the next statement of this code snippet: int64_t SplatImm = cast < ConstantSDNode > ( N . getOperand ( ) ) -> getSExtValue ( ) ; if ( ! isUInt < > ( SplatImm ) ) return false ;" LLVM,RISCV,2180,"Predict the next statement of this code snippet: SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ; Operands . push_back ( Node -> getOperand ( + NF ) ) ; if ( IsStrided ) { Operands . push_back ( Node -> getOperand ( + NF ) ) ; Operands . push_back ( Node -> getOperand ( + NF ) ) ; } else { Operands . push_back ( Node -> getOperand ( + NF ) ) ; } Operands . push_back ( SEW ) ; Operands . push_back ( Node -> getOperand ( ) ) ; const * P = ( IntNo , ScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( ) ) ;" LLVM,RISCV,2181,"Predict the next statement of this code snippet: SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SmallVector < SDValue , > Operands ; Operands . push_back ( StoreVal ) ; Operands . push_back ( Node -> getOperand ( + NF ) ) ; if ( IsStrided ) { Operands . push_back ( Node -> getOperand ( + NF ) ) ; Operands . push_back ( Node -> getOperand ( + NF ) ) ; Operands . push_back ( Node -> getOperand ( + NF ) ) ; } else {" LLVM,RISCV,2182,"Predict the next statement of this code snippet: } else { Operands . push_back ( Node -> getOperand ( + NF ) ) ; Operands . push_back ( Node -> getOperand ( + NF ) ) ; } Operands . push_back ( SEW ) ; Operands . push_back ( Node -> getOperand ( ) ) ; const * P = ( IntNo , ScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( ) ) ; SDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ; ReplaceNode ( Node , Store ) ;" LLVM,RISCV,2183,"Predict the next statement of this code snippet: SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SDValue Operands [ ] = { StoreVal , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , SEW , Node -> getOperand ( ) } ; EVT IndexVT = Node -> getOperand ( + NF ) -> getValueType ( ) ; VLMUL IndexLMUL = getLMUL ( IndexVT ) ; unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( IntNo , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ;" LLVM,RISCV,2184,"Predict the next statement of this code snippet: unsigned NF = Node -> getNumOperands ( ) - ; EVT VT = Node -> getOperand ( ) -> getValueType ( ) ; unsigned ScalarSize = VT . getScalarSizeInBits ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; VLMUL LMUL = getLMUL ( VT ) ; SDValue SEW = CurDAG -> getTargetConstant ( ScalarSize , DL , XLenVT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SDValue Operands [ ] = { StoreVal , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , SEW , Node -> getOperand ( ) } ; EVT IndexVT = Node -> getOperand ( + NF ) -> getValueType ( ) ; VLMUL IndexLMUL = getLMUL ( IndexVT ) ; unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( IntNo , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; SDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ;" LLVM,RISCV,2185,"Predict the next statement of this code snippet: SDValue Operands [ ] = { StoreVal , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , SEW , Node -> getOperand ( ) } ; EVT IndexVT = Node -> getOperand ( + NF ) -> getValueType ( ) ; VLMUL IndexLMUL = getLMUL ( IndexVT ) ; unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( IntNo , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; SDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ;" LLVM,RISCV,2186,"Predict the next statement of this code snippet: VLMUL LMUL = getLMUL ( VT ) ; SDValue SEW = CurDAG -> getTargetConstant ( ScalarSize , DL , XLenVT ) ; SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + , Node -> op_begin ( ) + + NF ) ; SDValue StoreVal = createTuple ( * CurDAG , Regs , NF , LMUL ) ; SDValue Operands [ ] = { StoreVal , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , Node -> getOperand ( + NF ) , SEW , Node -> getOperand ( ) } ; EVT IndexVT = Node -> getOperand ( + NF ) -> getValueType ( ) ; VLMUL IndexLMUL = getLMUL ( IndexVT ) ; unsigned IndexScalarSize = IndexVT . getScalarSizeInBits ( ) ; const * P = ( IntNo , IndexScalarSize , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; SDNode * Store = CurDAG -> getMachineNode ( P -> Pseudo , DL , Node -> getValueType ( ) , Operands ) ; ReplaceNode ( Node , Store ) ;" LLVM,RISCV,2187,"Predict the next statement of this code snippet: SDNode * User = * UI ; if ( ! User -> isMachineOpcode ( ) ) return false ; switch ( User -> getMachineOpcode ( ) ) { default : return false ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : if ( Bits < ) return false ; break ; case : if ( Bits < Subtarget -> getXLen ( ) - User -> getConstantOperandVal ( ) ) return false ; break ; case : case : case : case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ;" LLVM,RISCV,2188,"Predict the next statement of this code snippet: bool DAGToDAGISel :: hasAllNBitUsers ( SDNode * Node , unsigned Bits ) const { assert ( ( Node -> getOpcode ( ) == || Node -> getOpcode ( ) == || Node -> getOpcode ( ) == || Node -> getOpcode ( ) == || Node -> getOpcode ( ) == || Node -> getOpcode ( ) == || isa < ConstantSDNode > ( Node ) ) && ) ; for ( auto UI = Node -> use_begin ( ) , UE = Node -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; if ( ! User -> isMachineOpcode ( ) ) return false ;" LLVM,RISCV,2189,"Predict the next statement of this code snippet: if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != ) continue ; SDValue ImmOperand = Base . getOperand ( ) ; if ( auto Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetConstant ( Const -> getSExtValue ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , GA -> getOffset ( ) , GA -> getTargetFlags ( ) ) ; } else { continue ; } DEBUG ( dbgs ( ) << ) ; DEBUG ( Base -> dump ( CurDAG ) ) ; DEBUG ( dbgs ( ) << ) ; DEBUG ( N -> dump ( CurDAG ) ) ; DEBUG ( dbgs ( ) << ) ;" LLVM,RISCV,2190,"Predict the next statement of this code snippet: } EVT VT = Node -> getValueType ( ) ; if ( Opcode == && VT == XLenVT ) { auto * ConstNode = cast < ConstantSDNode > ( Node ) ; if ( ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } } if ( Opcode == ) { SDLoc DL ( Node ) ; SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = dyn_cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; EVT VT = Node -> getValueType ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ;" LLVM,RISCV,2191,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( N -> dump ( CurDAG ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( F64Val -> dump ( CurDAG ) ) ; LLVM_DEBUG ( dbgs ( ) << ) ; SDValue From [ ] = { SDValue ( N , ) , SDValue ( N , ) } ; SDValue To [ ] = { F64Val . getOperand ( ) , F64Val . getOperand ( ) } ; CurDAG -> ReplaceAllUsesOfValuesWith ( From , To , ) ; } }" LLVM,RISCV,2192,"Predict the next statement of this code snippet: SelectionDAG :: allnodes_iterator Position ( CurDAG -> getRoot ( ) . getNode ( ) ) ; ++ Position ; while ( Position != CurDAG -> allnodes_begin ( ) ) { SDNode * N = & * -- Position ; if ( N -> use_empty ( ) || ! N -> isMachineOpcode ( ) || ! ( N -> getMachineOpcode ( ) == ) ) continue ; SDValue F64Val = N -> getOperand ( ) ; if ( F64Val . isMachineOpcode ( ) && F64Val . getMachineOpcode ( ) == ) { LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( dbgs ( ) << ) ;" LLVM,RISCV,2193,"Predict the next statement of this code snippet: doPeepholeLoadStoreADDI ( ) ;" LLVM,RISCV,2194,"Predict the next statement of this code snippet: void DAGToDAGISel :: PostprocessISelDAG ( ) { doPeepholeLoadStoreADDI ( ) ; doPeepholeBuildPairF64SplitF64 ( ) ;" LLVM,RISCV,2195,"Predict the next statement of this code snippet: auto * ConstNode = cast < ConstantSDNode > ( Node ) ; if ( ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } } if ( Opcode == ) { SDLoc DL ( Node ) ; SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; EVT VT = Node -> getValueType ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ;" LLVM,RISCV,2196,"Predict the next statement of this code snippet: if ( Node -> isMachineOpcode ( ) ) { LLVM_DEBUG ( dbgs ( ) << ; Node -> dump ( CurDAG ) ; dbgs ( ) << ) ; Node -> setNodeId ( - ) ; return ; } EVT VT = Node -> getValueType ( ) ; if ( Opcode == && VT == XLenVT ) { auto * ConstNode = cast < ConstantSDNode > ( Node ) ; if ( ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } }" LLVM,RISCV,2197,"Predict the next statement of this code snippet: for ( auto UI = Node -> use_begin ( ) , UE = Node -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; if ( ! User -> isMachineOpcode ( ) ) return false ; switch ( User -> getMachineOpcode ( ) ) { default : return false ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : if ( Bits < ) return false ; break ; case : if ( Bits < Subtarget -> getXLen ( ) - User -> getConstantOperandVal ( ) ) return false ; break ; case : if ( Bits < ( - countLeadingZeros ( User -> getConstantOperandVal ( ) ) ) ) return false ; break ; case : if ( Bits < ) return false ; break ; case : case : case : if ( Bits < ) return false ; break ; case : case : case : case : if ( UI . getOperandNo ( ) != || Bits < ) return false ; break ; case :" LLVM,RISCV,2198,"Predict the next statement of this code snippet: assert ( N -> getNumOperands ( ) == && ) ; MVT VT = N -> getSimpleValueType ( ) ; SDValue Lo = N -> getOperand ( ) ; SDValue Hi = N -> getOperand ( ) ; SDValue VL = N -> getOperand ( ) ; assert ( VT . getVectorElementType ( ) == && VT . isScalableVector ( ) && Lo . getValueType ( ) == && Hi . getValueType ( ) == && ) ; MachineFunction & MF = CurDAG -> getMachineFunction ( ) ; MachineFunctionInfo * FuncInfo = MF . getInfo < MachineFunctionInfo > ( ) ; SDLoc DL ( N ) ; int FI = FuncInfo -> getMoveF64FrameIndex ( MF ) ; MachinePointerInfo MPI = MachinePointerInfo :: getFixedStack ( MF , FI ) ; const TargetLowering & TLI = CurDAG -> getTargetLoweringInfo ( ) ; SDValue StackSlot = CurDAG -> getFrameIndex ( FI , TLI . getPointerTy ( CurDAG -> getDataLayout ( ) ) ) ; SDValue Chain = CurDAG -> getEntryNode ( ) ; Lo = CurDAG -> getStore ( Chain , DL , Lo , StackSlot , MPI , Align ( ) ) ; SDValue OffsetSlot = CurDAG -> getMemBasePlusOffset ( StackSlot , TypeSize :: Fixed ( ) , DL ) ; Hi = CurDAG -> getStore ( Chain , DL , Hi , OffsetSlot , MPI . getWithOffset ( ) , Align ( ) ) ; Chain = CurDAG -> getNode ( , DL , , Lo , Hi ) ; SDVTList VTs = CurDAG -> getVTList ( { VT , } ) ; SDValue IntID = CurDAG -> getTargetConstant ( , DL , ) ; SDValue Ops [ ] = { Chain , IntID , CurDAG -> getUNDEF ( VT ) , StackSlot , CurDAG -> getRegister ( , ) , VL } ; SDValue Result = CurDAG -> getMemIntrinsicNode ( , DL , VTs , Ops , , MPI , Align ( ) , MachineMemOperand :: MOLoad ) ; -- I ;" LLVM,RISCV,2199,"Predict the next statement of this code snippet: bool DAGToDAGISel :: selectVLOp ( SDValue N , SDValue & VL ) { auto * C = dyn_cast < ConstantSDNode > ( N ) ; if ( C && ( isUInt < > ( C -> getZExtValue ( ) ) || C -> getSExtValue ( ) == ) ) VL = CurDAG -> getTargetConstant ( C -> getZExtValue ( ) , SDLoc ( N ) , N -> getValueType ( ) ) ; else VL = N ;" LLVM,RISCV,2200,"Predict the next statement of this code snippet: case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDValue Op0 = Node -> getOperand ( ) ; SDValue Op1 = Node -> getOperand ( ) ; uint64_t Mask ; if ( Op1 . getOpcode ( ) == && isConstantMask ( Op0 . getNode ( ) , Mask ) ) { uint64_t ShAmt = cast < ConstantSDNode > ( Op1 . getNode ( ) ) -> getZExtValue ( ) ; if ( ( Mask | maskTrailingOnes < uint64_t > ( ShAmt ) ) == ) {" LLVM,RISCV,2201,"Predict the next statement of this code snippet: void DAGToDAGISel :: Select ( SDNode * Node ) { if ( Node -> isMachineOpcode ( ) ) { LLVM_DEBUG ( dbgs ( ) << ; Node -> dump ( CurDAG ) ; dbgs ( ) << ) ; Node -> setNodeId ( - ) ; return ; } unsigned Opcode = Node -> getOpcode ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; SDLoc DL ( Node ) ; EVT VT = Node -> getValueType ( ) ; switch ( Opcode ) { case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDValue Op0 = Node -> getOperand ( ) ; SDValue Op1 = Node -> getOperand ( ) ; uint64_t Mask ; if ( Op1 . getOpcode ( ) == && isConstantMask ( Op0 . getNode ( ) , Mask ) ) { uint64_t ShAmt = cast < ConstantSDNode > ( Op1 . getNode ( ) ) -> getZExtValue ( ) ; if ( ( Mask | maskTrailingOnes < uint64_t > ( ShAmt ) ) == ) {" LLVM,RISCV,2202,"Predict the next statement of this code snippet: if ( C && C -> isNullValue ( ) ) VL = SDValue ( selectImm ( CurDAG , SDLoc ( N ) , , Subtarget -> getXLenVT ( ) ) , ) ; else VL = N ;" LLVM,RISCV,2203,"Predict the next statement of this code snippet: auto * C = dyn_cast < ConstantSDNode > ( N ) ; if ( C && C -> isNullValue ( ) ) VL = SDValue ( selectImm ( CurDAG , SDLoc ( N ) , , Subtarget -> getXLenVT ( ) ) , ) ; else VL = N ;" LLVM,RISCV,2204,"Predict the next statement of this code snippet: if ( simm12 && signExtend ) Opcode = ; else if ( simm12 && ! signExtend ) Opcode = ; else if ( ! simm12 && signExtend ) Opcode = ; else Opcode = ; break ; case : if ( simm12 ) Opcode = ; else Opcode = ; default : break ; } if ( ! Opcode ) break ; ReplaceNode ( Node , CurDAG -> getMachineNode ( Opcode , DL , , , Chain . getSimpleValueType ( ) , Base , Offset , Chain ) ) ; return ; } case : { ShuffleVectorSDNode * Shuffle = cast < ShuffleVectorSDNode > ( Node ) ; SDValue Vec0 = Shuffle -> getOperand ( ) ; SDValue Vec1 = Shuffle -> getOperand ( ) ; unsigned Opcode ; int imm ; if ( Vec1 -> getOpcode ( ) == ) { if ( VT == ) { Opcode = ; imm = ( Shuffle -> getMaskElt ( ) & ) << ; imm |= Shuffle -> getMaskElt ( ) & ; } else { switch ( Shuffle -> getMaskElt ( ) ) { default : case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } imm = ( Shuffle -> getMaskElt ( ) & ) << ; imm |= ( Shuffle -> getMaskElt ( ) & ) << ; imm |= Shuffle -> getMaskElt ( ) & ; } SDValue Imm = CurDAG -> getTargetConstant ( imm , SDLoc ( Node ) , ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( Opcode , DL , VT , Vec0 , Imm ) ) ; return ; } if ( VT == ) { Opcode = ; imm = ( Shuffle -> getMaskElt ( ) & ) << ; imm |= Shuffle -> getMaskElt ( ) & ; } else { Opcode = ; imm = ( Shuffle -> getMaskElt ( ) & ) << ; imm |= ( Shuffle -> getMaskElt ( ) & ) << ; imm |= ( Shuffle -> getMaskElt ( ) & ) << ; imm |= Shuffle -> getMaskElt ( ) & ; } SDValue Imm = SDValue ( selectImm ( CurDAG , DL , imm , ) , ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( Opcode , DL , VT , Vec0 , Vec1 , Imm ) ) ; return ;" LLVM,RISCV,2205,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectPCLIP ( SDValue Dest , SDValue & SRC1 , SDValue & SRC2 ) {" LLVM,RISCV,2206,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectPCLIPU ( SDValue Dest , SDValue & SRC1 , SDValue & SRC2 ) {" LLVM,RISCV,2207,"Predict the next statement of this code snippet: SDValue Upper = CurDAG -> getConstant ( UpperVal , DL , VT ) ; if ( Op0 . getNode ( ) ) Upper = CurDAG -> getNode ( Opcode , DL , VT , Op0 , Upper ) ; { HandleSDNode Handle ( Upper ) ; SelectCode ( Upper . getNode ( ) ) ; Upper = Handle . getValue ( ) ; } SDValue Lower = CurDAG -> getConstant ( LowerVal , DL , VT ) ; SDValue Or = CurDAG -> getNode ( Opcode , DL , VT , Upper , Lower ) ; ReplaceUses ( Node , Or . getNode ( ) ) ; CurDAG -> RemoveDeadNode ( Node ) ;" LLVM,RISCV,2208,"Predict the next statement of this code snippet: { HandleSDNode Handle ( Upper ) ; SelectCode ( Upper . getNode ( ) ) ; Upper = Handle . getValue ( ) ; } SDValue Lower = CurDAG -> getConstant ( LowerVal , DL , VT ) ; SDValue Or = CurDAG -> getNode ( Opcode , DL , VT , Upper , Lower ) ; ReplaceUses ( Node , Or . getNode ( ) ) ; CurDAG -> RemoveDeadNode ( Node ) ;" LLVM,RISCV,2209,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget -> getXLenVT ( ) ; SDLoc DL ( Node ) ; EVT VT = Node -> getValueType ( ) ; switch ( Opcode ) { case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } break ; } case : {" LLVM,RISCV,2210,"Predict the next statement of this code snippet: SDLoc DL ( Node ) ; EVT VT = Node -> getValueType ( ) ; switch ( Opcode ) { case : { if ( auto * ConstOp = dyn_cast < ConstantSDNode > ( Node -> getOperand ( ) ) ) { if ( ! ( ConstOp -> hasOneUse ( ) ) ) break ; int64_t Imm = ConstOp -> getSExtValue ( ) ; if ( ! ( - <= Imm && Imm <= - ) && ! ( <= Imm && Imm <= ) ) break ; SDLoc DL ( Node ) ; EVT VT = Node -> getValueType ( ) ; const SDValue ImmOp0 = CurDAG -> getTargetConstant ( Imm - Imm / , DL , VT ) ; const SDValue ImmOp1 = CurDAG -> getTargetConstant ( Imm / , DL , VT ) ; auto * NodeAddi0 = CurDAG -> getMachineNode ( , DL , VT , Node -> getOperand ( ) , ImmOp0 ) ; auto * NodeAddi1 = CurDAG -> getMachineNode ( , DL , VT , SDValue ( NodeAddi0 , ) , ImmOp1 ) ; ReplaceNode ( Node , NodeAddi1 ) ; return ; } break ; } case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) {" LLVM,RISCV,2211,"Predict the next statement of this code snippet: return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDValue Op0 = Node -> getOperand ( ) ; SDValue Op1 = Node -> getOperand ( ) ; uint64_t Mask ; if ( Op1 . getOpcode ( ) == && isConstantMask ( Op0 . getNode ( ) , Mask ) ) { uint64_t ShAmt = cast < ConstantSDNode > ( Op1 . getNode ( ) ) -> getZExtValue ( ) ; if ( ( Mask | maskTrailingOnes < uint64_t > ( ShAmt ) ) == ) { SDValue ShAmtVal = CurDAG -> getTargetConstant ( ShAmt , SDLoc ( Node ) , XLenVT ) ; CurDAG -> SelectNodeTo ( Node , , XLenVT , Op0 . getOperand ( ) , ShAmtVal ) ; return ; } } break ; } case : assert ( ! Subtarget -> is64Bit ( ) && ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , , , , Node -> getOperand ( ) ) ) ;" LLVM,RISCV,2212,"Predict the next statement of this code snippet: bool DAGToDAGISel :: MatchSLLIUW ( SDNode * N ) const { assert ( N -> getOpcode ( ) == ) ; assert ( N -> getOperand ( ) . getOpcode ( ) == ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) ) ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) . getOperand ( ) ) ) ; if ( ! Subtarget -> is64Bit ( ) ) return false ; SDValue Shl = N -> getOperand ( ) ; uint64_t VC1 = N -> getConstantOperandVal ( ) ;" LLVM,RISCV,2213,"Predict the next statement of this code snippet: assert ( N -> getOperand ( ) . getOpcode ( ) == ) ; assert ( isa < ConstantSDNode > ( N -> getOperand ( ) ) ) ;" LLVM,RISCV,2214,"Predict the next statement of this code snippet: return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ; } break ; } case : { SDValue Imm = CurDAG -> getTargetConstant ( , DL , XLenVT ) ; int FI = cast < FrameIndexSDNode > ( Node ) -> getIndex ( ) ; SDValue TFI = CurDAG -> getTargetFrameIndex ( FI , VT ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , VT , TFI , Imm ) ) ; return ; } case : { if ( ! Subtarget -> is64Bit ( ) ) break ; SDNode * Op0 = Node -> getOperand ( ) . getNode ( ) ; uint64_t Mask ; if ( isa < ConstantSDNode > ( Node -> getOperand ( ) ) && isConstantMask ( Op0 , Mask ) ) { uint64_t ShAmt = Node -> getConstantOperandVal ( ) ; if ( ( Mask | maskTrailingOnes < uint64_t > ( ShAmt ) ) == ) { SDValue ShAmtVal = CurDAG -> getTargetConstant ( ShAmt , SDLoc ( Node ) , XLenVT ) ; CurDAG -> SelectNodeTo ( Node , , XLenVT , Op0 -> getOperand ( ) , ShAmtVal ) ; return ; } } break ; } case : assert ( ! Subtarget -> is64Bit ( ) && ) ; ReplaceNode ( Node , CurDAG -> getMachineNode ( , DL , , , , Node -> getOperand ( ) ) ) ; return ; case : { LoadSDNode * Load = cast < LoadSDNode > ( Node ) ; if ( Load -> getAddressingMode ( ) != ) break ; SDValue Chain = Node -> getOperand ( ) ; SDValue Base = Node -> getOperand ( ) ; SDValue Offset = Node -> getOperand ( ) ; bool simm12 = false ; bool signExtend = Load -> getExtensionType ( ) == ; if ( auto ConstantOffset = dyn_cast < ConstantSDNode > ( Offset ) ) { int ConstantVal = ConstantOffset -> getSExtValue ( ) ; simm12 = isInt < > ( ConstantVal ) ; if ( simm12 ) Offset = CurDAG -> getTargetConstant ( ConstantVal , SDLoc ( Offset ) , Offset . getValueType ( ) ) ; } unsigned Opcode = ; switch ( Load -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { case : if ( simm12 && signExtend ) Opcode = ; else if ( simm12 && ! signExtend ) Opcode = ; else if ( ! simm12 && signExtend ) Opcode = ; else Opcode = ; break ; case : if ( simm12 && signExtend ) Opcode = ;" LLVM,RISCV,2215,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectLoopDecrement ( SDValue LoopDecrement ) {" LLVM,RISCV,2216,"Predict the next statement of this code snippet: if ( And . getOperand ( ) == Shl . getOperand ( ) && isa < ConstantSDNode > ( Srl . getOperand ( ) ) && isa < ConstantSDNode > ( Shl . getOperand ( ) ) && isa < ConstantSDNode > ( And . getOperand ( ) ) ) { uint64_t VC1 = Srl . getConstantOperandVal ( ) ; uint64_t VC2 = Shl . getConstantOperandVal ( ) ; uint64_t VC3 = And . getConstantOperandVal ( ) ; if ( VC2 == ( - VC1 ) && ( VC3 | maskTrailingOnes < uint64_t > ( VC1 ) ) == ) { RS1 = Shl . getOperand ( ) ; Shamt = CurDAG -> getTargetConstant ( VC1 , SDLoc ( N ) , Srl . getOperand ( ) . getValueType ( ) ) ; return true ;" LLVM,RISCV,2217,"Predict the next statement of this code snippet: SelectionDAG :: allnodes_iterator Position ( CurDAG -> getRoot ( ) . getNode ( ) ) ; ++ Position ; while ( Position != CurDAG -> allnodes_begin ( ) ) { SDNode * N = & * -- Position ; if ( N -> use_empty ( ) || ! N -> isMachineOpcode ( ) || ! ( N -> getMachineOpcode ( ) == ) ) continue ; SDValue F64Val = N -> getOperand ( ) ; if ( F64Val . isMachineOpcode ( ) && F64Val . getMachineOpcode ( ) == ) { DEBUG ( dbgs ( ) << ) ; DEBUG ( dbgs ( ) << ) ; DEBUG ( N -> dump ( CurDAG ) ) ; DEBUG ( dbgs ( ) << ) ; DEBUG ( F64Val -> dump ( CurDAG ) ) ; DEBUG ( dbgs ( ) << ) ; SDValue From [ ] = { SDValue ( N , ) , SDValue ( N , ) } ; SDValue To [ ] = { F64Val . getOperand ( ) , F64Val . getOperand ( ) } ; CurDAG -> ReplaceAllUsesOfValuesWith ( From , To , ) ; }" LLVM,RISCV,2218,"Predict the next statement of this code snippet: DEBUG ( F64Val -> dump ( CurDAG ) ) ; DEBUG ( dbgs ( ) << ) ; SDValue From [ ] = { SDValue ( N , ) , SDValue ( N , ) } ; SDValue To [ ] = { F64Val . getOperand ( ) , F64Val . getOperand ( ) } ; CurDAG -> ReplaceAllUsesOfValuesWith ( From , To , ) ; } }" LLVM,RISCV,2219,"Predict the next statement of this code snippet: explicit DAGToDAGISel ( TargetMachine & TargetMachine , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( TargetMachine , OptLevel ) {" LLVM,RISCV,2220,"Predict the next statement of this code snippet: explicit DAGToDAGISel ( TargetMachine & TargetMachine , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( TargetMachine , OptLevel ) {" LLVM,RISCV,2221,"Predict the next statement of this code snippet: void DAGToDAGISel :: Select ( SDNode * Node ) { if ( Node -> isMachineOpcode ( ) ) { LLVM_DEBUG ( dbgs ( ) << ; Node -> dump ( CurDAG ) ; dbgs ( ) << ) ; Node -> setNodeId ( - ) ; return ; } unsigned Opcode = Node -> getOpcode ( ) ; MVT XLenVT = Subtarget -> getXLenVT ( ) ; SDLoc DL ( Node ) ; EVT VT = Node -> getValueType ( ) ; switch ( Opcode ) { case : { if ( auto * ConstOp = dyn_cast < ConstantSDNode > ( Node -> getOperand ( ) ) ) { if ( ! ( ConstOp -> hasOneUse ( ) ) ) break ; int64_t Imm = ConstOp -> getSExtValue ( ) ; if ( ! ( - <= Imm && Imm <= - ) && ! ( <= Imm && Imm <= ) ) break ; SDLoc DL ( Node ) ; EVT VT = Node -> getValueType ( ) ; const SDValue ImmOp0 = CurDAG -> getTargetConstant ( Imm - Imm / , DL , VT ) ; const SDValue ImmOp1 = CurDAG -> getTargetConstant ( Imm / , DL , VT ) ; auto * NodeAddi0 = CurDAG -> getMachineNode ( , DL , VT , Node -> getOperand ( ) , ImmOp0 ) ; auto * NodeAddi1 = CurDAG -> getMachineNode ( , DL , VT , SDValue ( NodeAddi0 , ) , ImmOp1 ) ; ReplaceNode ( Node , NodeAddi1 ) ; return ; } break ; } case : { auto ConstNode = cast < ConstantSDNode > ( Node ) ; if ( VT == XLenVT && ConstNode -> isNullValue ( ) ) { SDValue New = CurDAG -> getCopyFromReg ( CurDAG -> getEntryNode ( ) , SDLoc ( Node ) , , XLenVT ) ; ReplaceNode ( Node , New . getNode ( ) ) ; return ; } int64_t Imm = ConstNode -> getSExtValue ( ) ; if ( XLenVT == ) { ReplaceNode ( Node , selectImm ( CurDAG , SDLoc ( Node ) , Imm , XLenVT ) ) ; return ;" LLVM,RISCV,2222,"Predict the next statement of this code snippet: void DAGToDAGISel :: addVectorLoadStoreOperands ( SDNode * Node , unsigned Log2SEW , const SDLoc & DL , unsigned CurOp , bool IsMasked , bool IsStridedOrIndexed , SmallVectorImpl < SDValue > & Operands , bool IsLoad , MVT * IndexVT ) { SDValue Chain = Node -> getOperand ( ) ; SDValue Glue ; SDValue Base ; SelectBaseAddr ( Node -> getOperand ( CurOp ++ ) , Base ) ; Operands . push_back ( Base ) ; if ( IsStridedOrIndexed ) { Operands . push_back ( Node -> getOperand ( CurOp ++ ) ) ; if ( IndexVT ) * IndexVT = Operands . back ( ) -> getSimpleValueType ( ) ; } if ( IsMasked ) { SDValue Mask = Node -> getOperand ( CurOp ++ ) ; Chain = CurDAG -> getCopyToReg ( Chain , DL , , Mask , SDValue ( ) ) ; Glue = Chain . getValue ( ) ;" LLVM,RISCV,2223,"Predict the next statement of this code snippet: static const unsigned RegClassIDs [ ] = { , , , , , , } ;" LLVM,RISCV,2224,"Predict the next statement of this code snippet: static SDValue createM1Tuple ( SelectionDAG & CurDAG , ArrayRef < SDValue > Regs , unsigned NF ) { static const unsigned RegClassIDs [ ] = { , , , , , , } ; return createTupleImpl ( CurDAG , Regs , RegClassIDs [ NF - ] , ) ;" LLVM,RISCV,2225,"Predict the next statement of this code snippet: return createTupleImpl ( CurDAG , Regs , RegClassIDs [ NF - ] , ) ;" LLVM,RISCV,2226,"Predict the next statement of this code snippet: static const unsigned RegClassIDs [ ] = { , , } ; return createTupleImpl ( CurDAG , Regs , RegClassIDs [ NF - ] , ) ;" LLVM,RISCV,2227,"Predict the next statement of this code snippet: return createTupleImpl ( CurDAG , Regs , , ) ;" LLVM,RISCV,2228,"Predict the next statement of this code snippet: static SDValue createM4Tuple ( SelectionDAG & CurDAG , ArrayRef < SDValue > Regs , unsigned NF ) { return createTupleImpl ( CurDAG , Regs , , ) ;" LLVM,RISCV,2229,"Predict the next statement of this code snippet: FunctionPass * llvm :: createISelDag ( TargetMachine & TM ) { return new DAGToDAGISel ( TM ) ;" LLVM,RISCV,2230,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case :: LMUL_F8 : case :: LMUL_F4 : case :: LMUL_F2 : case :: LMUL_1 :" LLVM,RISCV,2231,"Predict the next statement of this code snippet: SDLoc DL ( Regs [ ] ) ; SmallVector < SDValue , > Ops ; Ops . push_back ( CurDAG . getTargetConstant ( RegClassID , DL , ) ) ; for ( unsigned I = ; I < Regs . size ( ) ; ++ I ) { Ops . push_back ( Regs [ I ] ) ; Ops . push_back ( CurDAG . getTargetConstant ( SubReg0 + I , DL , ) ) ;" LLVM,RISCV,2232,"Predict the next statement of this code snippet: case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; case : case : case : case : case : case : case : BaseOpIdx = ; OffsetOpIdx = ; break ; } if ( ! isa < ConstantSDNode > ( N -> getOperand ( OffsetOpIdx ) ) ) return false ; SDValue Base = N -> getOperand ( BaseOpIdx ) ; if ( ! Base . isMachineOpcode ( ) || Base . getMachineOpcode ( ) != ) return false ; SDValue ImmOperand = Base . getOperand ( ) ; uint64_t Offset2 = N -> getConstantOperandVal ( OffsetOpIdx ) ; if ( auto * Const = dyn_cast < ConstantSDNode > ( ImmOperand ) ) { int64_t Offset1 = Const -> getSExtValue ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; if ( ! isInt < > ( CombinedOffset ) ) return false ; ImmOperand = CurDAG -> getTargetConstant ( CombinedOffset , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) ) ; } else if ( auto * GA = dyn_cast < GlobalAddressSDNode > ( ImmOperand ) ) { const DataLayout & DL = CurDAG -> getDataLayout ( ) ; Align Alignment = GA -> getGlobal ( ) -> getPointerAlignment ( DL ) ; if ( Offset2 != && Alignment <= Offset2 ) return false ; int64_t Offset1 = GA -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; ImmOperand = CurDAG -> getTargetGlobalAddress ( GA -> getGlobal ( ) , SDLoc ( ImmOperand ) , ImmOperand . getValueType ( ) , CombinedOffset , GA -> getTargetFlags ( ) ) ; } else if ( auto * CP = dyn_cast < ConstantPoolSDNode > ( ImmOperand ) ) { Align Alignment = CP -> getAlign ( ) ; if ( Offset2 != && Alignment <= Offset2 ) return false ; int64_t Offset1 = CP -> getOffset ( ) ; int64_t CombinedOffset = Offset1 + Offset2 ; ImmOperand = CurDAG -> getTargetConstantPool ( CP -> getConstVal ( ) , ImmOperand . getValueType ( ) , CP -> getAlign ( ) , CombinedOffset , CP -> getTargetFlags ( ) ) ; } else {" LLVM,RISCV,2233,"Predict the next statement of this code snippet: unsigned Opc ; switch ( N0 . getMachineOpcode ( ) ) { default : llvm_unreachable ( ) ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } SDValue N00 = N0 . getOperand ( ) ; SDValue N01 = N0 . getOperand ( ) ; if ( N0 . getMachineOpcode ( ) == && ! isUInt < > ( cast < ConstantSDNode > ( N01 ) -> getSExtValue ( ) ) ) break ; SDNode * Result = CurDAG -> getMachineNode ( Opc , SDLoc ( N ) , N -> getValueType ( ) , N00 , N01 ) ; ReplaceUses ( N , Result ) ; return true ; } case : case : case : case : case : ReplaceUses ( N , N0 . getNode ( ) ) ;" LLVM,RISCV,2234,"Predict the next statement of this code snippet: case : case : case : case : case : { unsigned Opc ; switch ( N0 . getMachineOpcode ( ) ) { default : llvm_unreachable ( ) ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } SDValue N00 = N0 . getOperand ( ) ;" LLVM,RISCV,2235,"Predict the next statement of this code snippet: return ;" LLVM,RISCV,2236,"Predict the next statement of this code snippet: MadeChange |= doPeepholeSExtW ( N ) ; MadeChange |= doPeepholeLoadStoreADDI ( N ) ; } if ( MadeChange ) CurDAG -> RemoveDeadNodes ( ) ;" LLVM,RISCV,2237,"Predict the next statement of this code snippet: SDValue VL = N -> getOperand ( ) ; assert ( VT . getVectorElementType ( ) == && VT . isScalableVector ( ) && Lo . getValueType ( ) == && Hi . getValueType ( ) == && ) ; MachineFunction & MF = CurDAG -> getMachineFunction ( ) ; MachineFunctionInfo * FuncInfo = MF . getInfo < MachineFunctionInfo > ( ) ; SDLoc DL ( N ) ; int FI = FuncInfo -> getMoveF64FrameIndex ( MF ) ; MachinePointerInfo MPI = MachinePointerInfo :: getFixedStack ( MF , FI ) ; const TargetLowering & TLI = CurDAG -> getTargetLoweringInfo ( ) ; SDValue StackSlot = CurDAG -> getFrameIndex ( FI , TLI . getPointerTy ( CurDAG -> getDataLayout ( ) ) ) ; SDValue Chain = CurDAG -> getEntryNode ( ) ; Lo = CurDAG -> getStore ( Chain , DL , Lo , StackSlot , MPI , Align ( ) ) ; SDValue OffsetSlot = CurDAG -> getMemBasePlusOffset ( StackSlot , TypeSize :: Fixed ( ) , DL ) ; Hi = CurDAG -> getStore ( Chain , DL , Hi , OffsetSlot , MPI . getWithOffset ( ) , Align ( ) ) ; Chain = CurDAG -> getNode ( , DL , , Lo , Hi ) ; SDVTList VTs = CurDAG -> getVTList ( { VT , } ) ; SDValue IntID = CurDAG -> getTargetConstant ( , DL , ) ; SDValue Ops [ ] = { Chain , IntID , StackSlot , CurDAG -> getRegister ( , ) , VL } ; SDValue Result = CurDAG -> getMemIntrinsicNode ( , DL , VTs , Ops , , MPI , Align ( ) , MachineMemOperand :: MOLoad ) ; -- I ; CurDAG -> ReplaceAllUsesOfValueWith ( SDValue ( N , ) , Result ) ; ++ I ; CurDAG -> DeleteNode ( N ) ; }" LLVM,RISCV,2238,"Predict the next statement of this code snippet: explicit DAGToDAGISel ( TargetMachine & TargetMachine ) : SelectionDAGISel ( TargetMachine ) {" LLVM,RISCV,2239,"Predict the next statement of this code snippet: explicit DAGToDAGISel ( TargetMachine & TargetMachine ) : SelectionDAGISel ( TargetMachine ) {" LLVM,RISCV,2240,"Predict the next statement of this code snippet: Subtarget = & MF . getSubtarget < Subtarget > ( ) ;" LLVM,RISCV,2241,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectAddrFI ( SDValue Addr , SDValue & Base ) { if ( auto * FIN = dyn_cast < FrameIndexSDNode > ( Addr ) ) {" LLVM,RISCV,2242,"Predict the next statement of this code snippet: if ( auto * FIN = dyn_cast < FrameIndexSDNode > ( Addr ) ) Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , Subtarget -> getXLenVT ( ) ) ; else Base = Addr ; return true ;" LLVM,RISCV,2243,"Predict the next statement of this code snippet: SDValue SDImm = CurDAG -> getTargetConstant ( Inst . Imm , DL , XLenVT ) ; if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SDImm ) ; else if ( Inst . Opc == ) Result = CurDAG -> getMachineNode ( , DL , XLenVT , SrcReg , CurDAG -> getRegister ( , XLenVT ) ) ; else if ( Inst . Opc == || Inst . Opc == || Inst . Opc == ) Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SrcReg ) ; else Result = CurDAG -> getMachineNode ( Inst . Opc , DL , XLenVT , SrcReg , SDImm ) ; SrcReg = SDValue ( Result , ) ; }" LLVM,RISCV,2244,"Predict the next statement of this code snippet: switch ( ConstraintID ) { case InlineAsm :: Constraint_m : OutOps . push_back ( Op ) ; return false ; case InlineAsm :: Constraint_A : OutOps . push_back ( Op ) ; return false ; default : break ; } return true ;" LLVM,RISCV,2245,"Predict the next statement of this code snippet: if ( auto * C = dyn_cast < ConstantSDNode > ( N ) ) {" LLVM,RISCV,2246,"Predict the next statement of this code snippet: } MVT VT = N . getSimpleValueType ( ) ; if ( CurDAG -> ComputeNumSignBits ( N ) > ( VT . getSizeInBits ( ) - ) ) { Val = N ; return true ; }" LLVM,RISCV,2247,"Predict the next statement of this code snippet: bool DAGToDAGISel :: selectShiftMask ( SDValue N , unsigned ShiftWidth , SDValue & ShAmt ) { if ( N . getOpcode ( ) == && isa < ConstantSDNode > ( N . getOperand ( ) ) ) { const APInt & AndMask = N -> getConstantOperandAPInt ( ) ;" LLVM,RISCV,2248,"Predict the next statement of this code snippet: if ( C && isUInt < > ( C -> getZExtValue ( ) ) ) VL = CurDAG -> getTargetConstant ( C -> getZExtValue ( ) , SDLoc ( N ) , N -> getValueType ( ) ) ;" LLVM,RISCV,2249,"Predict the next statement of this code snippet: MVT VT = Node -> getSimpleValueType ( ) ; unsigned Log2SEW = Log2_32 ( VT . getScalarSizeInBits ( ) ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; unsigned CurOp = ; SmallVector < SDValue , > Operands ; if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , IsStrided , Operands , true ) ; const * P = ( NF , IsMasked , IsStrided , false , Log2SEW , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ;" LLVM,RISCV,2250,"Predict the next statement of this code snippet: MVT VT = Node -> getSimpleValueType ( ) ; unsigned Log2SEW = Log2_32 ( VT . getScalarSizeInBits ( ) ) ; LMUL = TargetLowering :: getLMUL ( VT ) ; unsigned CurOp = ; SmallVector < SDValue , > Operands ; if ( IsMasked ) { SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , IsStrided , Operands , true ) ; const * P = ( NF , IsMasked , IsStrided , false , Log2SEW , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ;" LLVM,RISCV,2251,"Predict the next statement of this code snippet: addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , false , Operands , true ) ; const * P = ( NF , IsMasked , false , true , Log2SEW , static_cast < unsigned > ( LMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , , Operands ) ; SDNode * ReadVL = CurDAG -> getMachineNode ( , DL , XLenVT , SDValue ( Load , ) ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ;" LLVM,RISCV,2252,"Predict the next statement of this code snippet: SmallVector < SDValue , > Regs ( Node -> op_begin ( ) + CurOp , Node -> op_begin ( ) + CurOp + NF ) ; SDValue MaskedOff = createTuple ( * CurDAG , Regs , NF , LMUL ) ; Operands . push_back ( MaskedOff ) ; CurOp += NF ; } MVT IndexVT ; addVectorLoadStoreOperands ( Node , Log2SEW , DL , CurOp , IsMasked , true , Operands , true , & IndexVT ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; IndexLMUL = TargetLowering :: getLMUL ( IndexVT ) ; unsigned IndexLog2EEW = Log2_32 ( IndexVT . getScalarSizeInBits ( ) ) ; const * P = ( NF , IsMasked , IsOrdered , IndexLog2EEW , static_cast < unsigned > ( LMUL ) , static_cast < unsigned > ( IndexLMUL ) ) ; MachineSDNode * Load = CurDAG -> getMachineNode ( P -> Pseudo , DL , , , Operands ) ; if ( auto * MemOp = dyn_cast < MemSDNode > ( Node ) ) CurDAG -> setNodeMemRefs ( Load , { MemOp -> getMemOperand ( ) } ) ;" LLVM,RISCV,2253,"Predict the next statement of this code snippet: bool DAGToDAGISel :: selectVSplat ( SDValue N , SDValue & SplatVal ) { if ( N . getOpcode ( ) != && N . getOpcode ( ) != && N . getOpcode ( ) != ) return false ; SplatVal = N . getOperand ( ) ; return true ;" LLVM,RISCV,2254,"Predict the next statement of this code snippet: bool DAGToDAGISel :: selectVSplatSimm5 ( SDValue N , SDValue & SplatVal ) {" LLVM,RISCV,2255,"Predict the next statement of this code snippet: bool DAGToDAGISel :: selectVSplatSimm5 ( SDValue N , SDValue & SplatVal ) { return selectVSplatSimmHelper ( N , SplatVal , * CurDAG , * Subtarget , [ ] ( int64_t Imm ) { return isInt < > ( Imm ) ; } ) ;" LLVM,RISCV,2256,"Predict the next statement of this code snippet: return selectVSplatSimmHelper ( N , SplatVal , * CurDAG , * Subtarget , [ ] ( int64_t Imm ) { return ( isInt < > ( Imm ) && Imm != - ) || Imm == ; } ) ;" LLVM,RISCV,2257,"Predict the next statement of this code snippet: return selectVSplatSimmHelper ( N , SplatVal , * CurDAG , * Subtarget , [ ] ( int64_t Imm ) { return ( isInt < > ( Imm ) && Imm != - ) || Imm == ; } ) ;" LLVM,RISCV,2258,"Predict the next statement of this code snippet: return Imm != && ( ( isInt < > ( Imm ) && Imm != - ) || Imm == ) ; } ) ;" LLVM,RISCV,2259,"Predict the next statement of this code snippet: return selectVSplatSimmHelper ( N , SplatVal , * CurDAG , * Subtarget , [ ] ( int64_t Imm ) { return Imm != && ( ( isInt < > ( Imm ) && Imm != - ) || Imm == ) ; } ) ;" LLVM,RISCV,2260,"Predict the next statement of this code snippet: assert ( XLenVT == N . getOperand ( ) . getSimpleValueType ( ) && ) ; MVT EltVT = N . getSimpleValueType ( ) . getVectorElementType ( ) ; if ( EltVT . bitsLT ( XLenVT ) ) SplatImm = SignExtend64 ( SplatImm , EltVT . getSizeInBits ( ) ) ; if ( ! ValidateImm ( SplatImm ) ) return false ;" LLVM,RISCV,2261,"Predict the next statement of this code snippet: assert ( XLenVT == N . getOperand ( ) . getSimpleValueType ( ) && ) ; MVT EltVT = N . getSimpleValueType ( ) . getVectorElementType ( ) ; if ( EltVT . bitsLT ( XLenVT ) ) SplatImm = SignExtend64 ( SplatImm , EltVT . getSizeInBits ( ) ) ;" LLVM,RISCV,2262,"Predict the next statement of this code snippet: if ( ( N . getOpcode ( ) != && N . getOpcode ( ) != && N . getOpcode ( ) != ) || ! isa < ConstantSDNode > ( N . getOperand ( ) ) ) return false ; int64_t SplatImm = cast < ConstantSDNode > ( N . getOperand ( ) ) -> getSExtValue ( ) ;" LLVM,RISCV,2263,"Predict the next statement of this code snippet: if ( ! isUInt < > ( SplatImm ) ) return false ; SplatVal = CurDAG -> getTargetConstant ( SplatImm , SDLoc ( N ) , Subtarget -> getXLenVT ( ) ) ; return true ;" LLVM,RISCV,2264,"Predict the next statement of this code snippet: ByValArgInfo ( ) : FirstIdx ( ) , NumRegs ( ) , Address ( ) {" LLVM,RISCV,2265,"Predict the next statement of this code snippet: ByValArgInfo ( ) : FirstIdx ( ) , NumRegs ( ) , Address ( ) {" LLVM,RISCV,2266,"Predict the next statement of this code snippet: EVT getSetCCResultType ( const DataLayout & , LLVMContext & , EVT VT ) const override { return ;" LLVM,RISCV,2267,"Predict the next statement of this code snippet: bool isFMAFasterThanFMulAndFAdd ( EVT ) const override {" LLVM,RISCV,2268,"Predict the next statement of this code snippet: bool isFMAFasterThanFMulAndFAdd ( EVT ) const override {" LLVM,RISCV,2269,"Predict the next statement of this code snippet: bool TargetLowering :: CanLowerReturn ( CallingConv :: ID CallConv , MachineFunction & MF , bool IsVarArg , const SmallVectorImpl < > & Outs , LLVMContext & Context ) const { SmallVector < CCValAssign , > RVLocs ;" LLVM,RISCV,2270,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , RVLocs , Context ) ;" LLVM,RISCV,2271,"Predict the next statement of this code snippet: if ( VA . isExtInLoc ( ) ) Value = DAG . getNode ( , DL , VA . getValVT ( ) , Value ) ; else if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) Value = DAG . getLoad ( VA . getValVT ( ) , DL , Chain , Value , MachinePointerInfo ( ) , false , false , false , ) ; else assert ( VA . getLocInfo ( ) == CCValAssign :: Full && ) ;" LLVM,RISCV,2272,"Predict the next statement of this code snippet: static SDValue convertLocVTToValVT ( SelectionDAG & DAG , SDLoc DL , CCValAssign & VA , SDValue Chain , SDValue Value ) { if ( VA . getLocInfo ( ) == CCValAssign :: SExt ) Value = DAG . getNode ( , DL , VA . getLocVT ( ) , Value , DAG . getValueType ( VA . getValVT ( ) ) ) ; else if ( VA . getLocInfo ( ) == CCValAssign :: ZExt ) Value = DAG . getNode ( , DL , VA . getLocVT ( ) , Value , DAG . getValueType ( VA . getValVT ( ) ) ) ; if ( VA . isExtInLoc ( ) ) Value = DAG . getNode ( , DL , VA . getValVT ( ) , Value ) ; else if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) Value = DAG . getLoad ( VA . getValVT ( ) , DL , Chain , Value , MachinePointerInfo ( ) , false , false , false , ) ;" LLVM,RISCV,2273,"Predict the next statement of this code snippet: switch ( VA . getLocInfo ( ) ) { case CCValAssign :: SExt : return DAG . getNode ( , DL , VA . getLocVT ( ) , Value ) ; case CCValAssign :: ZExt : return DAG . getNode ( , DL , VA . getLocVT ( ) , Value ) ;" LLVM,RISCV,2274,"Predict the next statement of this code snippet: case : jump = ; RA = ; break ; case : jump = ; RA = ; break ; default : llvm_unreachable ( ) ; } MachineInstrBuilder jumpMI = BuildMI ( * BB , MI , DL , TII -> get ( jump ) , RA ) ; for ( unsigned i = ; i < MI -> getNumOperands ( ) ; i ++ ) { jumpMI . addOperand ( MI -> getOperand ( i ) ) ; } MI -> eraseFromParent ( ) ; return BB ;" LLVM,RISCV,2275,"Predict the next statement of this code snippet: case : case : case : case : return emitCALL ( MI , MBB ) ; default : llvm_unreachable ( ) ; }" LLVM,RISCV,2276,"Predict the next statement of this code snippet: SDValue Hi = getTargetNode ( Op , DAG , ) ; SDValue Lo = getTargetNode ( Op , DAG , ) ; SDValue ResHi = DAG . getNode ( , DL , Ty , Hi ) ; SDValue ResLo = DAG . getNode ( , DL , Ty , Lo ) ; return DAG . getNode ( , DL , Ty , ResHi , ResLo ) ;" LLVM,RISCV,2277,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; EVT Ty = Op . getValueType ( ) ;" LLVM,RISCV,2278,"Predict the next statement of this code snippet: case 'Q' : case 'R' : case 'S' : case 'T' : case 'm' : return C_Memory ; case 'I' : case 'J' : case 'K' : case 'L' : case 'M' : return C_Other ;" LLVM,RISCV,2279,"Predict the next statement of this code snippet: if ( Subtarget . isRV64 ( ) ) return ; else return ;" LLVM,RISCV,2280,"Predict the next statement of this code snippet: unsigned TargetLowering :: getExceptionPointerRegister ( const Constant * PersonalityFn ) const { if ( Subtarget . isRV64 ( ) ) return ;" LLVM,RISCV,2281,"Predict the next statement of this code snippet: if ( Subtarget . isRV64 ( ) ) return ;" LLVM,RISCV,2282,"Predict the next statement of this code snippet: switch ( Constraint [ ] ) { default : break ; case 'd' : case 'r' : if ( Subtarget . isRV64 ( ) ) return std :: make_pair ( , & ) ; return std :: make_pair ( , & ) ; case 'f' : if ( Subtarget . hasD ( ) ) return std :: make_pair ( , & ) ; else if ( Subtarget . hasF ( ) ) return std :: make_pair ( , & ) ; else if ( Subtarget . isRV64 ( ) ) return std :: make_pair ( , & ) ;" LLVM,RISCV,2283,"Predict the next statement of this code snippet: Type * type = CallOperandVal -> getType ( ) ; switch ( * constraint ) { default : weight = TargetLowering :: getSingleConstraintMatchWeight ( info , constraint ) ; break ; case 'a' : case 'd' : case 'r' : if ( CallOperandVal -> getType ( ) -> isIntegerTy ( ) ) weight = CW_Register ; break ; case 'f' : if ( type -> isFloatingPointTy ( ) ) weight = CW_Register ; break ; case 'I' : if ( ConstantInt * C = dyn_cast < ConstantInt > ( CallOperandVal ) ) if ( isUInt < > ( C -> getZExtValue ( ) ) ) weight = CW_Constant ; break ; case 'J' : if ( ConstantInt * C = dyn_cast < ConstantInt > ( CallOperandVal ) ) if ( isUInt < > ( C -> getZExtValue ( ) ) ) weight = CW_Constant ; break ; case 'K' : if ( ConstantInt * C = dyn_cast < ConstantInt > ( CallOperandVal ) ) if ( isInt < > ( C -> getSExtValue ( ) ) ) weight = CW_Constant ; break ;" LLVM,RISCV,2284,"Predict the next statement of this code snippet: EVT Ty = getPointerTy ( DAG . getDataLayout ( ) ) ; if ( GlobalAddressSDNode * N = dyn_cast < GlobalAddressSDNode > ( Op ) ) return DAG . getTargetGlobalAddress ( N -> getGlobal ( ) , SDLoc ( Op ) , Ty , , Flag ) ; if ( ExternalSymbolSDNode * N = dyn_cast < ExternalSymbolSDNode > ( Op ) ) return DAG . getTargetExternalSymbol ( N -> getSymbol ( ) , Ty , Flag ) ; if ( BlockAddressSDNode * N = dyn_cast < BlockAddressSDNode > ( Op ) ) return DAG . getTargetBlockAddress ( N -> getBlockAddress ( ) , Ty , , Flag ) ; if ( JumpTableSDNode * N = dyn_cast < JumpTableSDNode > ( Op ) ) return DAG . getTargetJumpTable ( N -> getIndex ( ) , Ty , Flag ) ;" LLVM,RISCV,2285,"Predict the next statement of this code snippet: OPCODE ( Lo ) ; OPCODE ( FENCE ) ; OPCODE ( SELECT_CC ) ; }" LLVM,RISCV,2286,"Predict the next statement of this code snippet: void TargetObjectFile :: Initialize ( MCContext & Ctx , const TargetMachine & TM ) { TargetLoweringObjectFileELF :: Initialize ( Ctx , TM ) ; InitializeELF ( TM . Options . UseInitArray ) ;" LLVM,RISCV,2287,"Predict the next statement of this code snippet: bool TargetLowering :: isFPImmLegal ( const APFloat & Imm , EVT VT ) const { return Imm . isPosZero ( ) ;" LLVM,RISCV,2288,"Predict the next statement of this code snippet: bool TargetLowering :: isOffsetFoldingLegal ( const GlobalAddressSDNode * GA ) const { return false ;" LLVM,RISCV,2289,"Predict the next statement of this code snippet: return ; case 'L' : if ( ConstantSDNode * C = dyn_cast < ConstantSDNode > ( Op ) ) if ( isInt < > ( C -> getSExtValue ( ) ) ) Ops . push_back ( DAG . getTargetConstant ( C -> getSExtValue ( ) , SDLoc ( Op ) , Op . getValueType ( ) ) ) ; return ; case 'M' :" LLVM,RISCV,2290,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerATOMIC_FENCE ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; unsigned PI , PO , PR , PW , SI , SO , SR , SW ; switch ( Op . getConstantOperandVal ( ) ) { case NotAtomic : case Unordered : case Monotonic : case Acquire : case Release : case AcquireRelease : case SequentiallyConsistent : PI = << ; PO = << ; PR = << ; PW = << ; } switch ( Op . getConstantOperandVal ( ) ) {" LLVM,RISCV,2291,"Predict the next statement of this code snippet: int64_t Offset = Node -> getOffset ( ) ; EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ;" LLVM,RISCV,2292,"Predict the next statement of this code snippet: const BlockAddress * BA = Node -> getBlockAddress ( ) ; int64_t Offset = Node -> getOffset ( ) ; EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ; SDValue Result = DAG . getTargetBlockAddress ( BA , PtrVT , Offset ) ; return Result ;" LLVM,RISCV,2293,"Predict the next statement of this code snippet: SDValue Result ; if ( CP -> isMachineConstantPoolEntry ( ) ) Result = DAG . getTargetConstantPool ( CP -> getMachineCPVal ( ) , PtrVT , CP -> getAlignment ( ) ) ; else Result = DAG . getTargetConstantPool ( CP -> getConstVal ( ) , PtrVT , CP -> getAlignment ( ) , CP -> getOffset ( ) ) ;" LLVM,RISCV,2294,"Predict the next statement of this code snippet: if ( VA . getLocInfo ( ) == CCValAssign :: SExt ) Opcode = ; else if ( VA . getLocInfo ( ) == CCValAssign :: ZExt ) Opcode = ; if ( Opcode ) ArgValue = DAG . getNode ( Opcode , DL , RegVT , ArgValue , DAG . getValueType ( VA . getValVT ( ) ) ) ; ArgValue = DAG . getNode ( , DL , VA . getValVT ( ) , ArgValue ) ; } InVals . push_back ( ArgValue ) ; } else { assert ( VA . isMemLoc ( ) ) ; EVT ValVT = VA . getValVT ( ) ; int FI = MFI -> CreateFixedObject ( ValVT . getSizeInBits ( ) / , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , getPointerTy ( DAG . getDataLayout ( ) ) ) ; InVals . push_back ( DAG . getLoad ( ValVT , DL , Chain , FIN , MachinePointerInfo :: getFixedStack ( DAG . getMachineFunction ( ) , FI ) , false , false , false , ) ) ; } } if ( IsVarArg ) { auto ArgRegs = IsRV32 ? RV32IntRegs : RV64IntRegs ; unsigned NumRegs = llvm :: ; unsigned Idx = CCInfo . getFirstUnallocated ( ArrayRef < MCPhysReg > ( ArgRegs , ) ) ; unsigned RegSize = IsRV32 ? : ; MVT RegTy = ( RegSize * ) ; const TargetRegisterClass * RC = getRegClassFor ( RegTy ) ; int VaArgOffset ; if ( NumRegs == Idx ) VaArgOffset = RoundUpToAlignment ( CCInfo . getNextStackOffset ( ) , RegSize ) ; else VaArgOffset = - ( int ) ( RegSize * ( NumRegs - Idx ) ) ; int FI = MFI -> CreateFixedObject ( RegSize , VaArgOffset , true ) ; FI -> setVarArgsFrameIndex ( FI ) ; for ( unsigned I = Idx ; I < NumRegs ; ++ I , VaArgOffset += RegSize ) { unsigned Reg = addLiveIn ( MF , ArgRegs [ I ] , RC ) ; SDValue ArgValue = DAG . getCopyFromReg ( Chain , DL , Reg , RegTy ) ;" LLVM,RISCV,2295,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerFRAMEADDR ( SDValue Op , SelectionDAG & DAG ) const {" LLVM,RISCV,2296,"Predict the next statement of this code snippet: if ( GlobalAddressSDNode * G = dyn_cast < GlobalAddressSDNode > ( Op ) ) { Op = DAG . getTargetGlobalAddress ( G -> getGlobal ( ) , SDLoc ( Op ) , getPointerTy ( DAG . getDataLayout ( ) ) ) ; return getAddrPIC ( Op , DAG ) ;" LLVM,RISCV,2297,"Predict the next statement of this code snippet: Op = DAG . getTargetGlobalAddress ( G -> getGlobal ( ) , SDLoc ( Op ) , getPointerTy ( DAG . getDataLayout ( ) ) ) ; return getAddrPIC ( Op , DAG ) ; }" LLVM,RISCV,2298,"Predict the next statement of this code snippet: SDValue Hi = DAG . getNode ( , DL , PtrVT , TGAHi ) ; SDValue Lo = DAG . getNode ( , DL , PtrVT , TGALo ) ; Offset = DAG . getNode ( , DL , PtrVT , Hi , Lo ) ; } else { llvm_unreachable ( ) ; }" LLVM,RISCV,2299,"Predict the next statement of this code snippet: assert ( model == TLSModel :: LocalExec ) ; SDValue TGAHi = DAG . getTargetGlobalAddress ( GV , DL , PtrVT , , ) ; SDValue TGALo = DAG . getTargetGlobalAddress ( GV , DL , PtrVT , , ) ; SDValue Hi = DAG . getNode ( , DL , PtrVT , TGAHi ) ;" LLVM,RISCV,2300,"Predict the next statement of this code snippet: SDValue Result = DAG . getTargetJumpTable ( JT -> getIndex ( ) , PtrVT ) ;" LLVM,RISCV,2301,"Predict the next statement of this code snippet: switch ( Op . getOpcode ( ) ) { case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerSELECT_CC ( Op , DAG ) ; case : return lowerGlobalAddress ( Op , DAG ) ; case : return lowerGlobalTLSAddress ( cast < GlobalAddressSDNode > ( Op ) , DAG ) ; case : return lowerBlockAddress ( cast < BlockAddressSDNode > ( Op ) , DAG ) ; case : return lowerJumpTable ( cast < JumpTableSDNode > ( Op ) , DAG ) ; case : return lowerConstantPool ( cast < ConstantPoolSDNode > ( Op ) , DAG ) ;" LLVM,RISCV,2302,"Predict the next statement of this code snippet: case : return lowerGlobalTLSAddress ( cast < GlobalAddressSDNode > ( Op ) , DAG ) ; case : return lowerBlockAddress ( cast < BlockAddressSDNode > ( Op ) , DAG ) ; case : return lowerJumpTable ( cast < JumpTableSDNode > ( Op ) , DAG ) ; case : return lowerConstantPool ( cast < ConstantPoolSDNode > ( Op ) , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerVAARG ( Op , DAG ) ;" LLVM,RISCV,2303,"Predict the next statement of this code snippet: if ( Subtarget . isRV64 ( ) ) RetCCInfo . AnalyzeReturn ( Outs , RetCC_64 ) ; else RetCCInfo . AnalyzeReturn ( Outs , RetCC_32 ) ; SDValue Glue ; if ( RetLocs . empty ( ) ) return DAG . getNode ( , DL , , Chain ) ; SmallVector < SDValue , > RetOps ; RetOps . push_back ( Chain ) ; for ( unsigned I = , E = RetLocs . size ( ) ; I != E ; ++ I ) { CCValAssign & VA = RetLocs [ I ] ; SDValue RetValue = OutVals [ I ] ; assert ( VA . isRegLoc ( ) && ) ; RetValue = convertValVTToLocVT ( DAG , DL , VA , RetValue ) ; unsigned Reg = VA . getLocReg ( ) ; Chain = DAG . getCopyToReg ( Chain , DL , Reg , RetValue , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( Reg , VA . getLocVT ( ) ) ) ; } RetOps [ ] = Chain ; if ( Glue . getNode ( ) ) RetOps . push_back ( Glue ) ; return DAG . getNode ( , DL , , RetOps ) ;" LLVM,RISCV,2304,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; unsigned RA = Subtarget . isRV64 ( ) ? : ; MFI -> setReturnAddressIsTaken ( true ) ;" LLVM,RISCV,2305,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerRETURNADDR ( SDValue Op , SelectionDAG & DAG ) const { assert ( ( cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) == ) && ) ;" LLVM,RISCV,2306,"Predict the next statement of this code snippet: SDValue Cond = DAG . getNode ( , DL , getSetCCResultType ( DAG . getDataLayout ( ) , * DAG . getContext ( ) , Ty ) , Op . getOperand ( ) , Op . getOperand ( ) , Op . getOperand ( ) ) ;" LLVM,RISCV,2307,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerSTACKRESTORE ( SDValue Op , SelectionDAG & DAG ) const { MachineFunction & MF = DAG . getMachineFunction ( ) ; MF . getInfo < FunctionInfo > ( ) -> setManipulatesSP ( true ) ; unsigned sp = Subtarget . isRV64 ( ) ? : ;" LLVM,RISCV,2308,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerSTACKSAVE ( SDValue Op , SelectionDAG & DAG ) const { MachineFunction & MF = DAG . getMachineFunction ( ) ; MF . getInfo < FunctionInfo > ( ) -> setManipulatesSP ( true ) ;" LLVM,RISCV,2309,"Predict the next statement of this code snippet: MachineFunction & MF = DAG . getMachineFunction ( ) ; MF . getInfo < FunctionInfo > ( ) -> setManipulatesSP ( true ) ; unsigned sp = Subtarget . isRV64 ( ) ? : ; return DAG . getCopyFromReg ( Op . getOperand ( ) , SDLoc ( Op ) , sp , Op . getValueType ( ) ) ;" LLVM,RISCV,2310,"Predict the next statement of this code snippet: InChain = DAG . getStore ( VAList . getValue ( ) , DL , NextPtr , VAListPtr , MachinePointerInfo ( SV ) , false , false , ) ; return DAG . getLoad ( VT , DL , InChain , VAList , MachinePointerInfo ( ) , false , false , false , std :: min ( PtrVT . getSizeInBits ( ) , VT . getSizeInBits ( ) ) / ) ;" LLVM,RISCV,2311,"Predict the next statement of this code snippet: FunctionInfo * FuncInfo = MF . getInfo < FunctionInfo > ( ) ; EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ; SDValue Chain = Op . getOperand ( ) ; SDValue Addr = Op . getOperand ( ) ;" LLVM,RISCV,2312,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; SDValue FI = DAG . getFrameIndex ( FuncInfo -> getVarArgsFrameIndex ( ) , PtrVT ) ;" LLVM,RISCV,2313,"Predict the next statement of this code snippet: if ( IsRet ) ArgTy = FType -> getReturnType ( ) ; else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ;" LLVM,RISCV,2314,"Predict the next statement of this code snippet: if ( CC_ ( MF . getDataLayout ( ) , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet , OrigTy ) ) {" LLVM,RISCV,2315,"Predict the next statement of this code snippet: for ( unsigned i = ; i != NumArgs ; i ++ ) { MVT ArgVT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ;" LLVM,RISCV,2316,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; EVT Ty = Op . getValueType ( ) ; BlockAddressSDNode * N = cast < BlockAddressSDNode > ( Op ) ; const BlockAddress * BA = N -> getBlockAddress ( ) ; int64_t Offset = N -> getOffset ( ) ; if ( isPositionIndependent ( ) || Subtarget . is64Bit ( ) ) report_fatal_error ( ) ; SDValue BAHi = DAG . getTargetBlockAddress ( BA , Ty , Offset , ) ;" LLVM,RISCV,2317,"Predict the next statement of this code snippet: const char * Sym = N -> getSymbol ( ) ; if ( isPositionIndependent ( ) || Subtarget . is64Bit ( ) ) report_fatal_error ( ) ; SDValue GAHi = DAG . getTargetExternalSymbol ( Sym , Ty , ) ; SDValue GALo = DAG . getTargetExternalSymbol ( Sym , Ty , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , GAHi ) , ) ; SDValue MNLo = SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , GALo ) , ) ;" LLVM,RISCV,2318,"Predict the next statement of this code snippet: SDValue GAHi = DAG . getTargetExternalSymbol ( Sym , Ty , ) ; SDValue GALo = DAG . getTargetExternalSymbol ( Sym , Ty , ) ;" LLVM,RISCV,2319,"Predict the next statement of this code snippet: unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; while ( Depth -- ) { int Offset = - ( XLenInBytes * ) ;" LLVM,RISCV,2320,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerFRAMEADDR ( SDValue Op , SelectionDAG & DAG ) const { const RegisterInfo & RI = * Subtarget . getRegisterInfo ( ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MFI . setFrameAddressIsTaken ( true ) ; unsigned FrameReg = RI . getFrameRegister ( MF ) ; int XLenInBytes = Subtarget . getXLen ( ) / ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ; SDValue FrameAddr = DAG . getCopyFromReg ( DAG . getEntryNode ( ) , DL , FrameReg , VT ) ; unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; while ( Depth -- ) { int Offset = - ( XLenInBytes * ) ;" LLVM,RISCV,2321,"Predict the next statement of this code snippet: const GlobalValue * GV = N -> getGlobal ( ) ; int64_t Offset = N -> getOffset ( ) ; if ( isPositionIndependent ( ) || Subtarget . is64Bit ( ) ) report_fatal_error ( ) ; SDValue GAHi = DAG . getTargetGlobalAddress ( GV , DL , Ty , Offset , ) ;" LLVM,RISCV,2322,"Predict the next statement of this code snippet: return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ;" LLVM,RISCV,2323,"Predict the next statement of this code snippet: case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return LowerFRAMEADDR ( Op , DAG ) ;" LLVM,RISCV,2324,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , DAG . getMachineFunction ( ) , RVLocs , * DAG . getContext ( ) ) ; analyzeOutputArgs ( DAG . getMachineFunction ( ) , CCInfo , Outs , true , nullptr ) ; SDValue Glue ; SmallVector < SDValue , > RetOps ( , Chain ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; unsigned RegLo = VA . getLocReg ( ) ; unsigned RegHi = RegLo + ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegHi , ) ) ; } else { Val = packIntoRegLoc ( DAG , Val , VA , DL ) ; Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ; } } RetOps [ ] = Chain ; if ( Glue . getNode ( ) ) { RetOps . push_back ( Glue ) ; } return DAG . getNode ( , DL , , RetOps ) ;" LLVM,RISCV,2325,"Predict the next statement of this code snippet: const RegisterInfo & RI = * Subtarget . getRegisterInfo ( ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MFI . setReturnAddressIsTaken ( true ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; int XLenInBytes = Subtarget . getXLen ( ) / ; if ( verifyReturnAddressArgumentIsConstant ( Op , DAG ) ) return SDValue ( ) ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ; unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; if ( Depth ) { int Off = - XLenInBytes ; SDValue FrameAddr = LowerFRAMEADDR ( Op , DAG ) ; SDValue Offset = DAG . getConstant ( Off , DL , VT ) ; return DAG . getLoad ( VT , DL , DAG . getEntryNode ( ) , DAG . getNode ( , DL , VT , FrameAddr , Offset ) , MachinePointerInfo ( ) ) ; } unsigned Reg = MF . addLiveIn ( RI . getRARegister ( ) , getRegClassFor ( XLenVT ) ) ; return DAG . getCopyFromReg ( DAG . getEntryNode ( ) , DL , Reg , XLenVT ) ;" LLVM,RISCV,2326,"Predict the next statement of this code snippet: break ; case CCValAssign :: BCvt : Val = DAG . getNode ( , DL , LocVT , Val ) ; break ; }" LLVM,RISCV,2327,"Predict the next statement of this code snippet: EVT LocVT = VA . getLocVT ( ) ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : break ; case CCValAssign :: BCvt : Val = DAG . getNode ( , DL , LocVT , Val ) ;" LLVM,RISCV,2328,"Predict the next statement of this code snippet: setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; if ( ! Subtarget . hasStdExtM ( ) ) { setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ;" LLVM,RISCV,2329,"Predict the next statement of this code snippet: EVT ValVT = VA . getValVT ( ) ; SDValue Val ; unsigned VReg = RegInfo . createVirtualRegister ( & ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , VReg ) ; Val = DAG . getCopyFromReg ( Chain , DL , VReg , LocVT ) ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : case CCValAssign :: Indirect : break ; case CCValAssign :: BCvt : Val = DAG . getNode ( , DL , ValVT , Val ) ; break ; }" LLVM,RISCV,2330,"Predict the next statement of this code snippet: MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; EVT ValVT = VA . getValVT ( ) ; SDValue Val ; unsigned VReg = RegInfo . createVirtualRegister ( & ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , VReg ) ;" LLVM,RISCV,2331,"Predict the next statement of this code snippet: else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ;" LLVM,RISCV,2332,"Predict the next statement of this code snippet: MVT ArgVT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; Type * OrigTy = CLI ? CLI -> getArgs ( ) [ Outs [ i ] . OrigArgIndex ] . Ty : nullptr ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet , OrigTy ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << ) ;" LLVM,RISCV,2333,"Predict the next statement of this code snippet: for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , VT , VT , CCValAssign :: Full , ArgFlags , CCInfo , true , true , nullptr ) ) return false ; } return true ;" LLVM,RISCV,2334,"Predict the next statement of this code snippet: State . addLoc ( CCValAssign :: getMem ( ValNo2 , ValVT2 , State . AllocateStack ( XLenInBytes , XLenInBytes ) , LocVT2 , CCValAssign :: Full ) ) ; return false ; } if ( Register Reg = State . AllocateReg ( ArgGPRs ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo2 , ValVT2 , Reg , LocVT2 , CCValAssign :: Full ) ) ; } else {" LLVM,RISCV,2335,"Predict the next statement of this code snippet: if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR64List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR64List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == || LocVT == ) { unsigned Offset4 = State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , Offset4 , LocVT , LocInfo ) ) ; return false ; } if ( LocVT == || LocVT == ) { unsigned Offset5 = State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , Offset5 , LocVT , LocInfo ) ) ; return false ; } return true ;" LLVM,RISCV,2336,"Predict the next statement of this code snippet: if ( LocVT == ) { static const MCPhysReg FPR32List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR64List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR64List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == || LocVT == ) { unsigned Offset4 = State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , Offset4 , LocVT , LocInfo ) ) ; return false ; } if ( LocVT == || LocVT == ) {" LLVM,RISCV,2337,"Predict the next statement of this code snippet: unsigned TargetLowering :: ComputeNumSignBitsForTargetNode ( SDValue Op , const APInt & DemandedElts , const SelectionDAG & DAG , unsigned Depth ) const { switch ( Op . getOpcode ( ) ) { default : break ; case : case : case : case : case :" LLVM,RISCV,2338,"Predict the next statement of this code snippet: switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : break ; case CCValAssign :: BCvt : if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ;" LLVM,RISCV,2339,"Predict the next statement of this code snippet: case CCValAssign :: Full : break ; case CCValAssign :: BCvt : if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ; } Val = DAG . getNode ( , DL , LocVT , Val ) ; break ;" LLVM,RISCV,2340,"Predict the next statement of this code snippet: SDValue NewOp1 = DAG . getNode ( , DL , , N -> getOperand ( ) ) ;" LLVM,RISCV,2341,"Predict the next statement of this code snippet: SDValue NewOp1 = DAG . getNode ( , DL , , N -> getOperand ( ) ) ;" LLVM,RISCV,2342,"Predict the next statement of this code snippet: const TargetRegisterInfo * RI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; Register DstReg = MI . getOperand ( ) . getReg ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * DstRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI ) , MachineMemOperand :: MOStore , , ) ; BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( LoReg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( HiReg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; TII . loadRegFromStackSlot ( * BB , MI , DstReg , FI , DstRC , RI ) ; MI . eraseFromParent ( ) ;" LLVM,RISCV,2343,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : assert ( ! Subtarget . is64Bit ( ) && ) ; return emitReadCycleWidePseudo ( MI , BB ) ; case : case : case : return emitSelectPseudo ( MI , BB ) ; case : return emitBuildPairF64Pseudo ( MI , BB ) ; case : return emitSplitF64Pseudo ( MI , BB ) ; }" LLVM,RISCV,2344,"Predict the next statement of this code snippet: } ) ) break ; } } const TargetInstrInfo & TII = * BB -> getParent ( ) -> getSubtarget ( ) . getInstrInfo ( ) ; const BasicBlock * LLVM_BB = BB -> getBasicBlock ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; MachineFunction :: iterator I = ++ BB -> getIterator ( ) ; MachineBasicBlock * HeadMBB = BB ; MachineFunction * F = BB -> getParent ( ) ; MachineBasicBlock * TailMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; MachineBasicBlock * IfFalseMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; F -> insert ( I , IfFalseMBB ) ; F -> insert ( I , TailMBB ) ; for ( MachineInstr * DebugInstr : SelectDebugValues ) { TailMBB -> push_back ( DebugInstr -> removeFromParent ( ) ) ; } TailMBB -> splice ( TailMBB -> end ( ) , HeadMBB , std :: next ( LastSelectPseudo -> getIterator ( ) ) , HeadMBB -> end ( ) ) ; TailMBB -> transferSuccessorsAndUpdatePHIs ( HeadMBB ) ; HeadMBB -> addSuccessor ( IfFalseMBB ) ; HeadMBB -> addSuccessor ( TailMBB ) ; unsigned Opcode = getBranchOpcodeForIntCondCode ( CC ) ; BuildMI ( HeadMBB , DL , TII . get ( Opcode ) ) . addReg ( LHS ) . addReg ( RHS ) . addMBB ( TailMBB ) ; IfFalseMBB -> addSuccessor ( TailMBB ) ; auto SelectMBBI = MI . getIterator ( ) ; auto SelectEnd = std :: next ( LastSelectPseudo -> getIterator ( ) ) ; auto InsertionPoint = TailMBB -> begin ( ) ; while ( SelectMBBI != SelectEnd ) { auto Next = std :: next ( SelectMBBI ) ; if ( isSelectPseudo ( * SelectMBBI ) ) { BuildMI ( * TailMBB , InsertionPoint , SelectMBBI -> getDebugLoc ( ) , TII . get ( ) , SelectMBBI -> getOperand ( ) . getReg ( ) ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( HeadMBB ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( IfFalseMBB ) ; SelectMBBI -> eraseFromParent ( ) ;" LLVM,RISCV,2345,"Predict the next statement of this code snippet: Register LHS = MI . getOperand ( ) . getReg ( ) ; Register RHS = MI . getOperand ( ) . getReg ( ) ; auto CC = static_cast < > ( MI . getOperand ( ) . getImm ( ) ) ; SmallVector < MachineInstr * , > SelectDebugValues ; SmallSet < Register , > SelectDests ; SelectDests . insert ( MI . getOperand ( ) . getReg ( ) ) ; MachineInstr * LastSelectPseudo = & MI ; for ( auto E = BB -> end ( ) , SequenceMBBI = MachineBasicBlock :: iterator ( MI ) ; SequenceMBBI != E ; ++ SequenceMBBI ) { if ( SequenceMBBI -> isDebugInstr ( ) ) continue ; else if ( isSelectPseudo ( * SequenceMBBI ) ) { if ( SequenceMBBI -> getOperand ( ) . getReg ( ) != LHS || SequenceMBBI -> getOperand ( ) . getReg ( ) != RHS || SequenceMBBI -> getOperand ( ) . getImm ( ) != CC || SelectDests . count ( SequenceMBBI -> getOperand ( ) . getReg ( ) ) || SelectDests . count ( SequenceMBBI -> getOperand ( ) . getReg ( ) ) ) break ; LastSelectPseudo = & * SequenceMBBI ;" LLVM,RISCV,2346,"Predict the next statement of this code snippet: static MachineBasicBlock * emitSplitF64Pseudo ( MachineInstr & MI , MachineBasicBlock * BB ) { assert ( MI . getOpcode ( ) == && ) ; MachineFunction & MF = * BB -> getParent ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; const TargetInstrInfo & TII = * MF . getSubtarget ( ) . getInstrInfo ( ) ; const TargetRegisterInfo * RI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; Register SrcReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * SrcRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( ) ;" LLVM,RISCV,2347,"Predict the next statement of this code snippet: switch ( Constraint [ ] ) { default : break ; case 'f' : return C_RegisterClass ; case 'I' : case 'J' : case 'K' : return C_Immediate ; case 'A' :" LLVM,RISCV,2348,"Predict the next statement of this code snippet: case 'K' : return C_Immediate ; case 'A' : return C_Memory ; } }" LLVM,RISCV,2349,"Predict the next statement of this code snippet: unsigned TargetLowering :: getExceptionPointerRegister ( const Constant * PersonalityFn ) const {" LLVM,RISCV,2350,"Predict the next statement of this code snippet: unsigned TargetLowering :: getExceptionSelectorRegister ( const Constant * PersonalityFn ) const { return ;" LLVM,RISCV,2351,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,2352,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,2353,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; }" LLVM,RISCV,2354,"Predict the next statement of this code snippet: case : case : case : PointerType * PtrTy = cast < PointerType > ( I . getArgOperand ( ) -> getType ( ) ) ; Info . opc = ; Info . memVT = ( PtrTy -> getElementType ( ) ) ;" LLVM,RISCV,2355,"Predict the next statement of this code snippet: return ( VT == && Subtarget . hasStdExtF ( ) ) || ( VT == && Subtarget . hasStdExtD ( ) ) ;" LLVM,RISCV,2356,"Predict the next statement of this code snippet: APInt ShiftedC1Int = C1Int << C2 -> getAPIntValue ( ) ; if ( ShiftedC1Int . getMinSignedBits ( ) <= && isLegalAddImmediate ( ShiftedC1Int . getSExtValue ( ) ) ) return true ; if ( C1Int . getMinSignedBits ( ) <= && isLegalAddImmediate ( C1Int . getSExtValue ( ) ) ) return false ; int C1Cost = ( C1Int , Ty . getSizeInBits ( ) , Subtarget . is64Bit ( ) ) ;" LLVM,RISCV,2357,"Predict the next statement of this code snippet: if ( Constraint . length ( ) == ) { switch ( Constraint [ ] ) { case 'I' : if ( auto * C = dyn_cast < ConstantSDNode > ( Op ) ) { uint64_t CVal = C -> getSExtValue ( ) ; if ( isInt < > ( CVal ) ) Ops . push_back ( DAG . getTargetConstant ( CVal , SDLoc ( Op ) , Subtarget . getXLenVT ( ) ) ) ;" LLVM,RISCV,2358,"Predict the next statement of this code snippet: continue ; } InVals . push_back ( ArgValue ) ; } if ( IsVarArg ) { ArrayRef < MCPhysReg > ArgRegs = makeArrayRef ( ArgGPRs ) ; unsigned Idx = CCInfo . getFirstUnallocated ( ArgRegs ) ; const TargetRegisterClass * RC = & ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; MachineFunctionInfo * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; int VaArgOffset , VarArgsSaveSize ; if ( ArgRegs . size ( ) == Idx ) { VaArgOffset = CCInfo . getNextStackOffset ( ) ; VarArgsSaveSize = ; } else { VarArgsSaveSize = XLenInBytes * ( ArgRegs . size ( ) - Idx ) ; VaArgOffset = - VarArgsSaveSize ; } int FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; RVFI -> setVarArgsFrameIndex ( FI ) ; if ( Idx % ) { MFI . CreateFixedObject ( XLenInBytes , VaArgOffset - ( int ) XLenInBytes , true ) ; VarArgsSaveSize += XLenInBytes ; } for ( unsigned I = Idx ; I < ArgRegs . size ( ) ; ++ I , VaArgOffset += XLenInBytes ) { const Register Reg = RegInfo . createVirtualRegister ( RC ) ; RegInfo . addLiveIn ( ArgRegs [ I ] , Reg ) ; SDValue ArgValue = DAG . getCopyFromReg ( Chain , DL , Reg , XLenVT ) ; FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; SDValue PtrOff = DAG . getFrameIndex ( FI , getPointerTy ( DAG . getDataLayout ( ) ) ) ; SDValue Store = DAG . getStore ( Chain , DL , ArgValue , PtrOff , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ; cast < StoreSDNode > ( Store . getNode ( ) ) -> getMemOperand ( ) -> setValue ( ( Value * ) nullptr ) ; OutChains . push_back ( Store ) ; } RVFI -> setVarArgsSaveSize ( VarArgsSaveSize ) ;" LLVM,RISCV,2359,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; TLSModel :: Model Model = getTargetMachine ( ) . getTLSModel ( N -> getGlobal ( ) ) ; SDValue Addr ; switch ( Model ) { case TLSModel :: LocalExec : Addr = getStaticTLSAddr ( N , DAG , false ) ; break ; case TLSModel :: InitialExec :" LLVM,RISCV,2360,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , DAG . getMachineFunction ( ) , RVLocs , * DAG . getContext ( ) ) ; analyzeOutputArgs ( DAG . getMachineFunction ( ) , CCInfo , Outs , true , nullptr ) ; SDValue Glue ; SmallVector < SDValue , > RetOps ( , Chain ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; Register RegLo = VA . getLocReg ( ) ; assert ( RegLo < && ) ; Register RegHi = RegLo + ; if ( STI . isRegisterReservedByUser ( RegLo ) || STI . isRegisterReservedByUser ( RegHi ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ;" LLVM,RISCV,2361,"Predict the next statement of this code snippet: if ( STI . isRegisterReservedByUser ( RegLo ) || STI . isRegisterReservedByUser ( RegHi ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegHi , ) ) ; } else { Val = convertValVTToLocVT ( DAG , Val , VA , DL ) ; Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Glue ) ; if ( STI . isRegisterReservedByUser ( VA . getLocReg ( ) ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ; } } RetOps [ ] = Chain ; if ( Glue . getNode ( ) ) { RetOps . push_back ( Glue ) ; } const Function & Func = DAG . getMachineFunction ( ) . getFunction ( ) ; if ( Func . hasFnAttribute ( ) ) { if ( ! Func . getReturnType ( ) -> isVoidTy ( ) ) report_fatal_error ( ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; StringRef Kind = MF . getFunction ( ) . getFnAttribute ( ) . getValueAsString ( ) ; unsigned RetOpc ; if ( Kind == ) RetOpc = ;" LLVM,RISCV,2362,"Predict the next statement of this code snippet: case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ; break ; }" LLVM,RISCV,2363,"Predict the next statement of this code snippet: int FI = MFI . CreateFixedObject ( ValVT . getSizeInBits ( ) / , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , PtrVT ) ; SDValue Val ; ExtType ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ;" LLVM,RISCV,2364,"Predict the next statement of this code snippet: MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; SDValue Val ; const TargetRegisterClass * RC ; switch ( LocVT . getSimpleVT ( ) . SimpleTy ) { default : llvm_unreachable ( ) ; case : case : RC = & ; break ; case : RC = & ; break ; case : RC = & ; break ; } Register VReg = RegInfo . createVirtualRegister ( RC ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , VReg ) ; Val = DAG . getCopyFromReg ( Chain , DL , VReg , LocVT ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) return Val ; return convertLocVTToValVT ( DAG , Val , VA , DL ) ;" LLVM,RISCV,2365,"Predict the next statement of this code snippet: break ; case : RC = & ; break ; case : RC = & ; break ; } Register VReg = RegInfo . createVirtualRegister ( RC ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , VReg ) ; Val = DAG . getCopyFromReg ( Chain , DL , VReg , LocVT ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) return Val ; return convertLocVTToValVT ( DAG , Val , VA , DL ) ;" LLVM,RISCV,2366,"Predict the next statement of this code snippet: const Function & F = MF . getFunction ( ) ; const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; if ( std :: any_of ( std :: begin ( Regs ) , std :: end ( Regs ) , [ & STI ] ( auto Reg ) {" LLVM,RISCV,2367,"Predict the next statement of this code snippet: void TargetLowering :: validateCCReservedRegs ( const SmallVectorImpl < std :: pair < llvm :: Register , llvm :: SDValue >> & Regs , MachineFunction & MF ) const { const Function & F = MF . getFunction ( ) ; const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; if ( std :: any_of ( std :: begin ( Regs ) , std :: end ( Regs ) , [ & STI ] ( auto Reg ) { return STI . isRegisterReservedByUser ( Reg . first ) ; } ) ) F . getContext ( ) . diagnose ( DiagnosticInfoUnsupported {" LLVM,RISCV,2368,"Predict the next statement of this code snippet: LocVT = ; if ( ! Reg ) { unsigned StackOffset = State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ; } if ( ! State . AllocateReg ( ArgGPRs ) ) State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } unsigned Reg = State . AllocateReg ( ArgGPRs ) ; unsigned StackOffset = Reg ? : State . AllocateStack ( XLen / , XLen / ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ; for ( auto & It : PendingLocs ) { if ( Reg ) It . convertToReg ( Reg ) ; else It . convertToMem ( StackOffset ) ; State . addLoc ( It ) ; } PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return false ; } assert ( LocVT == XLenVT && ) ; if ( Reg ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; } else {" LLVM,RISCV,2369,"Predict the next statement of this code snippet: const Subtarget & getSubtarget ( ) const { return Subtarget ;" LLVM,RISCV,2370,"Predict the next statement of this code snippet: return Subtarget ;" LLVM,RISCV,2371,"Predict the next statement of this code snippet: unsigned XLenInBytes = Subtarget . getXLen ( ) / ; std :: vector < SDValue > OutChains ; SmallVector < CCValAssign , > ArgLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , ArgLocs , * DAG . getContext ( ) ) ; analyzeInputArgs ( MF , CCInfo , Ins , false ) ; for ( unsigned i = , e = ArgLocs . size ( ) ; i != e ; ++ i ) { CCValAssign & VA = ArgLocs [ i ] ; assert ( VA . getLocVT ( ) == XLenVT && ) ; SDValue ArgValue ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) ArgValue = unpackF64OnRV32DSoftABI ( DAG , Chain , VA , DL ) ; else if ( VA . isRegLoc ( ) ) ArgValue = unpackFromRegLoc ( DAG , Chain , VA , DL ) ; else ArgValue = unpackFromMemLoc ( DAG , Chain , VA , DL ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) { InVals . push_back ( DAG . getLoad ( VA . getValVT ( ) , DL , Chain , ArgValue , MachinePointerInfo ( ) ) ) ; unsigned ArgIndex = Ins [ i ] . OrigArgIndex ; assert ( Ins [ i ] . PartOffset == ) ; while ( i + != e && Ins [ i + ] . OrigArgIndex == ArgIndex ) { CCValAssign & PartVA = ArgLocs [ i + ] ; unsigned PartOffset = Ins [ i + ] . PartOffset ; SDValue Address = DAG . getNode ( , DL , PtrVT , ArgValue , DAG . getIntPtrConstant ( PartOffset , DL ) ) ; InVals . push_back ( DAG . getLoad ( PartVA . getValVT ( ) , DL , Chain , Address , MachinePointerInfo ( ) ) ) ; ++ i ; } continue ; } InVals . push_back ( ArgValue ) ; } if ( IsVarArg ) { ArrayRef < MCPhysReg > ArgRegs = makeArrayRef ( ArgGPRs ) ; unsigned Idx = CCInfo . getFirstUnallocated ( ArgRegs ) ; const TargetRegisterClass * RC = & ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; MachineFunctionInfo * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; int VaArgOffset , VarArgsSaveSize ; if ( ArgRegs . size ( ) == Idx ) { VaArgOffset = CCInfo . getNextStackOffset ( ) ; VarArgsSaveSize = ; } else { VarArgsSaveSize = XLenInBytes * ( ArgRegs . size ( ) - Idx ) ; VaArgOffset = - VarArgsSaveSize ; } int FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; RVFI -> setVarArgsFrameIndex ( FI ) ; if ( Idx % ) { FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset - ( int ) XLenInBytes , true ) ;" LLVM,RISCV,2372,"Predict the next statement of this code snippet: const GlobalValue * GV = N -> getGlobal ( ) ; int64_t Offset = N -> getOffset ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( isPositionIndependent ( ) || Subtarget . is64Bit ( ) ) report_fatal_error ( ) ;" LLVM,RISCV,2373,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , DAG . getMachineFunction ( ) , RVLocs , * DAG . getContext ( ) ) ; analyzeOutputArgs ( DAG . getMachineFunction ( ) , CCInfo , Outs , true , nullptr ) ; SDValue Glue ; SmallVector < SDValue , > RetOps ( , Chain ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; unsigned RegLo = VA . getLocReg ( ) ; unsigned RegHi = RegLo + ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ;" LLVM,RISCV,2374,"Predict the next statement of this code snippet: return true ;" LLVM,RISCV,2375,"Predict the next statement of this code snippet: return true ;" LLVM,RISCV,2376,"Predict the next statement of this code snippet: MachineFunction & MF = * BB -> getParent ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; const TargetInstrInfo & TII = * MF . getSubtarget ( ) . getInstrInfo ( ) ; const TargetRegisterInfo * RI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; Register DstReg = MI . getOperand ( ) . getReg ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * DstRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI ) , MachineMemOperand :: MOStore , , Align ( ) ) ; BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( LoReg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( HiReg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ;" LLVM,RISCV,2377,"Predict the next statement of this code snippet: Register DstReg = MI . getOperand ( ) . getReg ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * DstRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( ) ;" LLVM,RISCV,2378,"Predict the next statement of this code snippet: const TargetInstrInfo & TII = * MF . getSubtarget ( ) . getInstrInfo ( ) ; const TargetRegisterInfo * RI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; Register SrcReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * SrcRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( ) ; TII . storeRegToStackSlot ( * BB , MI , SrcReg , MI . getOperand ( ) . isKill ( ) , FI , SrcRC , RI ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI ) , MachineMemOperand :: MOLoad , , Align ( ) ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , LoReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , HiReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; MI . eraseFromParent ( ) ; return BB ;" LLVM,RISCV,2379,"Predict the next statement of this code snippet: int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( ) ; TII . storeRegToStackSlot ( * BB , MI , SrcReg , MI . getOperand ( ) . isKill ( ) , FI , SrcRC , RI ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI ) , MachineMemOperand :: MOLoad , , Align ( ) ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , LoReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ;" LLVM,RISCV,2380,"Predict the next statement of this code snippet: if ( VT == && ! Subtarget . hasStdExtF ( ) ) return false ;" LLVM,RISCV,2381,"Predict the next statement of this code snippet: bool TargetLowering :: isFPImmLegal ( const APFloat & Imm , EVT VT , bool ForCodeSize ) const { if ( VT == && ! Subtarget . hasStdExtF ( ) ) return false ; if ( VT == && ! Subtarget . hasStdExtD ( ) ) return false ;" LLVM,RISCV,2382,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerINTRINSIC_WO_CHAIN ( SDValue Op , SelectionDAG & DAG ) const { unsigned IntNo = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; SDLoc DL ( Op ) ;" LLVM,RISCV,2383,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerINTRINSIC_WO_CHAIN ( SDValue Op , SelectionDAG & DAG ) const { unsigned IntNo = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ;" LLVM,RISCV,2384,"Predict the next statement of this code snippet: assert ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) != || Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; }" LLVM,RISCV,2385,"Predict the next statement of this code snippet: SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , RCW , RCW . getValue ( ) ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOpWithSExt ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ;" LLVM,RISCV,2386,"Predict the next statement of this code snippet: if ( IsCallerStructRet || IsCalleeStructRet ) return false ; if ( GlobalAddressSDNode * G = dyn_cast < GlobalAddressSDNode > ( Callee ) ) { const GlobalValue * GV = G -> getGlobal ( ) ; if ( GV -> hasExternalWeakLinkage ( ) ) return false ; } const RegisterInfo * TRI = Subtarget . getRegisterInfo ( ) ; const uint32_t * CallerPreserved = TRI -> getCallPreservedMask ( MF , CallerCC ) ; if ( CalleeCC != CallerCC ) { const uint32_t * CalleePreserved = TRI -> getCallPreservedMask ( MF , CalleeCC ) ; if ( ! TRI -> regmaskSubsetEqual ( CallerPreserved , CalleePreserved ) ) return false ; } for ( auto & Arg : Outs ) if ( Arg . Flags . isByVal ( ) ) return false ; return true ;" LLVM,RISCV,2387,"Predict the next statement of this code snippet: if ( IsCallerStructRet || IsCalleeStructRet ) return false ; if ( GlobalAddressSDNode * G = dyn_cast < GlobalAddressSDNode > ( Callee ) ) { const GlobalValue * GV = G -> getGlobal ( ) ; if ( GV -> hasExternalWeakLinkage ( ) ) return false ; } const RegisterInfo * TRI = Subtarget . getRegisterInfo ( ) ; const uint32_t * CallerPreserved = TRI -> getCallPreservedMask ( MF , CallerCC ) ; if ( CalleeCC != CallerCC ) {" LLVM,RISCV,2388,"Predict the next statement of this code snippet: break ; case TLSModel :: LocalDynamic : case TLSModel :: GeneralDynamic : Addr = getDynamicTLSAddr ( N , DAG ) ; break ; } if ( Offset != ) return DAG . getNode ( , DL , Ty , Addr , DAG . getConstant ( Offset , DL , XLenVT ) ) ; return Addr ;" LLVM,RISCV,2389,"Predict the next statement of this code snippet: } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; } if ( Subtarget . hasStdExtF ( ) && Subtarget . is64Bit ( ) ) setOperationAction ( , , Custom ) ; if ( Subtarget . hasStdExtD ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; } setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ;" LLVM,RISCV,2390,"Predict the next statement of this code snippet: if ( ! Reg ) { unsigned StackOffset = State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ; } if ( ! State . AllocateReg ( ArgGPRs ) ) State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } unsigned Reg ; if ( ValVT == && ! UseGPRForF32 ) Reg = State . AllocateReg ( ArgFPR32s , ArgFPR64s ) ; else if ( ValVT == && ! UseGPRForF64 ) Reg = State . AllocateReg ( ArgFPR64s , ArgFPR32s ) ; else Reg = State . AllocateReg ( ArgGPRs ) ; unsigned StackOffset = Reg ? : State . AllocateStack ( XLen / , XLen / ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ; for ( auto & It : PendingLocs ) { if ( Reg ) It . convertToReg ( Reg ) ; else It . convertToMem ( StackOffset ) ; State . addLoc ( It ) ; } PendingLocs . clear ( ) ;" LLVM,RISCV,2391,"Predict the next statement of this code snippet: BB -> addSuccessor ( LoopMBB ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; unsigned ReadAgainReg = RegInfo . createVirtualRegister ( & ) ; unsigned LoReg = MI . getOperand ( ) . getReg ( ) ; unsigned HiReg = MI . getOperand ( ) . getReg ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; const TargetInstrInfo * TII = MF . getSubtarget ( ) . getInstrInfo ( ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) , HiReg ) . addImm ( ( ) -> Encoding ) . addReg ( ) ;" LLVM,RISCV,2392,"Predict the next statement of this code snippet: TailMBB -> splice ( TailMBB -> end ( ) , HeadMBB , std :: next ( LastSelectPseudo -> getIterator ( ) ) , HeadMBB -> end ( ) ) ; TailMBB -> transferSuccessorsAndUpdatePHIs ( HeadMBB ) ; HeadMBB -> addSuccessor ( IfFalseMBB ) ; HeadMBB -> addSuccessor ( TailMBB ) ; unsigned Opcode = getBranchOpcodeForIntCondCode ( CC ) ; BuildMI ( HeadMBB , DL , TII . get ( Opcode ) ) . addReg ( LHS ) . addReg ( RHS ) . addMBB ( TailMBB ) ; IfFalseMBB -> addSuccessor ( TailMBB ) ; auto SelectMBBI = MI . getIterator ( ) ; auto SelectEnd = std :: next ( LastSelectPseudo -> getIterator ( ) ) ; auto InsertionPoint = TailMBB -> begin ( ) ; while ( SelectMBBI != SelectEnd ) { auto Next = std :: next ( SelectMBBI ) ; if ( isSelectPseudo ( * SelectMBBI ) ) { BuildMI ( * TailMBB , InsertionPoint , SelectMBBI -> getDebugLoc ( ) , TII . get ( ) , SelectMBBI -> getOperand ( ) . getReg ( ) ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( HeadMBB ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( IfFalseMBB ) ; SelectMBBI -> eraseFromParent ( ) ;" LLVM,RISCV,2393,"Predict the next statement of this code snippet: if ( isLegalAddImmediate ( ShiftedC1Int . getSExtValue ( ) ) ) return true ; if ( isLegalAddImmediate ( C1Int . getSExtValue ( ) ) ) return false ; int C1Cost = ( C1Int , Ty . getSizeInBits ( ) , Subtarget . is64Bit ( ) ) ; int ShiftedC1Cost = ( ShiftedC1Int , Ty . getSizeInBits ( ) , Subtarget . is64Bit ( ) ) ;" LLVM,RISCV,2394,"Predict the next statement of this code snippet: auto CalleeCC = CLI . CallConv ; auto IsVarArg = CLI . IsVarArg ; auto & Outs = CLI . Outs ; auto & Caller = MF . getFunction ( ) ; auto CallerCC = Caller . getCallingConv ( ) ; if ( Caller . getFnAttribute ( ) . getValueAsString ( ) == ) return false ; if ( Caller . hasFnAttribute ( ) ) return false ; if ( IsVarArg ) return false ; if ( CCInfo . getNextStackOffset ( ) != ) return false ; for ( auto & VA : ArgLocs ) if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) return false ; auto IsCallerStructRet = Caller . hasStructRetAttr ( ) ; auto IsCalleeStructRet = Outs . empty ( ) ? false : Outs [ ] . Flags . isSRet ( ) ; if ( IsCallerStructRet || IsCalleeStructRet ) return false ; if ( GlobalAddressSDNode * G = dyn_cast < GlobalAddressSDNode > ( Callee ) ) { const GlobalValue * GV = G -> getGlobal ( ) ; if ( GV -> hasExternalWeakLinkage ( ) ) return false ; } const RegisterInfo * TRI = Subtarget . getRegisterInfo ( ) ; const uint32_t * CallerPreserved = TRI -> getCallPreservedMask ( MF , CallerCC ) ; if ( CalleeCC != CallerCC ) { const uint32_t * CalleePreserved = TRI -> getCallPreservedMask ( MF , CalleeCC ) ;" LLVM,RISCV,2395,"Predict the next statement of this code snippet: case : { assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( RCW ) ; Results . push_back ( RCW . getValue ( ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ;" LLVM,RISCV,2396,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : { assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( RCW ) ; Results . push_back ( RCW . getValue ( ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ;" LLVM,RISCV,2397,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case : case : RC = & ; break ; case : RC = & ; break ; case : RC = & ; break ; } unsigned VReg = RegInfo . createVirtualRegister ( RC ) ;" LLVM,RISCV,2398,"Predict the next statement of this code snippet: static SDValue unpackFromRegLoc ( SelectionDAG & DAG , SDValue Chain , const CCValAssign & VA , const SDLoc & DL ) { MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; SDValue Val ; const TargetRegisterClass * RC ; switch ( LocVT . getSimpleVT ( ) . SimpleTy ) { default : llvm_unreachable ( ) ; case : case : RC = & ; break ; case : RC = & ; break ; case : RC = & ; break ; } unsigned VReg = RegInfo . createVirtualRegister ( RC ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , VReg ) ; Val = DAG . getCopyFromReg ( Chain , DL , VReg , LocVT ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) return Val ; return convertLocVTToValVT ( DAG , Val , VA , DL ) ;" LLVM,RISCV,2399,"Predict the next statement of this code snippet: } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } unsigned Reg = State . AllocateReg ( ArgGPRs ) ; unsigned StackOffset = Reg ? : State . AllocateStack ( XLen / , XLen / ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ; for ( auto & It : PendingLocs ) { if ( Reg ) It . convertToReg ( Reg ) ; else It . convertToMem ( StackOffset ) ; State . addLoc ( It ) ; }" LLVM,RISCV,2400,"Predict the next statement of this code snippet: unsigned TwoXLenInBytes = ( * XLen ) / ; if ( ! IsFixed && ArgFlags . getOrigAlign ( ) == TwoXLenInBytes && DL . getTypeAllocSize ( OrigTy ) == TwoXLenInBytes ) { unsigned RegIdx = State . getFirstUnallocated ( ArgGPRs ) ; if ( RegIdx != array_lengthof ( ArgGPRs ) && RegIdx % == ) State . AllocateReg ( ArgGPRs ) ; } SmallVectorImpl < CCValAssign > & PendingLocs = State . getPendingLocs ( ) ; SmallVectorImpl < > & PendingArgFlags = State . getPendingArgFlags ( ) ; assert ( PendingLocs . size ( ) == PendingArgFlags . size ( ) && ) ; if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } unsigned Reg = State . AllocateReg ( ArgGPRs ) ; unsigned StackOffset = Reg ? : State . AllocateStack ( XLen / , XLen / ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ; for ( auto & It : PendingLocs ) { if ( Reg ) It . convertToReg ( Reg ) ; else It . convertToMem ( StackOffset ) ; State . addLoc ( It ) ; } PendingLocs . clear ( ) ;" LLVM,RISCV,2401,"Predict the next statement of this code snippet: DebugLoc DL = MI . getDebugLoc ( ) ; assert ( MI . getOpcode ( ) == && ) ; const BasicBlock * LLVM_BB = BB -> getBasicBlock ( ) ; MachineFunction :: iterator I = ++ BB -> getIterator ( ) ; MachineBasicBlock * HeadMBB = BB ; MachineFunction * F = BB -> getParent ( ) ; MachineBasicBlock * TailMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; MachineBasicBlock * IfFalseMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; F -> insert ( I , IfFalseMBB ) ; F -> insert ( I , TailMBB ) ; TailMBB -> splice ( TailMBB -> begin ( ) , HeadMBB , std :: next ( MachineBasicBlock :: iterator ( MI ) ) , HeadMBB -> end ( ) ) ; TailMBB -> transferSuccessorsAndUpdatePHIs ( HeadMBB ) ; HeadMBB -> addSuccessor ( IfFalseMBB ) ;" LLVM,RISCV,2402,"Predict the next statement of this code snippet: DebugLoc DL = MI . getDebugLoc ( ) ; assert ( MI . getOpcode ( ) == && ) ; const BasicBlock * LLVM_BB = BB -> getBasicBlock ( ) ; MachineFunction :: iterator I = ++ BB -> getIterator ( ) ; MachineBasicBlock * HeadMBB = BB ; MachineFunction * F = BB -> getParent ( ) ; MachineBasicBlock * TailMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; MachineBasicBlock * IfFalseMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; F -> insert ( I , IfFalseMBB ) ; F -> insert ( I , TailMBB ) ;" LLVM,RISCV,2403,"Predict the next statement of this code snippet: break ; case : return ; case : return ; case : return ; }" LLVM,RISCV,2404,"Predict the next statement of this code snippet: CCValAssign & VA = ArgLocs [ i ] ; SDValue ArgValue = OutVals [ i ] ; Flags = Outs [ i ] . Flags ; switch ( VA . getLocInfo ( ) ) { case CCValAssign :: Full : break ; case CCValAssign :: Indirect : { SDValue SpillSlot = DAG . CreateStackTemporary ( Outs [ i ] . ArgVT ) ; int FI = cast < FrameIndexSDNode > ( SpillSlot ) -> getIndex ( ) ; MemOpChains . push_back ( DAG . getStore ( Chain , DL , ArgValue , SpillSlot , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ) ; unsigned ArgIndex = Outs [ i ] . OrigArgIndex ; assert ( Outs [ i ] . PartOffset == ) ; while ( i + != e && Outs [ i + ] . OrigArgIndex == ArgIndex ) { SDValue PartValue = OutVals [ i + ] ; unsigned PartOffset = Outs [ i + ] . PartOffset ; SDValue Address = DAG . getNode ( , DL , PtrVT , SpillSlot , DAG . getIntPtrConstant ( PartOffset , DL ) ) ; MemOpChains . push_back ( DAG . getStore ( Chain , DL , PartValue , Address , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ) ; ++ i ; } ArgValue = SpillSlot ; break ; } default : llvm_unreachable ( ) ; } if ( Flags . isByVal ( ) ) ArgValue = ByValArgs [ j ++ ] ; if ( VA . isRegLoc ( ) ) { RegsToPass . push_back ( std :: make_pair ( VA . getLocReg ( ) , ArgValue ) ) ; } else { assert ( VA . isMemLoc ( ) && ) ; if ( ! StackPtr . getNode ( ) ) StackPtr = DAG . getCopyFromReg ( Chain , DL , , PtrVT ) ; SDValue Address = DAG . getNode ( , DL , PtrVT , StackPtr , DAG . getIntPtrConstant ( VA . getLocMemOffset ( ) , DL ) ) ; MemOpChains . push_back ( DAG . getStore ( Chain , DL , ArgValue , Address , MachinePointerInfo ( ) ) ) ; } } if ( ! MemOpChains . empty ( ) ) Chain = DAG . getNode ( , DL , , MemOpChains ) ; SDValue Glue ; for ( auto & Reg : RegsToPass ) { Chain = DAG . getCopyToReg ( Chain , DL , Reg . first , Reg . second , Glue ) ;" LLVM,RISCV,2405,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; unsigned XLenInBytes = Subtarget . getXLen ( ) / ; std :: vector < SDValue > OutChains ; SmallVector < CCValAssign , > ArgLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , ArgLocs , * DAG . getContext ( ) ) ; analyzeInputArgs ( MF , CCInfo , Ins , false ) ; for ( unsigned i = , e = ArgLocs . size ( ) ; i != e ; ++ i ) { CCValAssign & VA = ArgLocs [ i ] ; assert ( VA . getLocVT ( ) == XLenVT && ) ; SDValue ArgValue ; if ( VA . isRegLoc ( ) ) ArgValue = unpackFromRegLoc ( DAG , Chain , VA , DL ) ; else ArgValue = unpackFromMemLoc ( DAG , Chain , VA , DL ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) { InVals . push_back ( DAG . getLoad ( VA . getValVT ( ) , DL , Chain , ArgValue , MachinePointerInfo ( ) ) ) ; unsigned ArgIndex = Ins [ i ] . OrigArgIndex ; assert ( Ins [ i ] . PartOffset == ) ; while ( i + != e && Ins [ i + ] . OrigArgIndex == ArgIndex ) { CCValAssign & PartVA = ArgLocs [ i + ] ; unsigned PartOffset = Ins [ i + ] . PartOffset ; SDValue Address = DAG . getNode ( , DL , PtrVT , ArgValue , DAG . getIntPtrConstant ( PartOffset , DL ) ) ; InVals . push_back ( DAG . getLoad ( PartVA . getValVT ( ) , DL , Chain , Address , MachinePointerInfo ( ) ) ) ; ++ i ; } continue ; } InVals . push_back ( ArgValue ) ; } if ( IsVarArg ) { ArrayRef < MCPhysReg > ArgRegs = makeArrayRef ( ArgGPRs ) ; unsigned Idx = CCInfo . getFirstUnallocated ( ArgRegs ) ; const TargetRegisterClass * RC = & ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; MachineFunctionInfo * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; int VaArgOffset , VarArgsSaveSize ; if ( ArgRegs . size ( ) == Idx ) { VaArgOffset = CCInfo . getNextStackOffset ( ) ; VarArgsSaveSize = ; } else { VarArgsSaveSize = XLenInBytes * ( ArgRegs . size ( ) - Idx ) ; VaArgOffset = - VarArgsSaveSize ; } int FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; RVFI -> setVarArgsFrameIndex ( FI ) ; if ( Idx % ) { FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset - ( int ) XLenInBytes , true ) ;" LLVM,RISCV,2406,"Predict the next statement of this code snippet: CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; assert ( VA . getLocInfo ( ) == CCValAssign :: Full && ) ; Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Flag ) ; Flag = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ;" LLVM,RISCV,2407,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerReturn ( SDValue Chain , CallingConv :: ID CallConv , bool IsVarArg , const SmallVectorImpl < > & Outs , const SmallVectorImpl < SDValue > & OutVals , const SDLoc & DL , SelectionDAG & DAG ) const { SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , DAG . getMachineFunction ( ) , RVLocs , * DAG . getContext ( ) ) ; analyzeOutputArgs ( DAG . getMachineFunction ( ) , CCInfo , Outs , true , nullptr ) ; SDValue Flag ; SmallVector < SDValue , > RetOps ( , Chain ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ;" LLVM,RISCV,2408,"Predict the next statement of this code snippet: setOperationAction ( , , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; if ( ! Subtarget . hasStdExtM ( ) ) { setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setBooleanContents ( ZeroOrOneBooleanContent ) ; setMinFunctionAlignment ( ) ; setPrefFunctionAlignment ( ) ;" LLVM,RISCV,2409,"Predict the next statement of this code snippet: MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; SDValue Val ; unsigned VReg = RegInfo . createVirtualRegister ( & ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , VReg ) ; Val = DAG . getCopyFromReg ( Chain , DL , VReg , LocVT ) ; switch ( VA . getLocInfo ( ) ) {" LLVM,RISCV,2410,"Predict the next statement of this code snippet: unsigned NumArgs = Ins . size ( ) ; FunctionType * FType = MF . getFunction ( ) . getFunctionType ( ) ; Optional < unsigned > FirstMaskArgument ; if ( Subtarget . hasVInstructions ( ) ) FirstMaskArgument = preAssignMask ( Ins ) ; for ( unsigned i = ; i != NumArgs ; ++ i ) { MVT ArgVT = Ins [ i ] . VT ;" LLVM,RISCV,2411,"Predict the next statement of this code snippet: if ( Subtarget . hasVInstructions ( ) ) FirstMaskArgument = preAssignMask ( Ins ) ; for ( unsigned i = ; i != NumArgs ; ++ i ) { MVT ArgVT = Ins [ i ] . VT ; ArgFlags = Ins [ i ] . Flags ; Type * ArgTy = nullptr ; if ( IsRet ) ArgTy = FType -> getReturnType ( ) ; else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( Fn ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet , ArgTy , * this , FirstMaskArgument ) ) {" LLVM,RISCV,2412,"Predict the next statement of this code snippet: if ( Fn ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet , OrigTy , * this , FirstMaskArgument ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << ) ; llvm_unreachable ( nullptr ) ;" LLVM,RISCV,2413,"Predict the next statement of this code snippet: Optional < unsigned > FirstMaskArgument ; if ( Subtarget . hasVInstructions ( ) ) FirstMaskArgument = preAssignMask ( Outs ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , VT , VT , CCValAssign :: Full , ArgFlags , CCInfo , true , true , nullptr , * this , FirstMaskArgument ) ) return false ;" LLVM,RISCV,2414,"Predict the next statement of this code snippet: bool TargetLowering :: CanLowerReturn ( CallingConv :: ID CallConv , MachineFunction & MF , bool IsVarArg , const SmallVectorImpl < > & Outs , LLVMContext & Context ) const { SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , RVLocs , Context ) ; Optional < unsigned > FirstMaskArgument ; if ( Subtarget . hasVInstructions ( ) ) FirstMaskArgument = preAssignMask ( Outs ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) {" LLVM,RISCV,2415,"Predict the next statement of this code snippet: LocVT = ; LocInfo = CCValAssign :: BCvt ; } unsigned TwoXLenInBytes = ( * XLen ) / ; if ( ! IsFixed && ArgFlags . getNonZeroOrigAlign ( ) == TwoXLenInBytes && DL . getTypeAllocSize ( OrigTy ) == TwoXLenInBytes ) { unsigned RegIdx = State . getFirstUnallocated ( ArgGPRs ) ; if ( RegIdx != array_lengthof ( ArgGPRs ) && RegIdx % == ) State . AllocateReg ( ArgGPRs ) ; } SmallVectorImpl < CCValAssign > & PendingLocs = State . getPendingLocs ( ) ; SmallVectorImpl < > & PendingArgFlags = State . getPendingArgFlags ( ) ; assert ( PendingLocs . size ( ) == PendingArgFlags . size ( ) && ) ; if ( UseGPRForF64 && XLen == && ValVT == ) { assert ( ! ArgFlags . isSplit ( ) && PendingLocs . empty ( ) && ) ; Register Reg = State . AllocateReg ( ArgGPRs ) ; LocVT = ; if ( ! Reg ) { unsigned StackOffset = State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ; } if ( ! State . AllocateReg ( ArgGPRs ) ) State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ValVT . isFixedLengthVector ( ) ) LocVT = TLI . getContainerForFixedLengthVector ( LocVT ) ; if ( ValVT . isScalarInteger ( ) && ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ValVT . isScalarInteger ( ) && ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; }" LLVM,RISCV,2416,"Predict the next statement of this code snippet: unsigned TargetLowering :: getNumRegistersForCallingConv ( LLVMContext & Context , CallingConv :: ID CC , EVT VT ) const {" LLVM,RISCV,2417,"Predict the next statement of this code snippet: if ( VT == && Subtarget . hasStdExtF ( ) && ! Subtarget . hasStdExtZfhmin ( ) ) return ; return TargetLowering :: getRegisterTypeForCallingConv ( Context , CC , VT ) ;" LLVM,RISCV,2418,"Predict the next statement of this code snippet: if ( VT == && Subtarget . hasStdExtF ( ) && ! Subtarget . hasStdExtZfhmin ( ) ) return ; return TargetLowering :: getRegisterTypeForCallingConv ( Context , CC , VT ) ;" LLVM,RISCV,2419,"Predict the next statement of this code snippet: if ( Subtarget . hasVInstructions ( ) && ( VT . isScalableVector ( ) || Subtarget . useRVVForFixedLengthVectors ( ) ) ) return EVT :: getVectorVT ( Context , , VT . getVectorElementCount ( ) ) ;" LLVM,RISCV,2420,"Predict the next statement of this code snippet: return Subtarget . hasStdExtZbb ( ) && ! isa < ConstantSDNode > ( Y ) ;" LLVM,RISCV,2421,"Predict the next statement of this code snippet: if ( VT == && ! Subtarget . hasStdExtF ( ) ) return false ;" LLVM,RISCV,2422,"Predict the next statement of this code snippet: bool TargetLowering :: isLegalElementTypeForRVV ( Type * ScalarTy ) const { if ( ScalarTy -> isPointerTy ( ) ) return true ; if ( ScalarTy -> isIntegerTy ( ) || ScalarTy -> isIntegerTy ( ) || ScalarTy -> isIntegerTy ( ) ) return true ; if ( ScalarTy -> isIntegerTy ( ) ) return Subtarget . hasVInstructionsI64 ( ) ; if ( ScalarTy -> isHalfTy ( ) ) return Subtarget . hasVInstructionsF16 ( ) ; if ( ScalarTy -> isFloatTy ( ) ) return Subtarget . hasVInstructionsF32 ( ) ;" LLVM,RISCV,2423,"Predict the next statement of this code snippet: if ( ScalarTy -> isPointerTy ( ) ) return true ; if ( ScalarTy -> isIntegerTy ( ) || ScalarTy -> isIntegerTy ( ) || ScalarTy -> isIntegerTy ( ) ) return true ; if ( ScalarTy -> isIntegerTy ( ) ) return Subtarget . hasVInstructionsI64 ( ) ; if ( ScalarTy -> isHalfTy ( ) ) return Subtarget . hasVInstructionsF16 ( ) ; if ( ScalarTy -> isFloatTy ( ) ) return Subtarget . hasVInstructionsF32 ( ) ; if ( ScalarTy -> isDoubleTy ( ) ) return Subtarget . hasVInstructionsF64 ( ) ; return false ;" LLVM,RISCV,2424,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; unsigned EltSize = VT . getScalarSizeInBits ( ) ; SDValue Src = Op . getOperand ( ) ; SDLoc DL ( Op ) ; MVT FloatEltVT = EltSize == ? : ; MVT FloatVT = ( FloatEltVT , VT . getVectorElementCount ( ) ) ; assert ( DAG . getTargetLoweringInfo ( ) . isTypeLegal ( FloatVT ) && ) ; if ( Op . getOpcode ( ) == ) { SDValue Neg = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , VT ) , Src ) ; Src = DAG . getNode ( , DL , VT , Src , Neg ) ; } SDValue FloatVal = DAG . getNode ( , DL , FloatVT , Src ) ; EVT IntVT = FloatVT . changeVectorElementTypeToInteger ( ) ; SDValue Bitcast = DAG . getBitcast ( IntVT , FloatVal ) ; unsigned ShiftAmt = FloatEltVT == ? : ; SDValue Shift = DAG . getNode ( , DL , IntVT , Bitcast , DAG . getConstant ( ShiftAmt , DL , IntVT ) ) ; SDValue Trunc = DAG . getNode ( , DL , VT , Shift ) ; unsigned ExponentBias = FloatEltVT == ? : ; if ( Op . getOpcode ( ) == ) return DAG . getNode ( , DL , VT , Trunc , DAG . getConstant ( ExponentBias , DL , VT ) ) ; unsigned Adjust = ExponentBias + ( EltSize - ) ; return DAG . getNode ( , DL , VT , DAG . getConstant ( Adjust , DL , VT ) , Trunc ) ;" LLVM,RISCV,2425,"Predict the next statement of this code snippet: MVT FloatVT = ( FloatEltVT , VT . getVectorElementCount ( ) ) ; assert ( DAG . getTargetLoweringInfo ( ) . isTypeLegal ( FloatVT ) && ) ; if ( Op . getOpcode ( ) == ) { SDValue Neg = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , VT ) , Src ) ; Src = DAG . getNode ( , DL , VT , Src , Neg ) ; } SDValue FloatVal = DAG . getNode ( , DL , FloatVT , Src ) ; EVT IntVT = FloatVT . changeVectorElementTypeToInteger ( ) ; SDValue Bitcast = DAG . getBitcast ( IntVT , FloatVal ) ;" LLVM,RISCV,2426,"Predict the next statement of this code snippet: static const int Table = ( int ( RoundingMode :: NearestTiesToEven ) << * ) | ( int ( RoundingMode :: TowardZero ) << * ) | ( int ( RoundingMode :: TowardNegative ) << * ) | ( int ( RoundingMode :: TowardPositive ) << * ) | ( int ( RoundingMode :: NearestTiesToAway ) << * ) ; SDValue Shift = DAG . getNode ( , DL , XLenVT , RM , DAG . getConstant ( , DL , XLenVT ) ) ;" LLVM,RISCV,2427,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; SDValue Chain = Op -> getOperand ( ) ; SDValue SysRegNo = DAG . getTargetConstant ( ( ) -> Encoding , DL , XLenVT ) ; SDVTList VTs = DAG . getVTList ( XLenVT , ) ; SDValue RM = DAG . getNode ( , DL , VTs , Chain , SysRegNo ) ;" LLVM,RISCV,2428,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { Chain , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ; if ( ! IsUnmasked ) Ops . push_back ( PassThru ) ; Ops . push_back ( BasePtr ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; if ( ! IsUnmasked ) Ops . push_back ( DAG . getTargetConstant ( , DL , XLenVT ) ) ;" LLVM,RISCV,2429,"Predict the next statement of this code snippet: SDValue SysRegNo = DAG . getTargetConstant ( ( ) -> Encoding , DL , XLenVT ) ; static const unsigned Table = ( << * int ( RoundingMode :: NearestTiesToEven ) ) | ( << * int ( RoundingMode :: TowardZero ) ) | ( << * int ( RoundingMode :: TowardNegative ) ) | ( << * int ( RoundingMode :: TowardPositive ) ) | ( << * int ( RoundingMode :: NearestTiesToAway ) ) ; SDValue Shift = DAG . getNode ( , DL , XLenVT , RMValue , DAG . getConstant ( , DL , XLenVT ) ) ;" LLVM,RISCV,2430,"Predict the next statement of this code snippet: SDValue RMValue = Op -> getOperand ( ) ; SDValue SysRegNo = DAG . getTargetConstant ( ( ) -> Encoding , DL , XLenVT ) ; static const unsigned Table = ( << * int ( RoundingMode :: NearestTiesToEven ) ) | ( << * int ( RoundingMode :: TowardZero ) ) | ( << * int ( RoundingMode :: TowardNegative ) ) | ( << * int ( RoundingMode :: TowardPositive ) ) | ( << * int ( RoundingMode :: NearestTiesToAway ) ) ; SDValue Shift = DAG . getNode ( , DL , XLenVT , RMValue , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue Shifted = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( Table , DL , XLenVT ) , Shift ) ;" LLVM,RISCV,2431,"Predict the next statement of this code snippet: MVT OpVT = ScalarOp . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( ! OpVT . isScalarInteger ( ) || OpVT == XLenVT ) return SDValue ( ) ; if ( OpVT . bitsLT ( XLenVT ) ) { unsigned ExtOpc = isa < ConstantSDNode > ( ScalarOp ) ? : ; ScalarOp = DAG . getNode ( ExtOpc , DL , XLenVT , ScalarOp ) ; return DAG . getNode ( Op -> getOpcode ( ) , DL , Op -> getVTList ( ) , Operands ) ; } assert ( II -> SplatOperand > && ) ; MVT VT = Op . getOperand ( SplatOp - ) . getSimpleValueType ( ) ;" LLVM,RISCV,2432,"Predict the next statement of this code snippet: if ( ! Op || any_of ( Ops , [ & ] ( Use * U ) { return U -> get ( ) == Op ; } ) ) continue ; if ( ! match ( Op , m_Shuffle ( m_InsertElt ( m_Undef ( ) , m_Value ( ) , m_ZeroInt ( ) ) , m_Undef ( ) , m_ZeroMask ( ) ) ) ) continue ; for ( Use & U : Op -> uses ( ) ) { Instruction * Insn = cast < Instruction > ( U . getUser ( ) ) ; if ( ! IsSinker ( Insn , U . getOperandNo ( ) ) ) return false ; } Ops . push_back ( & Op -> getOperandUse ( ) ) ; Ops . push_back ( & OpIdx . value ( ) ) ;" LLVM,RISCV,2433,"Predict the next statement of this code snippet: if ( ! N0 -> hasOneUse ( ) || N0 -> getOpcode ( ) != ) return SDValue ( ) ; auto * N0C = dyn_cast < ConstantSDNode > ( N0 -> getOperand ( ) ) ; auto * N1C = dyn_cast < ConstantSDNode > ( N -> getOperand ( ) ) ; if ( ! N0C || ! N1C ) return SDValue ( ) ; int64_t C0 = N0C -> getSExtValue ( ) ; int64_t C1 = N1C -> getSExtValue ( ) ; int64_t CA , CB ; if ( C0 == - || C0 == || C0 == || isInt < > ( C1 ) ) return SDValue ( ) ; if ( ( C1 / C0 ) != && isInt < > ( C1 / C0 ) && isInt < > ( C1 % C0 ) && ! isInt < > ( C0 * ( C1 / C0 ) ) ) { CA = C1 / C0 ; CB = C1 % C0 ; } else if ( ( C1 / C0 + ) != && isInt < > ( C1 / C0 + ) && isInt < > ( C1 % C0 - C0 ) && ! isInt < > ( C0 * ( C1 / C0 + ) ) ) { CA = C1 / C0 + ; CB = C1 % C0 - C0 ; } else if ( ( C1 / C0 - ) != && isInt < > ( C1 / C0 - ) && isInt < > ( C1 % C0 + C0 ) && ! isInt < > ( C0 * ( C1 / C0 - ) ) ) { CA = C1 / C0 - ; CB = C1 % C0 + C0 ; } else return SDValue ( ) ;" LLVM,RISCV,2434,"Predict the next statement of this code snippet: if ( ! Subtarget . hasVInstructionsF16 ( ) ) return false ; break ; case : if ( ! Subtarget . hasVInstructionsF32 ( ) ) return false ; break ; case : if ( ! Subtarget . hasVInstructionsF64 ( ) ) return false ; break ; } if ( EltVT . getSizeInBits ( ) > Subtarget . getMaxELENForFixedLengthVectors ( ) ) return false ; unsigned LMul = divideCeil ( VT . getSizeInBits ( ) , MinVLen ) ;" LLVM,RISCV,2435,"Predict the next statement of this code snippet: if ( ! Subtarget . hasVInstructionsI64 ( ) ) return false ; break ; case : if ( ! Subtarget . hasVInstructionsF16 ( ) ) return false ; break ; case : if ( ! Subtarget . hasVInstructionsF32 ( ) ) return false ; break ; case : if ( ! Subtarget . hasVInstructionsF64 ( ) ) return false ; break ; } if ( EltVT . getSizeInBits ( ) > Subtarget . getMaxELENForFixedLengthVectors ( ) ) return false ;" LLVM,RISCV,2436,"Predict the next statement of this code snippet: for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; Register RegLo = VA . getLocReg ( ) ; assert ( RegLo < && ) ; Register RegHi = RegLo + ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ;" LLVM,RISCV,2437,"Predict the next statement of this code snippet: if ( RC == & ) { if ( FirstMaskArgument . hasValue ( ) && ValNo == FirstMaskArgument . getValue ( ) ) return State . AllocateReg ( ) ; return State . AllocateReg ( ArgVRs ) ; } if ( RC == & ) return State . AllocateReg ( ArgVRM2s ) ;" LLVM,RISCV,2438,"Predict the next statement of this code snippet: Optional < unsigned > FirstMaskArgument ; if ( Subtarget . hasStdExtV ( ) ) FirstMaskArgument = preAssignMask ( Ins ) ; for ( unsigned i = ; i != NumArgs ; ++ i ) { MVT ArgVT = Ins [ i ] . VT ; ArgFlags = Ins [ i ] . Flags ; Type * ArgTy = nullptr ; if ( IsRet ) ArgTy = FType -> getReturnType ( ) ; else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ;" LLVM,RISCV,2439,"Predict the next statement of this code snippet: MVT ArgVT = Ins [ i ] . VT ; ArgFlags = Ins [ i ] . Flags ; Type * ArgTy = nullptr ; if ( IsRet ) ArgTy = FType -> getReturnType ( ) ; else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( Fn ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet , ArgTy , * this , FirstMaskArgument ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << '\n' ) ; llvm_unreachable ( nullptr ) ; } }" LLVM,RISCV,2440,"Predict the next statement of this code snippet: MVT ArgVT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; Type * OrigTy = CLI ? CLI -> getArgs ( ) [ Outs [ i ] . OrigArgIndex ] . Ty : nullptr ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( Fn ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet , OrigTy , * this , FirstMaskArgument ) ) {" LLVM,RISCV,2441,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtV ( ) ) FirstMaskArgument = preAssignMask ( Outs ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , VT , VT , CCValAssign :: Full , ArgFlags , CCInfo , true , true , nullptr , * this , FirstMaskArgument ) ) return false ; } return true ;" LLVM,RISCV,2442,"Predict the next statement of this code snippet: CCState CCInfo ( CallConv , IsVarArg , MF , RVLocs , Context ) ; Optional < unsigned > FirstMaskArgument ; if ( Subtarget . hasStdExtV ( ) ) FirstMaskArgument = preAssignMask ( Outs ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ;" LLVM,RISCV,2443,"Predict the next statement of this code snippet: PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } Register Reg ; unsigned StoreSizeBytes = XLen / ; Align StackAlign = Align ( XLen / ) ; if ( ValVT == && ! UseGPRForF16_F32 ) Reg = State . AllocateReg ( ArgFPR16s ) ; else if ( ValVT == && ! UseGPRForF16_F32 ) Reg = State . AllocateReg ( ArgFPR32s ) ; else if ( ValVT == && ! UseGPRForF64 ) Reg = State . AllocateReg ( ArgFPR64s ) ; else if ( ValVT . isVector ( ) ) { Reg = allocateRVVReg ( ValVT , ValNo , FirstMaskArgument , State , TLI ) ; if ( ! Reg ) { if ( IsRet ) return true ; if ( ( Reg = State . AllocateReg ( ArgGPRs ) ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; } else if ( ValVT . isScalableVector ( ) ) { report_fatal_error ( ) ; } else { LocVT = ValVT ; StoreSizeBytes = ValVT . getStoreSize ( ) ; StackAlign = MaybeAlign ( ValVT . getScalarSizeInBits ( ) / ) . valueOrOne ( ) ; } } } else { Reg = State . AllocateReg ( ArgGPRs ) ; } unsigned StackOffset = Reg ? : State . AllocateStack ( StoreSizeBytes , StackAlign ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ; for ( auto & It : PendingLocs ) { if ( Reg ) It . convertToReg ( Reg ) ; else It . convertToMem ( StackOffset ) ; State . addLoc ( It ) ; } PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return false ; } assert ( ( ! UseGPRForF16_F32 || ! UseGPRForF64 || LocVT == XLenVT || ( TLI . getSubtarget ( ) . hasStdExtV ( ) && ValVT . isVector ( ) ) ) && ) ; if ( Reg ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ValVT . isFloatingPoint ( ) ) { LocVT = ValVT ; LocInfo = CCValAssign :: Full ;" LLVM,RISCV,2444,"Predict the next statement of this code snippet: State . addLoc ( CCValAssign :: getMem ( VA1 . getValNo ( ) , VA1 . getValVT ( ) , State . AllocateStack ( XLenInBytes , StackAlign ) , VA1 . getLocVT ( ) , CCValAssign :: Full ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo2 , ValVT2 , State . AllocateStack ( XLenInBytes , Align ( XLenInBytes ) ) , LocVT2 , CCValAssign :: Full ) ) ; return false ; } if ( Register Reg = State . AllocateReg ( ArgGPRs ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo2 , ValVT2 , Reg , LocVT2 , CCValAssign :: Full ) ) ; } else { State . addLoc ( CCValAssign :: getMem ( ValNo2 , ValVT2 , State . AllocateStack ( XLenInBytes , Align ( XLenInBytes ) ) , LocVT2 , CCValAssign :: Full ) ) ;" LLVM,RISCV,2445,"Predict the next statement of this code snippet: static const MCPhysReg GPRList [ ] = { , , , , , , , , , , , , } ; if ( LocVT == || LocVT == ) { if ( unsigned Reg = State . AllocateReg ( GPRList ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR16List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR16List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR32List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR64List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR64List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ;" LLVM,RISCV,2446,"Predict the next statement of this code snippet: static const MCPhysReg GPRList [ ] = { , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( GPRList ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) {" LLVM,RISCV,2447,"Predict the next statement of this code snippet: } } if ( LocVT == ) { static const MCPhysReg FPR32List [ ] = { , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR64List [ ] = { , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR64List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ;" LLVM,RISCV,2448,"Predict the next statement of this code snippet: if ( ! isa < ConstantSDNode > ( N -> getOperand ( ) ) || ! isa < ConstantSDNode > ( Src . getOperand ( ) ) ) return SDValue ( ) ; unsigned ShAmt1 = N -> getConstantOperandVal ( ) ; unsigned ShAmt2 = Src . getConstantOperandVal ( ) ; Src = Src . getOperand ( ) ; unsigned CombinedShAmt ; if ( N -> getOpcode ( ) == || N -> getOpcode ( ) == ) CombinedShAmt = ShAmt1 | ShAmt2 ; else CombinedShAmt = ShAmt1 ^ ShAmt2 ; if ( CombinedShAmt == ) return Src ; SDLoc DL ( N ) ; return DAG . getNode ( N -> getOpcode ( ) , DL , N -> getValueType ( ) , Src , DAG . getConstant ( CombinedShAmt , DL , N -> getOperand ( ) . getValueType ( ) ) ) ;" LLVM,RISCV,2449,"Predict the next statement of this code snippet: if ( Src . getOpcode ( ) != N -> getOpcode ( ) ) return SDValue ( ) ; if ( ! isa < ConstantSDNode > ( N -> getOperand ( ) ) || ! isa < ConstantSDNode > ( Src . getOperand ( ) ) ) return SDValue ( ) ; unsigned ShAmt1 = N -> getConstantOperandVal ( ) ; unsigned ShAmt2 = Src . getConstantOperandVal ( ) ; Src = Src . getOperand ( ) ;" LLVM,RISCV,2450,"Predict the next statement of this code snippet: SDValue VL = N -> getOperand ( ) ; if ( Op0 . getOperand ( ) != Mask || Op0 . getOperand ( ) != VL ) return SDValue ( ) ; MVT VT = N -> getSimpleValueType ( ) ; unsigned NarrowSize = VT . getScalarSizeInBits ( ) / ; MVT NarrowVT = ( ( NarrowSize ) , VT . getVectorElementCount ( ) ) ; SDLoc DL ( N ) ; if ( Op0 . getOpcode ( ) == Op1 . getOpcode ( ) ) { if ( ! Op1 . hasOneUse ( ) ) return SDValue ( ) ; if ( Op1 . getOperand ( ) != Mask || Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; } else if ( Op1 . getOpcode ( ) == ) { if ( Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; unsigned EltBits = VT . getScalarSizeInBits ( ) ; unsigned ScalarBits = Op1 . getValueSizeInBits ( ) ; if ( ScalarBits < EltBits ) return SDValue ( ) ; if ( IsSignExt ) {" LLVM,RISCV,2451,"Predict the next statement of this code snippet: if ( Op0 . getOpcode ( ) == Op1 . getOpcode ( ) ) { if ( ! Op1 . hasOneUse ( ) ) return SDValue ( ) ; if ( Op1 . getOperand ( ) != Mask || Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; } else if ( Op1 . getOpcode ( ) == ) { if ( Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; unsigned EltBits = VT . getScalarSizeInBits ( ) ; unsigned ScalarBits = Op1 . getValueSizeInBits ( ) ; if ( ScalarBits < EltBits ) return SDValue ( ) ; if ( IsSignExt ) { if ( DAG . ComputeNumSignBits ( Op1 ) <= ( ScalarBits - NarrowSize ) ) return SDValue ( ) ; } else { APInt Mask = APInt :: getBitsSetFrom ( ScalarBits , NarrowSize ) ; if ( ! DAG . MaskedValueIsZero ( Op1 , Mask ) ) return SDValue ( ) ; } Op1 = DAG . getNode ( , DL , NarrowVT , Op1 , VL ) ; } else return SDValue ( ) ; Op0 = Op0 . getOperand ( ) ; unsigned ExtOpc = IsSignExt ? : ;" LLVM,RISCV,2452,"Predict the next statement of this code snippet: EVT VT = Op . getValueType ( ) ; if ( VT == Subtarget . getXLenVT ( ) || ( Subtarget . is64Bit ( ) && VT == ) ) { SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; SDValue Op1 = Op . getOperand ( ) ; auto MatchOROfReverse = [ & ] ( SDValue Reverse , SDValue X ) { if ( Reverse . getOpcode ( ) == && Reverse . getOperand ( ) == X && isa < ConstantSDNode > ( Reverse . getOperand ( ) ) && isPowerOf2_32 ( Reverse . getConstantOperandVal ( ) ) ) return DAG . getNode ( , DL , VT , X , Reverse . getOperand ( ) ) ; if ( ( Reverse . getOpcode ( ) == || Reverse . getOpcode ( ) == ) && Reverse . getOperand ( ) == X && isa < ConstantSDNode > ( Reverse . getOperand ( ) ) ) { uint64_t RotAmt = Reverse . getConstantOperandVal ( ) ; if ( RotAmt == ( VT . getSizeInBits ( ) / ) ) return DAG . getNode ( , DL , VT , X , DAG . getConstant ( RotAmt , DL , VT ) ) ; } return SDValue ( ) ; } ; if ( SDValue V = MatchOROfReverse ( Op0 , Op1 ) ) return V ; if ( SDValue V = MatchOROfReverse ( Op1 , Op0 ) ) return V ; if ( Op0 . getOpcode ( ) != && Op1 . getOpcode ( ) == ) std :: swap ( Op0 , Op1 ) ; if ( Op0 . getOpcode ( ) != ) return SDValue ( ) ; SDValue OrOp0 = Op0 . getOperand ( ) ; SDValue OrOp1 = Op0 . getOperand ( ) ; auto LHS = matchGREVIPat ( OrOp0 ) ; if ( ! LHS ) { std :: swap ( OrOp0 , OrOp1 ) ; LHS = matchGREVIPat ( OrOp0 ) ; } auto RHS = matchGREVIPat ( Op1 ) ; if ( LHS && RHS && LHS -> formsPairWith ( * RHS ) && LHS -> Op == OrOp1 ) {" LLVM,RISCV,2453,"Predict the next statement of this code snippet: auto LHS = matchGREVIPat ( Op . getOperand ( ) ) ; auto RHS = matchGREVIPat ( Op . getOperand ( ) ) ; if ( LHS && RHS && LHS -> formsPairWith ( * RHS ) ) { SDLoc DL ( Op ) ;" LLVM,RISCV,2454,"Predict the next statement of this code snippet: if ( ( Slct . getOpcode ( ) != && Slct . getOpcode ( ) != ) || ! Slct . hasOneUse ( ) ) return SDValue ( ) ; auto isZeroOrAllOnes = [ ] ( SDValue N , bool AllOnes ) { return AllOnes ? isAllOnesConstant ( N ) : isNullConstant ( N ) ; } ; bool SwapSelectOps ; unsigned OpOffset = Slct . getOpcode ( ) == ? : ; SDValue TrueVal = Slct . getOperand ( + OpOffset ) ; SDValue FalseVal = Slct . getOperand ( + OpOffset ) ; SDValue NonConstantVal ; if ( isZeroOrAllOnes ( TrueVal , AllOnes ) ) { SwapSelectOps = false ; NonConstantVal = FalseVal ; } else if ( isZeroOrAllOnes ( FalseVal , AllOnes ) ) { SwapSelectOps = true ; NonConstantVal = TrueVal ;" LLVM,RISCV,2455,"Predict the next statement of this code snippet: static SDValue combineSelectAndUseCommutative ( SDNode * N , SelectionDAG & DAG , bool AllOnes ) { SDValue N0 = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ;" LLVM,RISCV,2456,"Predict the next statement of this code snippet: SDValue N0 = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; if ( SDValue Result = combineSelectAndUse ( N , N0 , N1 , DAG , AllOnes ) ) return Result ;" LLVM,RISCV,2457,"Predict the next statement of this code snippet: if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ; if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ; if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ; if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ;" LLVM,RISCV,2458,"Predict the next statement of this code snippet: if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ; if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ; if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ; if ( ShAmt & ) x = ( ( x & ) << ) | ( ( x & ) >> ) ;" LLVM,RISCV,2459,"Predict the next statement of this code snippet: case : { KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: udiv ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleTZ = Known2 . trunc ( ) . countMaxTrailingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleTZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleLZ = Known2 . trunc ( ) . countMaxLeadingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleLZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; } case : case : { if ( auto * C = dyn_cast < ConstantSDNode > ( Op . getOperand ( ) ) ) { Known = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; if ( Opc == ) Known = Known . trunc ( ) ; unsigned ShAmt = C -> getZExtValue ( ) ; computeGREV ( Known . Zero , ShAmt ) ; computeGREV ( Known . One , ShAmt ) ;" LLVM,RISCV,2460,"Predict the next statement of this code snippet: case : { if ( Op . getValueType ( ) == && isa < ConstantSDNode > ( Op . getOperand ( ) ) && ( Op . getConstantOperandVal ( ) & ) == ) { unsigned Tmp = DAG . ComputeNumSignBits ( Op . getOperand ( ) , Depth + ) ; if ( Tmp > ) return ; } break ; } case : if ( Op . getOperand ( ) . getScalarValueSizeInBits ( ) > Subtarget . getXLen ( ) ) return ; return Subtarget . getXLen ( ) - Op . getOperand ( ) . getScalarValueSizeInBits ( ) + ;" LLVM,RISCV,2461,"Predict the next statement of this code snippet: assert ( VT . isFixedLengthVector ( ) && ) ; assert ( V . getValueType ( ) . isScalableVector ( ) && ) ;" LLVM,RISCV,2462,"Predict the next statement of this code snippet: case CCValAssign :: Full : if ( VA . getValVT ( ) . isFixedLengthVector ( ) && VA . getLocVT ( ) . isScalableVector ( ) ) Val = convertFromScalableVector ( VA . getValVT ( ) , Val , DAG , Subtarget ) ; break ; case CCValAssign :: BCvt : if ( VA . getLocVT ( ) . isInteger ( ) && VA . getValVT ( ) == ) Val = DAG . getNode ( , DL , , Val ) ; else if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) Val = DAG . getNode ( , DL , , Val ) ; else Val = DAG . getNode ( , DL , VA . getValVT ( ) , Val ) ; break ;" LLVM,RISCV,2463,"Predict the next statement of this code snippet: return true ;" LLVM,RISCV,2464,"Predict the next statement of this code snippet: bool convertSelectOfConstantsToMath ( EVT VT ) const override { return true ;" LLVM,RISCV,2465,"Predict the next statement of this code snippet: assert ( V . getValueType ( ) . isFixedLengthVector ( ) && ) ; SDLoc DL ( V ) ; SDValue Zero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; return DAG . getNode ( , DL , VT , DAG . getUNDEF ( VT ) , V , Zero ) ;" LLVM,RISCV,2466,"Predict the next statement of this code snippet: assert ( VT . isScalableVector ( ) && ) ; assert ( V . getValueType ( ) . isFixedLengthVector ( ) && ) ;" LLVM,RISCV,2467,"Predict the next statement of this code snippet: static SDValue convertValVTToLocVT ( SelectionDAG & DAG , SDValue Val , const CCValAssign & VA , const SDLoc & DL , const Subtarget & Subtarget ) { EVT LocVT = VA . getLocVT ( ) ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : if ( VA . getValVT ( ) . isFixedLengthVector ( ) && LocVT . isScalableVector ( ) ) Val = convertToScalableVector ( LocVT , Val , DAG , Subtarget ) ; break ; case CCValAssign :: BCvt :" LLVM,RISCV,2468,"Predict the next statement of this code snippet: SDLoc DL ( N ) ; WOpcode = getWOpcode ( N -> getOpcode ( ) ) ; SDValue NewOp0 = DAG . getNode ( ExtOpc , DL , , N -> getOperand ( ) ) ; SDValue NewOp1 = DAG . getNode ( ExtOpc , DL , , N -> getOperand ( ) ) ; SDValue NewRes = DAG . getNode ( WOpcode , DL , , NewOp0 , NewOp1 ) ; return DAG . getNode ( , DL , N -> getValueType ( ) , NewRes ) ;" LLVM,RISCV,2469,"Predict the next statement of this code snippet: SDValue NewOp0 = DAG . getNode ( ExtOpc , DL , , N -> getOperand ( ) ) ; SDValue NewOp1 = DAG . getNode ( ExtOpc , DL , , N -> getOperand ( ) ) ; SDValue NewRes = DAG . getNode ( WOpcode , DL , , NewOp0 , NewOp1 ) ;" LLVM,RISCV,2470,"Predict the next statement of this code snippet: SDValue NewWOp = DAG . getNode ( N -> getOpcode ( ) , DL , , NewOp0 , NewOp1 ) ;" LLVM,RISCV,2471,"Predict the next statement of this code snippet: SDValue NewOp0 = DAG . getNode ( , DL , , N -> getOperand ( ) ) ; SDValue NewOp1 = DAG . getNode ( , DL , , N -> getOperand ( ) ) ; SDValue NewWOp = DAG . getNode ( N -> getOpcode ( ) , DL , , NewOp0 , NewOp1 ) ;" LLVM,RISCV,2472,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtZba ( ) && ! Imm . isSignedIntN ( ) && ( ( Imm - ) . isPowerOf2 ( ) || ( Imm - ) . isPowerOf2 ( ) || ( Imm - ) . isPowerOf2 ( ) ) ) return true ; if ( Subtarget . hasStdExtM ( ) && VT . getSizeInBits ( ) >= Subtarget . getXLen ( ) ) return false ; if ( ! Imm . isSignedIntN ( ) && Imm . countTrailingZeros ( ) < ) { APInt ImmS = Imm . ashr ( Imm . countTrailingZeros ( ) ) ; if ( ( ImmS + ) . isPowerOf2 ( ) || ( ImmS - ) . isPowerOf2 ( ) || ( - ImmS ) . isPowerOf2 ( ) ) return true ; } }" LLVM,RISCV,2473,"Predict the next statement of this code snippet: if ( auto * ConstNode = dyn_cast < ConstantSDNode > ( C . getNode ( ) ) ) { const APInt & Imm = ConstNode -> getAPIntValue ( ) ; if ( ( Imm + ) . isPowerOf2 ( ) || ( Imm - ) . isPowerOf2 ( ) || ( - Imm ) . isPowerOf2 ( ) || ( - - Imm ) . isPowerOf2 ( ) ) return true ; if ( Subtarget . hasStdExtZba ( ) && ! Imm . isSignedIntN ( ) && ( ( Imm - ) . isPowerOf2 ( ) || ( Imm - ) . isPowerOf2 ( ) || ( Imm - ) . isPowerOf2 ( ) ) ) return true ; if ( Subtarget . hasStdExtM ( ) && VT . getSizeInBits ( ) >= Subtarget . getXLen ( ) ) return false ; if ( ! Imm . isSignedIntN ( ) && Imm . countTrailingZeros ( ) < ) { APInt ImmS = Imm . ashr ( Imm . countTrailingZeros ( ) ) ; if ( ( ImmS + ) . isPowerOf2 ( ) || ( ImmS - ) . isPowerOf2 ( ) || ( - ImmS ) . isPowerOf2 ( ) ) return true ; } } } return false ;" LLVM,RISCV,2474,"Predict the next statement of this code snippet: unsigned SubRegClassID = getRegClassIDForVecVT ( SubVecVT ) ; unsigned SubRegIdx = ; for ( const unsigned RCID : { , , } ) if ( VecRegClassID > RCID && SubRegClassID <= RCID ) { VecVT = VecVT . getHalfNumVectorElementsVT ( ) ;" LLVM,RISCV,2475,"Predict the next statement of this code snippet: std :: pair < unsigned , unsigned > TargetLowering :: decomposeSubvectorInsertExtractToSubRegs ( MVT VecVT , MVT SubVecVT , unsigned InsertExtractIdx , const RegisterInfo * TRI ) { static_assert ( ( > && > && > ) , ) ;" LLVM,RISCV,2476,"Predict the next statement of this code snippet: Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * DstRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( MF ) ; MachinePointerInfo MPI = MachinePointerInfo :: getFixedStack ( MF , FI ) ; MachineMemOperand * MMOLo = MF . getMachineMemOperand ( MPI , MachineMemOperand :: MOStore , , Align ( ) ) ; MachineMemOperand * MMOHi = MF . getMachineMemOperand ( MPI . getWithOffset ( ) , MachineMemOperand :: MOStore , , Align ( ) ) ;" LLVM,RISCV,2477,"Predict the next statement of this code snippet: if ( isa < LoadInst > ( Inst ) && Ord == AtomicOrdering :: SequentiallyConsistent ) return Builder . CreateFence ( Ord ) ; if ( isa < StoreInst > ( Inst ) && isReleaseOrStronger ( Ord ) ) return Builder . CreateFence ( AtomicOrdering :: Release ) ; return nullptr ;" LLVM,RISCV,2478,"Predict the next statement of this code snippet: Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * MaskedCmpXchg = ( CI -> getModule ( ) , CmpXchgIntrID , Tys ) ; Value * Result = Builder . CreateCall ( MaskedCmpXchg , { AlignedAddr , CmpVal , NewVal , Mask , Ordering } ) ;" LLVM,RISCV,2479,"Predict the next statement of this code snippet: Value * Ordering = Builder . getIntN ( XLen , static_cast < uint64_t > ( Ord ) ) ; CmpXchgIntrID = ; if ( XLen == ) { CmpVal = Builder . CreateSExt ( CmpVal , Builder . getInt64Ty ( ) ) ; NewVal = Builder . CreateSExt ( NewVal , Builder . getInt64Ty ( ) ) ; Mask = Builder . CreateSExt ( Mask , Builder . getInt64Ty ( ) ) ; CmpXchgIntrID = ; } Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * MaskedCmpXchg = ( CI -> getModule ( ) , CmpXchgIntrID , Tys ) ;" LLVM,RISCV,2480,"Predict the next statement of this code snippet: Register HiReg = MI . getOperand ( ) . getReg ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; const TargetInstrInfo * TII = MF . getSubtarget ( ) . getInstrInfo ( ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) , HiReg ) . addImm ( ( ) -> Encoding ) . addReg ( ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) , LoReg ) . addImm ( ( ) -> Encoding ) . addReg ( ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) , ReadAgainReg ) . addImm ( ( ) -> Encoding ) . addReg ( ) ; BuildMI ( LoopMBB , DL , TII -> get ( ) ) . addReg ( HiReg ) . addReg ( ReadAgainReg ) . addMBB ( LoopMBB ) ; LoopMBB -> addSuccessor ( LoopMBB ) ; LoopMBB -> addSuccessor ( DoneMBB ) ; MI . eraseFromParent ( ) ; return DoneMBB ;" LLVM,RISCV,2481,"Predict the next statement of this code snippet: const BasicBlock * LLVM_BB = BB -> getBasicBlock ( ) ; MachineFunction :: iterator It = ++ BB -> getIterator ( ) ; MachineBasicBlock * LoopMBB = MF . CreateMachineBasicBlock ( LLVM_BB ) ; MF . insert ( It , LoopMBB ) ; MachineBasicBlock * DoneMBB = MF . CreateMachineBasicBlock ( LLVM_BB ) ; MF . insert ( It , DoneMBB ) ; DoneMBB -> splice ( DoneMBB -> begin ( ) , BB , std :: next ( MachineBasicBlock :: iterator ( MI ) ) , BB -> end ( ) ) ; DoneMBB -> transferSuccessorsAndUpdatePHIs ( BB ) ; BB -> addSuccessor ( LoopMBB ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; Register ReadAgainReg = RegInfo . createVirtualRegister ( & ) ;" LLVM,RISCV,2482,"Predict the next statement of this code snippet: SequenceMBBI != E ; ++ SequenceMBBI ) { if ( SequenceMBBI -> isDebugInstr ( ) ) continue ; else if ( isSelectPseudo ( * SequenceMBBI ) ) { if ( SequenceMBBI -> getOperand ( ) . getReg ( ) != LHS || SequenceMBBI -> getOperand ( ) . getReg ( ) != RHS || SequenceMBBI -> getOperand ( ) . getImm ( ) != CC || SelectDests . count ( SequenceMBBI -> getOperand ( ) . getReg ( ) ) || SelectDests . count ( SequenceMBBI -> getOperand ( ) . getReg ( ) ) ) break ; LastSelectPseudo = & * SequenceMBBI ; SequenceMBBI -> collectDebugValues ( SelectDebugValues ) ; SelectDests . insert ( SequenceMBBI -> getOperand ( ) . getReg ( ) ) ; } else { if ( SequenceMBBI -> hasUnmodeledSideEffects ( ) || SequenceMBBI -> mayLoadOrStore ( ) ) break ; if ( llvm :: any_of ( SequenceMBBI -> operands ( ) , [ & ] ( MachineOperand & MO ) { return MO . isReg ( ) && MO . isUse ( ) && SelectDests . count ( MO . getReg ( ) ) ; } ) ) break ; } } const InstrInfo & TII = * Subtarget . getInstrInfo ( ) ; const BasicBlock * LLVM_BB = BB -> getBasicBlock ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; MachineFunction :: iterator I = ++ BB -> getIterator ( ) ; MachineBasicBlock * HeadMBB = BB ; MachineFunction * F = BB -> getParent ( ) ; MachineBasicBlock * TailMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; MachineBasicBlock * IfFalseMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; F -> insert ( I , IfFalseMBB ) ; F -> insert ( I , TailMBB ) ; for ( MachineInstr * DebugInstr : SelectDebugValues ) { TailMBB -> push_back ( DebugInstr -> removeFromParent ( ) ) ; } TailMBB -> splice ( TailMBB -> end ( ) , HeadMBB , std :: next ( LastSelectPseudo -> getIterator ( ) ) , HeadMBB -> end ( ) ) ; TailMBB -> transferSuccessorsAndUpdatePHIs ( HeadMBB ) ; HeadMBB -> addSuccessor ( IfFalseMBB ) ; HeadMBB -> addSuccessor ( TailMBB ) ; BuildMI ( HeadMBB , DL , TII . getBrCond ( CC ) ) . addReg ( LHS ) . addReg ( RHS ) . addMBB ( TailMBB ) ; IfFalseMBB -> addSuccessor ( TailMBB ) ; auto SelectMBBI = MI . getIterator ( ) ; auto SelectEnd = std :: next ( LastSelectPseudo -> getIterator ( ) ) ; auto InsertionPoint = TailMBB -> begin ( ) ; while ( SelectMBBI != SelectEnd ) { auto Next = std :: next ( SelectMBBI ) ;" LLVM,RISCV,2483,"Predict the next statement of this code snippet: MachinePointerInfo MPI = MachinePointerInfo :: getFixedStack ( MF , FI ) ; MachineMemOperand * MMOLo = MF . getMachineMemOperand ( MPI , MachineMemOperand :: MOLoad , , Align ( ) ) ; MachineMemOperand * MMOHi = MF . getMachineMemOperand ( MPI . getWithOffset ( ) , MachineMemOperand :: MOLoad , , Align ( ) ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , LoReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMOLo ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , HiReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMOHi ) ; MI . eraseFromParent ( ) ;" LLVM,RISCV,2484,"Predict the next statement of this code snippet: const TargetInstrInfo & TII = * MF . getSubtarget ( ) . getInstrInfo ( ) ; const TargetRegisterInfo * RI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; Register SrcReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * SrcRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( MF ) ;" LLVM,RISCV,2485,"Predict the next statement of this code snippet: if ( isa < LoadInst > ( Inst ) && isAcquireOrStronger ( Ord ) ) return Builder . CreateFence ( AtomicOrdering :: Acquire ) ; return nullptr ;" LLVM,RISCV,2486,"Predict the next statement of this code snippet: Instruction * TargetLowering :: emitTrailingFence ( IRBuilderBase & Builder , Instruction * Inst , AtomicOrdering Ord ) const {" LLVM,RISCV,2487,"Predict the next statement of this code snippet: SDValue L = DAG . getLoad ( NewVT , DL , Load -> getChain ( ) , Load -> getBasePtr ( ) , Load -> getPointerInfo ( ) , Load -> getOriginalAlign ( ) , Load -> getMemOperand ( ) -> getFlags ( ) ) ; return DAG . getMergeValues ( { DAG . getBitcast ( VT , L ) , L . getValue ( ) } , DL ) ;" LLVM,RISCV,2488,"Predict the next statement of this code snippet: MVT NewVT = ( , VT . getVectorElementCount ( ) * ( EltSizeBits / ) ) ; assert ( NewVT . isValid ( ) && ) ; SDValue L = DAG . getLoad ( NewVT , DL , Load -> getChain ( ) , Load -> getBasePtr ( ) , Load -> getPointerInfo ( ) , Load -> getOriginalAlign ( ) , Load -> getMemOperand ( ) -> getFlags ( ) ) ;" LLVM,RISCV,2489,"Predict the next statement of this code snippet: assert ( Store && Store -> getValue ( ) . getValueType ( ) . isVector ( ) && ) ; if ( allowsMemoryAccessForAlignment ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , Store -> getMemoryVT ( ) , * Store -> getMemOperand ( ) ) ) return SDValue ( ) ; SDLoc DL ( Op ) ; SDValue StoredVal = Store -> getValue ( ) ; MVT VT = StoredVal . getSimpleValueType ( ) ; unsigned EltSizeBits = VT . getScalarSizeInBits ( ) ; assert ( ( EltSizeBits == || EltSizeBits == || EltSizeBits == ) && ) ; MVT NewVT = ( , VT . getVectorElementCount ( ) * ( EltSizeBits / ) ) ; assert ( NewVT . isValid ( ) && ) ; StoredVal = DAG . getBitcast ( NewVT , StoredVal ) ;" LLVM,RISCV,2490,"Predict the next statement of this code snippet: SDValue Addr = getTargetNode ( N , DL , Ty , DAG , ) ; if ( IsLocal ) return SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; } switch ( getTargetMachine ( ) . getCodeModel ( ) ) { default : report_fatal_error ( ) ; case CodeModel :: Small : { SDValue AddrHi = getTargetNode ( N , DL , Ty , DAG , ) ; SDValue AddrLo = getTargetNode ( N , DL , Ty , DAG , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , AddrLo ) , ) ; } case CodeModel :: Medium : { SDValue Addr = getTargetNode ( N , DL , Ty , DAG , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ;" LLVM,RISCV,2491,"Predict the next statement of this code snippet: case 'I' : case 'J' : case 'K' : return C_Immediate ; case 'A' : return C_Memory ; case 'S' : return C_Other ; } } else { if ( Constraint == || Constraint == ) return C_RegisterClass ; } return TargetLowering :: getConstraintType ( Constraint ) ;" LLVM,RISCV,2492,"Predict the next statement of this code snippet: assert ( VecVT . isScalableVector ( ) && ) ; return getDefaultVLOps ( VecVT , VecVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2493,"Predict the next statement of this code snippet: static std :: pair < SDValue , SDValue > getDefaultScalableVLOps ( MVT VecVT , SDLoc DL , SelectionDAG & DAG , const Subtarget & Subtarget ) { assert ( VecVT . isScalableVector ( ) && ) ; return getDefaultVLOps ( VecVT , VecVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2494,"Predict the next statement of this code snippet: assert ( ContainerVT . isScalableVector ( ) && ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ;" LLVM,RISCV,2495,"Predict the next statement of this code snippet: Entry . Ty = CallTy ; Args . push_back ( Entry ) ; TargetLowering :: CallLoweringInfo CLI ( DAG ) ;" LLVM,RISCV,2496,"Predict the next statement of this code snippet: const GlobalValue * GV = N -> getGlobal ( ) ; SDValue Addr = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue Load = SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; ArgListTy Args ; ArgListEntry Entry ; Entry . Node = Load ; Entry . Ty = CallTy ; Args . push_back ( Entry ) ;" LLVM,RISCV,2497,"Predict the next statement of this code snippet: Register TargetLowering :: getExceptionPointerRegister ( const Constant * PersonalityFn ) const {" LLVM,RISCV,2498,"Predict the next statement of this code snippet: Register TargetLowering :: getExceptionPointerRegister ( const Constant * PersonalityFn ) const { return ;" LLVM,RISCV,2499,"Predict the next statement of this code snippet: Register TargetLowering :: getExceptionSelectorRegister ( const Constant * PersonalityFn ) const {" LLVM,RISCV,2500,"Predict the next statement of this code snippet: getExtendForAtomicCmpSwapArg ( ) const override { return ;" LLVM,RISCV,2501,"Predict the next statement of this code snippet: getExtendForAtomicOps ( ) const override {" LLVM,RISCV,2502,"Predict the next statement of this code snippet: getExtendForAtomicOps ( ) const override {" LLVM,RISCV,2503,"Predict the next statement of this code snippet: if ( ConstraintCode . size ( ) == ) { switch ( ConstraintCode [ ] ) {" LLVM,RISCV,2504,"Predict the next statement of this code snippet: unsigned KnownSize = VT . getSizeInBits ( ) . getKnownMinValue ( ) ; if ( VT . getVectorElementType ( ) == ) KnownSize *= ; switch ( KnownSize ) { default : llvm_unreachable ( ) ; case : return :: LMUL_F8 ; case : return :: LMUL_F4 ; case : return :: LMUL_F2 ; case : return :: LMUL_1 ; case : return :: LMUL_2 ; case : return :: LMUL_4 ; case :" LLVM,RISCV,2505,"Predict the next statement of this code snippet: assert ( VT . getVectorElementType ( ) . getSizeInBits ( ) <= && ) ;" LLVM,RISCV,2506,"Predict the next statement of this code snippet: unsigned TargetLowering :: getNumRegistersForCallingConv ( LLVMContext & Context , CallingConv :: ID CC , EVT VT ) const {" LLVM,RISCV,2507,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case :: LMUL_F8 : case :: LMUL_F4 : case :: LMUL_F2 : case :: LMUL_1 : return ; case :: LMUL_2 : return ; case :: LMUL_4 : return ; case :: LMUL_8 : return ;" LLVM,RISCV,2508,"Predict the next statement of this code snippet: if ( VT . getVectorElementType ( ) == ) return ; return getRegClassIDForLMUL ( getLMUL ( VT ) ) ;" LLVM,RISCV,2509,"Predict the next statement of this code snippet: if ( VT . getVectorElementType ( ) == ) return ;" LLVM,RISCV,2510,"Predict the next statement of this code snippet: if ( Reg == ) Reg = MatchRegisterName ( RegName ) ; if ( Reg == ) report_fatal_error ( Twine ( + StringRef ( RegName ) + ) ) ;" LLVM,RISCV,2511,"Predict the next statement of this code snippet: if ( ! ReservedRegs . test ( Reg ) && ! Subtarget . isRegisterReservedByUser ( Reg ) ) report_fatal_error ( Twine ( + StringRef ( RegName ) + ) ) ; return Reg ;" LLVM,RISCV,2512,"Predict the next statement of this code snippet: MVT TargetLowering :: getRegisterTypeForCallingConv ( LLVMContext & Context , CallingConv :: ID CC , EVT VT ) const {" LLVM,RISCV,2513,"Predict the next statement of this code snippet: MVT TargetLowering :: getRegisterTypeForCallingConv ( LLVMContext & Context , CallingConv :: ID CC , EVT VT ) const { if ( VT == && Subtarget . hasStdExtF ( ) && ! Subtarget . hasStdExtZfh ( ) ) return ;" LLVM,RISCV,2514,"Predict the next statement of this code snippet: static SDValue getRVVFPExtendOrRound ( SDValue Op , MVT VT , MVT ContainerVT , SDLoc DL , SelectionDAG & DAG , const Subtarget & Subtarget ) { if ( VT . isScalableVector ( ) ) return DAG . getFPExtendOrRound ( Op , DL , VT ) ; assert ( VT . isFixedLengthVector ( ) && ) ; SDValue Mask , VL ;" LLVM,RISCV,2515,"Predict the next statement of this code snippet: switch ( ISDOpcode ) { default : llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,2516,"Predict the next statement of this code snippet: EVT TargetLowering :: getSetCCResultType ( const DataLayout & DL , LLVMContext & Context , EVT VT ) const { if ( ! VT . isVector ( ) ) return getPointerTy ( DL ) ;" LLVM,RISCV,2517,"Predict the next statement of this code snippet: } SDValue AddrHi = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrAdd = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrLo = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ;" LLVM,RISCV,2518,"Predict the next statement of this code snippet: SDLoc DL ( N ) ; EVT Ty = getPointerTy ( DAG . getDataLayout ( ) ) ; const GlobalValue * GV = N -> getGlobal ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( UseGOT ) { SDValue Addr = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue Load = SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; SDValue TPReg = DAG . getRegister ( , XLenVT ) ; return DAG . getNode ( , DL , Ty , Load , TPReg ) ; } SDValue AddrHi = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrAdd = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrLo = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ; SDValue TPReg = DAG . getRegister ( , XLenVT ) ;" LLVM,RISCV,2519,"Predict the next statement of this code snippet: unsigned TargetLowering :: getSubregIndexByMVT ( MVT VT , unsigned Index ) { LMUL = getLMUL ( VT ) ; if ( LMUL == :: LMUL_F8 || LMUL == :: LMUL_F4 || LMUL == :: LMUL_F2 || LMUL == :: LMUL_1 ) { static_assert ( == + , ) ;" LLVM,RISCV,2520,"Predict the next statement of this code snippet: static SDValue getTargetNode ( JumpTableSDNode * N , SDLoc DL , EVT Ty , SelectionDAG & DAG , unsigned Flags ) {" LLVM,RISCV,2521,"Predict the next statement of this code snippet: Info . memVT = getValueType ( DL , I . getType ( ) -> getScalarType ( ) ) ; Info . align = Align ( DL . getTypeSizeInBits ( I . getType ( ) -> getScalarType ( ) ) / ) ; Info . size = MemoryLocation :: UnknownSize ; Info . flags |= MachineMemOperand :: MOLoad ; return true ; case : Info . opc = ; Info . ptrVal = I . getArgOperand ( ) ; Info . memVT = getValueType ( DL , I . getArgOperand ( ) -> getType ( ) -> getScalarType ( ) ) ; Info . align = Align ( DL . getTypeSizeInBits ( I . getArgOperand ( ) -> getType ( ) -> getScalarType ( ) ) / ) ; Info . size = MemoryLocation :: UnknownSize ; Info . flags |= MachineMemOperand :: MOStore ;" LLVM,RISCV,2522,"Predict the next statement of this code snippet: return Subtarget . getXLenVT ( ) ;" LLVM,RISCV,2523,"Predict the next statement of this code snippet: bool TargetLowering :: hasBitPreservingFPLogic ( EVT VT ) const { return ( VT == && Subtarget . hasStdExtZfh ( ) ) || ( VT == && Subtarget . hasStdExtF ( ) ) || ( VT == && Subtarget . hasStdExtD ( ) ) ;" LLVM,RISCV,2524,"Predict the next statement of this code snippet: bool TargetLowering :: isCheapToSpeculateCtlz ( ) const {" LLVM,RISCV,2525,"Predict the next statement of this code snippet: return Subtarget . hasStdExtZbb ( ) ;" LLVM,RISCV,2526,"Predict the next statement of this code snippet: bool TargetLowering :: isCheapToSpeculateCttz ( ) const {" LLVM,RISCV,2527,"Predict the next statement of this code snippet: APInt ShiftedC1Int = C1Int << C2 -> getAPIntValue ( ) ; if ( ShiftedC1Int . getMinSignedBits ( ) <= && isLegalAddImmediate ( ShiftedC1Int . getSExtValue ( ) ) ) return true ; if ( C1Int . getMinSignedBits ( ) <= && isLegalAddImmediate ( C1Int . getSExtValue ( ) ) ) return false ; int C1Cost = ( C1Int , Ty . getSizeInBits ( ) , Subtarget . getFeatureBits ( ) , true ) ; int ShiftedC1Cost = ( ShiftedC1Int , Ty . getSizeInBits ( ) , Subtarget . getFeatureBits ( ) , true ) ; if ( C1Cost < ShiftedC1Cost ) return false ; } } return true ;" LLVM,RISCV,2528,"Predict the next statement of this code snippet: auto * C2 = dyn_cast < ConstantSDNode > ( N -> getOperand ( ) ) ; if ( C1 && C2 ) { const APInt & C1Int = C1 -> getAPIntValue ( ) ; APInt ShiftedC1Int = C1Int << C2 -> getAPIntValue ( ) ; if ( ShiftedC1Int . getMinSignedBits ( ) <= && isLegalAddImmediate ( ShiftedC1Int . getSExtValue ( ) ) ) return true ;" LLVM,RISCV,2529,"Predict the next statement of this code snippet: auto IsCalleeStructRet = Outs . empty ( ) ? false : Outs [ ] . Flags . isSRet ( ) ; if ( IsCallerStructRet || IsCalleeStructRet ) return false ; if ( GlobalAddressSDNode * G = dyn_cast < GlobalAddressSDNode > ( Callee ) ) { const GlobalValue * GV = G -> getGlobal ( ) ; if ( GV -> hasExternalWeakLinkage ( ) ) return false ; } const RegisterInfo * TRI = Subtarget . getRegisterInfo ( ) ; const uint32_t * CallerPreserved = TRI -> getCallPreservedMask ( MF , CallerCC ) ; if ( CalleeCC != CallerCC ) { const uint32_t * CalleePreserved = TRI -> getCallPreservedMask ( MF , CalleeCC ) ; if ( ! TRI -> regmaskSubsetEqual ( CallerPreserved , CalleePreserved ) ) return false ; }" LLVM,RISCV,2530,"Predict the next statement of this code snippet: auto IsCallerStructRet = Caller . hasStructRetAttr ( ) ; auto IsCalleeStructRet = Outs . empty ( ) ? false : Outs [ ] . Flags . isSRet ( ) ; if ( IsCallerStructRet || IsCalleeStructRet ) return false ; if ( GlobalAddressSDNode * G = dyn_cast < GlobalAddressSDNode > ( Callee ) ) { const GlobalValue * GV = G -> getGlobal ( ) ; if ( GV -> hasExternalWeakLinkage ( ) ) return false ; } const RegisterInfo * TRI = Subtarget . getRegisterInfo ( ) ; const uint32_t * CallerPreserved = TRI -> getCallPreservedMask ( MF , CallerCC ) ; if ( CalleeCC != CallerCC ) { const uint32_t * CalleePreserved = TRI -> getCallPreservedMask ( MF , CalleeCC ) ;" LLVM,RISCV,2531,"Predict the next statement of this code snippet: case : return Subtarget . hasStdExtZfh ( ) ; case : return Subtarget . hasStdExtF ( ) ; case : return Subtarget . hasStdExtD ( ) ;" LLVM,RISCV,2532,"Predict the next statement of this code snippet: if ( VT == && ! Subtarget . hasStdExtZfh ( ) ) return false ; if ( VT == && ! Subtarget . hasStdExtF ( ) ) return false ;" LLVM,RISCV,2533,"Predict the next statement of this code snippet: if ( ScalarTy -> isIntegerTy ( ) || ScalarTy -> isIntegerTy ( ) || ScalarTy -> isIntegerTy ( ) || ScalarTy -> isIntegerTy ( ) ) return true ; if ( ScalarTy -> isHalfTy ( ) ) return Subtarget . hasStdExtZfh ( ) ; if ( ScalarTy -> isFloatTy ( ) ) return Subtarget . hasStdExtF ( ) ; if ( ScalarTy -> isDoubleTy ( ) ) return Subtarget . hasStdExtD ( ) ;" LLVM,RISCV,2534,"Predict the next statement of this code snippet: if ( VT . getScalarSizeInBits ( ) > Subtarget . getXLen ( ) ) return true ; ConstantSDNode * C1Node = cast < ConstantSDNode > ( AddNode . getOperand ( ) ) ; ConstantSDNode * C2Node = cast < ConstantSDNode > ( ConstNode ) ; const APInt & C1 = C1Node -> getAPIntValue ( ) ; const APInt & C2 = C2Node -> getAPIntValue ( ) ; if ( C1 . isSignedIntN ( ) && ! ( C1 * C2 ) . isSignedIntN ( ) ) return false ;" LLVM,RISCV,2535,"Predict the next statement of this code snippet: if ( ShuffleVectorSDNode :: isSplatMask ( M . data ( ) , VT ) ) return true ;" LLVM,RISCV,2536,"Predict the next statement of this code snippet: bool TargetLowering :: isShuffleMaskLegal ( ArrayRef < int > M , EVT VT ) const { if ( ShuffleVectorSDNode :: isSplatMask ( M . data ( ) , VT ) ) return true ;" LLVM,RISCV,2537,"Predict the next statement of this code snippet: if ( ! SeqStepNum ) SeqStepNum = ValDiff ; else if ( ValDiff != SeqStepNum ) return None ; if ( ! SeqStepDenom ) SeqStepDenom = IdxDiff ; else if ( IdxDiff != * SeqStepDenom ) return None ; } } if ( SeqStepNum && SeqStepDenom ) { uint64_t ExpectedVal = ( int64_t ) ( Idx * ( uint64_t ) * SeqStepNum ) / * SeqStepDenom ; int64_t Addend = SignExtend64 ( Val - ExpectedVal , EltSizeInBits ) ; if ( ! SeqAddend ) SeqAddend = Addend ; else if ( SeqAddend != Addend ) return None ; }" LLVM,RISCV,2538,"Predict the next statement of this code snippet: if ( IsABIRegCopy && ValueVT == && PartVT == ) { SDValue Val = Parts [ ] ; Val = DAG . getNode ( , DL , , Val ) ; Val = DAG . getNode ( , DL , , Val ) ; Val = DAG . getNode ( , DL , , Val ) ; return Val ; } if ( ValueVT . isScalableVector ( ) && PartVT . isScalableVector ( ) ) { LLVMContext & Context = * DAG . getContext ( ) ; SDValue Val = Parts [ ] ; EVT ValueEltVT = ValueVT . getVectorElementType ( ) ; EVT PartEltVT = PartVT . getVectorElementType ( ) ; unsigned ValueVTBitSize = ValueVT . getSizeInBits ( ) . getKnownMinSize ( ) ; unsigned PartVTBitSize = PartVT . getSizeInBits ( ) . getKnownMinSize ( ) ; if ( PartVTBitSize % ValueVTBitSize == ) { EVT SameEltTypeVT = ValueVT ; if ( ValueEltVT != PartEltVT ) { unsigned Count = ValueVTBitSize / PartEltVT . getSizeInBits ( ) ; assert ( Count != && ) ; SameEltTypeVT = EVT :: getVectorVT ( Context , PartEltVT , Count , true ) ; } Val = DAG . getNode ( , DL , SameEltTypeVT , Val , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ; if ( ValueEltVT != PartEltVT ) Val = DAG . getNode ( , DL , ValueVT , Val ) ; return Val ;" LLVM,RISCV,2539,"Predict the next statement of this code snippet: SDValue SplatZero = DAG . getNode ( , DL , ContainerVT , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ; SDValue NegX = DAG . getNode ( , DL , ContainerVT , SplatZero , X , Mask , VL ) ; SDValue Max = DAG . getNode ( , DL , ContainerVT , X , NegX , Mask , VL ) ; return convertFromScalableVector ( VT , Max , DAG , Subtarget ) ;" LLVM,RISCV,2540,"Predict the next statement of this code snippet: assert ( VT . isFixedLengthVector ( ) && ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; X = convertToScalableVector ( ContainerVT , X , DAG , Subtarget ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ; SDValue SplatZero = DAG . getNode ( , DL , ContainerVT , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ; SDValue NegX = DAG . getNode ( , DL , ContainerVT , SplatZero , X , Mask , VL ) ;" LLVM,RISCV,2541,"Predict the next statement of this code snippet: BlockAddressSDNode * N = cast < BlockAddressSDNode > ( Op ) ;" LLVM,RISCV,2542,"Predict the next statement of this code snippet: BlockAddressSDNode * N = cast < BlockAddressSDNode > ( Op ) ;" LLVM,RISCV,2543,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerConstantPool ( SDValue Op , SelectionDAG & DAG ) const { ConstantPoolSDNode * N = cast < ConstantPoolSDNode > ( Op ) ;" LLVM,RISCV,2544,"Predict the next statement of this code snippet: MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Vec = convertToScalableVector ( ContainerVT , Vec , DAG , Subtarget ) ; } SDValue Mask = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) . first ; SDValue VL = DAG . getConstant ( SubVecVT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue SlidedownAmt = DAG . getConstant ( OrigIdx , DL , XLenVT ) ; SDValue Slidedown = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , Vec , SlidedownAmt , Mask , VL ) ; Slidedown = DAG . getNode ( , DL , SubVecVT , Slidedown , DAG . getConstant ( , DL , XLenVT ) ) ; return DAG . getBitcast ( Op . getValueType ( ) , Slidedown ) ; } unsigned SubRegIdx , RemIdx ; std :: tie ( SubRegIdx , RemIdx ) = TargetLowering :: decomposeSubvectorInsertExtractToSubRegs ( VecVT , SubVecVT , OrigIdx , TRI ) ; if ( RemIdx == ) return Op ; MVT InterSubVT = VecVT ; if ( VecVT . bitsGT ( getLMUL1VT ( VecVT ) ) ) { InterSubVT = getLMUL1VT ( VecVT ) ; Vec = DAG . getNode ( , DL , InterSubVT , Vec , DAG . getConstant ( OrigIdx - RemIdx , DL , XLenVT ) ) ; } SDValue SlidedownAmt = DAG . getConstant ( RemIdx , DL , XLenVT ) ; SlidedownAmt = DAG . getNode ( , DL , XLenVT , SlidedownAmt ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultScalableVLOps ( InterSubVT , DL , DAG , Subtarget ) ; SDValue Slidedown = DAG . getNode ( , DL , InterSubVT , DAG . getUNDEF ( InterSubVT ) , Vec , SlidedownAmt , Mask , VL ) ;" LLVM,RISCV,2545,"Predict the next statement of this code snippet: SDValue Idx = Op . getOperand ( ) ; SDValue Vec = Op . getOperand ( ) ; EVT EltVT = Op . getValueType ( ) ; MVT VecVT = Vec . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( VecVT . getVectorElementType ( ) == ) { MVT WideVT = ( , VecVT . getVectorElementCount ( ) ) ; Vec = DAG . getNode ( , DL , WideVT , Vec ) ; return DAG . getNode ( , DL , EltVT , Vec , Idx ) ;" LLVM,RISCV,2546,"Predict the next statement of this code snippet: SDValue Op1 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDLoc DL ( Op ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ; SDValue Ext = DAG . getNode ( ExtendOpc , DL , ContainerExtVT , Op1 , Mask , VL ) ; return convertFromScalableVector ( ExtVT , Ext , DAG , Subtarget ) ;" LLVM,RISCV,2547,"Predict the next statement of this code snippet: MVT ExtVT = Op . getSimpleValueType ( ) ; if ( ! ExtVT . isFixedLengthVector ( ) ) return Op ; MVT VT = Op . getOperand ( ) . getSimpleValueType ( ) ; MVT ContainerExtVT = getContainerForFixedLengthVector ( ExtVT ) ; MVT ContainerVT = ( VT . getVectorElementType ( ) , ContainerExtVT . getVectorElementCount ( ) ) ; SDValue Op1 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDLoc DL ( Op ) ;" LLVM,RISCV,2548,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerFixedLengthVectorFCOPYSIGNToRVV ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; MVT VT = Op . getSimpleValueType ( ) ; SDValue Mag = Op . getOperand ( ) ; SDValue Sign = Op . getOperand ( ) ; assert ( Mag . getValueType ( ) == Sign . getValueType ( ) && ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; Mag = convertToScalableVector ( ContainerVT , Mag , DAG , Subtarget ) ; Sign = convertToScalableVector ( ContainerVT , Sign , DAG , Subtarget ) ;" LLVM,RISCV,2549,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerFixedLengthVectorLoadToRVV ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; auto * Load = cast < LoadSDNode > ( Op ) ; assert ( allowsMemoryAccessForAlignment ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , Load -> getMemoryVT ( ) , * Load -> getMemOperand ( ) ) && ) ; MVT VT = Op . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , Subtarget . getXLenVT ( ) ) ; SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ; SDValue NewLoad = DAG . getMemIntrinsicNode ( , DL , VTs , { Load -> getChain ( ) , Load -> getBasePtr ( ) , VL } , Load -> getMemoryVT ( ) , Load -> getMemOperand ( ) ) ; SDValue Result = convertFromScalableVector ( VT , NewLoad , DAG , Subtarget ) ;" LLVM,RISCV,2550,"Predict the next statement of this code snippet: if ( VT . getVectorElementType ( ) == ) return lowerToScalableOp ( Op , DAG , MaskOpc , false ) ;" LLVM,RISCV,2551,"Predict the next statement of this code snippet: SDValue Op1 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDValue Op2 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDLoc DL ( Op ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ; SDValue Select = DAG . getNode ( , DL , ContainerVT , CC , Op1 , Op2 , VL ) ;" LLVM,RISCV,2552,"Predict the next statement of this code snippet: SDValue Op1 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDValue Op2 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDLoc DL ( Op ) ;" LLVM,RISCV,2553,"Predict the next statement of this code snippet: MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; SDValue Mask = DAG . getNode ( , DL , MaskVT , VL ) ; SDValue Cmp = DAG . getNode ( , DL , MaskVT , Op1 , Op2 , Op . getOperand ( ) , Mask , VL ) ;" LLVM,RISCV,2554,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerFixedLengthVectorShiftToRVV ( SDValue Op , SelectionDAG & DAG ) const { unsigned Opc ; switch ( Op . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ;" LLVM,RISCV,2555,"Predict the next statement of this code snippet: } MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , Subtarget . getXLenVT ( ) ) ; SDValue NewValue = convertToScalableVector ( ContainerVT , StoreVal , DAG , Subtarget ) ; return DAG . getMemIntrinsicNode ( , DL , DAG . getVTList ( ) , { Store -> getChain ( ) , NewValue , Store -> getBasePtr ( ) , VL } , Store -> getMemoryVT ( ) , Store -> getMemOperand ( ) ) ;" LLVM,RISCV,2556,"Predict the next statement of this code snippet: SDValue StoreVal = Store -> getValue ( ) ; MVT VT = StoreVal . getSimpleValueType ( ) ; if ( VT . getVectorElementType ( ) == && VT . getVectorNumElements ( ) < ) { VT = ; StoreVal = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , VT ) , StoreVal , DAG . getIntPtrConstant ( , DL ) ) ; } MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , Subtarget . getXLenVT ( ) ) ; SDValue NewValue = convertToScalableVector ( ContainerVT , StoreVal , DAG , Subtarget ) ;" LLVM,RISCV,2557,"Predict the next statement of this code snippet: default : report_fatal_error ( ) ; case CallingConv :: C : case CallingConv :: Fast : break ; case CallingConv :: GHC : if ( ! MF . getSubtarget ( ) . getFeatureBits ( ) [ ] || ! MF . getSubtarget ( ) . getFeatureBits ( ) [ ] ) report_fatal_error ( ) ; } const Function & Func = MF . getFunction ( ) ; if ( Func . hasFnAttribute ( ) ) { if ( ! Func . arg_empty ( ) ) report_fatal_error ( ) ; StringRef Kind = MF . getFunction ( ) . getFnAttribute ( ) . getValueAsString ( ) ; if ( ! ( Kind == || Kind == || Kind == ) ) report_fatal_error ( ) ; } EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; unsigned XLenInBytes = Subtarget . getXLen ( ) / ; std :: vector < SDValue > OutChains ; SmallVector < CCValAssign , > ArgLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , ArgLocs , * DAG . getContext ( ) ) ; if ( CallConv == CallingConv :: GHC ) CCInfo . AnalyzeFormalArguments ( Ins , CC__GHC ) ; else analyzeInputArgs ( MF , CCInfo , Ins , false , CallConv == CallingConv :: Fast ? CC__FastCC : CC_ ) ; for ( unsigned i = , e = ArgLocs . size ( ) ; i != e ; ++ i ) { CCValAssign & VA = ArgLocs [ i ] ; SDValue ArgValue ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) ArgValue = unpackF64OnRV32DSoftABI ( DAG , Chain , VA , DL ) ; else if ( VA . isRegLoc ( ) ) ArgValue = unpackFromRegLoc ( DAG , Chain , VA , DL , * this ) ; else ArgValue = unpackFromMemLoc ( DAG , Chain , VA , DL ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) { InVals . push_back ( DAG . getLoad ( VA . getValVT ( ) , DL , Chain , ArgValue , MachinePointerInfo ( ) ) ) ; unsigned ArgIndex = Ins [ i ] . OrigArgIndex ; unsigned ArgPartOffset = Ins [ i ] . PartOffset ; assert ( VA . getValVT ( ) . isVector ( ) || ArgPartOffset == ) ; while ( i + != e && Ins [ i + ] . OrigArgIndex == ArgIndex ) { CCValAssign & PartVA = ArgLocs [ i + ] ; unsigned PartOffset = Ins [ i + ] . PartOffset - ArgPartOffset ; SDValue Offset = DAG . getIntPtrConstant ( PartOffset , DL ) ; if ( PartVA . getValVT ( ) . isScalableVector ( ) ) Offset = DAG . getNode ( , DL , XLenVT , Offset ) ;" LLVM,RISCV,2558,"Predict the next statement of this code snippet: MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; VectorVal = convertToScalableVector ( ContainerVT , VectorVal , DAG , Subtarget ) ; } MVT M1VT = getLMUL1VT ( VectorVal . getSimpleValueType ( ) ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue ScalarSplat = DAG . getSplatVector ( M1VT , DL , ScalarVal ) ;" LLVM,RISCV,2559,"Predict the next statement of this code snippet: else return SDValue ( ) ; SDLoc DL ( Op ) ; SDValue FpToInt = DAG . getNode ( Opc , DL , DstVT , Src ) ; SDValue ZeroInt = DAG . getConstant ( , DL , DstVT ) ;" LLVM,RISCV,2560,"Predict the next statement of this code snippet: MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MFI . setFrameAddressIsTaken ( true ) ; Register FrameReg = RI . getFrameRegister ( MF ) ; int XLenInBytes = Subtarget . getXLen ( ) / ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ;" LLVM,RISCV,2561,"Predict the next statement of this code snippet: static const int Table = ( int ( RoundingMode :: NearestTiesToEven ) << * ) | ( int ( RoundingMode :: TowardZero ) << * ) | ( int ( RoundingMode :: TowardNegative ) << * ) | ( int ( RoundingMode :: TowardPositive ) << * ) | ( int ( RoundingMode :: NearestTiesToAway ) << * ) ; SDValue Shift = DAG . getNode ( , DL , XLenVT , RM , DAG . getConstant ( , DL , XLenVT ) ) ;" LLVM,RISCV,2562,"Predict the next statement of this code snippet: static const int Table = ( int ( RoundingMode :: NearestTiesToEven ) << * ) | ( int ( RoundingMode :: TowardZero ) << * ) | ( int ( RoundingMode :: TowardNegative ) << * ) | ( int ( RoundingMode :: TowardPositive ) << * ) | ( int ( RoundingMode :: NearestTiesToAway ) << * ) ; SDValue Shift = DAG . getNode ( , DL , XLenVT , RM , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue Shifted = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( Table , DL , XLenVT ) , Shift ) ; SDValue Masked = DAG . getNode ( , DL , XLenVT , Shifted , DAG . getConstant ( , DL , XLenVT ) ) ; return DAG . getMergeValues ( { Masked , Chain } , DL ) ;" LLVM,RISCV,2563,"Predict the next statement of this code snippet: break ; case TLSModel :: InitialExec : Addr = getStaticTLSAddr ( N , DAG , true ) ; break ; case TLSModel :: LocalDynamic : case TLSModel :: GeneralDynamic : Addr = getDynamicTLSAddr ( N , DAG ) ; break ; } if ( Offset != ) return DAG . getNode ( , DL , Ty , Addr , DAG . getConstant ( Offset , DL , XLenVT ) ) ;" LLVM,RISCV,2564,"Predict the next statement of this code snippet: ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Vec = convertToScalableVector ( ContainerVT , Vec , DAG , Subtarget ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; bool IsLegalInsert = Subtarget . is64Bit ( ) || Val . getValueType ( ) != ; if ( ! IsLegalInsert && isa < ConstantSDNode > ( Val ) ) { const auto * CVal = cast < ConstantSDNode > ( Val ) ; if ( isInt < > ( CVal -> getSExtValue ( ) ) ) { IsLegalInsert = true ; Val = DAG . getConstant ( CVal -> getSExtValue ( ) , DL , ) ; } } SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue ValInVec ; if ( IsLegalInsert ) { unsigned Opc = VecVT . isFloatingPoint ( ) ? : ; if ( isNullConstant ( Idx ) ) { Vec = DAG . getNode ( Opc , DL , ContainerVT , Vec , Val , VL ) ; if ( ! VecVT . isFixedLengthVector ( ) ) return Vec ; return convertFromScalableVector ( VecVT , Vec , DAG , Subtarget ) ; } ValInVec = DAG . getNode ( Opc , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , Val , VL ) ; } else { SDValue One = DAG . getConstant ( , DL , XLenVT ) ; SDValue ValLo = DAG . getNode ( , DL , , Val , Zero ) ; SDValue ValHi = DAG . getNode ( , DL , , Val , One ) ; MVT I32ContainerVT = ( , ContainerVT . getVectorElementCount ( ) * ) ; SDValue I32Mask = getDefaultScalableVLOps ( I32ContainerVT , DL , DAG , Subtarget ) . first ; SDValue InsertI64VL = DAG . getConstant ( , DL , XLenVT ) ; ValInVec = DAG . getNode ( , DL , I32ContainerVT , Zero , InsertI64VL ) ; ValInVec = DAG . getNode ( , DL , I32ContainerVT , ValInVec , ValHi , I32Mask , InsertI64VL ) ; ValInVec = DAG . getNode ( , DL , I32ContainerVT , ValInVec , ValLo , I32Mask , InsertI64VL ) ; ValInVec = DAG . getBitcast ( ContainerVT , ValInVec ) ;" LLVM,RISCV,2565,"Predict the next statement of this code snippet: Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( IsUnmasked ? : , DL , XLenVT ) ; auto * Store = cast < MemIntrinsicSDNode > ( Op ) ; SmallVector < SDValue , > Ops { Store -> getChain ( ) , IntID } ; Ops . push_back ( Val ) ; Ops . push_back ( Op . getOperand ( ) ) ; Ops . push_back ( Op . getOperand ( ) ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; return DAG . getMemIntrinsicNode ( , DL , Store -> getVTList ( ) , Ops , Store -> getMemoryVT ( ) , Store -> getMemOperand ( ) ) ; } }" LLVM,RISCV,2566,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; SDValue Vec = Op . getOperand ( ) ; SDValue VL = Op . getOperand ( ) ; SDValue SplattedVal = splatSplitI64WithVL ( DL , VT , Scalar , VL , DAG ) ; SDValue SplattedIdx = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , ) , VL ) ; MVT MaskVT = ( , VT . getVectorElementCount ( ) ) ; SDValue Mask = DAG . getNode ( , DL , MaskVT , VL ) ; SDValue VID = DAG . getNode ( , DL , VT , Mask , VL ) ; SDValue SelectCond = DAG . getNode ( , DL , MaskVT , VID , SplattedIdx , DAG . getCondCode ( ) , Mask , VL ) ; return DAG . getNode ( , DL , VT , SelectCond , SplattedVal , Vec , VL ) ; } case : case : case : case : { unsigned NumOps = Op . getNumOperands ( ) ; bool IsMasked = NumOps == ; unsigned OpOffset = IsMasked ? : ; SDValue Scalar = Op . getOperand ( + OpOffset ) ; if ( Scalar . getValueType ( ) . bitsLE ( XLenVT ) ) break ; if ( auto * CVal = dyn_cast < ConstantSDNode > ( Scalar ) ) if ( isInt < > ( CVal -> getSExtValue ( ) ) ) break ; MVT VT = Op . getSimpleValueType ( ) ; assert ( VT . getVectorElementType ( ) == && Scalar . getValueType ( ) == && ) ; MVT I32VT = ( , VT . getVectorElementCount ( ) * ) ; SDValue Vec = DAG . getBitcast ( I32VT , Op . getOperand ( + OpOffset ) ) ; SDValue ScalarLo = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue ScalarHi = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ;" LLVM,RISCV,2567,"Predict the next statement of this code snippet: unsigned OpOffset = IsMasked ? : ; SDValue Scalar = Op . getOperand ( + OpOffset ) ; if ( Scalar . getValueType ( ) . bitsLE ( XLenVT ) ) break ; if ( auto * CVal = dyn_cast < ConstantSDNode > ( Scalar ) ) if ( isInt < > ( CVal -> getSExtValue ( ) ) ) break ; MVT VT = Op . getSimpleValueType ( ) ; assert ( VT . getVectorElementType ( ) == && Scalar . getValueType ( ) == && ) ; MVT I32VT = ( , VT . getVectorElementCount ( ) * ) ; SDValue Vec = DAG . getBitcast ( I32VT , Op . getOperand ( + OpOffset ) ) ; SDValue ScalarLo = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue ScalarHi = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue VL = Op . getOperand ( NumOps - ( + OpOffset ) ) ; SDValue I32VL = DAG . getNode ( , DL , XLenVT , VL , DAG . getConstant ( , DL , XLenVT ) ) ; MVT I32MaskVT = ( , I32VT . getVectorElementCount ( ) ) ; SDValue I32Mask = DAG . getNode ( , DL , I32MaskVT , VL ) ; if ( IntNo == || IntNo == ) { Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarHi , I32Mask , I32VL ) ; Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarLo , I32Mask , I32VL ) ; } else { Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarLo , I32Mask , I32VL ) ; Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarHi , I32Mask , I32VL ) ; } Vec = DAG . getBitcast ( VT , Vec ) ; if ( ! IsMasked ) return Vec ; SDValue Mask = Op . getOperand ( NumOps - ) ; SDValue MaskedOff = Op . getOperand ( ) ; return DAG . getNode ( , DL , VT , Mask , Vec , MaskedOff , VL ) ; } } return lowerVectorIntrinsicSplats ( Op , DAG , Subtarget ) ;" LLVM,RISCV,2568,"Predict the next statement of this code snippet: } SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( IsUnmasked ? : , DL , XLenVT ) ; auto * Load = cast < MemIntrinsicSDNode > ( Op ) ; SmallVector < SDValue , > Ops { Load -> getChain ( ) , IntID } ; if ( ! IsUnmasked ) Ops . push_back ( PassThru ) ; Ops . push_back ( Op . getOperand ( ) ) ; Ops . push_back ( Op . getOperand ( ) ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; if ( ! IsUnmasked ) { SDValue Policy = DAG . getTargetConstant ( , DL , XLenVT ) ; Ops . push_back ( Policy ) ; } SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ; SDValue Result = DAG . getMemIntrinsicNode ( , DL , VTs , Ops , Load -> getMemoryVT ( ) , Load -> getMemOperand ( ) ) ; SDValue Chain = Result . getValue ( ) ; Result = convertFromScalableVector ( VT , Result , DAG , Subtarget ) ; return DAG . getMergeValues ( { Result , Chain } , DL ) ; } }" LLVM,RISCV,2569,"Predict the next statement of this code snippet: JumpTableSDNode * N = cast < JumpTableSDNode > ( Op ) ; return getAddr ( N , DAG ) ;" LLVM,RISCV,2570,"Predict the next statement of this code snippet: JumpTableSDNode * N = cast < JumpTableSDNode > ( Op ) ;" LLVM,RISCV,2571,"Predict the next statement of this code snippet: bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { if ( VT . bitsGE ( IndexVT ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; } else { IndexVT = getContainerForFixedLengthVector ( IndexVT ) ; ContainerVT = ( ContainerVT . getVectorElementType ( ) , IndexVT . getVectorElementCount ( ) ) ; } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { Chain , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ;" LLVM,RISCV,2572,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ; SDValue IntID = DAG . getTargetConstant ( , DL , XLenVT ) ;" LLVM,RISCV,2573,"Predict the next statement of this code snippet: SDValue BasePtr = MemSD -> getBasePtr ( ) ; bool IsTruncatingStore = false ; SDValue Index , Mask , Val , VL ; if ( auto * VPSN = dyn_cast < VPScatterSDNode > ( Op . getNode ( ) ) ) { Index = VPSN -> getIndex ( ) ; Mask = VPSN -> getMask ( ) ; Val = VPSN -> getValue ( ) ; VL = VPSN -> getVectorLength ( ) ; IsTruncatingStore = false ; } else { auto * MSN = cast < MaskedScatterSDNode > ( Op . getNode ( ) ) ; Index = MSN -> getIndex ( ) ; Mask = MSN -> getMask ( ) ; Val = MSN -> getValue ( ) ; IsTruncatingStore = MSN -> isTruncatingStore ( ) ; } MVT VT = Val . getSimpleValueType ( ) ; MVT IndexVT = Index . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( BasePtr . getSimpleValueType ( ) == XLenVT && ) ; assert ( ! IsTruncatingStore && ) ;" LLVM,RISCV,2574,"Predict the next statement of this code snippet: MVT IndexVT = Index . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( BasePtr . getSimpleValueType ( ) == XLenVT && ) ; assert ( ! IsTruncatingStore && ) ; ( void ) IsTruncatingStore ; bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { if ( VT . bitsGE ( IndexVT ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; } else { IndexVT = getContainerForFixedLengthVector ( IndexVT ) ; ContainerVT = ( VT . getVectorElementType ( ) , IndexVT . getVectorElementCount ( ) ) ; } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; Val = convertToScalableVector ( ContainerVT , Val , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ;" LLVM,RISCV,2575,"Predict the next statement of this code snippet: Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { Chain , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ; Ops . push_back ( Val ) ; Ops . push_back ( BasePtr ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ;" LLVM,RISCV,2576,"Predict the next statement of this code snippet: MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { Chain , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ; Ops . push_back ( Val ) ; Ops . push_back ( BasePtr ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ;" LLVM,RISCV,2577,"Predict the next statement of this code snippet: Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegHi , ) ) ; } else { Val = convertValVTToLocVT ( DAG , Val , VA , DL , Subtarget ) ; Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Glue ) ; if ( STI . isRegisterReservedByUser ( VA . getLocReg ( ) ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ; } } RetOps [ ] = Chain ; if ( Glue . getNode ( ) ) { RetOps . push_back ( Glue ) ; } unsigned RetOpc = ; const Function & Func = DAG . getMachineFunction ( ) . getFunction ( ) ; if ( Func . hasFnAttribute ( ) ) { if ( ! Func . getReturnType ( ) -> isVoidTy ( ) ) report_fatal_error ( ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; StringRef Kind = MF . getFunction ( ) . getFnAttribute ( ) . getValueAsString ( ) ;" LLVM,RISCV,2578,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerRETURNADDR ( SDValue Op , SelectionDAG & DAG ) const { const RegisterInfo & RI = * Subtarget . getRegisterInfo ( ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MFI . setReturnAddressIsTaken ( true ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; int XLenInBytes = Subtarget . getXLen ( ) / ; if ( verifyReturnAddressArgumentIsConstant ( Op , DAG ) ) return SDValue ( ) ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ;" LLVM,RISCV,2579,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( Scalar . getValueType ( ) . bitsLE ( XLenVT ) ) { unsigned ExtOpc = isa < ConstantSDNode > ( Scalar ) ? : ; Scalar = DAG . getNode ( ExtOpc , DL , XLenVT , Scalar ) ; return DAG . getNode ( , DL , VT , Scalar , VL ) ; } assert ( XLenVT == && Scalar . getValueType ( ) == && ) ; return splatSplitI64WithVL ( DL , VT , Scalar , VL , DAG ) ;" LLVM,RISCV,2580,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( VT . isVector ( ) ) { MVT SplatCondVT = VT . changeVectorElementType ( ) ; SDValue CondSplat = VT . isScalableVector ( ) ? DAG . getSplatVector ( SplatCondVT , DL , CondV ) : DAG . getSplatBuildVector ( SplatCondVT , DL , CondV ) ; return DAG . getNode ( , DL , VT , CondSplat , TrueV , FalseV ) ; } if ( VT == XLenVT && CondV . getOpcode ( ) == && CondV . getOperand ( ) . getSimpleValueType ( ) == XLenVT ) { SDValue LHS = CondV . getOperand ( ) ; SDValue RHS = CondV . getOperand ( ) ; const auto * CC = cast < CondCodeSDNode > ( CondV . getOperand ( ) ) ; CCVal = CC -> get ( ) ; if ( isa < ConstantSDNode > ( TrueV ) && isa < ConstantSDNode > ( FalseV ) && CCVal == ) { const APInt & TrueVal = cast < ConstantSDNode > ( TrueV ) -> getAPIntValue ( ) ; const APInt & FalseVal = cast < ConstantSDNode > ( FalseV ) -> getAPIntValue ( ) ; if ( TrueVal - == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , CondV , FalseV ) ;" LLVM,RISCV,2581,"Predict the next statement of this code snippet: if ( TrueVal - == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , CondV , FalseV ) ; if ( TrueVal + == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , FalseV , CondV ) ; } translateSetCCForBranch ( DL , LHS , RHS , CCVal , DAG ) ; SDValue TargetCC = DAG . getCondCode ( CCVal ) ; SDValue Ops [ ] = { LHS , RHS , TargetCC , TrueV , FalseV } ; return DAG . getNode ( , DL , Op . getValueType ( ) , Ops ) ; } SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; SDValue SetNE = DAG . getCondCode ( ) ;" LLVM,RISCV,2582,"Predict the next statement of this code snippet: SDValue Chain = Op -> getOperand ( ) ; SDValue RMValue = Op -> getOperand ( ) ; SDValue SysRegNo = DAG . getConstant ( ( ) -> Encoding , DL , XLenVT ) ; static const unsigned Table = ( << * int ( RoundingMode :: NearestTiesToEven ) ) | ( << * int ( RoundingMode :: TowardZero ) ) | ( << * int ( RoundingMode :: TowardNegative ) ) | ( << * int ( RoundingMode :: TowardPositive ) ) | ( << * int ( RoundingMode :: NearestTiesToAway ) ) ; SDValue Shift = DAG . getNode ( , DL , XLenVT , RMValue , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue Shifted = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( Table , DL , XLenVT ) , Shift ) ; RMValue = DAG . getNode ( , DL , XLenVT , Shifted , DAG . getConstant ( , DL , XLenVT ) ) ;" LLVM,RISCV,2583,"Predict the next statement of this code snippet: SDValue Shift = DAG . getNode ( , DL , XLenVT , RMValue , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue Shifted = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( Table , DL , XLenVT ) , Shift ) ; RMValue = DAG . getNode ( , DL , XLenVT , Shifted , DAG . getConstant ( , DL , XLenVT ) ) ;" LLVM,RISCV,2584,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerShiftLeftParts ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; SDValue Lo = Op . getOperand ( ) ; SDValue Hi = Op . getOperand ( ) ; SDValue Shamt = Op . getOperand ( ) ; EVT VT = Lo . getValueType ( ) ; SDValue Zero = DAG . getConstant ( , DL , VT ) ; SDValue One = DAG . getConstant ( , DL , VT ) ; SDValue MinusXLen = DAG . getConstant ( - ( int ) Subtarget . getXLen ( ) , DL , VT ) ; SDValue XLenMinus1 = DAG . getConstant ( Subtarget . getXLen ( ) - , DL , VT ) ; SDValue ShamtMinusXLen = DAG . getNode ( , DL , VT , Shamt , MinusXLen ) ; SDValue XLenMinus1Shamt = DAG . getNode ( , DL , VT , XLenMinus1 , Shamt ) ; SDValue LoTrue = DAG . getNode ( , DL , VT , Lo , Shamt ) ; SDValue ShiftRight1Lo = DAG . getNode ( , DL , VT , Lo , One ) ; SDValue ShiftRightLo = DAG . getNode ( , DL , VT , ShiftRight1Lo , XLenMinus1Shamt ) ; SDValue ShiftLeftHi = DAG . getNode ( , DL , VT , Hi , Shamt ) ; SDValue HiTrue = DAG . getNode ( , DL , VT , ShiftLeftHi , ShiftRightLo ) ; SDValue HiFalse = DAG . getNode ( , DL , VT , Lo , ShamtMinusXLen ) ; SDValue CC = DAG . getSetCC ( DL , VT , ShamtMinusXLen , Zero , ) ; Lo = DAG . getNode ( , DL , VT , CC , LoTrue , Zero ) ;" LLVM,RISCV,2585,"Predict the next statement of this code snippet: SDValue MinusXLen = DAG . getConstant ( - ( int ) Subtarget . getXLen ( ) , DL , VT ) ; SDValue XLenMinus1 = DAG . getConstant ( Subtarget . getXLen ( ) - , DL , VT ) ; SDValue ShamtMinusXLen = DAG . getNode ( , DL , VT , Shamt , MinusXLen ) ; SDValue XLenMinus1Shamt = DAG . getNode ( , DL , VT , XLenMinus1 , Shamt ) ; SDValue LoTrue = DAG . getNode ( , DL , VT , Lo , Shamt ) ; SDValue ShiftRight1Lo = DAG . getNode ( , DL , VT , Lo , One ) ; SDValue ShiftRightLo = DAG . getNode ( , DL , VT , ShiftRight1Lo , XLenMinus1Shamt ) ; SDValue ShiftLeftHi = DAG . getNode ( , DL , VT , Hi , Shamt ) ; SDValue HiTrue = DAG . getNode ( , DL , VT , ShiftLeftHi , ShiftRightLo ) ;" LLVM,RISCV,2586,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; SDValue Lo = Op . getOperand ( ) ; SDValue Hi = Op . getOperand ( ) ; SDValue Shamt = Op . getOperand ( ) ; EVT VT = Lo . getValueType ( ) ; unsigned ShiftRightOp = IsSRA ? : ; SDValue Zero = DAG . getConstant ( , DL , VT ) ; SDValue One = DAG . getConstant ( , DL , VT ) ; SDValue MinusXLen = DAG . getConstant ( - ( int ) Subtarget . getXLen ( ) , DL , VT ) ; SDValue XLenMinus1 = DAG . getConstant ( Subtarget . getXLen ( ) - , DL , VT ) ; SDValue ShamtMinusXLen = DAG . getNode ( , DL , VT , Shamt , MinusXLen ) ; SDValue XLenMinus1Shamt = DAG . getNode ( , DL , VT , XLenMinus1 , Shamt ) ; SDValue ShiftRightLo = DAG . getNode ( , DL , VT , Lo , Shamt ) ; SDValue ShiftLeftHi1 = DAG . getNode ( , DL , VT , Hi , One ) ; SDValue ShiftLeftHi = DAG . getNode ( , DL , VT , ShiftLeftHi1 , XLenMinus1Shamt ) ; SDValue LoTrue = DAG . getNode ( , DL , VT , ShiftRightLo , ShiftLeftHi ) ; SDValue HiTrue = DAG . getNode ( ShiftRightOp , DL , VT , Hi , Shamt ) ; SDValue LoFalse = DAG . getNode ( ShiftRightOp , DL , VT , Hi , ShamtMinusXLen ) ; SDValue HiFalse = IsSRA ? DAG . getNode ( , DL , VT , Hi , XLenMinus1 ) : Zero ; SDValue CC = DAG . getSetCC ( DL , VT , ShamtMinusXLen , Zero , ) ; Lo = DAG . getNode ( , DL , VT , CC , LoTrue , LoFalse ) ; Hi = DAG . getNode ( , DL , VT , CC , HiTrue , HiFalse ) ; SDValue Parts [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Parts , DL ) ;" LLVM,RISCV,2587,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; SDValue Lo = Op . getOperand ( ) ; SDValue Hi = Op . getOperand ( ) ; SDValue Shamt = Op . getOperand ( ) ; EVT VT = Lo . getValueType ( ) ; unsigned ShiftRightOp = IsSRA ? : ; SDValue Zero = DAG . getConstant ( , DL , VT ) ; SDValue One = DAG . getConstant ( , DL , VT ) ; SDValue MinusXLen = DAG . getConstant ( - ( int ) Subtarget . getXLen ( ) , DL , VT ) ; SDValue XLenMinus1 = DAG . getConstant ( Subtarget . getXLen ( ) - , DL , VT ) ; SDValue ShamtMinusXLen = DAG . getNode ( , DL , VT , Shamt , MinusXLen ) ; SDValue XLenMinus1Shamt = DAG . getNode ( , DL , VT , XLenMinus1 , Shamt ) ; SDValue ShiftRightLo = DAG . getNode ( , DL , VT , Lo , Shamt ) ; SDValue ShiftLeftHi1 = DAG . getNode ( , DL , VT , Hi , One ) ; SDValue ShiftLeftHi = DAG . getNode ( , DL , VT , ShiftLeftHi1 , XLenMinus1Shamt ) ; SDValue LoTrue = DAG . getNode ( , DL , VT , ShiftRightLo , ShiftLeftHi ) ; SDValue HiTrue = DAG . getNode ( ShiftRightOp , DL , VT , Hi , Shamt ) ; SDValue LoFalse = DAG . getNode ( ShiftRightOp , DL , VT , Hi , ShamtMinusXLen ) ; SDValue HiFalse = IsSRA ? DAG . getNode ( , DL , VT , Hi , XLenMinus1 ) : Zero ; SDValue CC = DAG . getSetCC ( DL , VT , ShamtMinusXLen , Zero , ) ; Lo = DAG . getNode ( , DL , VT , CC , LoTrue , LoFalse ) ; Hi = DAG . getNode ( , DL , VT , CC , HiTrue , HiFalse ) ; SDValue Parts [ ] = { Lo , Hi } ;" LLVM,RISCV,2588,"Predict the next statement of this code snippet: MVT ContainerVT = getContainerForFixedLengthVector ( DAG , VT , Subtarget ) ; SDLoc DL ( Op ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2589,"Predict the next statement of this code snippet: if ( ( LoC >> ) == HiC ) return DAG . getNode ( , DL , VecVT , Lo ) ; } if ( Hi . getOpcode ( ) == && Hi . getOperand ( ) == Lo && isa < ConstantSDNode > ( Hi . getOperand ( ) ) && Hi . getConstantOperandVal ( ) == ) return DAG . getNode ( , DL , VecVT , Lo ) ; return DAG . getNode ( , DL , VecVT , Lo , Hi , DAG . getTargetConstant ( , DL , ) ) ;" LLVM,RISCV,2590,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerToScalableOp ( SDValue Op , SelectionDAG & DAG , unsigned NewOpc , bool HasMask ) const { MVT VT = Op . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SmallVector < SDValue , > Ops ; for ( const SDValue & V : Op -> op_values ( ) ) { assert ( ! isa < VTSDNode > ( V ) && ) ; if ( ! V . getValueType ( ) . isVector ( ) ) { Ops . push_back ( V ) ; continue ; } assert ( useRVVForFixedLengthVectorVT ( V . getSimpleValueType ( ) ) && ) ; Ops . push_back ( convertToScalableVector ( ContainerVT , V , DAG , Subtarget ) ) ; } SDLoc DL ( Op ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2591,"Predict the next statement of this code snippet: Ops . push_back ( V ) ; continue ; } assert ( useRVVForFixedLengthVectorVT ( V . getSimpleValueType ( ) ) && ) ; Ops . push_back ( convertToScalableVector ( ContainerVT , V , DAG , Subtarget ) ) ; } SDLoc DL ( Op ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ; if ( HasMask ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; SDValue ScalableRes = DAG . getNode ( NewOpc , DL , ContainerVT , Ops ) ; return convertFromScalableVector ( VT , ScalableRes , DAG , Subtarget ) ;" LLVM,RISCV,2592,"Predict the next statement of this code snippet: SDValue Vec = Op . getOperand ( ) ; EVT VecEVT = Vec . getValueType ( ) ; unsigned BaseOpc = ( Op . getOpcode ( ) ) ; while ( getTypeAction ( * DAG . getContext ( ) , VecEVT ) == TargetLowering :: TypeSplitVector ) { SDValue Lo , Hi ; std :: tie ( Lo , Hi ) = DAG . SplitVector ( Vec , DL ) ; VecEVT = Lo . getValueType ( ) ; Vec = DAG . getNode ( BaseOpc , DL , VecEVT , Lo , Hi ) ; } if ( ! isTypeLegal ( VecEVT ) ) return SDValue ( ) ;" LLVM,RISCV,2593,"Predict the next statement of this code snippet: unsigned IntNo = Op . getConstantOperandVal ( HasChain ? : ) ; SDLoc DL ( Op ) ; const * II = ( IntNo ) ; if ( ! II || ! II -> SplatOperand ) return SDValue ( ) ; unsigned SplatOp = II -> SplatOperand + HasChain ; assert ( SplatOp < Op . getNumOperands ( ) ) ; SmallVector < SDValue , > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ; SDValue & ScalarOp = Operands [ SplatOp ] ; MVT OpVT = ScalarOp . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( ! OpVT . isScalarInteger ( ) || OpVT == XLenVT ) return SDValue ( ) ; if ( OpVT . bitsLT ( XLenVT ) ) { unsigned ExtOpc = isa < ConstantSDNode > ( ScalarOp ) ? : ; ScalarOp = DAG . getNode ( ExtOpc , DL , XLenVT , ScalarOp ) ; return DAG . getNode ( Op -> getOpcode ( ) , DL , Op -> getVTList ( ) , Operands ) ; } assert ( II -> SplatOperand > && ) ;" LLVM,RISCV,2594,"Predict the next statement of this code snippet: MVT VecVT = Op . getSimpleValueType ( ) ; SDValue Src = Op . getOperand ( ) ; assert ( Src . getValueType ( ) . isVector ( ) && Src . getValueType ( ) . getVectorElementType ( ) == ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue SplatZero = DAG . getConstant ( , DL , XLenVT ) ; SDValue SplatTrueVal = DAG . getConstant ( ExtTrueVal , DL , XLenVT ) ; if ( VecVT . isScalableVector ( ) ) { bool IsRV32E64 = ! Subtarget . is64Bit ( ) && VecVT . getVectorElementType ( ) == ; if ( ! IsRV32E64 ) { SplatZero = DAG . getSplatVector ( VecVT , DL , SplatZero ) ; SplatTrueVal = DAG . getSplatVector ( VecVT , DL , SplatTrueVal ) ; } else { SplatZero = DAG . getNode ( , DL , VecVT , SplatZero ) ; SplatTrueVal = DAG . getNode ( , DL , VecVT , SplatTrueVal ) ; } return DAG . getNode ( , DL , VecVT , Src , SplatTrueVal , SplatZero ) ; } MVT ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; MVT I1ContainerVT = ( , ContainerVT . getVectorElementCount ( ) ) ; SDValue CC = convertToScalableVector ( I1ContainerVT , Src , DAG , Subtarget ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2595,"Predict the next statement of this code snippet: if ( ( Op . getNode ( ) ) ) { SDValue VL = getDefaultScalableVLOps ( VT , DL , DAG , Subtarget ) . second ; return DAG . getNode ( , DL , VT , VL ) ; } if ( ( Op . getNode ( ) ) ) { SDValue VL = getDefaultScalableVLOps ( VT , DL , DAG , Subtarget ) . second ; return DAG . getNode ( , DL , VT , VL ) ;" LLVM,RISCV,2596,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; SDValue SplatVal = Op . getOperand ( ) ; if ( ( Op . getNode ( ) ) ) { SDValue VL = getDefaultScalableVLOps ( VT , DL , DAG , Subtarget ) . second ; return DAG . getNode ( , DL , VT , VL ) ; } if ( ( Op . getNode ( ) ) ) { SDValue VL = getDefaultScalableVLOps ( VT , DL , DAG , Subtarget ) . second ; return DAG . getNode ( , DL , VT , VL ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( SplatVal . getValueType ( ) == XLenVT && ) ; MVT InterVT = VT . changeVectorElementType ( ) ;" LLVM,RISCV,2597,"Predict the next statement of this code snippet: MVT VecVT = Src . getSimpleValueType ( ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; } SDValue SplatOne = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SDValue SplatZero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SplatOne = DAG . getNode ( , DL , ContainerVT , SplatOne ) ;" LLVM,RISCV,2598,"Predict the next statement of this code snippet: if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; } SDValue SplatOne = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SDValue SplatZero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SplatOne = DAG . getNode ( , DL , ContainerVT , SplatOne ) ; SplatZero = DAG . getNode ( , DL , ContainerVT , SplatZero ) ; if ( VecVT . isScalableVector ( ) ) { SDValue Trunc = DAG . getNode ( , DL , VecVT , Src , SplatOne ) ;" LLVM,RISCV,2599,"Predict the next statement of this code snippet: std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; } unsigned BaseOpc ; CC ; SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; switch ( Op . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : case : { SDValue TrueMask = DAG . getNode ( , DL , ContainerVT , VL ) ; Vec = DAG . getNode ( , DL , ContainerVT , Vec , TrueMask , VL ) ; Vec = DAG . getNode ( , DL , XLenVT , Vec , Mask , VL ) ; CC = ; BaseOpc = ; break ; } case : case : Vec = DAG . getNode ( , DL , XLenVT , Vec , Mask , VL ) ; CC = ; BaseOpc = ; break ;" LLVM,RISCV,2600,"Predict the next statement of this code snippet: SmallVector < SDValue , > Ops ; for ( const auto & OpIdx : enumerate ( Op -> ops ( ) ) ) { SDValue V = OpIdx . value ( ) ; assert ( ! isa < VTSDNode > ( V ) && ) ; if ( ! V . getValueType ( ) . isFixedLengthVector ( ) ) { Ops . push_back ( V ) ; continue ; } MVT OpVT = V . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( OpVT ) ; assert ( useRVVForFixedLengthVectorVT ( OpVT ) && ) ; Ops . push_back ( convertToScalableVector ( ContainerVT , V , DAG , Subtarget ) ) ; }" LLVM,RISCV,2601,"Predict the next statement of this code snippet: assert ( useRVVForFixedLengthVectorVT ( OpVT ) && ) ; Ops . push_back ( convertToScalableVector ( ContainerVT , V , DAG , Subtarget ) ) ; } if ( ! VT . isFixedLengthVector ( ) ) return DAG . getNode ( ISDOpc , DL , VT , Ops ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ;" LLVM,RISCV,2602,"Predict the next statement of this code snippet: EVT VecEVT = Vec . getValueType ( ) ; if ( ! isTypeLegal ( VecEVT ) ) return SDValue ( ) ; MVT VecVT = VecEVT . getSimpleVT ( ) ; MVT VecEltVT = VecVT . getVectorElementType ( ) ; unsigned RVVOpcode = getRVVVPReductionOp ( Op . getOpcode ( ) ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ;" LLVM,RISCV,2603,"Predict the next statement of this code snippet: , , , , , } ; return matchBitmanipPat ( Op , BitmanipMasks ) ;" LLVM,RISCV,2604,"Predict the next statement of this code snippet: if ( Op . getOpcode ( ) == && isa < ConstantSDNode > ( Op . getOperand ( ) ) ) { Mask = Op . getConstantOperandVal ( ) ; Op = Op . getOperand ( ) ; } if ( Op . getOpcode ( ) != && Op . getOpcode ( ) != ) return None ; bool IsSHL = Op . getOpcode ( ) == ; if ( ! isa < ConstantSDNode > ( Op . getOperand ( ) ) ) return None ; uint64_t ShAmt = Op . getConstantOperandVal ( ) ; unsigned Width = Op . getValueType ( ) == ? : ; if ( ShAmt >= Width || ! isPowerOf2_64 ( ShAmt ) ) return None ; if ( BitmanipMasks . size ( ) == && ShAmt >= ( Width / ) ) return None ; SDValue Src = Op . getOperand ( ) ; bool SHLExpMask = IsSHL ; if ( ! Mask ) { if ( Src . getOpcode ( ) == && isa < ConstantSDNode > ( Src . getOperand ( ) ) ) { Mask = Src . getConstantOperandVal ( ) ; Src = Src . getOperand ( ) ;" LLVM,RISCV,2605,"Predict the next statement of this code snippet: Mask = Op . getConstantOperandVal ( ) ; Op = Op . getOperand ( ) ; } if ( Op . getOpcode ( ) != && Op . getOpcode ( ) != ) return None ; bool IsSHL = Op . getOpcode ( ) == ; if ( ! isa < ConstantSDNode > ( Op . getOperand ( ) ) ) return None ; uint64_t ShAmt = Op . getConstantOperandVal ( ) ; unsigned Width = Op . getValueType ( ) == ? : ; if ( ShAmt >= Width || ! isPowerOf2_64 ( ShAmt ) ) return None ; if ( BitmanipMasks . size ( ) == && ShAmt >= ( Width / ) ) return None ; SDValue Src = Op . getOperand ( ) ; bool SHLExpMask = IsSHL ;" LLVM,RISCV,2606,"Predict the next statement of this code snippet: static Optional < BitmanipPat > matchSHFLPat ( SDValue Op ) { static const uint64_t BitmanipMasks [ ] = {" LLVM,RISCV,2607,"Predict the next statement of this code snippet: static Optional < BitmanipPat > matchSHFLPat ( SDValue Op ) {" LLVM,RISCV,2608,"Predict the next statement of this code snippet: return CI -> isTailCall ( ) ;" LLVM,RISCV,2609,"Predict the next statement of this code snippet: bool TargetLowering :: mergeStoresAfterLegalization ( EVT VT ) const { return ! Subtarget . useRVVForFixedLengthVectors ( ) || ( VT . isFixedLengthVector ( ) && VT . getVectorElementType ( ) == ) ;" LLVM,RISCV,2610,"Predict the next statement of this code snippet: if ( SDValue V = transformAddShlImm ( N , DAG , Subtarget ) ) return V ;" LLVM,RISCV,2611,"Predict the next statement of this code snippet: if ( SDValue V = transformAddShlImm ( N , DAG , Subtarget ) ) return V ; return combineSelectAndUseCommutative ( N , DAG , false ) ;" LLVM,RISCV,2612,"Predict the next statement of this code snippet: return combineSelectAndUseCommutative ( N , DAG , true ) ;" LLVM,RISCV,2613,"Predict the next statement of this code snippet: static SDValue performANDCombine ( SDNode * N , SelectionDAG & DAG ) { return combineSelectAndUseCommutative ( N , DAG , true ) ;" LLVM,RISCV,2614,"Predict the next statement of this code snippet: if ( ! Subtarget . is64Bit ( ) ) return SDValue ( ) ; SelectionDAG & DAG = DCI . DAG ; SDValue Src = N -> getOperand ( ) ; EVT VT = N -> getValueType ( ) ; if ( VT != || Src . getValueType ( ) != ) return SDValue ( ) ; switch ( Src . getOpcode ( ) ) { default : return SDValue ( ) ; case : if ( ! Subtarget . hasStdExtM ( ) ) return SDValue ( ) ; LLVM_FALLTHROUGH ; case : case : break ; } if ( none_of ( N -> uses ( ) , [ ] ( SDNode * User ) { return User -> getOpcode ( ) == ; } ) ) return SDValue ( ) ; SmallVector < SDNode * , > SetCCs ; for ( SDNode :: use_iterator UI = Src . getNode ( ) -> use_begin ( ) , UE = Src . getNode ( ) -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; if ( User == N ) continue ; if ( UI . getUse ( ) . getResNo ( ) != Src . getResNo ( ) ) continue ; if ( User -> getOpcode ( ) == ) { SetCCs . push_back ( User ) ; continue ; } break ; } if ( SetCCs . empty ( ) ) return SDValue ( ) ; SDLoc DL ( N ) ; SDValue SExt = DAG . getNode ( , DL , , Src ) ; DCI . CombineTo ( N , SExt ) ;" LLVM,RISCV,2615,"Predict the next statement of this code snippet: if ( auto GREV = combineORToGREV ( SDValue ( N , ) , DAG , Subtarget ) ) return GREV ;" LLVM,RISCV,2616,"Predict the next statement of this code snippet: static SDValue performORCombine ( SDNode * N , SelectionDAG & DAG , const Subtarget & Subtarget ) { if ( Subtarget . hasStdExtZbp ( ) ) { if ( auto GREV = combineORToGREV ( SDValue ( N , ) , DAG , Subtarget ) ) return GREV ; if ( auto GORC = combineORToGORC ( SDValue ( N , ) , DAG , Subtarget ) ) return GORC ; if ( auto SHFL = combineORToSHFL ( SDValue ( N , ) , DAG , Subtarget ) ) return SHFL ; }" LLVM,RISCV,2617,"Predict the next statement of this code snippet: static SDValue performSUBCombine ( SDNode * N , SelectionDAG & DAG ) { SDValue N0 = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; return combineSelectAndUse ( N , N1 , N0 , DAG , false ) ;" LLVM,RISCV,2618,"Predict the next statement of this code snippet: SDValue N0 = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; return combineSelectAndUse ( N , N1 , N0 , DAG , false ) ;" LLVM,RISCV,2619,"Predict the next statement of this code snippet: static SDValue performXORCombine ( SDNode * N , SelectionDAG & DAG ) {" LLVM,RISCV,2620,"Predict the next statement of this code snippet: for ( const auto & ArgIdx : enumerate ( Args ) ) { MVT ArgVT = ArgIdx . value ( ) . VT ; if ( ArgVT . isVector ( ) && ArgVT . getVectorElementType ( ) == ) return ArgIdx . index ( ) ;" LLVM,RISCV,2621,"Predict the next statement of this code snippet: MVT ArgVT = ArgIdx . value ( ) . VT ; if ( ArgVT . isVector ( ) && ArgVT . getVectorElementType ( ) == ) return ArgIdx . index ( ) ; } return None ;" LLVM,RISCV,2622,"Predict the next statement of this code snippet: return true ;" LLVM,RISCV,2623,"Predict the next statement of this code snippet: bool TargetLowering :: shouldExpandBuildVectorWithShuffles ( EVT VT , unsigned DefinedValues ) const { return false ;" LLVM,RISCV,2624,"Predict the next statement of this code snippet: bool TargetLowering :: shouldExpandBuildVectorWithShuffles ( EVT VT , unsigned DefinedValues ) const { return false ;" LLVM,RISCV,2625,"Predict the next statement of this code snippet: bool shouldExpandShift ( SelectionDAG & DAG , SDNode * N ) const override {" LLVM,RISCV,2626,"Predict the next statement of this code snippet: if ( ABI == && ( Type == ) ) return false ;" LLVM,RISCV,2627,"Predict the next statement of this code snippet: bool TargetLowering :: shouldSignExtendTypeInLibCall ( EVT Type , bool IsSigned ) const { if ( Subtarget . is64Bit ( ) && Type == ) return true ; return IsSigned ;" LLVM,RISCV,2628,"Predict the next statement of this code snippet: return Operand == || Operand == ; default : return false ; } } return false ; default : return false ; } } ; for ( auto OpIdx : enumerate ( I -> operands ( ) ) ) { if ( ! IsSinker ( I , OpIdx . index ( ) ) ) continue ; Instruction * Op = dyn_cast < Instruction > ( OpIdx . value ( ) . get ( ) ) ; if ( ! Op || any_of ( Ops , [ & ] ( Use * U ) { return U -> get ( ) == Op ; } ) ) continue ; if ( ! match ( Op , m_Shuffle ( m_InsertElt ( m_Undef ( ) , m_Value ( ) , m_ZeroInt ( ) ) , m_Undef ( ) , m_ZeroMask ( ) ) ) ) continue ; for ( Use & U : Op -> uses ( ) ) { Instruction * Insn = cast < Instruction > ( U . getUser ( ) ) ; if ( ! IsSinker ( Insn , U . getOperandNo ( ) ) ) return false ; } Ops . push_back ( & Op -> getOperandUse ( ) ) ;" LLVM,RISCV,2629,"Predict the next statement of this code snippet: return false ; default : return false ; } } ; for ( auto OpIdx : enumerate ( I -> operands ( ) ) ) { if ( ! IsSinker ( I , OpIdx . index ( ) ) ) continue ; Instruction * Op = dyn_cast < Instruction > ( OpIdx . value ( ) . get ( ) ) ; if ( ! Op || any_of ( Ops , [ & ] ( Use * U ) { return U -> get ( ) == Op ; } ) ) continue ; if ( ! match ( Op , m_Shuffle ( m_InsertElt ( m_Undef ( ) , m_Value ( ) , m_ZeroInt ( ) ) , m_Undef ( ) , m_ZeroMask ( ) ) ) ) continue ; for ( Use & U : Op -> uses ( ) ) { Instruction * Insn = cast < Instruction > ( U . getUser ( ) ) ;" LLVM,RISCV,2630,"Predict the next statement of this code snippet: if ( ( LoC >> ) == HiC ) return DAG . getNode ( , DL , VT , Lo , VL ) ; } return DAG . getNode ( , DL , VT , Lo , Hi , VL ) ;" LLVM,RISCV,2631,"Predict the next statement of this code snippet: int32_t HiC = cast < ConstantSDNode > ( Hi ) -> getSExtValue ( ) ; if ( ( LoC >> ) == HiC ) return DAG . getNode ( , DL , VT , Lo , VL ) ; }" LLVM,RISCV,2632,"Predict the next statement of this code snippet: SDValue Hi = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , ) ) ;" LLVM,RISCV,2633,"Predict the next statement of this code snippet: Val = DAG . getNode ( , DL , , Val ) ; Parts [ ] = Val ; return true ; } if ( ValueVT . isScalableVector ( ) && PartVT . isScalableVector ( ) ) { LLVMContext & Context = * DAG . getContext ( ) ; EVT ValueEltVT = ValueVT . getVectorElementType ( ) ; EVT PartEltVT = PartVT . getVectorElementType ( ) ; unsigned ValueVTBitSize = ValueVT . getSizeInBits ( ) . getKnownMinSize ( ) ; unsigned PartVTBitSize = PartVT . getSizeInBits ( ) . getKnownMinSize ( ) ; if ( PartVTBitSize % ValueVTBitSize == ) { if ( ValueEltVT != PartEltVT ) { unsigned Count = ValueVTBitSize / PartEltVT . getSizeInBits ( ) ; assert ( Count != && ) ;" LLVM,RISCV,2634,"Predict the next statement of this code snippet: if ( ! TLO . LegalOps ) return false ; EVT VT = Op . getValueType ( ) ; if ( VT . isVector ( ) ) return false ; if ( Op . getOpcode ( ) != ) return false ; ConstantSDNode * C = dyn_cast < ConstantSDNode > ( Op . getOperand ( ) ) ; if ( ! C ) return false ; const APInt & Mask = C -> getAPIntValue ( ) ; APInt ShrunkMask = Mask & DemandedBits ; APInt ExpandedMask = Mask | ~ DemandedBits ; auto IsLegalMask = [ ShrunkMask , ExpandedMask ] ( const APInt & Mask ) -> bool { return ShrunkMask . isSubsetOf ( Mask ) && Mask . isSubsetOf ( ExpandedMask ) ; } ; auto UseMask = [ Mask , Op , VT , & TLO ] ( const APInt & NewMask ) -> bool { if ( NewMask == Mask ) return true ; SDLoc DL ( Op ) ; SDValue NewC = TLO . DAG . getConstant ( NewMask , DL , VT ) ;" LLVM,RISCV,2635,"Predict the next statement of this code snippet: auto UseMask = [ Mask , Op , VT , & TLO ] ( const APInt & NewMask ) -> bool { if ( NewMask == Mask ) return true ; SDLoc DL ( Op ) ; SDValue NewC = TLO . DAG . getConstant ( NewMask , DL , VT ) ; SDValue NewOp = TLO . DAG . getNode ( , DL , VT , Op . getOperand ( ) , NewC ) ; return TLO . CombineTo ( Op , NewOp ) ; } ; if ( ShrunkMask . isSignedIntN ( ) ) return false ; if ( Subtarget . hasStdExtZbb ( ) || Subtarget . hasStdExtZbp ( ) ) { APInt NewMask = APInt ( Mask . getBitWidth ( ) , ) ; if ( IsLegalMask ( NewMask ) ) return UseMask ( NewMask ) ; } if ( VT == ) { APInt NewMask = APInt ( , ) ; if ( IsLegalMask ( NewMask ) ) return UseMask ( NewMask ) ; } if ( ! ExpandedMask . isNegative ( ) ) return false ; unsigned MinSignedBits = ExpandedMask . getMinSignedBits ( ) ; APInt NewMask = ShrunkMask ;" LLVM,RISCV,2636,"Predict the next statement of this code snippet: SDLoc DL ( N ) ; SDValue New0 = DAG . getNode ( , DL , VT , N0 -> getOperand ( ) , DAG . getConstant ( C1 / C0 , DL , VT ) ) ; SDValue New1 = DAG . getNode ( , DL , VT , New0 , DAG . getConstant ( C0 , DL , VT ) ) ; if ( ( C1 % C0 ) == ) return New1 ;" LLVM,RISCV,2637,"Predict the next statement of this code snippet: if ( ! N0C || ! N1C ) return SDValue ( ) ; int64_t C0 = N0C -> getSExtValue ( ) ; int64_t C1 = N1C -> getSExtValue ( ) ; if ( C0 <= || C1 <= ) return SDValue ( ) ; int64_t Bits = std :: min ( C0 , C1 ) ; int64_t Diff = std :: abs ( C0 - C1 ) ; if ( Diff != && Diff != && Diff != ) return SDValue ( ) ; SDLoc DL ( N ) ; SDValue NS = ( C0 < C1 ) ? N0 -> getOperand ( ) : N1 -> getOperand ( ) ; SDValue NL = ( C0 > C1 ) ? N0 -> getOperand ( ) : N1 -> getOperand ( ) ; SDValue NA0 = DAG . getNode ( , DL , VT , NL , DAG . getConstant ( Diff , DL , VT ) ) ; SDValue NA1 = DAG . getNode ( , DL , VT , NA0 , NS ) ; return DAG . getNode ( , DL , VT , NA1 , DAG . getConstant ( Bits , DL , VT ) ) ;" LLVM,RISCV,2638,"Predict the next statement of this code snippet: CC = ; return ; } if ( CC == && isOneConstant ( RHS ) ) { RHS = LHS ; LHS = DAG . getConstant ( , DL , RHS . getValueType ( ) ) ; CC = ; return ; } switch ( CC ) { default : break ; case : case : case : case : CC = ( CC ) ; std :: swap ( LHS , RHS ) ; break ; }" LLVM,RISCV,2639,"Predict the next statement of this code snippet: assert ( VA . getLocVT ( ) == && VA . getValVT ( ) == && ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; if ( VA . isMemLoc ( ) ) { int FI = MFI . CreateFixedObject ( , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , ) ; return DAG . getLoad ( , DL , Chain , FIN , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ; } assert ( VA . isRegLoc ( ) && ) ; Register LoVReg = RegInfo . createVirtualRegister ( & ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , LoVReg ) ; SDValue Lo = DAG . getCopyFromReg ( Chain , DL , LoVReg , ) ; SDValue Hi ; if ( VA . getLocReg ( ) == ) { int FI = MFI . CreateFixedObject ( , , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , ) ;" LLVM,RISCV,2640,"Predict the next statement of this code snippet: EVT ValVT = VA . getValVT ( ) ; EVT PtrVT = ( DAG . getDataLayout ( ) . getPointerSizeInBits ( ) ) ; int FI = MFI . CreateFixedObject ( ValVT . getStoreSize ( ) , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , PtrVT ) ; SDValue Val ; ExtType ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full :" LLVM,RISCV,2641,"Predict the next statement of this code snippet: static SDValue unpackFromRegLoc ( SelectionDAG & DAG , SDValue Chain , const CCValAssign & VA , const SDLoc & DL , const TargetLowering & TLI ) { MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; SDValue Val ;" LLVM,RISCV,2642,"Predict the next statement of this code snippet: bool TargetLowering :: useRVVForFixedLengthVectorVT ( MVT VT ) const {" LLVM,RISCV,2643,"Predict the next statement of this code snippet: return :: useRVVForFixedLengthVectorVT ( VT , Subtarget ) ;" LLVM,RISCV,2644,"Predict the next statement of this code snippet: void TargetLowering :: validateCCReservedRegs ( const SmallVectorImpl < std :: pair < llvm :: Register , llvm :: SDValue >> & Regs , MachineFunction & MF ) const { const Function & F = MF . getFunction ( ) ; const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; if ( llvm :: any_of ( Regs , [ & STI ] ( auto Reg ) { return STI . isRegisterReservedByUser ( Reg . first ) ;" LLVM,RISCV,2645,"Predict the next statement of this code snippet: void TargetLowering :: validateCCReservedRegs ( const SmallVectorImpl < std :: pair < llvm :: Register , llvm :: SDValue >> & Regs , MachineFunction & MF ) const { const Function & F = MF . getFunction ( ) ; const Subtarget & STI = MF . getSubtarget < Subtarget > ( ) ; if ( llvm :: any_of ( Regs , [ & STI ] ( auto Reg ) { return STI . isRegisterReservedByUser ( Reg . first ) ;" LLVM,RISCV,2646,"Predict the next statement of this code snippet: auto Idx = ( Opc , :: frm ) ; if ( Idx < ) return ;" LLVM,RISCV,2647,"Predict the next statement of this code snippet: SDValue TargetLowering :: BuildSDIVPow2 ( SDNode * N , const APInt & Divisor , SelectionDAG & DAG , SmallVectorImpl < SDNode * > & Created ) const { AttributeList Attr = DAG . getMachineFunction ( ) . getFunction ( ) . getAttributes ( ) ; if ( isIntDivCheap ( N -> getValueType ( ) , Attr ) ) return SDValue ( N , ) ; assert ( ( Divisor . isPowerOf2 ( ) || Divisor . isNegatedPowerOf2 ( ) ) && ) ; if ( ! Subtarget . hasStdExtZbt ( ) ) return SDValue ( ) ; unsigned Lg2 = Divisor . countTrailingZeros ( ) ; if ( Lg2 == || Lg2 >= ) return SDValue ( ) ; EVT VT = N -> getValueType ( ) ; if ( VT != && ! ( Subtarget . is64Bit ( ) && VT == ) ) return SDValue ( ) ; SDLoc DL ( N ) ; SDValue N0 = N -> getOperand ( ) ; SDValue Zero = DAG . getConstant ( , DL , VT ) ; SDValue Pow2MinusOne = DAG . getConstant ( ( << Lg2 ) - , DL , VT ) ; SDValue Cmp = DAG . getSetCC ( DL , VT , N0 , Zero , ) ; SDValue Add = DAG . getNode ( , DL , VT , N0 , Pow2MinusOne ) ; SDValue Sel = DAG . getNode ( , DL , VT , Cmp , Add , N0 ) ; Created . push_back ( Cmp . getNode ( ) ) ;" LLVM,RISCV,2648,"Predict the next statement of this code snippet: SDValue VL = N -> getOperand ( ) ; if ( Op0 . getOperand ( ) != Mask || Op0 . getOperand ( ) != VL ) return SDValue ( ) ; MVT VT = N -> getSimpleValueType ( ) ; unsigned NarrowSize = VT . getScalarSizeInBits ( ) / ; MVT NarrowVT = ( ( NarrowSize ) , VT . getVectorElementCount ( ) ) ; SDLoc DL ( N ) ; if ( IsVWMULSU || Op0 . getOpcode ( ) == Op1 . getOpcode ( ) ) { if ( ! Op1 . hasOneUse ( ) ) return SDValue ( ) ; if ( Op1 . getOperand ( ) != Mask || Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; } else if ( Op1 . getOpcode ( ) == ) { if ( Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; unsigned EltBits = VT . getScalarSizeInBits ( ) ; unsigned ScalarBits = Op1 . getValueSizeInBits ( ) ;" LLVM,RISCV,2649,"Predict the next statement of this code snippet: bool IsZeroExt = Op0 . getOpcode ( ) == ; bool IsVWMULSU = IsSignExt && Op1 . getOpcode ( ) == ; if ( ( ! IsSignExt && ! IsZeroExt ) || ! Op0 . hasOneUse ( ) ) return SDValue ( ) ; SDValue Mask = N -> getOperand ( ) ; SDValue VL = N -> getOperand ( ) ; if ( Op0 . getOperand ( ) != Mask || Op0 . getOperand ( ) != VL ) return SDValue ( ) ; MVT VT = N -> getSimpleValueType ( ) ; unsigned NarrowSize = VT . getScalarSizeInBits ( ) / ; MVT NarrowVT = ( ( NarrowSize ) , VT . getVectorElementCount ( ) ) ; SDLoc DL ( N ) ; if ( IsVWMULSU || Op0 . getOpcode ( ) == Op1 . getOpcode ( ) ) { if ( ! Op1 . hasOneUse ( ) ) return SDValue ( ) ; if ( Op1 . getOperand ( ) != Mask || Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; } else if ( Op1 . getOpcode ( ) == ) { if ( Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; unsigned EltBits = VT . getScalarSizeInBits ( ) ; unsigned ScalarBits = Op1 . getValueSizeInBits ( ) ; if ( ScalarBits < EltBits ) return SDValue ( ) ; if ( IsSignExt ) { if ( DAG . ComputeNumSignBits ( Op1 ) <= ( ScalarBits - NarrowSize ) ) return SDValue ( ) ; } else { APInt Mask = APInt :: getBitsSetFrom ( ScalarBits , NarrowSize ) ; if ( ! DAG . MaskedValueIsZero ( Op1 , Mask ) ) return SDValue ( ) ; } Op1 = DAG . getNode ( , DL , NarrowVT , Op1 , VL ) ; } else return SDValue ( ) ;" LLVM,RISCV,2650,"Predict the next statement of this code snippet: unsigned BitWidth = Known . getBitWidth ( ) ; unsigned Opc = Op . getOpcode ( ) ; assert ( ( Opc >= || Opc == || Opc == || Opc == ) && ) ; Known . resetAll ( ) ; switch ( Opc ) { default : break ; case : { Known = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; if ( Known . isUnknown ( ) ) break ; KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; Known = KnownBits :: commonBits ( Known , Known2 ) ; break ; } case : { KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: urem ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: udiv ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleTZ = Known2 . trunc ( ) . countMaxTrailingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleTZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleLZ = Known2 . trunc ( ) . countMaxLeadingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleLZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; }" LLVM,RISCV,2651,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : return ; case : case : { if ( Op . getValueType ( ) == && isa < ConstantSDNode > ( Op . getOperand ( ) ) && ( Op . getConstantOperandVal ( ) & ) == ) { unsigned Tmp = DAG . ComputeNumSignBits ( Op . getOperand ( ) , Depth + ) ; if ( Tmp > ) return ; }" LLVM,RISCV,2652,"Predict the next statement of this code snippet: SDValue NewOp2 = DAG . getNode ( , DL , , N -> getOperand ( ) ) ; SDValue NewRes = DAG . getNode ( WOpcode , DL , , NewOp1 , NewOp2 ) ;" LLVM,RISCV,2653,"Predict the next statement of this code snippet: return emitSelectPseudo ( MI , BB , Subtarget ) ; case : return emitBuildPairF64Pseudo ( MI , BB ) ; case : return emitSplitF64Pseudo ( MI , BB ) ; case : return emitQuietFCMP ( MI , BB , , , Subtarget ) ; case : return emitQuietFCMP ( MI , BB , , , Subtarget ) ; case :" LLVM,RISCV,2654,"Predict the next statement of this code snippet: MachineRegisterInfo & MRI = BB -> getParent ( ) -> getRegInfo ( ) ; Register SavedFFlags = MRI . createVirtualRegister ( & ) ; const TargetInstrInfo & TII = * BB -> getParent ( ) -> getSubtarget ( ) . getInstrInfo ( ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , SavedFFlags ) ; auto MIB = BuildMI ( * BB , MI , DL , TII . get ( RelOpcode ) , DstReg ) . addReg ( Src1Reg ) . addReg ( Src2Reg ) ; if ( MI . getFlag ( MachineInstr :: MIFlag :: NoFPExcept ) ) MIB -> setFlag ( MachineInstr :: MIFlag :: NoFPExcept ) ; BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( SavedFFlags , RegState :: Kill ) ; auto MIB2 = BuildMI ( * BB , MI , DL , TII . get ( EqOpcode ) , ) . addReg ( Src1Reg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addReg ( Src2Reg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) ; if ( MI . getFlag ( MachineInstr :: MIFlag :: NoFPExcept ) ) MIB2 -> setFlag ( MachineInstr :: MIFlag :: NoFPExcept ) ; MI . eraseFromParent ( ) ;" LLVM,RISCV,2655,"Predict the next statement of this code snippet: unsigned TargetLowering :: getJumpTableEncoding ( ) const { if ( Subtarget . is64Bit ( ) && ! isPositionIndependent ( ) && getTargetMachine ( ) . getCodeModel ( ) == CodeModel :: Small ) {" LLVM,RISCV,2656,"Predict the next statement of this code snippet: switch ( IntNo ) { default : llvm_unreachable ( ) ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,2657,"Predict the next statement of this code snippet: switch ( Opcode ) { default : llvm_unreachable ( ) ; case : { SDValue Zero = DAG . getConstantFP ( Flags . hasNoSignedZeros ( ) ? : - , DL , EltVT ) ; return std :: make_tuple ( , Op . getOperand ( ) , Zero ) ; } case : return std :: make_tuple ( , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : return std :: make_tuple ( , Op . getOperand ( ) , DAG . getNeutralElement ( BaseOpcode , DL , EltVT , Flags ) ) ; case : return std :: make_tuple ( , Op . getOperand ( ) , DAG . getNeutralElement ( BaseOpcode , DL , EltVT , Flags ) ) ; }" LLVM,RISCV,2658,"Predict the next statement of this code snippet: Info . opc = ; Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . align = Align ( ) ; Info . flags = MachineMemOperand :: MOLoad | MachineMemOperand :: MOStore | MachineMemOperand :: MOVolatile ; return true ; case : Info . opc = ; Info . ptrVal = I . getArgOperand ( ) ; Info . memVT = getValueType ( DL , I . getType ( ) -> getScalarType ( ) ) ; Info . align = Align ( DL . getTypeSizeInBits ( I . getType ( ) -> getScalarType ( ) ) / ) ; Info . size = MemoryLocation :: UnknownSize ; Info . flags |= MachineMemOperand :: MOLoad ; return true ;" LLVM,RISCV,2659,"Predict the next statement of this code snippet: const * II = ( IntNo ) ; if ( ! II ) return SDValue ( ) ;" LLVM,RISCV,2660,"Predict the next statement of this code snippet: bool TargetLowering :: hasAndNotCompare ( SDValue Y ) const {" LLVM,RISCV,2661,"Predict the next statement of this code snippet: bool TargetLowering :: isFPImmLegal ( const APFloat & Imm , EVT VT , bool ForCodeSize ) const { if ( VT == && ! Subtarget . hasStdExtZfh ( ) ) return false ;" LLVM,RISCV,2662,"Predict the next statement of this code snippet: bool TargetLowering :: isFPImmLegal ( const APFloat & Imm , EVT VT , bool ForCodeSize ) const { if ( VT == && ! Subtarget . hasStdExtZfh ( ) ) return false ; if ( VT == && ! Subtarget . hasStdExtF ( ) ) return false ;" LLVM,RISCV,2663,"Predict the next statement of this code snippet: int Srcs [ ] = { - , - } ; for ( int i = ; i != Size ; ++ i ) { if ( Mask [ i ] < ) continue ; int Pol = i % ; int Src = Mask [ i ] / Size ; if ( Srcs [ Pol ] < ) Srcs [ Pol ] = Src ; if ( Srcs [ Pol ] != Src ) return false ; int Elt = Mask [ i ] % Size ; if ( Elt != i / ) return false ; } if ( Srcs [ ] < || Srcs [ ] < || Srcs [ ] == Srcs [ ] ) return false ;" LLVM,RISCV,2664,"Predict the next statement of this code snippet: bool TargetLowering :: isZExtFree ( SDValue Val , EVT VT2 ) const { if ( auto * LD = dyn_cast < LoadSDNode > ( Val ) ) {" LLVM,RISCV,2665,"Predict the next statement of this code snippet: SDValue Val = Parts [ ] ; EVT ValueEltVT = ValueVT . getVectorElementType ( ) ; EVT PartEltVT = PartVT . getVectorElementType ( ) ; unsigned ValueVTBitSize = ValueVT . getSizeInBits ( ) . getKnownMinSize ( ) ; unsigned PartVTBitSize = PartVT . getSizeInBits ( ) . getKnownMinSize ( ) ; if ( PartVTBitSize % ValueVTBitSize == ) { assert ( PartVTBitSize >= ValueVTBitSize ) ; EVT SameEltTypeVT = ValueVT ; if ( ValueEltVT != PartEltVT ) { unsigned Count = PartVTBitSize / ValueEltVT . getFixedSizeInBits ( ) ; assert ( Count != && ) ; SameEltTypeVT = EVT :: getVectorVT ( Context , ValueEltVT , Count , true ) ; Val = DAG . getNode ( , DL , SameEltTypeVT , Val ) ; } Val = DAG . getNode ( , DL , ValueVT , Val , DAG . getVectorIdxConstant ( , DL ) ) ; return Val ; } }" LLVM,RISCV,2666,"Predict the next statement of this code snippet: const MCExpr * TargetLowering :: LowerCustomJumpTableEntry ( const MachineJumpTableInfo * MJTI , const MachineBasicBlock * MBB , unsigned uid , MCContext & Ctx ) const { assert ( Subtarget . is64Bit ( ) && ! isPositionIndependent ( ) && getTargetMachine ( ) . getCodeModel ( ) == CodeModel :: Small ) ; return MCSymbolRefExpr :: create ( MBB -> getSymbol ( ) , Ctx ) ;" LLVM,RISCV,2667,"Predict the next statement of this code snippet: assert ( Subtarget . is64Bit ( ) && ! isPositionIndependent ( ) && getTargetMachine ( ) . getCodeModel ( ) == CodeModel :: Small ) ; return MCSymbolRefExpr :: create ( MBB -> getSymbol ( ) , Ctx ) ;" LLVM,RISCV,2668,"Predict the next statement of this code snippet: if ( NumElts <= LargestEltVT . getSizeInBits ( ) ) { assert ( isPowerOf2_32 ( NumElts ) && ) ; WideEltVT = ( NumElts ) ; WidenVecLen = ; ExtractElementIdx = DAG . getConstant ( , DL , XLenVT ) ; ExtractBitIdx = Idx ; } else { WideEltVT = LargestEltVT ; WidenVecLen = NumElts / WideEltVT . getSizeInBits ( ) ; ExtractElementIdx = DAG . getNode ( , DL , XLenVT , Idx , DAG . getConstant ( Log2_64 ( WideEltVT . getSizeInBits ( ) ) , DL , XLenVT ) ) ; ExtractBitIdx = DAG . getNode ( , DL , XLenVT , Idx , DAG . getConstant ( WideEltVT . getSizeInBits ( ) - , DL , XLenVT ) ) ; } MVT WideVT = ( WideEltVT , WidenVecLen ) ; Vec = DAG . getNode ( , DL , WideVT , Vec ) ; SDValue ExtractElt = DAG . getNode ( , DL , XLenVT , Vec , ExtractElementIdx ) ; SDValue ShiftRight = DAG . getNode ( , DL , XLenVT , ExtractElt , ExtractBitIdx ) ; return DAG . getNode ( , DL , XLenVT , ShiftRight , DAG . getConstant ( , DL , XLenVT ) ) ; } } MVT WideVT = ( , VecVT . getVectorElementCount ( ) ) ; Vec = DAG . getNode ( , DL , WideVT , Vec ) ; return DAG . getNode ( , DL , EltVT , Vec , Idx ) ; }" LLVM,RISCV,2669,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerFPVECREDUCE ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; MVT VecEltVT = Op . getSimpleValueType ( ) ; unsigned RVVOpcode ; SDValue VectorVal , ScalarVal ; std :: tie ( RVVOpcode , VectorVal , ScalarVal ) = getRVVFPReductionOpAndOperands ( Op , DAG , VecEltVT ) ; MVT VecVT = VectorVal . getSimpleValueType ( ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; VectorVal = convertToScalableVector ( ContainerVT , VectorVal , DAG , Subtarget ) ; } MVT M1VT = getLMUL1VT ( VectorVal . getSimpleValueType ( ) ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue ScalarSplat = lowerScalarSplat ( ScalarVal , DAG . getConstant ( , DL , XLenVT ) , M1VT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2670,"Predict the next statement of this code snippet: if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; VectorVal = convertToScalableVector ( ContainerVT , VectorVal , DAG , Subtarget ) ; } MVT M1VT = getLMUL1VT ( VectorVal . getSimpleValueType ( ) ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask , VL ;" LLVM,RISCV,2671,"Predict the next statement of this code snippet: static SDValue lowerFP_TO_INT_SAT ( SDValue Op , SelectionDAG & DAG , const Subtarget & Subtarget ) { SDValue Src = Op . getOperand ( ) ; EVT DstVT = Op . getValueType ( ) ; EVT SatVT = cast < VTSDNode > ( Op . getOperand ( ) ) -> getVT ( ) ; bool IsSigned = Op . getOpcode ( ) == ; unsigned Opc ; if ( SatVT == DstVT ) Opc = IsSigned ? : ; else if ( DstVT == && SatVT == ) Opc = IsSigned ? : ; else return SDValue ( ) ; SDLoc DL ( Op ) ; SDValue FpToInt = DAG . getNode ( Opc , DL , DstVT , Src , DAG . getTargetConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ;" LLVM,RISCV,2672,"Predict the next statement of this code snippet: Truncated = DAG . getSelect ( DL , VT , NeedAdjust , Adjust , Truncated ) ; } Truncated = DAG . getNode ( , DL , VT , Truncated , Src ) ; const fltSemantics & FltSem = DAG . EVTToAPFloatSemantics ( VT ) ; unsigned Precision = APFloat :: semanticsPrecision ( FltSem ) ; APFloat MaxVal = APFloat ( FltSem ) ; MaxVal . convertFromAPInt ( APInt :: getOneBitSet ( Precision , Precision - ) , false , APFloat :: rmNearestTiesToEven ) ; SDValue MaxValNode = DAG . getConstantFP ( MaxVal , DL , VT ) ; SDValue Abs = DAG . getNode ( , DL , VT , Src ) ;" LLVM,RISCV,2673,"Predict the next statement of this code snippet: assert ( isPowerOf2_32 ( BitWidth ) && BitWidth >= && ) ; return DAG . getNode ( Opc , DL , XLenVT , Op . getOperand ( ) , DAG . getConstant ( ( BitWidth / ) - , DL , XLenVT ) ) ; } case : case : { unsigned Opc = IntNo == ? : ; return DAG . getNode ( Opc , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) ) ; } case : case : { unsigned Opc = IntNo == ? : ; return DAG . getNode ( Opc , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) ) ; } case : return DAG . getNode ( , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : return DAG . getNode ( , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : return DAG . getNode ( , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : assert ( Op . getValueType ( ) == XLenVT && ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , Op . getOperand ( ) ) ; case : return lowerScalarSplat ( Op . getOperand ( ) , Op . getOperand ( ) , Op . getSimpleValueType ( ) , DL , DAG , Subtarget ) ; case : return DAG . getNode ( , DL , Op . getValueType ( ) , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : { SDValue Scalar = Op . getOperand ( ) ; if ( Scalar . getValueType ( ) . bitsLE ( XLenVT ) ) { Scalar = DAG . getNode ( , DL , XLenVT , Scalar ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , Op . getOperand ( ) , Scalar , Op . getOperand ( ) ) ; } assert ( Scalar . getValueType ( ) == && ) ;" LLVM,RISCV,2674,"Predict the next statement of this code snippet: bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT VT = Op -> getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue PassThru = Op . getOperand ( ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( IsUnmasked ? : , DL , XLenVT ) ; auto * Load = cast < MemIntrinsicSDNode > ( Op ) ; SmallVector < SDValue , > Ops { Load -> getChain ( ) , IntID } ; if ( IsUnmasked ) Ops . push_back ( DAG . getUNDEF ( ContainerVT ) ) ; else Ops . push_back ( PassThru ) ; Ops . push_back ( Op . getOperand ( ) ) ; Ops . push_back ( Op . getOperand ( ) ) ;" LLVM,RISCV,2675,"Predict the next statement of this code snippet: unsigned IntNo = Op . getConstantOperandVal ( ) ; switch ( IntNo ) { default : break ; case : { SDLoc DL ( Op ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask = Op . getOperand ( ) ; bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT VT = Op -> getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue PassThru = Op . getOperand ( ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( IsUnmasked ? : , DL , XLenVT ) ; auto * Load = cast < MemIntrinsicSDNode > ( Op ) ; SmallVector < SDValue , > Ops { Load -> getChain ( ) , IntID } ; if ( IsUnmasked ) Ops . push_back ( DAG . getUNDEF ( ContainerVT ) ) ; else Ops . push_back ( PassThru ) ; Ops . push_back ( Op . getOperand ( ) ) ; Ops . push_back ( Op . getOperand ( ) ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; if ( ! IsUnmasked ) { SDValue Policy = DAG . getTargetConstant ( , DL , XLenVT ) ; Ops . push_back ( Policy ) ; } SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ; SDValue Result = DAG . getMemIntrinsicNode ( , DL , VTs , Ops , Load -> getMemoryVT ( ) , Load -> getMemOperand ( ) ) ; SDValue Chain = Result . getValue ( ) ; Result = convertFromScalableVector ( VT , Result , DAG , Subtarget ) ; return DAG . getMergeValues ( { Result , Chain } , DL ) ;" LLVM,RISCV,2676,"Predict the next statement of this code snippet: ContainerVT = getContainerForFixedLengthVector ( VT ) ; Op1 = convertToScalableVector ( ContainerVT , Op1 , DAG , Subtarget ) ; Op2 = convertToScalableVector ( ContainerVT , Op2 , DAG , Subtarget ) ; } SDLoc DL ( Op ) ;" LLVM,RISCV,2677,"Predict the next statement of this code snippet: ContainerVT = getContainerForFixedLengthVector ( VT ) ; Op1 = convertToScalableVector ( ContainerVT , Op1 , DAG , Subtarget ) ; Op2 = convertToScalableVector ( ContainerVT , Op2 , DAG , Subtarget ) ; } SDLoc DL ( Op ) ; SDValue Val = DAG . getNode ( MaskOpc , DL , ContainerVT , Op1 , Op2 , VL ) ; if ( ! IsFixed ) return Val ;" LLVM,RISCV,2678,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerMaskedGather ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; MVT VT = Op . getSimpleValueType ( ) ; const auto * MemSD = cast < MemSDNode > ( Op . getNode ( ) ) ; EVT MemVT = MemSD -> getMemoryVT ( ) ; MachineMemOperand * MMO = MemSD -> getMemOperand ( ) ; SDValue Chain = MemSD -> getChain ( ) ; SDValue BasePtr = MemSD -> getBasePtr ( ) ; LoadExtType ; SDValue Index , Mask , PassThru , VL ; if ( auto * VPGN = dyn_cast < VPGatherSDNode > ( Op . getNode ( ) ) ) { Index = VPGN -> getIndex ( ) ; Mask = VPGN -> getMask ( ) ; PassThru = DAG . getUNDEF ( VT ) ; VL = VPGN -> getVectorLength ( ) ; LoadExtType = ; } else { auto * MGN = cast < MaskedGatherSDNode > ( Op . getNode ( ) ) ; Index = MGN -> getIndex ( ) ; Mask = MGN -> getMask ( ) ; PassThru = MGN -> getPassThru ( ) ; LoadExtType = MGN -> getExtensionType ( ) ; } MVT IndexVT = Index . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( BasePtr . getSimpleValueType ( ) == XLenVT && ) ; assert ( LoadExtType == && ) ; ( void ) LoadExtType ; bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { if ( VT . bitsGE ( IndexVT ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; } else { IndexVT = getContainerForFixedLengthVector ( IndexVT ) ; ContainerVT = ( ContainerVT . getVectorElementType ( ) , IndexVT . getVectorElementCount ( ) ) ; } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; if ( XLenVT == && IndexVT . getVectorElementType ( ) . bitsGT ( XLenVT ) ) { IndexVT = IndexVT . changeVectorElementType ( XLenVT ) ; SDValue TrueMask = DAG . getNode ( , DL , Mask . getValueType ( ) , VL ) ; Index = DAG . getNode ( , DL , IndexVT , Index , TrueMask , VL ) ; }" LLVM,RISCV,2679,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; const auto * MemSD = cast < MemSDNode > ( Op ) ; EVT MemVT = MemSD -> getMemoryVT ( ) ; MachineMemOperand * MMO = MemSD -> getMemOperand ( ) ; SDValue Chain = MemSD -> getChain ( ) ; SDValue BasePtr = MemSD -> getBasePtr ( ) ; SDValue Mask , PassThru , VL ; if ( const auto * VPLoad = dyn_cast < VPLoadSDNode > ( Op ) ) { Mask = VPLoad -> getMask ( ) ; PassThru = DAG . getUNDEF ( VT ) ; VL = VPLoad -> getVectorLength ( ) ; } else { const auto * MLoad = cast < MaskedLoadSDNode > ( Op ) ; Mask = MLoad -> getMask ( ) ; PassThru = MLoad -> getPassThru ( ) ; } bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ;" LLVM,RISCV,2680,"Predict the next statement of this code snippet: } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; Val = convertToScalableVector ( ContainerVT , Val , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; if ( XLenVT == && IndexVT . getVectorElementType ( ) . bitsGT ( XLenVT ) ) { IndexVT = IndexVT . changeVectorElementType ( XLenVT ) ; SDValue TrueMask = DAG . getNode ( , DL , Mask . getValueType ( ) , VL ) ; Index = DAG . getNode ( , DL , IndexVT , Index , TrueMask , VL ) ; } unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { Chain , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ; Ops . push_back ( Val ) ; Ops . push_back ( BasePtr ) ; Ops . push_back ( Index ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ;" LLVM,RISCV,2681,"Predict the next statement of this code snippet: ConstantSDNode * Const = dyn_cast < ConstantSDNode > ( Scalar ) ; if ( isOneConstant ( VL ) && ( ! Const || isNullConstant ( Scalar ) || ! isInt < > ( Const -> getSExtValue ( ) ) ) ) return DAG . getNode ( , DL , VT , DAG . getUNDEF ( VT ) , Scalar , VL ) ; return DAG . getNode ( , DL , VT , Scalar , VL ) ; }" LLVM,RISCV,2682,"Predict the next statement of this code snippet: if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Vec = convertToScalableVector ( ContainerVT , Vec , DAG , Subtarget ) ; } MVT M1VT = getLMUL1VT ( ContainerVT ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue NeutralElem = DAG . getNeutralElement ( BaseOpc , DL , VecEltVT , SDNodeFlags ( ) ) ;" LLVM,RISCV,2683,"Predict the next statement of this code snippet: std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue NeutralElem = DAG . getNeutralElement ( BaseOpc , DL , VecEltVT , SDNodeFlags ( ) ) ; SDValue IdentitySplat = lowerScalarSplat ( NeutralElem , DAG . getConstant ( , DL , XLenVT ) , M1VT , DL , DAG , Subtarget ) ; SDValue Reduction = DAG . getNode ( RVVOpcode , DL , M1VT , DAG . getUNDEF ( M1VT ) , Vec , IdentitySplat , Mask , VL ) ; SDValue Elt0 = DAG . getNode ( , DL , VecEltVT , Reduction , DAG . getConstant ( , DL , XLenVT ) ) ; return DAG . getSExtOrTrunc ( Elt0 , DL , Op . getValueType ( ) ) ;" LLVM,RISCV,2684,"Predict the next statement of this code snippet: assert ( ( Op . getOpcode ( ) == || Op . getOpcode ( ) == ) && ) ; if ( ! Subtarget . hasVInstructions ( ) ) return SDValue ( ) ; bool HasChain = Op . getOpcode ( ) == ; unsigned IntNo = Op . getConstantOperandVal ( HasChain ? : ) ; SDLoc DL ( Op ) ; const * II = ( IntNo ) ; if ( ! II || ! II -> hasSplatOperand ( ) ) return SDValue ( ) ; unsigned SplatOp = II -> SplatOperand + + HasChain ; assert ( SplatOp < Op . getNumOperands ( ) ) ; SmallVector < SDValue , > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ; SDValue & ScalarOp = Operands [ SplatOp ] ; MVT OpVT = ScalarOp . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( ! OpVT . isScalarInteger ( ) || OpVT == XLenVT ) return SDValue ( ) ;" LLVM,RISCV,2685,"Predict the next statement of this code snippet: SDValue StartSplat = lowerScalarSplat ( Op . getOperand ( ) , DAG . getConstant ( , DL , XLenVT ) , M1VT , DL , DAG , Subtarget ) ; SDValue Reduction = DAG . getNode ( RVVOpcode , DL , M1VT , StartSplat , Vec , StartSplat , Mask , VL ) ; SDValue Elt0 = DAG . getNode ( , DL , ResVT , Reduction , DAG . getConstant ( , DL , XLenVT ) ) ; if ( ! VecVT . isInteger ( ) ) return Elt0 ; return DAG . getSExtOrTrunc ( Elt0 , DL , Op . getValueType ( ) ) ;" LLVM,RISCV,2686,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerVPREDUCE ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; SDValue Vec = Op . getOperand ( ) ; EVT VecEVT = Vec . getValueType ( ) ; if ( ! isTypeLegal ( VecEVT ) ) return SDValue ( ) ; MVT VecVT = VecEVT . getSimpleVT ( ) ; MVT VecEltVT = VecVT . getVectorElementType ( ) ; unsigned RVVOpcode = getRVVVPReductionOp ( Op . getOpcode ( ) ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Vec = convertToScalableVector ( ContainerVT , Vec , DAG , Subtarget ) ; } SDValue VL = Op . getOperand ( ) ; SDValue Mask = Op . getOperand ( ) ; MVT M1VT = getLMUL1VT ( ContainerVT ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ;" LLVM,RISCV,2687,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; } return ;" LLVM,RISCV,2688,"Predict the next statement of this code snippet: return true ; } ; auto MatchShift = [ & ] ( int Shift ) { for ( int i = ; i != Size - Shift ; ++ i ) if ( Mask [ i ] >= && Mask [ i ] != Shift + i ) return false ; return true ; } ; for ( int Shift = ; Shift != Size ; ++ Shift ) if ( CheckUndefs ( Shift ) && MatchShift ( Shift ) ) return Shift ;" LLVM,RISCV,2689,"Predict the next statement of this code snippet: unsigned Opc ; if ( VT == XLenVT ) Opc = IsSigned ? : ; else Opc = IsSigned ? : ; SDLoc DL ( N ) ; SDValue FpToInt = DAG . getNode ( Opc , DL , XLenVT , Src . getOperand ( ) , DAG . getTargetConstant ( FRM , DL , XLenVT ) ) ;" LLVM,RISCV,2690,"Predict the next statement of this code snippet: if ( FRM == ) return SDValue ( ) ; bool IsSigned = N -> getOpcode ( ) == ; unsigned Opc ; if ( SatVT == DstVT ) Opc = IsSigned ? : ; else if ( DstVT == && SatVT == ) Opc = IsSigned ? : ; else return SDValue ( ) ; Src = Src . getOperand ( ) ; SDLoc DL ( N ) ; SDValue FpToInt = DAG . getNode ( Opc , DL , XLenVT , Src , DAG . getTargetConstant ( FRM , DL , XLenVT ) ) ; SDValue ZeroInt = DAG . getConstant ( , DL , DstVT ) ;" LLVM,RISCV,2691,"Predict the next statement of this code snippet: if ( DstVT != XLenVT ) return SDValue ( ) ; SDValue Src = N -> getOperand ( ) ; if ( ! TLI . isTypeLegal ( Src . getValueType ( ) ) ) return SDValue ( ) ; if ( Src . getValueType ( ) == && ! Subtarget . hasStdExtZfh ( ) ) return SDValue ( ) ; EVT SatVT = cast < VTSDNode > ( N -> getOperand ( ) ) -> getVT ( ) ; FRM = matchRoundingOp ( Src ) ; if ( FRM == ) return SDValue ( ) ; bool IsSigned = N -> getOpcode ( ) == ; unsigned Opc ; if ( SatVT == DstVT ) Opc = IsSigned ? : ; else if ( DstVT == && SatVT == ) Opc = IsSigned ? : ; else return SDValue ( ) ; Src = Src . getOperand ( ) ;" LLVM,RISCV,2692,"Predict the next statement of this code snippet: case : return Subtarget . hasStdExtZfh ( ) ; case : return Subtarget . hasStdExtF ( ) ; case : return Subtarget . hasStdExtD ( ) ; default : return false ; }" LLVM,RISCV,2693,"Predict the next statement of this code snippet: switch ( II -> getIntrinsicID ( ) ) { case : return Operand == || Operand == ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : return Operand == ; case : case : case : return Operand == || Operand == ; default : return false ; } } return false ; default : return false ; } } ; for ( auto OpIdx : enumerate ( I -> operands ( ) ) ) { if ( ! IsSinker ( I , OpIdx . index ( ) ) ) continue ; Instruction * Op = dyn_cast < Instruction > ( OpIdx . value ( ) . get ( ) ) ; if ( ! Op || any_of ( Ops , [ & ] ( Use * U ) { return U -> get ( ) == Op ; } ) ) continue ; if ( ! match ( Op , m_Shuffle ( m_InsertElt ( m_Undef ( ) , m_Value ( ) , m_ZeroInt ( ) ) , m_Undef ( ) , m_ZeroMask ( ) ) ) ) continue ; for ( Use & U : Op -> uses ( ) ) { Instruction * Insn = cast < Instruction > ( U . getUser ( ) ) ; if ( ! IsSinker ( Insn , U . getOperandNo ( ) ) ) return false ; } Ops . push_back ( & Op -> getOperandUse ( ) ) ; Ops . push_back ( & OpIdx . value ( ) ) ; } return true ;" LLVM,RISCV,2694,"Predict the next statement of this code snippet: MVT InterVT = ( , VT . getVectorElementCount ( ) * ) ; auto InterVec = DAG . getNode ( , DL , InterVT , Lo , VL ) ; return DAG . getNode ( , DL , VT , InterVec ) ; } }" LLVM,RISCV,2695,"Predict the next statement of this code snippet: EVT ValueVT = Val . getValueType ( ) ; if ( IsABIRegCopy && ValueVT == && PartVT == ) { Val = DAG . getNode ( , DL , , Val ) ; Val = DAG . getNode ( , DL , , Val ) ; Val = DAG . getNode ( , DL , , Val , DAG . getConstant ( , DL , ) ) ; Val = DAG . getNode ( , DL , , Val ) ; Parts [ ] = Val ; return true ; } if ( ValueVT . isScalableVector ( ) && PartVT . isScalableVector ( ) ) { LLVMContext & Context = * DAG . getContext ( ) ; EVT ValueEltVT = ValueVT . getVectorElementType ( ) ; EVT PartEltVT = PartVT . getVectorElementType ( ) ; unsigned ValueVTBitSize = ValueVT . getSizeInBits ( ) . getKnownMinSize ( ) ; unsigned PartVTBitSize = PartVT . getSizeInBits ( ) . getKnownMinSize ( ) ;" LLVM,RISCV,2696,"Predict the next statement of this code snippet: unsigned EltBits = VT . getScalarSizeInBits ( ) ; unsigned ScalarBits = Op1 . getValueSizeInBits ( ) ; if ( ScalarBits < EltBits ) return SDValue ( ) ; if ( IsSignExt ) { if ( DAG . ComputeNumSignBits ( Op1 ) <= ( ScalarBits - NarrowSize ) ) return SDValue ( ) ; } else { APInt Mask = APInt :: getBitsSetFrom ( ScalarBits , NarrowSize ) ; if ( ! DAG . MaskedValueIsZero ( Op1 , Mask ) ) return SDValue ( ) ; } Op1 = DAG . getNode ( , DL , NarrowVT , Op1 , VL ) ; } else return SDValue ( ) ; Op0 = Op0 . getOperand ( ) ; unsigned ExtOpc = IsSignExt ? : ; if ( Op0 . getValueType ( ) != NarrowVT ) Op0 = DAG . getNode ( ExtOpc , DL , NarrowVT , Op0 , Mask , VL ) ; ExtOpc = IsVWMULSU ? : ExtOpc ; if ( Op1 . getValueType ( ) != NarrowVT ) Op1 = DAG . getNode ( ExtOpc , DL , NarrowVT , Op1 , Mask , VL ) ; unsigned WMulOpc = ;" LLVM,RISCV,2697,"Predict the next statement of this code snippet: if ( ScalarBits < EltBits ) return SDValue ( ) ; if ( IsSignExt ) { if ( DAG . ComputeNumSignBits ( Op1 ) <= ( ScalarBits - NarrowSize ) ) return SDValue ( ) ; } else { APInt Mask = APInt :: getBitsSetFrom ( ScalarBits , NarrowSize ) ; if ( ! DAG . MaskedValueIsZero ( Op1 , Mask ) ) return SDValue ( ) ; } Op1 = DAG . getNode ( , DL , NarrowVT , Op1 , VL ) ; } else return SDValue ( ) ; Op0 = Op0 . getOperand ( ) ; unsigned ExtOpc = IsSignExt ? : ; if ( Op0 . getValueType ( ) != NarrowVT ) Op0 = DAG . getNode ( ExtOpc , DL , NarrowVT , Op0 , Mask , VL ) ; ExtOpc = IsVWMULSU ? : ExtOpc ;" LLVM,RISCV,2698,"Predict the next statement of this code snippet: IdxDiff = ; } if ( ! SeqStepNum ) SeqStepNum = ValDiff ; else if ( ValDiff != SeqStepNum ) return None ; if ( ! SeqStepDenom ) SeqStepDenom = IdxDiff ; else if ( IdxDiff != * SeqStepDenom ) return None ; } if ( ! PrevElt || PrevElt -> first != Val ) PrevElt = std :: make_pair ( Val , Idx ) ; } if ( ! SeqStepNum || ! SeqStepDenom ) return None ; for ( unsigned Idx = ; Idx < NumElts ; Idx ++ ) { if ( Op . getOperand ( Idx ) . isUndef ( ) ) continue ; uint64_t Val = Op . getConstantOperandVal ( Idx ) & maskTrailingOnes < uint64_t > ( EltSizeInBits ) ; uint64_t ExpectedVal = ( int64_t ) ( Idx * ( uint64_t ) * SeqStepNum ) / * SeqStepDenom ; int64_t Addend = SignExtend64 ( Val - ExpectedVal , EltSizeInBits ) ; if ( ! SeqAddend ) SeqAddend = Addend ;" LLVM,RISCV,2699,"Predict the next statement of this code snippet: Value * TargetLowering :: emitMaskedAtomicRMWIntrinsic ( IRBuilder < > & Builder , AtomicRMWInst * AI , Value * AlignedAddr , Value * Incr , Value * Mask , Value * ShiftAmt , AtomicOrdering Ord ) const { Value * Ordering = Builder . getInt32 ( static_cast < uint32_t > ( AI -> getOrdering ( ) ) ) ; Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * LrwOpScwLoop = ( AI -> getModule ( ) , getIntrinsicForMaskedAtomicRMWBinOp32 ( AI -> getOperation ( ) ) , Tys ) ; if ( AI -> getOperation ( ) == AtomicRMWInst :: Min || AI -> getOperation ( ) == AtomicRMWInst :: Max ) { const DataLayout & DL = AI -> getModule ( ) -> getDataLayout ( ) ; unsigned ValWidth = DL . getTypeStoreSizeInBits ( AI -> getValOperand ( ) -> getType ( ) ) ; Value * SextShamt = Builder . CreateSub ( Builder . getInt32 ( Subtarget . getXLen ( ) - ValWidth ) , ShiftAmt ) ; return Builder . CreateCall ( LrwOpScwLoop , { AlignedAddr , Incr , Mask , SextShamt , Ordering } ) ; } return Builder . CreateCall ( LrwOpScwLoop , { AlignedAddr , Incr , Mask , Ordering } ) ;" LLVM,RISCV,2700,"Predict the next statement of this code snippet: case AtomicRMWInst :: Sub : return ; case AtomicRMWInst :: Nand : return ; case AtomicRMWInst :: Max : return ; case AtomicRMWInst :: Min :" LLVM,RISCV,2701,"Predict the next statement of this code snippet: case AtomicRMWInst :: Xchg : return ; case AtomicRMWInst :: Add : return ; case AtomicRMWInst :: Sub : return ; case AtomicRMWInst :: Nand : return ; case AtomicRMWInst :: Max : return ; case AtomicRMWInst :: Min : return ; case AtomicRMWInst :: UMax : return ; case AtomicRMWInst :: UMin :" LLVM,RISCV,2702,"Predict the next statement of this code snippet: case : case : case : case : case : case : PointerType * PtrTy = cast < PointerType > ( I . getArgOperand ( ) -> getType ( ) ) ; Info . opc = ; Info . memVT = ( PtrTy -> getElementType ( ) ) ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . align = ;" LLVM,RISCV,2703,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; if ( ! Subtarget . hasStdExtM ( ) ) { setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ;" LLVM,RISCV,2704,"Predict the next statement of this code snippet: TargetLowering :: AtomicExpansionKind TargetLowering :: shouldExpandAtomicRMWInIR ( AtomicRMWInst * AI ) const { unsigned Size = AI -> getType ( ) -> getPrimitiveSizeInBits ( ) ;" LLVM,RISCV,2705,"Predict the next statement of this code snippet: if ( Size == || Size == ) return AtomicExpansionKind :: MaskedIntrinsic ;" LLVM,RISCV,2706,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,2707,"Predict the next statement of this code snippet: break ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,2708,"Predict the next statement of this code snippet: default : break ; case : { SDValue Op0 = N -> getOperand ( ) ; if ( Op0 -> getOpcode ( ) == ) return DCI . CombineTo ( N , Op0 . getOperand ( ) , Op0 . getOperand ( ) ) ; SDLoc DL ( N ) ; if ( ! ( Op0 . getOpcode ( ) == || Op0 . getOpcode ( ) == ) || ! Op0 . getNode ( ) -> hasOneUse ( ) ) break ; SDValue NewSplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Op0 . getOperand ( ) ) ; SDValue Lo = NewSplitF64 . getValue ( ) ; SDValue Hi = NewSplitF64 . getValue ( ) ; APInt SignBit = APInt :: getSignMask ( ) ; if ( Op0 . getOpcode ( ) == ) { SDValue NewHi = DAG . getNode ( , DL , , Hi , DAG . getConstant ( SignBit , DL , ) ) ; return DCI . CombineTo ( N , Lo , NewHi ) ; } assert ( Op0 . getOpcode ( ) == ) ; SDValue NewHi = DAG . getNode ( , DL , , Hi , DAG . getConstant ( ~ SignBit , DL , ) ) ; return DCI . CombineTo ( N , Lo , NewHi ) ; } case : case : case : { SDValue LHS = N -> getOperand ( ) ; SDValue RHS = N -> getOperand ( ) ; APInt LHSMask = APInt :: getLowBitsSet ( LHS . getValueSizeInBits ( ) , ) ; APInt RHSMask = APInt :: getLowBitsSet ( RHS . getValueSizeInBits ( ) , ) ; if ( ( SimplifyDemandedBits ( N -> getOperand ( ) , LHSMask , DCI ) ) || ( SimplifyDemandedBits ( N -> getOperand ( ) , RHSMask , DCI ) ) ) return SDValue ( ) ;" LLVM,RISCV,2709,"Predict the next statement of this code snippet: return DCI . CombineTo ( N , Lo , NewHi ) ; } assert ( Op0 . getOpcode ( ) == ) ; SDValue NewHi = DAG . getNode ( , DL , , Hi , DAG . getConstant ( ~ SignBit , DL , ) ) ; return DCI . CombineTo ( N , Lo , NewHi ) ; } case : case : case : { SDValue LHS = N -> getOperand ( ) ; SDValue RHS = N -> getOperand ( ) ; APInt LHSMask = APInt :: getLowBitsSet ( LHS . getValueSizeInBits ( ) , ) ; APInt RHSMask = APInt :: getLowBitsSet ( RHS . getValueSizeInBits ( ) , ) ; if ( ( SimplifyDemandedBits ( N -> getOperand ( ) , LHSMask , DCI ) ) || ( SimplifyDemandedBits ( N -> getOperand ( ) , RHSMask , DCI ) ) ) return SDValue ( ) ; break ; }" LLVM,RISCV,2710,"Predict the next statement of this code snippet: case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ;" LLVM,RISCV,2711,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtD ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; if ( Subtarget . hasStdExtA ( ) ) { setMaxAtomicSizeInBitsSupported ( Subtarget . getXLen ( ) ) ; setMinCmpXchgSizeInBits ( ) ; } else { setMaxAtomicSizeInBitsSupported ( ) ; } setBooleanContents ( ZeroOrOneBooleanContent ) ;" LLVM,RISCV,2712,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtD ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ;" LLVM,RISCV,2713,"Predict the next statement of this code snippet: return true ;" LLVM,RISCV,2714,"Predict the next statement of this code snippet: Value * TargetLowering :: emitMaskedAtomicCmpXchgIntrinsic ( IRBuilder < > & Builder , AtomicCmpXchgInst * CI , Value * AlignedAddr , Value * CmpVal , Value * NewVal , Value * Mask , AtomicOrdering Ord ) const { Value * Ordering = Builder . getInt32 ( static_cast < uint32_t > ( Ord ) ) ;" LLVM,RISCV,2715,"Predict the next statement of this code snippet: case : { SDValue Op0 = N -> getOperand ( ) ; if ( Op0 -> getOpcode ( ) != ) break ; return DCI . CombineTo ( N , Op0 . getOperand ( ) , Op0 . getOperand ( ) ) ;" LLVM,RISCV,2716,"Predict the next statement of this code snippet: setStackPointerRegisterToSaveRestore ( ) ; for ( auto N : { , , } ) setLoadExtAction ( N , XLenVT , , Promote ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; if ( ! Subtarget . hasStdExtM ( ) ) { setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , } ;" LLVM,RISCV,2717,"Predict the next statement of this code snippet: static bool CC_Assign2XLen ( unsigned XLen , CCState & State , CCValAssign VA1 , ArgFlags1 , unsigned ValNo2 , MVT ValVT2 , MVT LocVT2 , ArgFlags2 ) { unsigned XLenInBytes = XLen / ; if ( Register Reg = State . AllocateReg ( ArgGPRs ) ) { State . addLoc ( CCValAssign :: getReg ( VA1 . getValNo ( ) , VA1 . getValVT ( ) , Reg , VA1 . getLocVT ( ) , CCValAssign :: Full ) ) ; } else { unsigned StackAlign = std :: max ( XLenInBytes , ArgFlags1 . getOrigAlign ( ) ) ;" LLVM,RISCV,2718,"Predict the next statement of this code snippet: if ( LocVT == || LocVT == ) { static const MCPhysReg GPRList [ ] = { , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( GPRList ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR32List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ;" LLVM,RISCV,2719,"Predict the next statement of this code snippet: State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR32List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR64List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR64List ) ) {" LLVM,RISCV,2720,"Predict the next statement of this code snippet: return ( ( VectorBits / EltSize ) * MinSize ) / ;" LLVM,RISCV,2721,"Predict the next statement of this code snippet: bool hasVLOperand ( ) const { return VLOperand != ;" LLVM,RISCV,2722,"Predict the next statement of this code snippet: RTLIB :: Libcall LC ; if ( N -> getOpcode ( ) == || N -> getOpcode ( ) == ) LC = RTLIB :: getFPTOSINT ( Op0 . getValueType ( ) , N -> getValueType ( ) ) ; else LC = RTLIB :: getFPTOUINT ( Op0 . getValueType ( ) , N -> getValueType ( ) ) ; MakeLibCallOptions CallOptions ; EVT OpVT = Op0 . getValueType ( ) ; CallOptions . setTypeListBeforeSoften ( OpVT , N -> getValueType ( ) , true ) ; SDValue Chain = IsStrict ? N -> getOperand ( ) : SDValue ( ) ; SDValue Result ; std :: tie ( Result , Chain ) = makeLibCall ( DAG , LC , N -> getValueType ( ) , Op0 , CallOptions , DL , Chain ) ; Results . push_back ( Result ) ; if ( IsStrict ) Results . push_back ( Chain ) ; break ; } case : { assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , RCW , RCW . getValue ( ) ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; }" LLVM,RISCV,2723,"Predict the next statement of this code snippet: SmallVectorImpl < CCValAssign > & PendingLocs = State . getPendingLocs ( ) ; SmallVectorImpl < > & PendingArgFlags = State . getPendingArgFlags ( ) ; assert ( PendingLocs . size ( ) == PendingArgFlags . size ( ) && ) ; if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } unsigned Reg = State . AllocateReg ( ArgGPRs ) ; unsigned StackOffset = Reg ? : State . AllocateStack ( XLen / , XLen / ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ;" LLVM,RISCV,2724,"Predict the next statement of this code snippet: assert ( LocVT == XLenVT && ) ; if ( IsRet && ValNo > ) return true ; unsigned TwoXLenInBytes = ( * XLen ) / ; if ( ! IsFixed && ArgFlags . getOrigAlign ( ) == TwoXLenInBytes && DL . getTypeAllocSize ( OrigTy ) == TwoXLenInBytes ) { unsigned RegIdx = State . getFirstUnallocated ( ArgGPRs ) ; if ( RegIdx != array_lengthof ( ArgGPRs ) && RegIdx % == ) State . AllocateReg ( ArgGPRs ) ; } SmallVectorImpl < CCValAssign > & PendingLocs = State . getPendingLocs ( ) ; SmallVectorImpl < > & PendingArgFlags = State . getPendingArgFlags ( ) ; assert ( PendingLocs . size ( ) == PendingArgFlags . size ( ) && ) ; if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ;" LLVM,RISCV,2725,"Predict the next statement of this code snippet: Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Flag ) ; Flag = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ; } RetOps [ ] = Chain ; if ( Flag . getNode ( ) ) { RetOps . push_back ( Flag ) ; }" LLVM,RISCV,2726,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; if ( ! Subtarget . hasStdExtM ( ) ) { setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : { , , , , , , , , , , , , } ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; }" LLVM,RISCV,2727,"Predict the next statement of this code snippet: case : case : { PointerType * PtrTy = cast < PointerType > ( I . getArgOperand ( ) -> getType ( ) ) ; Info . opc = ; Info . memVT = ( PtrTy -> getElementType ( ) ) ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . align = Align ( ) ; Info . flags = MachineMemOperand :: MOLoad | MachineMemOperand :: MOStore | MachineMemOperand :: MOVolatile ; return true ;" LLVM,RISCV,2728,"Predict the next statement of this code snippet: SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue ScalarSplat = DAG . getSplatVector ( M1VT , DL , ScalarVal ) ; SDValue Reduction = DAG . getNode ( RVVOpcode , DL , M1VT , VectorVal , ScalarSplat , Mask , VL ) ; return DAG . getNode ( , DL , VecEltVT , Reduction , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ;" LLVM,RISCV,2729,"Predict the next statement of this code snippet: SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue ScalarSplat = DAG . getSplatVector ( M1VT , DL , ScalarVal ) ; SDValue Reduction = DAG . getNode ( RVVOpcode , DL , M1VT , VectorVal , ScalarSplat , Mask , VL ) ; return DAG . getNode ( , DL , VecEltVT , Reduction , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ;" LLVM,RISCV,2730,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; assert ( VT . getVectorElementType ( ) == && Scalar . getValueType ( ) == && ) ; MVT I32VT = ( , VT . getVectorElementCount ( ) * ) ; SDValue Vec = DAG . getBitcast ( I32VT , Op . getOperand ( + OpOffset ) ) ; SDValue ScalarLo = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue ScalarHi = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue VL = Op . getOperand ( NumOps - ) ; SDValue I32VL = DAG . getNode ( , DL , XLenVT , VL , DAG . getConstant ( , DL , XLenVT ) ) ; MVT I32MaskVT = ( , I32VT . getVectorElementCount ( ) ) ; SDValue I32Mask = DAG . getNode ( , DL , I32MaskVT , VL ) ; if ( IntNo == || IntNo == ) { Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarHi , I32Mask , I32VL ) ; Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarLo , I32Mask , I32VL ) ; } else { Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarLo , I32Mask , I32VL ) ; Vec = DAG . getNode ( , DL , I32VT , Vec , ScalarHi , I32Mask , I32VL ) ; } Vec = DAG . getBitcast ( VT , Vec ) ; if ( ! IsMasked ) return Vec ; SDValue Mask = Op . getOperand ( NumOps - ) ; SDValue MaskedOff = Op . getOperand ( ) ; return DAG . getNode ( , DL , VT , Mask , Vec , MaskedOff , VL ) ; } } return lowerVectorIntrinsicSplats ( Op , DAG , Subtarget ) ;" LLVM,RISCV,2731,"Predict the next statement of this code snippet: unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { MGN -> getChain ( ) , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ; if ( ! IsUnmasked ) Ops . push_back ( PassThru ) ; Ops . push_back ( MGN -> getBasePtr ( ) ) ; Ops . push_back ( Index ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ; SDValue Result = DAG . getMemIntrinsicNode ( , DL , VTs , Ops , MGN -> getMemoryVT ( ) , MGN -> getMemOperand ( ) ) ; SDValue Chain = Result . getValue ( ) ; if ( VT . isFixedLengthVector ( ) ) Result = convertFromScalableVector ( VT , Result , DAG , Subtarget ) ; return DAG . getMergeValues ( { Result , Chain } , DL ) ;" LLVM,RISCV,2732,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; MVT IndexVT = Index . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( MGN -> getBasePtr ( ) . getSimpleValueType ( ) == XLenVT && ) ; assert ( MGN -> getExtensionType ( ) == && ) ; bool IsUnmasked = ( Mask . getNode ( ) ) ; SDValue VL ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { if ( VT . bitsGE ( IndexVT ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; } else { IndexVT = getContainerForFixedLengthVector ( IndexVT ) ; ContainerVT = ( ContainerVT . getVectorElementType ( ) , IndexVT . getVectorElementCount ( ) ) ; } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ;" LLVM,RISCV,2733,"Predict the next statement of this code snippet: SDValue VL ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; } else VL = DAG . getRegister ( , XLenVT ) ;" LLVM,RISCV,2734,"Predict the next statement of this code snippet: SDValue PassThru = Load -> getPassThru ( ) ; SDValue VL ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; } else VL = DAG . getRegister ( , XLenVT ) ;" LLVM,RISCV,2735,"Predict the next statement of this code snippet: SDValue Index = MSN -> getIndex ( ) ; SDValue Mask = MSN -> getMask ( ) ; SDValue Val = MSN -> getValue ( ) ; MVT VT = Val . getSimpleValueType ( ) ; MVT IndexVT = Index . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( MSN -> getBasePtr ( ) . getSimpleValueType ( ) == XLenVT && ) ; assert ( ! MSN -> isTruncatingStore ( ) && ) ; bool IsUnmasked = ( Mask . getNode ( ) ) ; SDValue VL ; if ( VT . isFixedLengthVector ( ) ) { MVT ContainerVT ; if ( VT . bitsGE ( IndexVT ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; } else { IndexVT = getContainerForFixedLengthVector ( IndexVT ) ; ContainerVT = ( VT . getVectorElementType ( ) , IndexVT . getVectorElementCount ( ) ) ; } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; Val = convertToScalableVector ( ContainerVT , Val , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; } else VL = DAG . getRegister ( , XLenVT ) ; unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { MSN -> getChain ( ) , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ;" LLVM,RISCV,2736,"Predict the next statement of this code snippet: Val = convertToScalableVector ( ContainerVT , Val , DAG , Subtarget ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; } else VL = DAG . getRegister ( , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( , DL , XLenVT ) ;" LLVM,RISCV,2737,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; MVT VecVT = Op . getSimpleValueType ( ) ; assert ( ! Subtarget . is64Bit ( ) && VecVT . getVectorElementType ( ) == && ) ; assert ( Op . getNumOperands ( ) == && ) ; SDValue Lo = Op . getOperand ( ) ; SDValue Hi = Op . getOperand ( ) ; if ( VecVT . isFixedLengthVector ( ) ) { MVT ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; SDLoc DL ( Op ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2738,"Predict the next statement of this code snippet: while ( getTypeAction ( * DAG . getContext ( ) , VecEVT ) == TargetLowering :: TypeSplitVector ) { SDValue Lo , Hi ; std :: tie ( Lo , Hi ) = DAG . SplitVector ( Vec , DL ) ; VecEVT = Lo . getValueType ( ) ; Vec = DAG . getNode ( BaseOpc , DL , VecEVT , Lo , Hi ) ; } if ( ! isTypeLegal ( VecEVT ) ) return SDValue ( ) ; MVT VecVT = VecEVT . getSimpleVT ( ) ; MVT VecEltVT = VecVT . getVectorElementType ( ) ;" LLVM,RISCV,2739,"Predict the next statement of this code snippet: MVT M1VT = getLMUL1VT ( ContainerVT ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue NeutralElem = DAG . getNeutralElement ( BaseOpc , DL , VecEltVT , SDNodeFlags ( ) ) ; SDValue IdentitySplat = DAG . getSplatVector ( M1VT , DL , NeutralElem ) ; SDValue Reduction = DAG . getNode ( RVVOpcode , DL , M1VT , Vec , IdentitySplat , Mask , VL ) ; SDValue Elt0 = DAG . getNode ( , DL , VecEltVT , Reduction , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ; return DAG . getSExtOrTrunc ( Elt0 , DL , Op . getValueType ( ) ) ;" LLVM,RISCV,2740,"Predict the next statement of this code snippet: case : Vec = DAG . getNode ( , DL , ContainerVT , Vec , Mask , VL ) ; Vec = DAG . getNode ( , DL , XLenVT , Vec , Mask , VL ) ; return DAG . getSetCC ( DL , XLenVT , Vec , Zero , ) ; case : Vec = DAG . getNode ( , DL , XLenVT , Vec , Mask , VL ) ; return DAG . getSetCC ( DL , XLenVT , Vec , Zero , ) ; case : { SDValue One = DAG . getConstant ( , DL , XLenVT ) ; Vec = DAG . getNode ( , DL , XLenVT , Vec , Mask , VL ) ;" LLVM,RISCV,2741,"Predict the next statement of this code snippet: EVT ElemVT = VT . getVectorElementType ( ) ; if ( Alignment >= ElemVT . getStoreSize ( ) ) { if ( Fast ) * Fast = true ;" LLVM,RISCV,2742,"Predict the next statement of this code snippet: return V . getOpcode ( ) == && isNullConstant ( V . getOperand ( ) ) && V . getOperand ( ) . getOpcode ( ) == BinOpToRVVReduce ( Opc ) ; } ; unsigned Opc = N -> getOpcode ( ) ; unsigned ReduceIdx ; if ( IsReduction ( N -> getOperand ( ) , Opc ) ) ReduceIdx = ; else if ( IsReduction ( N -> getOperand ( ) , Opc ) ) ReduceIdx = ; else return SDValue ( ) ; if ( Opc == && ! N -> getFlags ( ) . hasAllowReassociation ( ) ) return SDValue ( ) ; SDValue Extract = N -> getOperand ( ReduceIdx ) ; SDValue Reduce = Extract . getOperand ( ) ; if ( ! Reduce . hasOneUse ( ) ) return SDValue ( ) ; SDValue ScalarV = Reduce . getOperand ( ) ; if ( ScalarV . getOpcode ( ) != && ScalarV . getOpcode ( ) != && ScalarV . getOpcode ( ) != ) return SDValue ( ) ; if ( ! isOneConstant ( ScalarV . getOperand ( ) ) ) return SDValue ( ) ; auto IsRVVNeutralElement = [ Opc , & DAG ] ( SDNode * N , SDValue V ) { if ( Opc == && N -> getFlags ( ) . hasNoSignedZeros ( ) && isNullFPConstant ( V ) ) return true ; return DAG . getNeutralElement ( Opc , SDLoc ( V ) , V . getSimpleValueType ( ) , N -> getFlags ( ) ) == V ;" LLVM,RISCV,2743,"Predict the next statement of this code snippet: } } ; auto IsReduction = [ & BinOpToRVVReduce ] ( SDValue V , unsigned Opc ) { return V . getOpcode ( ) == && isNullConstant ( V . getOperand ( ) ) && V . getOperand ( ) . getOpcode ( ) == BinOpToRVVReduce ( Opc ) ; } ; unsigned Opc = N -> getOpcode ( ) ; unsigned ReduceIdx ; if ( IsReduction ( N -> getOperand ( ) , Opc ) ) ReduceIdx = ; else if ( IsReduction ( N -> getOperand ( ) , Opc ) ) ReduceIdx = ; else return SDValue ( ) ; if ( Opc == && ! N -> getFlags ( ) . hasAllowReassociation ( ) ) return SDValue ( ) ; SDValue Extract = N -> getOperand ( ReduceIdx ) ; SDValue Reduce = Extract . getOperand ( ) ; if ( ! Reduce . hasOneUse ( ) ) return SDValue ( ) ; SDValue ScalarV = Reduce . getOperand ( ) ; if ( ScalarV . getOpcode ( ) != && ScalarV . getOpcode ( ) != && ScalarV . getOpcode ( ) != ) return SDValue ( ) ; if ( ! isOneConstant ( ScalarV . getOperand ( ) ) ) return SDValue ( ) ; auto IsRVVNeutralElement = [ Opc , & DAG ] ( SDNode * N , SDValue V ) { if ( Opc == && N -> getFlags ( ) . hasNoSignedZeros ( ) && isNullFPConstant ( V ) ) return true ;" LLVM,RISCV,2744,"Predict the next statement of this code snippet: WOpcode = getWOpcodeByIntr ( IntNo ) ; SmallVector < SDValue , > NewOps ; for ( SDValue Op : drop_begin ( N -> ops ( ) ) ) NewOps . push_back ( DAG . getNode ( , DL , , Op ) ) ; SDValue NewRes = DAG . getNode ( WOpcode , DL , , NewOps ) ;" LLVM,RISCV,2745,"Predict the next statement of this code snippet: MachineFunction :: iterator I = ++ BB -> getIterator ( ) ; MachineBasicBlock * HeadMBB = BB ; MachineFunction * F = BB -> getParent ( ) ; MachineBasicBlock * TailMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; MachineBasicBlock * IfFalseMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; F -> insert ( I , IfFalseMBB ) ; F -> insert ( I , TailMBB ) ; for ( MachineInstr * DebugInstr : SelectDebugValues ) { TailMBB -> push_back ( DebugInstr -> removeFromParent ( ) ) ; } TailMBB -> splice ( TailMBB -> end ( ) , HeadMBB , std :: next ( LastSelectPseudo -> getIterator ( ) ) , HeadMBB -> end ( ) ) ; TailMBB -> transferSuccessorsAndUpdatePHIs ( HeadMBB ) ; HeadMBB -> addSuccessor ( IfFalseMBB ) ; HeadMBB -> addSuccessor ( TailMBB ) ; BuildMI ( HeadMBB , DL , TII . getBrCond ( CC ) ) . addReg ( LHS ) . addReg ( RHS ) . addMBB ( TailMBB ) ; IfFalseMBB -> addSuccessor ( TailMBB ) ; auto SelectMBBI = MI . getIterator ( ) ; auto SelectEnd = std :: next ( LastSelectPseudo -> getIterator ( ) ) ; auto InsertionPoint = TailMBB -> begin ( ) ; while ( SelectMBBI != SelectEnd ) { auto Next = std :: next ( SelectMBBI ) ; if ( isSelectPseudo ( * SelectMBBI ) ) { BuildMI ( * TailMBB , InsertionPoint , SelectMBBI -> getDebugLoc ( ) , TII . get ( ) , SelectMBBI -> getOperand ( ) . getReg ( ) ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( HeadMBB ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( IfFalseMBB ) ; SelectMBBI -> eraseFromParent ( ) ; } SelectMBBI = Next ; }" LLVM,RISCV,2746,"Predict the next statement of this code snippet: if ( SequenceMBBI -> hasUnmodeledSideEffects ( ) || SequenceMBBI -> mayLoadOrStore ( ) ) break ; if ( llvm :: any_of ( SequenceMBBI -> operands ( ) , [ & ] ( MachineOperand & MO ) { return MO . isReg ( ) && MO . isUse ( ) && SelectDests . count ( MO . getReg ( ) ) ; } ) ) break ; } } const InstrInfo & TII = * Subtarget . getInstrInfo ( ) ; const BasicBlock * LLVM_BB = BB -> getBasicBlock ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; MachineFunction :: iterator I = ++ BB -> getIterator ( ) ; MachineBasicBlock * HeadMBB = BB ; MachineFunction * F = BB -> getParent ( ) ; MachineBasicBlock * TailMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; MachineBasicBlock * IfFalseMBB = F -> CreateMachineBasicBlock ( LLVM_BB ) ; F -> insert ( I , IfFalseMBB ) ; F -> insert ( I , TailMBB ) ; for ( MachineInstr * DebugInstr : SelectDebugValues ) { TailMBB -> push_back ( DebugInstr -> removeFromParent ( ) ) ; } TailMBB -> splice ( TailMBB -> end ( ) , HeadMBB , std :: next ( LastSelectPseudo -> getIterator ( ) ) , HeadMBB -> end ( ) ) ; TailMBB -> transferSuccessorsAndUpdatePHIs ( HeadMBB ) ; HeadMBB -> addSuccessor ( IfFalseMBB ) ; HeadMBB -> addSuccessor ( TailMBB ) ;" LLVM,RISCV,2747,"Predict the next statement of this code snippet: static SDValue getAllOnesMask ( MVT VecVT , SDValue VL , SDLoc DL , SelectionDAG & DAG ) {" LLVM,RISCV,2748,"Predict the next statement of this code snippet: switch ( EltVT . SimpleTy ) { default : llvm_unreachable ( ) ; case : case : case : case : case : case : case : case : { unsigned NumElts = ( VT . getVectorNumElements ( ) * ) / MinVLen ; NumElts = std :: max ( NumElts , / MaxELen ) ; assert ( isPowerOf2_32 ( NumElts ) && ) ; return ( EltVT , NumElts ) ; }" LLVM,RISCV,2749,"Predict the next statement of this code snippet: unsigned MinVLen = Subtarget . getMinRVVVectorSizeInBits ( ) ; unsigned MaxELen = Subtarget . getELEN ( ) ; MVT EltVT = VT . getVectorElementType ( ) ; switch ( EltVT . SimpleTy ) { default : llvm_unreachable ( ) ; case : case : case : case : case : case :" LLVM,RISCV,2750,"Predict the next statement of this code snippet: SDValue VL = VecVT . isFixedLengthVector ( ) ? DAG . getConstant ( VecVT . getVectorNumElements ( ) , DL , XLenVT ) : DAG . getRegister ( , XLenVT ) ; SDValue Mask = getAllOnesMask ( ContainerVT , VL , DL , DAG ) ;" LLVM,RISCV,2751,"Predict the next statement of this code snippet: static MVT getMaskTypeFor ( EVT VecVT ) {" LLVM,RISCV,2752,"Predict the next statement of this code snippet: assert ( VecVT . isVector ( ) ) ; ElementCount EC = VecVT . getVectorElementCount ( ) ;" LLVM,RISCV,2753,"Predict the next statement of this code snippet: int Size = Mask . size ( ) ; assert ( Size == ( int ) VT . getVectorNumElements ( ) && ) ; int Srcs [ ] = { - , - } ; for ( int i = ; i != Size ; ++ i ) { if ( Mask [ i ] < ) continue ; int Pol = i % ; int Src = Mask [ i ] / Size ; if ( Srcs [ Pol ] < ) Srcs [ Pol ] = Src ; if ( Srcs [ Pol ] != Src ) return false ; int Elt = Mask [ i ] % Size ; if ( Elt != i / ) return false ; } if ( Srcs [ ] < || Srcs [ ] < || Srcs [ ] == Srcs [ ] ) return false ;" LLVM,RISCV,2754,"Predict the next statement of this code snippet: if ( ! isInt < > ( AM . BaseOffs ) ) return false ; switch ( AM . Scale ) { case : break ; case : if ( ! AM . HasBaseReg ) break ; return false ; default :" LLVM,RISCV,2755,"Predict the next statement of this code snippet: bool TargetLowering :: isOffsetFoldingLegal ( const GlobalAddressSDNode * GA ) const {" LLVM,RISCV,2756,"Predict the next statement of this code snippet: } MVT WideVT = ( WideEltVT , WidenVecLen ) ; Vec = DAG . getNode ( , DL , WideVT , Vec ) ; SDValue ExtractElt = DAG . getNode ( , DL , XLenVT , Vec , ExtractElementIdx ) ; SDValue ShiftRight = DAG . getNode ( , DL , XLenVT , ExtractElt , ExtractBitIdx ) ; return DAG . getNode ( , DL , XLenVT , ShiftRight , DAG . getConstant ( , DL , XLenVT ) ) ; } } MVT WideVT = ( , VecVT . getVectorElementCount ( ) ) ; Vec = DAG . getNode ( , DL , WideVT , Vec ) ; return DAG . getNode ( , DL , EltVT , Vec , Idx ) ; } MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Vec = convertToScalableVector ( ContainerVT , Vec , DAG , Subtarget ) ; } if ( ! isNullConstant ( Idx ) ) {" LLVM,RISCV,2757,"Predict the next statement of this code snippet: MVT ContainerVT = getContainerForFixedLengthVector ( InVT ) ; MVT VT = Op . getSimpleValueType ( ) ; SDValue Op1 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDValue Op2 = convertToScalableVector ( ContainerVT , Op . getOperand ( ) , DAG , Subtarget ) ; SDLoc DL ( Op ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , Subtarget . getXLenVT ( ) ) ; MVT MaskVT = getMaskTypeFor ( ContainerVT ) ; SDValue Mask = getAllOnesMask ( ContainerVT , VL , DL , DAG ) ; SDValue Cmp = DAG . getNode ( , DL , MaskVT , Op1 , Op2 , Op . getOperand ( ) , Mask , VL ) ;" LLVM,RISCV,2758,"Predict the next statement of this code snippet: GlobalAddressSDNode * N = cast < GlobalAddressSDNode > ( Op ) ; assert ( N -> getOffset ( ) == && ) ; const GlobalValue * GV = N -> getGlobal ( ) ; bool IsLocal = getTargetMachine ( ) . shouldAssumeDSOLocal ( * GV -> getParent ( ) , GV ) ; return getAddr ( N , DAG , IsLocal ) ;" LLVM,RISCV,2759,"Predict the next statement of this code snippet: assert ( N -> getOffset ( ) == && ) ; const GlobalValue * GV = N -> getGlobal ( ) ;" LLVM,RISCV,2760,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerGlobalTLSAddress ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; GlobalAddressSDNode * N = cast < GlobalAddressSDNode > ( Op ) ; assert ( N -> getOffset ( ) == && ) ; TLSModel :: Model Model = getTargetMachine ( ) . getTLSModel ( N -> getGlobal ( ) ) ; if ( DAG . getMachineFunction ( ) . getFunction ( ) . getCallingConv ( ) == CallingConv :: GHC ) report_fatal_error ( ) ; SDValue Addr ; switch ( Model ) { case TLSModel :: LocalExec : Addr = getStaticTLSAddr ( N , DAG , false ) ; break ; case TLSModel :: InitialExec : Addr = getStaticTLSAddr ( N , DAG , true ) ; break ;" LLVM,RISCV,2761,"Predict the next statement of this code snippet: bool IsUnmasked = ( Mask . getNode ( ) ) ; SDValue Val = Op . getOperand ( ) ; MVT VT = Val . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; Val = convertToScalableVector ( ContainerVT , Val , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = getMaskTypeFor ( ContainerVT ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( IsUnmasked ? : , DL , XLenVT ) ; auto * Store = cast < MemIntrinsicSDNode > ( Op ) ; SmallVector < SDValue , > Ops { Store -> getChain ( ) , IntID } ; Ops . push_back ( Val ) ; Ops . push_back ( Op . getOperand ( ) ) ; Ops . push_back ( Op . getOperand ( ) ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; return DAG . getMemIntrinsicNode ( , DL , Store -> getVTList ( ) , Ops , Store -> getMemoryVT ( ) , Store -> getMemOperand ( ) ) ;" LLVM,RISCV,2762,"Predict the next statement of this code snippet: } case : return DAG . getNode ( , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : return DAG . getNode ( , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : return DAG . getNode ( , DL , XLenVT , Op . getOperand ( ) , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : assert ( Op . getValueType ( ) == XLenVT && ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , Op . getOperand ( ) ) ; case : return lowerScalarSplat ( Op . getOperand ( ) , Op . getOperand ( ) , Op . getOperand ( ) , Op . getSimpleValueType ( ) , DL , DAG , Subtarget ) ; case : return DAG . getNode ( , DL , Op . getValueType ( ) , Op . getOperand ( ) , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : { SDValue Scalar = Op . getOperand ( ) ; if ( Scalar . getValueType ( ) . bitsLE ( XLenVT ) ) { Scalar = DAG . getNode ( , DL , XLenVT , Scalar ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , Op . getOperand ( ) , Scalar , Op . getOperand ( ) ) ; } assert ( Scalar . getValueType ( ) == && ) ; MVT VT = Op . getSimpleValueType ( ) ; SDValue Vec = Op . getOperand ( ) ; SDValue VL = getVLOperand ( Op ) ; SDValue SplattedVal = splatSplitI64WithVL ( DL , VT , SDValue ( ) , Scalar , VL , DAG ) ; if ( Op . getOperand ( ) . isUndef ( ) ) return SplattedVal ; SDValue SplattedIdx = DAG . getNode ( , DL , VT , DAG . getUNDEF ( VT ) , DAG . getConstant ( , DL , ) , VL ) ; MVT MaskVT = getMaskTypeFor ( VT ) ; SDValue Mask = getAllOnesMask ( VT , VL , DL , DAG ) ; SDValue VID = DAG . getNode ( , DL , VT , Mask , VL ) ; SDValue SelectCond = DAG . getNode ( , DL , MaskVT , VID , SplattedIdx , DAG . getCondCode ( ) , Mask , VL ) ; return DAG . getNode ( , DL , VT , SelectCond , SplattedVal , Vec , VL ) ; }" LLVM,RISCV,2763,"Predict the next statement of this code snippet: case : case : { SDLoc DL ( Op ) ; static const VlsegInts [ ] = { , , , , , , } ; unsigned NF = Op -> getNumValues ( ) - ; assert ( NF >= && NF <= && ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT VT = Op -> getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( VlsegInts [ NF - ] , DL , XLenVT ) ; auto * Load = cast < MemIntrinsicSDNode > ( Op ) ; SmallVector < EVT , > ContainerVTs ( NF , ContainerVT ) ; ContainerVTs . push_back ( ) ; SDVTList VTs = DAG . getVTList ( ContainerVTs ) ; SmallVector < SDValue , > Ops = { Load -> getChain ( ) , IntID } ; Ops . insert ( Ops . end ( ) , NF , DAG . getUNDEF ( ContainerVT ) ) ; Ops . push_back ( Op . getOperand ( ) ) ; Ops . push_back ( VL ) ; SDValue Result = DAG . getMemIntrinsicNode ( , DL , VTs , Ops , Load -> getMemoryVT ( ) , Load -> getMemOperand ( ) ) ; SmallVector < SDValue , > Results ; for ( unsigned int RetIdx = ; RetIdx < NF ; RetIdx ++ ) Results . push_back ( convertFromScalableVector ( VT , Result . getValue ( RetIdx ) , DAG , Subtarget ) ) ; Results . push_back ( Result . getValue ( NF ) ) ; return DAG . getMergeValues ( Results , DL ) ;" LLVM,RISCV,2764,"Predict the next statement of this code snippet: Index = VPGN -> getIndex ( ) ; Mask = VPGN -> getMask ( ) ; PassThru = DAG . getUNDEF ( VT ) ; VL = VPGN -> getVectorLength ( ) ; LoadExtType = ; } else { auto * MGN = cast < MaskedGatherSDNode > ( Op . getNode ( ) ) ; Index = MGN -> getIndex ( ) ; Mask = MGN -> getMask ( ) ; PassThru = MGN -> getPassThru ( ) ; LoadExtType = MGN -> getExtensionType ( ) ; } MVT IndexVT = Index . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( BasePtr . getSimpleValueType ( ) == XLenVT && ) ; assert ( LoadExtType == && ) ; ( void ) LoadExtType ; bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = getMaskTypeFor ( ContainerVT ) ;" LLVM,RISCV,2765,"Predict the next statement of this code snippet: SDValue Mask , PassThru , VL ; if ( const auto * VPLoad = dyn_cast < VPLoadSDNode > ( Op ) ) { Mask = VPLoad -> getMask ( ) ; PassThru = DAG . getUNDEF ( VT ) ; VL = VPLoad -> getVectorLength ( ) ; } else { const auto * MLoad = cast < MaskedLoadSDNode > ( Op ) ; Mask = MLoad -> getMask ( ) ; PassThru = MLoad -> getPassThru ( ) ; } bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = getMaskTypeFor ( ContainerVT ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { Chain , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ; if ( IsUnmasked ) Ops . push_back ( DAG . getUNDEF ( ContainerVT ) ) ; else Ops . push_back ( PassThru ) ; Ops . push_back ( BasePtr ) ;" LLVM,RISCV,2766,"Predict the next statement of this code snippet: IsTruncatingStore = MSN -> isTruncatingStore ( ) ; } MVT VT = Val . getSimpleValueType ( ) ; MVT IndexVT = Index . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( BasePtr . getSimpleValueType ( ) == XLenVT && ) ; assert ( ! IsTruncatingStore && ) ; ( void ) IsTruncatingStore ; bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; Val = convertToScalableVector ( ContainerVT , Val , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = getMaskTypeFor ( ContainerVT ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! VL ) VL = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) . second ; if ( XLenVT == && IndexVT . getVectorElementType ( ) . bitsGT ( XLenVT ) ) { IndexVT = IndexVT . changeVectorElementType ( XLenVT ) ; SDValue TrueMask = DAG . getNode ( , DL , Mask . getValueType ( ) , VL ) ; Index = DAG . getNode ( , DL , IndexVT , Index , TrueMask , VL ) ;" LLVM,RISCV,2767,"Predict the next statement of this code snippet: MachineMemOperand * MMO = MemSD -> getMemOperand ( ) ; SDValue Chain = MemSD -> getChain ( ) ; SDValue BasePtr = MemSD -> getBasePtr ( ) ; SDValue Val , Mask , VL ; if ( const auto * VPStore = dyn_cast < VPStoreSDNode > ( Op ) ) { Val = VPStore -> getValue ( ) ; Mask = VPStore -> getMask ( ) ; VL = VPStore -> getVectorLength ( ) ; } else { const auto * MStore = cast < MaskedStoreSDNode > ( Op ) ; Val = MStore -> getValue ( ) ; Mask = MStore -> getMask ( ) ; } bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT VT = Val . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ;" LLVM,RISCV,2768,"Predict the next statement of this code snippet: } if ( VT . isFixedLengthVector ( ) ) { MVT SrcContainerVT = getContainerForFixedLengthVector ( SrcVT ) ; ContainerVT = SrcContainerVT . changeVectorElementType ( VT . getVectorElementType ( ) ) ; Src = convertToScalableVector ( SrcContainerVT , Src , DAG , Subtarget ) ; if ( IsVP ) { MVT MaskVT = getMaskTypeFor ( ContainerVT ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } if ( ! IsVP ) std :: tie ( Mask , VL ) = getDefaultVLOps ( SrcVT , ContainerVT , DL , DAG , Subtarget ) ; unsigned ConvOpc = IsExtend ? : ; if ( IsDirectConv ) { Src = DAG . getNode ( ConvOpc , DL , ContainerVT , Src , Mask , VL ) ; if ( VT . isFixedLengthVector ( ) ) Src = convertFromScalableVector ( VT , Src , DAG , Subtarget ) ; return Src ; } unsigned InterConvOpc = IsExtend ? : ; MVT InterVT = ContainerVT . changeVectorElementType ( ) ; SDValue IntermediateConv = DAG . getNode ( InterConvOpc , DL , InterVT , Src , Mask , VL ) ; SDValue Result = DAG . getNode ( ConvOpc , DL , ContainerVT , IntermediateConv , Mask , VL ) ; if ( VT . isFixedLengthVector ( ) ) return convertFromScalableVector ( VT , Result , DAG , Subtarget ) ;" LLVM,RISCV,2769,"Predict the next statement of this code snippet: } else if ( AVLInt >= * MaxVLMAX ) { Lmul = TargetLowering :: getLMUL ( I32VT ) ; SDValue LMUL = DAG . getConstant ( Lmul , DL , XLenVT ) ; unsigned Sew = VType :: encodeSEW ( I32VT . getScalarSizeInBits ( ) ) ; SDValue SEW = DAG . getConstant ( Sew , DL , XLenVT ) ; SDValue SETVLMAX = DAG . getTargetConstant ( , DL , ) ; I32VL = DAG . getNode ( , DL , XLenVT , SETVLMAX , SEW , LMUL ) ; } else { } } if ( ! I32VL ) { Lmul = TargetLowering :: getLMUL ( VT ) ; SDValue LMUL = DAG . getConstant ( Lmul , DL , XLenVT ) ; unsigned Sew = VType :: encodeSEW ( VT . getScalarSizeInBits ( ) ) ; SDValue SEW = DAG . getConstant ( Sew , DL , XLenVT ) ; SDValue SETVL = DAG . getTargetConstant ( , DL , ) ; SDValue VL = DAG . getNode ( , DL , XLenVT , SETVL , AVL , SEW , LMUL ) ; I32VL = DAG . getNode ( , DL , XLenVT , VL , DAG . getConstant ( , DL , XLenVT ) ) ; } SDValue I32Mask = getAllOnesMask ( I32VT , I32VL , DL , DAG ) ; SDValue Passthru ; if ( IsMasked ) Passthru = DAG . getUNDEF ( I32VT ) ; else Passthru = DAG . getBitcast ( I32VT , Operands [ ] ) ; if ( IntNo == || IntNo == ) { Vec = DAG . getNode ( , DL , I32VT , Passthru , Vec , ScalarHi , I32Mask , I32VL ) ; Vec = DAG . getNode ( , DL , I32VT , Passthru , Vec , ScalarLo , I32Mask , I32VL ) ; } else { Vec = DAG . getNode ( , DL , I32VT , Passthru , Vec , ScalarLo , I32Mask , I32VL ) ; Vec = DAG . getNode ( , DL , I32VT , Passthru , Vec , ScalarHi , I32Mask , I32VL ) ; } Vec = DAG . getBitcast ( VT , Vec ) ; if ( ! IsMasked ) return Vec ; SDValue Mask = Operands [ NumOps - ] ;" LLVM,RISCV,2770,"Predict the next statement of this code snippet: Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; if ( IsVPTrunc ) { MVT MaskContainerVT = getContainerForFixedLengthVector ( Mask . getSimpleValueType ( ) ) ; Mask = convertToScalableVector ( MaskContainerVT , Mask , DAG , Subtarget ) ; } } if ( ! IsVPTrunc ) { std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; } SDValue SplatOne = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SDValue SplatZero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ;" LLVM,RISCV,2771,"Predict the next statement of this code snippet: if ( VT . getVectorElementType ( ) == ) return lowerVectorMaskTruncLike ( Op , DAG ) ; MVT DstEltVT = VT . getVectorElementType ( ) ; SDValue Src = Op . getOperand ( ) ; MVT SrcVT = Src . getSimpleValueType ( ) ; MVT SrcEltVT = SrcVT . getVectorElementType ( ) ; assert ( DstEltVT . bitsLT ( SrcEltVT ) && isPowerOf2_64 ( DstEltVT . getSizeInBits ( ) ) && isPowerOf2_64 ( SrcEltVT . getSizeInBits ( ) ) && ) ; MVT ContainerVT = SrcVT ; SDValue Mask , VL ; if ( IsVPTrunc ) { Mask = Op . getOperand ( ) ; VL = Op . getOperand ( ) ; } if ( SrcVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( SrcVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; if ( IsVPTrunc ) { MVT MaskVT = getMaskTypeFor ( ContainerVT ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } SDValue Result = Src ; if ( ! IsVPTrunc ) { std :: tie ( Mask , VL ) = getDefaultVLOps ( SrcVT , ContainerVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2772,"Predict the next statement of this code snippet: ContainerVT = getContainerForFixedLengthVector ( SrcVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; if ( IsVPTrunc ) { MVT MaskVT = getMaskTypeFor ( ContainerVT ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } SDValue Result = Src ; if ( ! IsVPTrunc ) { std :: tie ( Mask , VL ) = getDefaultVLOps ( SrcVT , ContainerVT , DL , DAG , Subtarget ) ; } LLVMContext & Context = * DAG . getContext ( ) ; const ElementCount Count = ContainerVT . getVectorElementCount ( ) ; do { SrcEltVT = ( SrcEltVT . getSizeInBits ( ) / ) ; EVT ResultVT = EVT :: getVectorVT ( Context , SrcEltVT , Count ) ; Result = DAG . getNode ( , DL , ResultVT , Result , Mask , VL ) ; } while ( SrcEltVT != DstEltVT ) ;" LLVM,RISCV,2773,"Predict the next statement of this code snippet: SDValue VLMax = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( MinElts , DL , XLenVT ) ) ; int64_t ImmValue = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getSExtValue ( ) ; SDValue DownOffset , UpOffset ; if ( ImmValue >= ) { DownOffset = DAG . getConstant ( ImmValue , DL , XLenVT ) ; UpOffset = DAG . getNode ( , DL , XLenVT , VLMax , DownOffset ) ; } else { UpOffset = DAG . getConstant ( - ImmValue , DL , XLenVT ) ; DownOffset = DAG . getNode ( , DL , XLenVT , VLMax , UpOffset ) ; }" LLVM,RISCV,2774,"Predict the next statement of this code snippet: SDValue Src = Op . getOperand ( ) ; SDValue VL = Op . getOperand ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT SrcVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Src = convertToScalableVector ( SrcVT , Src , DAG , Subtarget ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ;" LLVM,RISCV,2775,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; SDValue Src = Op . getOperand ( ) ; SDValue VL = Op . getOperand ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT SrcVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Src = convertToScalableVector ( SrcVT , Src , DAG , Subtarget ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; SDValue ZeroSplat = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , Zero , VL ) ; SDValue SplatValue = DAG . getConstant ( Op . getOpcode ( ) == ? : - , DL , XLenVT ) ; SDValue Splat = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatValue , VL ) ; SDValue Result = DAG . getNode ( , DL , ContainerVT , Src , Splat , ZeroSplat , VL ) ; if ( ! VT . isFixedLengthVector ( ) ) return Result ; return convertFromScalableVector ( VT , Result , DAG , Subtarget ) ;" LLVM,RISCV,2776,"Predict the next statement of this code snippet: Ops . push_back ( V ) ; continue ; } MVT OpVT = V . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( OpVT ) ; assert ( useRVVForFixedLengthVectorVT ( OpVT ) && ) ; Ops . push_back ( convertToScalableVector ( ContainerVT , V , DAG , Subtarget ) ) ; }" LLVM,RISCV,2777,"Predict the next statement of this code snippet: MVT ContainerVT = getContainerForFixedLengthVector ( OpVT ) ; assert ( useRVVForFixedLengthVectorVT ( OpVT ) && ) ; Ops . push_back ( convertToScalableVector ( ContainerVT , V , DAG , Subtarget ) ) ; } if ( ! VT . isFixedLengthVector ( ) ) return DAG . getNode ( ISDOpc , DL , VT , Ops , Op -> getFlags ( ) ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VPOp = DAG . getNode ( ISDOpc , DL , ContainerVT , Ops , Op -> getFlags ( ) ) ; return convertFromScalableVector ( VT , VPOp , DAG , Subtarget ) ;" LLVM,RISCV,2778,"Predict the next statement of this code snippet: Condition = cast < CondCodeSDNode > ( Op . getOperand ( ) ) -> get ( ) ; SDValue VL = Op . getOperand ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; Op1 = convertToScalableVector ( ContainerVT , Op1 , DAG , Subtarget ) ; Op2 = convertToScalableVector ( ContainerVT , Op2 , DAG , Subtarget ) ; } SDValue Result ; SDValue AllOneMask = DAG . getNode ( , DL , ContainerVT , VL ) ; switch ( Condition ) { default : break ; case : Result = DAG . getNode ( , DL , ContainerVT , Op1 , Op2 , VL ) ; break ; case : { SDValue Temp = DAG . getNode ( , DL , ContainerVT , Op1 , Op2 , VL ) ; Result = DAG . getNode ( , DL , ContainerVT , Temp , AllOneMask , VL ) ; break ; } case : case : { SDValue Temp = DAG . getNode ( , DL , ContainerVT , Op1 , AllOneMask , VL ) ; Result = DAG . getNode ( , DL , ContainerVT , Temp , Op2 , VL ) ; break ; } case : case : { SDValue Temp = DAG . getNode ( , DL , ContainerVT , Op2 , AllOneMask , VL ) ; Result = DAG . getNode ( , DL , ContainerVT , Op1 , Temp , VL ) ; break ; } case : case : { SDValue Temp = DAG . getNode ( , DL , ContainerVT , Op1 , AllOneMask , VL ) ; Result = DAG . getNode ( , DL , ContainerVT , Temp , Op2 , VL ) ; break ; } case : case : { SDValue Temp = DAG . getNode ( , DL , ContainerVT , Op2 , AllOneMask , VL ) ; Result = DAG . getNode ( , DL , ContainerVT , Temp , Op1 , VL ) ;" LLVM,RISCV,2779,"Predict the next statement of this code snippet: if ( SDValue V = combineBinOpToReduce ( N , DAG ) ) return V ;" LLVM,RISCV,2780,"Predict the next statement of this code snippet: if ( SDValue V = combineBinOpToReduce ( N , DAG ) ) return V ;" LLVM,RISCV,2781,"Predict the next statement of this code snippet: SDValue N0 = N -> getOperand ( ) ; if ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtZbs ( ) && N -> getValueType ( ) == && isOneConstant ( N -> getOperand ( ) ) && N0 . getOpcode ( ) == && ! isa < ConstantSDNode > ( N0 . getOperand ( ) ) && N0 . hasOneUse ( ) ) { SDLoc DL ( N ) ; SDValue Op0 = DAG . getNode ( , DL , , N0 . getOperand ( ) ) ; SDValue Op1 = DAG . getNode ( , DL , , N0 . getOperand ( ) ) ; SDValue Srl = DAG . getNode ( , DL , , Op0 , Op1 ) ;" LLVM,RISCV,2782,"Predict the next statement of this code snippet: static SDValue performORCombine ( SDNode * N , SelectionDAG & DAG , const Subtarget & Subtarget ) { if ( Subtarget . hasStdExtZbp ( ) ) { if ( auto GREV = combineORToGREV ( SDValue ( N , ) , DAG , Subtarget ) ) return GREV ; if ( auto GORC = combineORToGORC ( SDValue ( N , ) , DAG , Subtarget ) ) return GORC ; if ( auto SHFL = combineORToSHFL ( SDValue ( N , ) , DAG , Subtarget ) ) return SHFL ; } if ( SDValue V = combineBinOpToReduce ( N , DAG ) ) return V ; return combineSelectAndUseCommutative ( N , DAG , false ) ;" LLVM,RISCV,2783,"Predict the next statement of this code snippet: if ( auto GORC = combineORToGORC ( SDValue ( N , ) , DAG , Subtarget ) ) return GORC ; if ( auto SHFL = combineORToSHFL ( SDValue ( N , ) , DAG , Subtarget ) ) return SHFL ;" LLVM,RISCV,2784,"Predict the next statement of this code snippet: SDValue N0 = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; const TargetLowering & TLI = DAG . getTargetLoweringInfo ( ) ; if ( N0 . getOpcode ( ) == && isAllOnesConstant ( N1 ) && isOneConstant ( N0 . getOperand ( ) ) && TLI . isOperationLegal ( , ) ) { SDLoc DL ( N ) ; return DAG . getNode ( , DL , , DAG . getConstant ( ~ , DL , ) , N0 . getOperand ( ) ) ; }" LLVM,RISCV,2785,"Predict the next statement of this code snippet: shouldProduceAndByConstByHoistingConstFromShiftsLHSOfAnd ( SDValue X , ConstantSDNode * XC , ConstantSDNode * CC , SDValue Y , unsigned OldShiftOpcode , unsigned NewShiftOpcode , SelectionDAG & DAG ) const { if ( XC && OldShiftOpcode == && XC -> isOne ( ) ) return false ;" LLVM,RISCV,2786,"Predict the next statement of this code snippet: bool TargetLowering :: shouldRemoveExtendFromGSIndex ( EVT IndexVT , EVT DataVT ) const { return false ;" LLVM,RISCV,2787,"Predict the next statement of this code snippet: return Subtarget . is64Bit ( ) && CI -> getType ( ) -> isIntegerTy ( ) ;" LLVM,RISCV,2788,"Predict the next statement of this code snippet: if ( VT . getFixedSizeInBits ( ) > * ) return false ; unsigned MinVLen = Subtarget . getMinRVVVectorSizeInBits ( ) ; MVT EltVT = VT . getVectorElementType ( ) ; switch ( EltVT . SimpleTy ) { default : return false ; case : if ( VT . getVectorNumElements ( ) > MinVLen ) return false ; MinVLen /= ; break ; case : case : case : break ; case : if ( ! Subtarget . hasVInstructionsI64 ( ) ) return false ; break ; case : if ( ! Subtarget . hasVInstructionsF16 ( ) ) return false ; break ; case : if ( ! Subtarget . hasVInstructionsF32 ( ) ) return false ; break ;" LLVM,RISCV,2789,"Predict the next statement of this code snippet: if ( ! VT . isScalableVector ( ) ) return false ; EVT ElemVT = VT . getVectorElementType ( ) ; if ( Alignment >= ElemVT . getStoreSize ( ) ) { if ( Fast ) * Fast = true ; return true ; }" LLVM,RISCV,2790,"Predict the next statement of this code snippet: else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet , ArgTy , * this , FirstMaskArgument ) ) {" LLVM,RISCV,2791,"Predict the next statement of this code snippet: if ( IsRet ) ArgTy = FType -> getReturnType ( ) ; else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet , ArgTy , * this , FirstMaskArgument ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << '\n' ) ; llvm_unreachable ( nullptr ) ; }" LLVM,RISCV,2792,"Predict the next statement of this code snippet: unsigned NumArgs = Outs . size ( ) ; Optional < unsigned > FirstMaskArgument ; if ( Subtarget . hasStdExtV ( ) ) FirstMaskArgument = preAssignMask ( Outs ) ; for ( unsigned i = ; i != NumArgs ; i ++ ) { MVT ArgVT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; Type * OrigTy = CLI ? CLI -> getArgs ( ) [ Outs [ i ] . OrigArgIndex ] . Ty : nullptr ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet , OrigTy , * this , FirstMaskArgument ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << ) ; llvm_unreachable ( nullptr ) ;" LLVM,RISCV,2793,"Predict the next statement of this code snippet: } if ( ! LocVT . isVector ( ) && ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } Register Reg ; if ( ValVT == && ! UseGPRForF16_F32 ) Reg = State . AllocateReg ( ArgFPR16s ) ; else if ( ValVT == && ! UseGPRForF16_F32 ) Reg = State . AllocateReg ( ArgFPR32s ) ; else if ( ValVT == && ! UseGPRForF64 ) Reg = State . AllocateReg ( ArgFPR64s ) ; else if ( ValVT . isVector ( ) ) { const TargetRegisterClass * RC = TLI . getRegClassFor ( ValVT ) ; if ( RC == & ) { if ( FirstMaskArgument . hasValue ( ) && ValNo == FirstMaskArgument . getValue ( ) ) { Reg = State . AllocateReg ( ) ; } else { Reg = State . AllocateReg ( ArgVRs ) ; } } else if ( RC == & ) { Reg = State . AllocateReg ( ArgVRM2s ) ; } else if ( RC == & ) { Reg = State . AllocateReg ( ArgVRM4s ) ; } else if ( RC == & ) { Reg = State . AllocateReg ( ArgVRM8s ) ; } else { llvm_unreachable ( ) ; } if ( ! Reg ) { if ( IsRet ) return true ; LocInfo = CCValAssign :: Indirect ; Reg = State . AllocateReg ( ArgGPRs ) ; LocVT = XLenVT ; } } else Reg = State . AllocateReg ( ArgGPRs ) ; unsigned StackOffset = Reg ? : State . AllocateStack ( XLen / , Align ( XLen / ) ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ; for ( auto & It : PendingLocs ) { if ( Reg ) It . convertToReg ( Reg ) ; else It . convertToMem ( StackOffset ) ;" LLVM,RISCV,2794,"Predict the next statement of this code snippet: static const MCPhysReg FPR32List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR64List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR64List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == || LocVT == ) { unsigned Offset4 = State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , Offset4 , LocVT , LocInfo ) ) ; return false ; }" LLVM,RISCV,2795,"Predict the next statement of this code snippet: if ( isZeroOrAllOnes ( TrueVal , AllOnes ) ) { SwapSelectOps = false ; NonConstantVal = FalseVal ; } else if ( isZeroOrAllOnes ( FalseVal , AllOnes ) ) { SwapSelectOps = true ; NonConstantVal = TrueVal ; } else return SDValue ( ) ; TrueVal = OtherOp ; FalseVal = DAG . getNode ( N -> getOpcode ( ) , SDLoc ( N ) , VT , OtherOp , NonConstantVal ) ;" LLVM,RISCV,2796,"Predict the next statement of this code snippet: if ( SDValue Result = combineSelectCCAndUse ( N , N0 , N1 , DAG , AllOnes ) ) return Result ; if ( SDValue Result = combineSelectCCAndUse ( N , N1 , N0 , DAG , AllOnes ) ) return Result ;" LLVM,RISCV,2797,"Predict the next statement of this code snippet: SDValue N0 = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; if ( SDValue Result = combineSelectCCAndUse ( N , N0 , N1 , DAG , AllOnes ) ) return Result ; if ( SDValue Result = combineSelectCCAndUse ( N , N1 , N0 , DAG , AllOnes ) ) return Result ; return SDValue ( ) ;" LLVM,RISCV,2798,"Predict the next statement of this code snippet: KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: urem ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: udiv ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleTZ = Known2 . trunc ( ) . countMaxTrailingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleTZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleLZ = Known2 . trunc ( ) . countMaxLeadingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleLZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; } case : Known . Zero . setLowBits ( ) ; break ; case : { unsigned IntNo = Op . getConstantOperandVal ( ) ; switch ( IntNo ) {" LLVM,RISCV,2799,"Predict the next statement of this code snippet: case : case : case : case : case : case : return ; case : case : { if ( Op . getValueType ( ) == && isa < ConstantSDNode > ( Op . getOperand ( ) ) && ( Op . getConstantOperandVal ( ) & ) == ) { unsigned Tmp = DAG . ComputeNumSignBits ( Op . getOperand ( ) , Depth + ) ; if ( Tmp > ) return ;" LLVM,RISCV,2800,"Predict the next statement of this code snippet: const APInt & Imm = ConstNode -> getAPIntValue ( ) ; if ( ( Imm + ) . isPowerOf2 ( ) || ( Imm - ) . isPowerOf2 ( ) || ( - Imm ) . isPowerOf2 ( ) || ( - - Imm ) . isPowerOf2 ( ) ) return true ; if ( Subtarget . hasStdExtM ( ) && VT . getSizeInBits ( ) >= Subtarget . getXLen ( ) ) return false ; if ( ! Imm . isSignedIntN ( ) && Imm . countTrailingZeros ( ) < ) {" LLVM,RISCV,2801,"Predict the next statement of this code snippet: const APInt & Imm = ConstNode -> getAPIntValue ( ) ; if ( ( Imm + ) . isPowerOf2 ( ) || ( Imm - ) . isPowerOf2 ( ) || ( - Imm ) . isPowerOf2 ( ) || ( - - Imm ) . isPowerOf2 ( ) ) return true ; if ( Subtarget . hasStdExtM ( ) && VT . getSizeInBits ( ) >= Subtarget . getXLen ( ) ) return false ;" LLVM,RISCV,2802,"Predict the next statement of this code snippet: case 'v' : return C_RegisterClass ; case 'I' : case 'J' : case 'K' : return C_Immediate ; case 'A' : return C_Memory ; } } return TargetLowering :: getConstraintType ( Constraint ) ;" LLVM,RISCV,2803,"Predict the next statement of this code snippet: case : return std :: make_tuple ( , Op . getOperand ( ) , DAG . getConstantFP ( , DL , EltVT ) ) ; case : return std :: make_tuple ( , Op . getOperand ( ) , Op . getOperand ( ) ) ; case : return std :: make_tuple ( , Op . getOperand ( ) , DAG . getNeutralElement ( BaseOpcode , DL , EltVT , Flags ) ) ; case : return std :: make_tuple ( , Op . getOperand ( ) , DAG . getNeutralElement ( BaseOpcode , DL , EltVT , Flags ) ) ; }" LLVM,RISCV,2804,"Predict the next statement of this code snippet: case : break ; NODE_NAME_CASE ( RET_FLAG ) NODE_NAME_CASE ( URET_FLAG ) NODE_NAME_CASE ( SRET_FLAG ) NODE_NAME_CASE ( MRET_FLAG ) NODE_NAME_CASE ( CALL ) NODE_NAME_CASE ( SELECT_CC ) NODE_NAME_CASE ( BR_CC ) NODE_NAME_CASE ( BuildPairF64 ) NODE_NAME_CASE ( SplitF64 ) NODE_NAME_CASE ( TAIL ) NODE_NAME_CASE ( MULHSU ) NODE_NAME_CASE ( SLLW ) NODE_NAME_CASE ( SRAW ) NODE_NAME_CASE ( SRLW ) NODE_NAME_CASE ( DIVW ) NODE_NAME_CASE ( DIVUW ) NODE_NAME_CASE ( REMUW ) NODE_NAME_CASE ( ROLW ) NODE_NAME_CASE ( RORW ) NODE_NAME_CASE ( CLZW ) NODE_NAME_CASE ( CTZW ) NODE_NAME_CASE ( FSLW ) NODE_NAME_CASE ( FSRW ) NODE_NAME_CASE ( FSL ) NODE_NAME_CASE ( FSR ) NODE_NAME_CASE ( FMV_H_X ) NODE_NAME_CASE ( FMV_X_ANYEXTH ) NODE_NAME_CASE ( FMV_W_X_RV64 ) NODE_NAME_CASE ( FMV_X_ANYEXTW_RV64 ) NODE_NAME_CASE ( READ_CYCLE_WIDE ) NODE_NAME_CASE ( GREV ) NODE_NAME_CASE ( GREVW ) NODE_NAME_CASE ( GORC ) NODE_NAME_CASE ( GORCW ) NODE_NAME_CASE ( SHFL ) NODE_NAME_CASE ( SHFLW ) NODE_NAME_CASE ( UNSHFL ) NODE_NAME_CASE ( UNSHFLW ) NODE_NAME_CASE ( BCOMPRESS ) NODE_NAME_CASE ( BCOMPRESSW ) NODE_NAME_CASE ( BDECOMPRESS ) NODE_NAME_CASE ( BDECOMPRESSW ) NODE_NAME_CASE ( VMV_V_X_VL ) NODE_NAME_CASE ( VFMV_V_F_VL ) NODE_NAME_CASE ( VMV_X_S ) NODE_NAME_CASE ( VMV_S_X_VL ) NODE_NAME_CASE ( VFMV_S_F_VL ) NODE_NAME_CASE ( SPLAT_VECTOR_I64 ) NODE_NAME_CASE ( SPLAT_VECTOR_SPLIT_I64_VL ) NODE_NAME_CASE ( READ_VLENB ) NODE_NAME_CASE ( TRUNCATE_VECTOR_VL ) NODE_NAME_CASE ( VSLIDEUP_VL ) NODE_NAME_CASE ( VSLIDE1UP_VL ) NODE_NAME_CASE ( VSLIDEDOWN_VL ) NODE_NAME_CASE ( VSLIDE1DOWN_VL ) NODE_NAME_CASE ( VID_VL ) NODE_NAME_CASE ( VFNCVT_ROD_VL ) NODE_NAME_CASE ( VECREDUCE_ADD_VL ) NODE_NAME_CASE ( VECREDUCE_UMAX_VL ) NODE_NAME_CASE ( VECREDUCE_SMAX_VL ) NODE_NAME_CASE ( VECREDUCE_UMIN_VL ) NODE_NAME_CASE ( VECREDUCE_SMIN_VL ) NODE_NAME_CASE ( VECREDUCE_AND_VL ) NODE_NAME_CASE ( VECREDUCE_OR_VL ) NODE_NAME_CASE ( VECREDUCE_XOR_VL ) NODE_NAME_CASE ( VECREDUCE_FADD_VL ) NODE_NAME_CASE ( VECREDUCE_SEQ_FADD_VL ) NODE_NAME_CASE ( VECREDUCE_FMIN_VL ) NODE_NAME_CASE ( VECREDUCE_FMAX_VL ) NODE_NAME_CASE ( ADD_VL ) NODE_NAME_CASE ( AND_VL ) NODE_NAME_CASE ( MUL_VL ) NODE_NAME_CASE ( OR_VL ) NODE_NAME_CASE ( SDIV_VL ) NODE_NAME_CASE ( SHL_VL ) NODE_NAME_CASE ( SREM_VL ) NODE_NAME_CASE ( SRA_VL ) NODE_NAME_CASE ( SRL_VL ) NODE_NAME_CASE ( SUB_VL ) NODE_NAME_CASE ( UDIV_VL ) NODE_NAME_CASE ( UREM_VL ) NODE_NAME_CASE ( XOR_VL ) NODE_NAME_CASE ( FADD_VL ) NODE_NAME_CASE ( FSUB_VL ) NODE_NAME_CASE ( FMUL_VL ) NODE_NAME_CASE ( FDIV_VL ) NODE_NAME_CASE ( FNEG_VL ) NODE_NAME_CASE ( FABS_VL ) NODE_NAME_CASE ( FSQRT_VL ) NODE_NAME_CASE ( FMA_VL ) NODE_NAME_CASE ( FCOPYSIGN_VL ) NODE_NAME_CASE ( SMIN_VL ) NODE_NAME_CASE ( SMAX_VL ) NODE_NAME_CASE ( UMIN_VL ) NODE_NAME_CASE ( UMAX_VL ) NODE_NAME_CASE ( FMINNUM_VL ) NODE_NAME_CASE ( FMAXNUM_VL ) NODE_NAME_CASE ( MULHS_VL ) NODE_NAME_CASE ( MULHU_VL ) NODE_NAME_CASE ( FP_TO_SINT_VL ) NODE_NAME_CASE ( FP_TO_UINT_VL ) NODE_NAME_CASE ( SINT_TO_FP_VL ) NODE_NAME_CASE ( UINT_TO_FP_VL ) NODE_NAME_CASE ( FP_EXTEND_VL ) NODE_NAME_CASE ( FP_ROUND_VL ) NODE_NAME_CASE ( SETCC_VL ) NODE_NAME_CASE ( VSELECT_VL ) NODE_NAME_CASE ( VMAND_VL ) NODE_NAME_CASE ( VMOR_VL ) NODE_NAME_CASE ( VMXOR_VL ) NODE_NAME_CASE ( VMCLR_VL ) NODE_NAME_CASE ( VMSET_VL ) NODE_NAME_CASE ( VRGATHER_VX_VL ) NODE_NAME_CASE ( VRGATHER_VV_VL ) NODE_NAME_CASE ( VRGATHEREI16_VV_VL ) NODE_NAME_CASE ( VSEXT_VL ) NODE_NAME_CASE ( VZEXT_VL ) NODE_NAME_CASE ( VPOPC_VL ) NODE_NAME_CASE ( VLE_VL ) NODE_NAME_CASE ( VSE_VL ) NODE_NAME_CASE ( READ_CSR ) NODE_NAME_CASE ( WRITE_CSR ) NODE_NAME_CASE ( SWAP_CSR ) }" LLVM,RISCV,2805,"Predict the next statement of this code snippet: if ( ShiftedC1Int . getMinSignedBits ( ) <= && isLegalAddImmediate ( ShiftedC1Int . getSExtValue ( ) ) ) return true ; if ( C1Int . getMinSignedBits ( ) <= && isLegalAddImmediate ( C1Int . getSExtValue ( ) ) ) return false ; int C1Cost = ( C1Int , Ty . getSizeInBits ( ) , Subtarget . is64Bit ( ) ) ;" LLVM,RISCV,2806,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerFixedLengthVectorLoadToRVV ( SDValue Op , SelectionDAG & DAG ) const { auto * Load = cast < LoadSDNode > ( Op ) ; SDLoc DL ( Op ) ; MVT VT = Op . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , Subtarget . getXLenVT ( ) ) ; SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ; SDValue NewLoad = DAG . getMemIntrinsicNode ( , DL , VTs , { Load -> getChain ( ) , Load -> getBasePtr ( ) , VL } , Load -> getMemoryVT ( ) , Load -> getMemOperand ( ) ) ; SDValue Result = convertFromScalableVector ( VT , NewLoad , DAG , Subtarget ) ;" LLVM,RISCV,2807,"Predict the next statement of this code snippet: auto * Load = cast < LoadSDNode > ( Op ) ; SDLoc DL ( Op ) ; MVT VT = Op . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , Subtarget . getXLenVT ( ) ) ;" LLVM,RISCV,2808,"Predict the next statement of this code snippet: MVT VT = StoreVal . getSimpleValueType ( ) ; if ( VT . getVectorElementType ( ) == && VT . getVectorNumElements ( ) < ) { VT = ;" LLVM,RISCV,2809,"Predict the next statement of this code snippet: CCValAssign & VA = ArgLocs [ i ] ; SDValue ArgValue ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) ArgValue = unpackF64OnRV32DSoftABI ( DAG , Chain , VA , DL ) ; else if ( VA . isRegLoc ( ) ) ArgValue = unpackFromRegLoc ( DAG , Chain , VA , DL , * this ) ; else ArgValue = unpackFromMemLoc ( DAG , Chain , VA , DL ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) { InVals . push_back ( DAG . getLoad ( VA . getValVT ( ) , DL , Chain , ArgValue , MachinePointerInfo ( ) ) ) ; unsigned ArgIndex = Ins [ i ] . OrigArgIndex ; unsigned ArgPartOffset = Ins [ i ] . PartOffset ; assert ( VA . getValVT ( ) . isVector ( ) || ArgPartOffset == ) ; while ( i + != e && Ins [ i + ] . OrigArgIndex == ArgIndex ) { CCValAssign & PartVA = ArgLocs [ i + ] ; unsigned PartOffset = Ins [ i + ] . PartOffset - ArgPartOffset ; SDValue Address = DAG . getNode ( , DL , PtrVT , ArgValue , DAG . getIntPtrConstant ( PartOffset , DL ) ) ; InVals . push_back ( DAG . getLoad ( PartVA . getValVT ( ) , DL , Chain , Address , MachinePointerInfo ( ) ) ) ; ++ i ; } continue ; } InVals . push_back ( ArgValue ) ; } if ( IsVarArg ) { ArrayRef < MCPhysReg > ArgRegs = makeArrayRef ( ArgGPRs ) ; unsigned Idx = CCInfo . getFirstUnallocated ( ArgRegs ) ; const TargetRegisterClass * RC = & ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; MachineFunctionInfo * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; int VaArgOffset , VarArgsSaveSize ; if ( ArgRegs . size ( ) == Idx ) { VaArgOffset = CCInfo . getNextStackOffset ( ) ; VarArgsSaveSize = ; } else {" LLVM,RISCV,2810,"Predict the next statement of this code snippet: IndexVT = getContainerForFixedLengthVector ( IndexVT ) ; ContainerVT = ( ContainerVT . getVectorElementType ( ) , IndexVT . getVectorElementCount ( ) ) ; } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; } else VL = DAG . getRegister ( , XLenVT ) ; unsigned IntID = IsUnmasked ? : ; SmallVector < SDValue , > Ops { MGN -> getChain ( ) , DAG . getTargetConstant ( IntID , DL , XLenVT ) } ; if ( ! IsUnmasked ) Ops . push_back ( PassThru ) ; Ops . push_back ( MGN -> getBasePtr ( ) ) ; Ops . push_back ( Index ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ;" LLVM,RISCV,2811,"Predict the next statement of this code snippet: assert ( VT . getVectorElementCount ( ) == IndexVT . getVectorElementCount ( ) && ) ; assert ( MGN -> getBasePtr ( ) . getSimpleValueType ( ) == XLenVT && ) ; assert ( MGN -> getExtensionType ( ) == && ) ; bool IsUnmasked = ( Mask . getNode ( ) ) ; SDValue VL ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { if ( VT . bitsGE ( IndexVT ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; IndexVT = ( IndexVT . getVectorElementType ( ) , ContainerVT . getVectorElementCount ( ) ) ; } else { IndexVT = getContainerForFixedLengthVector ( IndexVT ) ; ContainerVT = ( ContainerVT . getVectorElementType ( ) , IndexVT . getVectorElementCount ( ) ) ; } Index = convertToScalableVector ( IndexVT , Index , DAG , Subtarget ) ;" LLVM,RISCV,2812,"Predict the next statement of this code snippet: SDValue FalseV = Op . getOperand ( ) ; SDLoc DL ( Op ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( Op . getSimpleValueType ( ) == XLenVT && CondV . getOpcode ( ) == && CondV . getOperand ( ) . getSimpleValueType ( ) == XLenVT ) { SDValue LHS = CondV . getOperand ( ) ; SDValue RHS = CondV . getOperand ( ) ; auto CC = cast < CondCodeSDNode > ( CondV . getOperand ( ) ) ; CCVal = CC -> get ( ) ; if ( isa < ConstantSDNode > ( TrueV ) && isa < ConstantSDNode > ( FalseV ) && CCVal == ) { const APInt & TrueVal = cast < ConstantSDNode > ( TrueV ) -> getAPIntValue ( ) ; const APInt & FalseVal = cast < ConstantSDNode > ( FalseV ) -> getAPIntValue ( ) ; if ( TrueVal - == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , CondV , FalseV ) ; if ( TrueVal + == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , FalseV , CondV ) ; } translateSetCCForBranch ( DL , LHS , RHS , CCVal , DAG ) ; SDValue TargetCC = DAG . getTargetConstant ( CCVal , DL , XLenVT ) ; SDValue Ops [ ] = { LHS , RHS , TargetCC , TrueV , FalseV } ; return DAG . getNode ( , DL , Op . getValueType ( ) , Ops ) ; }" LLVM,RISCV,2813,"Predict the next statement of this code snippet: SDValue StepVec = DAG . getNode ( , DL , VT , Mask , VL ) ; uint64_t StepValImm = Op . getConstantOperandVal ( ) ; if ( StepValImm != ) { assert ( Op . getOperand ( ) . getValueType ( ) == XLenVT && ) ; if ( isPowerOf2_64 ( StepValImm ) ) { SDValue StepVal = DAG . getNode ( , DL , VT , DAG . getConstant ( Log2_64 ( StepValImm ) , DL , XLenVT ) ) ; StepVec = DAG . getNode ( , DL , VT , StepVec , StepVal ) ;" LLVM,RISCV,2814,"Predict the next statement of this code snippet: SDValue StepVec = DAG . getNode ( , DL , VT , Mask , VL ) ; uint64_t StepValImm = Op . getConstantOperandVal ( ) ; if ( StepValImm != ) { assert ( Op . getOperand ( ) . getValueType ( ) == XLenVT && ) ; if ( isPowerOf2_64 ( StepValImm ) ) { SDValue StepVal = DAG . getNode ( , DL , VT , DAG . getConstant ( Log2_64 ( StepValImm ) , DL , XLenVT ) ) ; StepVec = DAG . getNode ( , DL , VT , StepVec , StepVal ) ; } else { SDValue StepVal = DAG . getNode ( , DL , VT , Op . getOperand ( ) ) ;" LLVM,RISCV,2815,"Predict the next statement of this code snippet: } } bool IsSelect = all_of ( enumerate ( SVN -> getMask ( ) ) , [ & ] ( const auto & MaskIdx ) { int MaskIndex = MaskIdx . value ( ) ; return MaskIndex < || MaskIdx . index ( ) == ( unsigned ) MaskIndex % NumElts ; } ) ; assert ( ! V1 . isUndef ( ) && ) ; SmallVector < SDValue > MaskVals ; SmallVector < SDValue > GatherIndicesLHS , GatherIndicesRHS ; bool SwapOps = DAG . isSplatValue ( V2 ) && ! DAG . isSplatValue ( V1 ) ; bool InvertMask = IsSelect == SwapOps ; for ( int MaskIndex : SVN -> getMask ( ) ) { bool SelectMaskVal = ( MaskIndex < ( int ) NumElts ) ^ InvertMask ; MaskVals . push_back ( DAG . getConstant ( SelectMaskVal , DL , XLenVT ) ) ; if ( ! IsSelect ) { bool IsLHS = MaskIndex < ( int ) NumElts ; GatherIndicesLHS . push_back ( DAG . getConstant ( IsLHS ? std :: max ( MaskIndex , ) : , DL , XLenVT ) ) ; GatherIndicesRHS . push_back ( DAG . getConstant ( IsLHS ? : MaskIndex - NumElts , DL , XLenVT ) ) ; } } if ( SwapOps ) { std :: swap ( V1 , V2 ) ; std :: swap ( GatherIndicesLHS , GatherIndicesRHS ) ; } assert ( MaskVals . size ( ) == NumElts && ) ; MVT MaskVT = ( , NumElts ) ; SDValue SelectMask = DAG . getBuildVector ( MaskVT , DL , MaskVals ) ; if ( IsSelect ) return DAG . getNode ( , DL , VT , SelectMask , V1 , V2 ) ; if ( VT . getScalarSizeInBits ( ) == && VT . getVectorNumElements ( ) > ) { return SDValue ( ) ; } unsigned GatherOpc = ; MVT IndexVT = VT . changeTypeToInteger ( ) ; if ( IndexVT . getScalarType ( ) . bitsGT ( XLenVT ) ) { GatherOpc = ; IndexVT = IndexVT . changeVectorElementType ( ) ; } MVT IndexContainerVT = ContainerVT . changeVectorElementType ( IndexVT . getScalarType ( ) ) ; SDValue Gather ; if ( SDValue SplatValue = DAG . getSplatValue ( V1 , true ) ) { Gather = lowerScalarSplat ( SplatValue , VL , ContainerVT , DL , DAG , Subtarget ) ; } else { SDValue LHSIndices = DAG . getBuildVector ( IndexVT , DL , GatherIndicesLHS ) ; LHSIndices = convertToScalableVector ( IndexContainerVT , LHSIndices , DAG , Subtarget ) ; V1 = convertToScalableVector ( ContainerVT , V1 , DAG , Subtarget ) ; Gather = DAG . getNode ( GatherOpc , DL , ContainerVT , V1 , LHSIndices , TrueMask , VL ) ; } if ( ! V2 . isUndef ( ) ) {" LLVM,RISCV,2816,"Predict the next statement of this code snippet: SDValue V = OpIdx . value ( ) ; if ( ( unsigned ) OpIdx . index ( ) == EVLIdx ) { Ops . push_back ( DAG . getZExtOrTrunc ( V , DL , XLenVT ) ) ; continue ; } assert ( ! isa < VTSDNode > ( V ) && ) ; if ( ! V . getValueType ( ) . isFixedLengthVector ( ) ) { Ops . push_back ( V ) ; continue ; } MVT OpVT = V . getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( OpVT ) ;" LLVM,RISCV,2817,"Predict the next statement of this code snippet: unsigned Width = Op . getValueType ( ) == ? : ; if ( ShAmt >= Width && ! isPowerOf2_64 ( ShAmt ) ) return None ; if ( BitmanipMasks . size ( ) == && ShAmt >= ( Width / ) ) return None ; SDValue Src = Op . getOperand ( ) ; bool SHLExpMask = IsSHL ; if ( ! Mask ) { if ( Src . getOpcode ( ) == && isa < ConstantSDNode > ( Src . getOperand ( ) ) ) { Mask = Src . getConstantOperandVal ( ) ; Src = Src . getOperand ( ) ; SHLExpMask = ! SHLExpMask ; } else { Mask = maskTrailingOnes < uint64_t > ( Width ) ; * Mask &= ( IsSHL ? * Mask << ShAmt : * Mask >> ShAmt ) ; }" LLVM,RISCV,2818,"Predict the next statement of this code snippet: SelectionDAG & DAG = DCI . DAG ; return combineSelectCCAndUseCommutative ( N , DAG , true ) ;" LLVM,RISCV,2819,"Predict the next statement of this code snippet: static SDValue performANDCombine ( SDNode * N , TargetLowering :: DAGCombinerInfo & DCI , const Subtarget & Subtarget ) { SelectionDAG & DAG = DCI . DAG ; return combineSelectCCAndUseCommutative ( N , DAG , true ) ;" LLVM,RISCV,2820,"Predict the next statement of this code snippet: static SDValue performORCombine ( SDNode * N , TargetLowering :: DAGCombinerInfo & DCI , const Subtarget & Subtarget ) { SelectionDAG & DAG = DCI . DAG ; if ( Subtarget . hasStdExtZbp ( ) ) { if ( auto GREV = combineORToGREV ( SDValue ( N , ) , DAG , Subtarget ) ) return GREV ; if ( auto GORC = combineORToGORC ( SDValue ( N , ) , DAG , Subtarget ) ) return GORC ; if ( auto SHFL = combineORToSHFL ( SDValue ( N , ) , DAG , Subtarget ) ) return SHFL ;" LLVM,RISCV,2821,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtZbp ( ) ) { if ( auto GREV = combineORToGREV ( SDValue ( N , ) , DAG , Subtarget ) ) return GREV ; if ( auto GORC = combineORToGORC ( SDValue ( N , ) , DAG , Subtarget ) ) return GORC ;" LLVM,RISCV,2822,"Predict the next statement of this code snippet: static SDValue performXORCombine ( SDNode * N , TargetLowering :: DAGCombinerInfo & DCI , const Subtarget & Subtarget ) {" LLVM,RISCV,2823,"Predict the next statement of this code snippet: static SDValue performXORCombine ( SDNode * N , TargetLowering :: DAGCombinerInfo & DCI , const Subtarget & Subtarget ) { SelectionDAG & DAG = DCI . DAG ; return combineSelectCCAndUseCommutative ( N , DAG , false ) ;" LLVM,RISCV,2824,"Predict the next statement of this code snippet: return false ; case : if ( VT . getVectorNumElements ( ) > MinVLen ) return false ; MinVLen /= ; break ; case : case : case : case : break ; case : if ( ! Subtarget . hasStdExtZfh ( ) ) return false ; break ; case : if ( ! Subtarget . hasStdExtF ( ) ) return false ; break ; case : if ( ! Subtarget . hasStdExtD ( ) ) return false ; break ; } unsigned LMul = divideCeil ( VT . getSizeInBits ( ) , MinVLen ) ;" LLVM,RISCV,2825,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : return ; case : case : { if ( Op . getValueType ( ) == && isa < ConstantSDNode > ( Op . getOperand ( ) ) && ( Op . getConstantOperandVal ( ) & ) == ) { unsigned Tmp = DAG . ComputeNumSignBits ( Op . getOperand ( ) , Depth + ) ; if ( Tmp > ) return ; } break ; } case :" LLVM,RISCV,2826,"Predict the next statement of this code snippet: if ( ! isa < ConstantSDNode > ( Op . getOperand ( Idx ) ) ) return None ; uint64_t Val = Op . getConstantOperandVal ( Idx ) & maskTrailingOnes < uint64_t > ( EltSizeInBits ) ; if ( PrevElt ) { int64_t Diff = SignExtend64 ( Val - PrevElt -> first , EltSizeInBits ) ; if ( Diff % ( Idx - PrevElt -> second ) != ) return None ; int64_t Step = Diff / ( Idx - PrevElt -> second ) ; if ( Step == ) return None ; if ( ! SeqStep ) SeqStep = Step ; else if ( Step != SeqStep ) return None ;" LLVM,RISCV,2827,"Predict the next statement of this code snippet: if ( PrevElt ) { int64_t Diff = SignExtend64 ( Val - PrevElt -> first , EltSizeInBits ) ; if ( Diff % ( Idx - PrevElt -> second ) != ) return None ; int64_t Step = Diff / ( Idx - PrevElt -> second ) ; if ( Step == ) return None ; if ( ! SeqStep ) SeqStep = Step ; else if ( Step != SeqStep ) return None ; } if ( SeqStep ) { int64_t Addend = SignExtend64 ( Val - ( Idx * ( uint64_t ) * SeqStep ) , EltSizeInBits ) ; if ( ! SeqAddend ) SeqAddend = Addend ; else if ( SeqAddend != Addend ) return None ; }" LLVM,RISCV,2828,"Predict the next statement of this code snippet: MVT VT = Op . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( VT . isVector ( ) ) { MVT SplatCondVT = VT . changeVectorElementType ( ) ; SDValue CondSplat = VT . isScalableVector ( ) ? DAG . getSplatVector ( SplatCondVT , DL , CondV ) : DAG . getSplatBuildVector ( SplatCondVT , DL , CondV ) ; return DAG . getNode ( , DL , VT , CondSplat , TrueV , FalseV ) ; } if ( VT == XLenVT && CondV . getOpcode ( ) == && CondV . getOperand ( ) . getSimpleValueType ( ) == XLenVT ) { SDValue LHS = CondV . getOperand ( ) ; SDValue RHS = CondV . getOperand ( ) ; const auto * CC = cast < CondCodeSDNode > ( CondV . getOperand ( ) ) ; CCVal = CC -> get ( ) ; if ( isa < ConstantSDNode > ( TrueV ) && isa < ConstantSDNode > ( FalseV ) && CCVal == ) { const APInt & TrueVal = cast < ConstantSDNode > ( TrueV ) -> getAPIntValue ( ) ; const APInt & FalseVal = cast < ConstantSDNode > ( FalseV ) -> getAPIntValue ( ) ; if ( TrueVal - == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , CondV , FalseV ) ; if ( TrueVal + == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , FalseV , CondV ) ; } translateSetCCForBranch ( DL , LHS , RHS , CCVal , DAG ) ; SDValue TargetCC = DAG . getTargetConstant ( CCVal , DL , XLenVT ) ; SDValue Ops [ ] = { LHS , RHS , TargetCC , TrueV , FalseV } ;" LLVM,RISCV,2829,"Predict the next statement of this code snippet: V1 = convertToScalableVector ( ContainerVT , V1 , DAG , Subtarget ) ; assert ( Lane < ( int ) NumElts && ) ; SDValue Gather = DAG . getNode ( , DL , ContainerVT , V1 , DAG . getConstant ( Lane , DL , XLenVT ) , TrueMask , VL ) ; return convertFromScalableVector ( VT , Gather , DAG , Subtarget ) ; } } bool IsSelect = all_of ( enumerate ( SVN -> getMask ( ) ) , [ & ] ( const auto & MaskIdx ) { int MaskIndex = MaskIdx . value ( ) ; return MaskIndex < || MaskIdx . index ( ) == ( unsigned ) MaskIndex % NumElts ; } ) ; assert ( ! V1 . isUndef ( ) && ) ; SmallVector < SDValue > MaskVals ; SmallVector < SDValue > GatherIndicesLHS , GatherIndicesRHS ; bool SwapOps = DAG . isSplatValue ( V2 ) && ! DAG . isSplatValue ( V1 ) ; bool InvertMask = IsSelect == SwapOps ; for ( int MaskIndex : SVN -> getMask ( ) ) { bool SelectMaskVal = ( MaskIndex < ( int ) NumElts ) ^ InvertMask ; MaskVals . push_back ( DAG . getConstant ( SelectMaskVal , DL , XLenVT ) ) ; if ( ! IsSelect ) { bool IsLHSOrUndefIndex = MaskIndex < ( int ) NumElts ; GatherIndicesLHS . push_back ( IsLHSOrUndefIndex && MaskIndex >= ? DAG . getConstant ( MaskIndex , DL , XLenVT ) : DAG . getUNDEF ( XLenVT ) ) ; GatherIndicesRHS . push_back ( IsLHSOrUndefIndex ? DAG . getUNDEF ( XLenVT ) : DAG . getConstant ( MaskIndex - NumElts , DL , XLenVT ) ) ; } } if ( SwapOps ) { std :: swap ( V1 , V2 ) ; std :: swap ( GatherIndicesLHS , GatherIndicesRHS ) ; } assert ( MaskVals . size ( ) == NumElts && ) ; MVT MaskVT = ( , NumElts ) ; SDValue SelectMask = DAG . getBuildVector ( MaskVT , DL , MaskVals ) ; if ( IsSelect ) return DAG . getNode ( , DL , VT , SelectMask , V1 , V2 ) ; if ( VT . getScalarSizeInBits ( ) == && VT . getVectorNumElements ( ) > ) { return SDValue ( ) ; } unsigned GatherOpc = ; MVT IndexVT = VT . changeTypeToInteger ( ) ; if ( IndexVT . getScalarType ( ) . bitsGT ( XLenVT ) ) { GatherOpc = ;" LLVM,RISCV,2830,"Predict the next statement of this code snippet: if ( ! Subtarget . useRVVForFixedLengthVectors ( ) ) return false ; if ( VT . getFixedSizeInBits ( ) > * ) return false ; unsigned MinVLen = Subtarget . getMinRVVVectorSizeInBits ( ) ; switch ( VT . getVectorElementType ( ) . SimpleTy ) { default : return false ; case : if ( VT . getVectorNumElements ( ) > MinVLen ) return false ; MinVLen /= ; break ; case :" LLVM,RISCV,2831,"Predict the next statement of this code snippet: return emitSelectPseudo ( MI , BB ) ; case : return emitBuildPairF64Pseudo ( MI , BB ) ; case : return emitSplitF64Pseudo ( MI , BB ) ; }" LLVM,RISCV,2832,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,2833,"Predict the next statement of this code snippet: if ( isLegalAddImmediate ( C1Int . getSExtValue ( ) ) ) return false ; int C1Cost = ( C1Int , Ty . getSizeInBits ( ) , Subtarget . is64Bit ( ) ) ; int ShiftedC1Cost = ( ShiftedC1Int , Ty . getSizeInBits ( ) , Subtarget . is64Bit ( ) ) ; if ( C1Cost < ShiftedC1Cost ) return false ; } }" LLVM,RISCV,2834,"Predict the next statement of this code snippet: case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ;" LLVM,RISCV,2835,"Predict the next statement of this code snippet: ExtractElementIdx = DAG . getConstant ( , DL , XLenVT ) ; ExtractBitIdx = Idx ; } else { WideEltVT = LargestEltVT ; WidenVecLen = NumElts / WideEltVT . getSizeInBits ( ) ; ExtractElementIdx = DAG . getNode ( , DL , XLenVT , Idx , DAG . getConstant ( Log2_64 ( WideEltVT . getSizeInBits ( ) ) , DL , XLenVT ) ) ; ExtractBitIdx = DAG . getNode ( , DL , XLenVT , Idx , DAG . getConstant ( WideEltVT . getSizeInBits ( ) - , DL , XLenVT ) ) ; } MVT WideVT = ( WideEltVT , WidenVecLen ) ; Vec = DAG . getNode ( , DL , WideVT , Vec ) ; SDValue ExtractElt = DAG . getNode ( , DL , XLenVT , Vec , ExtractElementIdx ) ; SDValue ShiftRight = DAG . getNode ( , DL , XLenVT , ExtractElt , ExtractBitIdx ) ; return DAG . getNode ( , DL , XLenVT , ShiftRight , DAG . getConstant ( , DL , XLenVT ) ) ; } } MVT WideVT = ( , VecVT . getVectorElementCount ( ) ) ; Vec = DAG . getNode ( , DL , WideVT , Vec ) ; return DAG . getNode ( , DL , EltVT , Vec , Idx ) ;" LLVM,RISCV,2836,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; EVT MaskVT = Op . getValueType ( ) ; assert ( MaskVT . isVector ( ) && MaskVT . getVectorElementType ( ) == && ) ; SDValue Src = Op . getOperand ( ) ; MVT VecVT = Src . getSimpleValueType ( ) ; SDValue Mask , VL ; if ( IsVPTrunc ) { Mask = Op . getOperand ( ) ; VL = Op . getOperand ( ) ; } MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; if ( IsVPTrunc ) { MVT MaskContainerVT = getContainerForFixedLengthVector ( Mask . getSimpleValueType ( ) ) ; Mask = convertToScalableVector ( MaskContainerVT , Mask , DAG , Subtarget ) ; } } if ( ! IsVPTrunc ) {" LLVM,RISCV,2837,"Predict the next statement of this code snippet: assert ( VT . isVector ( ) && ) ; if ( VT . getVectorElementType ( ) == ) return lowerVectorMaskTruncLike ( Op , DAG ) ; MVT DstEltVT = VT . getVectorElementType ( ) ; SDValue Src = Op . getOperand ( ) ; MVT SrcVT = Src . getSimpleValueType ( ) ; MVT SrcEltVT = SrcVT . getVectorElementType ( ) ; assert ( DstEltVT . bitsLT ( SrcEltVT ) && isPowerOf2_64 ( DstEltVT . getSizeInBits ( ) ) && isPowerOf2_64 ( SrcEltVT . getSizeInBits ( ) ) && ) ; MVT ContainerVT = SrcVT ; SDValue Mask , VL ; if ( IsVPTrunc ) { Mask = Op . getOperand ( ) ; VL = Op . getOperand ( ) ; } if ( SrcVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( SrcVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; if ( IsVPTrunc ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; } } SDValue Result = Src ; if ( ! IsVPTrunc ) { std :: tie ( Mask , VL ) = getDefaultVLOps ( SrcVT , ContainerVT , DL , DAG , Subtarget ) ; } LLVMContext & Context = * DAG . getContext ( ) ; const ElementCount Count = ContainerVT . getVectorElementCount ( ) ;" LLVM,RISCV,2838,"Predict the next statement of this code snippet: SDValue Src = Op . getOperand ( ) ; SDValue VL = Op . getOperand ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT SrcVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Src = convertToScalableVector ( SrcVT , Src , DAG , Subtarget ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; SDValue ZeroSplat = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , Zero , VL ) ; SDValue SplatValue = DAG . getConstant ( Op . getOpcode ( ) == ? : - , DL , XLenVT ) ; SDValue Splat = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatValue , VL ) ; SDValue Result = DAG . getNode ( , DL , ContainerVT , Src , Splat , ZeroSplat , VL ) ;" LLVM,RISCV,2839,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; MVT VT = Op . getSimpleValueType ( ) ; SDValue Src = Op . getOperand ( ) ; SDValue VL = Op . getOperand ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT SrcVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Src = convertToScalableVector ( SrcVT , Src , DAG , Subtarget ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; SDValue ZeroSplat = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , Zero , VL ) ; SDValue SplatValue = DAG . getConstant ( Op . getOpcode ( ) == ? : - , DL , XLenVT ) ; SDValue Splat = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatValue , VL ) ;" LLVM,RISCV,2840,"Predict the next statement of this code snippet: if ( SrcVT . isInteger ( ) ) { assert ( DstVT . isFloatingPoint ( ) && ) ; MVT InterimFVT = DstVT ; if ( SrcEltSize > ( * DstEltSize ) ) { assert ( SrcEltSize == ( * DstEltSize ) && ) ; assert ( DstVT . getVectorElementType ( ) == && ) ; InterimFVT = ( , DstVT . getVectorElementCount ( ) ) ; } Result = DAG . getNode ( ISDOpc , DL , InterimFVT , Src , Mask , VL ) ; if ( InterimFVT != DstVT ) { Src = Result ; Result = DAG . getNode ( , DL , DstVT , Src , Mask , VL ) ; } } else { assert ( SrcVT . isFloatingPoint ( ) && DstVT . isInteger ( ) && ) ; if ( DstEltSize == ) { assert ( SrcEltSize >= && ) ; MVT InterimIVT = ( ( SrcEltSize ) , DstVT . getVectorElementCount ( ) ) ; Result = DAG . getNode ( ISDOpc , DL , InterimIVT , Src , Mask , VL ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue SplatZero = DAG . getConstant ( , DL , XLenVT ) ; SplatZero = DAG . getNode ( , DL , InterimIVT , DAG . getUNDEF ( InterimIVT ) , SplatZero ) ; Result = DAG . getNode ( , DL , DstVT , Result , SplatZero , DAG . getCondCode ( ) , Mask , VL ) ; } else { MVT InterimIVT = ( ( SrcEltSize / ) , DstVT . getVectorElementCount ( ) ) ; Result = DAG . getNode ( ISDOpc , DL , InterimIVT , Src , Mask , VL ) ; while ( InterimIVT != DstVT ) { SrcEltSize /= ; Src = Result ; InterimIVT = ( ( SrcEltSize / ) , DstVT . getVectorElementCount ( ) ) ; Result = DAG . getNode ( , DL , InterimIVT , Src , Mask , VL ) ; } } } } MVT VT = Op . getSimpleValueType ( ) ; if ( ! VT . isFixedLengthVector ( ) ) return Result ;" LLVM,RISCV,2841,"Predict the next statement of this code snippet: assert ( VType :: isValidSEW ( SEW ) && ) ; VSEW ElementWidth = static_cast < VSEW > ( Log2_32 ( SEW / ) ) ; VLMUL Multiplier = static_cast < VLMUL > ( VLMul ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; MachineInstrBuilder MIB = BuildMI ( * BB , MI , DL , TII . get ( ) ) ; if ( VLIndex >= ) { Register DestReg = MRI . createVirtualRegister ( & ) ; MIB . addReg ( DestReg , RegState :: Define | RegState :: Dead ) . addReg ( MI . getOperand ( VLIndex ) . getReg ( ) ) ; } else MIB . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) ; MIB . addImm ( VType :: encodeVTYPE ( Multiplier , ElementWidth , true , false ) ) ;" LLVM,RISCV,2842,"Predict the next statement of this code snippet: for ( unsigned i = ; i != NumArgs ; ++ i ) { MVT ArgVT = Ins [ i ] . VT ; ArgFlags = Ins [ i ] . Flags ; Type * ArgTy = nullptr ; if ( IsRet ) ArgTy = FType -> getReturnType ( ) ; else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet , ArgTy , * this , FirstMaskArgument ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << '\n' ) ; llvm_unreachable ( nullptr ) ;" LLVM,RISCV,2843,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtV ( ) ) preAssignMask ( Outs , FirstMaskArgument , CCInfo ) ; for ( unsigned i = ; i != NumArgs ; i ++ ) { MVT ArgVT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; Type * OrigTy = CLI ? CLI -> getArgs ( ) [ Outs [ i ] . OrigArgIndex ] . Ty : nullptr ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet , OrigTy , * this , FirstMaskArgument ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << ) ;" LLVM,RISCV,2844,"Predict the next statement of this code snippet: bool TargetLowering :: CanLowerReturn ( CallingConv :: ID CallConv , MachineFunction & MF , bool IsVarArg , const SmallVectorImpl < > & Outs , LLVMContext & Context ) const { SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , RVLocs , Context ) ; Optional < unsigned > FirstMaskArgument ; if ( Subtarget . hasStdExtV ( ) ) preAssignMask ( Outs , FirstMaskArgument , CCInfo ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ;" LLVM,RISCV,2845,"Predict the next statement of this code snippet: for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; ABI = MF . getSubtarget < Subtarget > ( ) . getTargetABI ( ) ; if ( CC_ ( MF . getDataLayout ( ) , ABI , i , VT , VT , CCValAssign :: Full , ArgFlags , CCInfo , true , true , nullptr , * this , FirstMaskArgument ) ) return false ; }" LLVM,RISCV,2846,"Predict the next statement of this code snippet: LocVT = ; if ( ! Reg ) { unsigned StackOffset = State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ; } if ( ! State . AllocateReg ( ArgGPRs ) ) State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } Register Reg ; if ( ValVT == && ! UseGPRForF16_F32 ) Reg = State . AllocateReg ( ArgFPR16s ) ; else if ( ValVT == && ! UseGPRForF16_F32 ) Reg = State . AllocateReg ( ArgFPR32s ) ; else if ( ValVT == && ! UseGPRForF64 ) Reg = State . AllocateReg ( ArgFPR64s ) ; else if ( ValVT . isScalableVector ( ) ) { const TargetRegisterClass * RC = TLI . getRegClassFor ( ValVT ) ; if ( RC == & ) { if ( FirstMaskArgument . hasValue ( ) && ValNo == FirstMaskArgument . getValue ( ) ) { Reg = State . AllocateReg ( ) ; } else { Reg = State . AllocateReg ( ArgVRs ) ; } } else if ( RC == & ) { Reg = State . AllocateReg ( ArgVRM2s ) ; } else if ( RC == & ) { Reg = State . AllocateReg ( ArgVRM4s ) ; } else if ( RC == & ) {" LLVM,RISCV,2847,"Predict the next statement of this code snippet: static SDValue combineGREVI_GORCI ( SDNode * N , SelectionDAG & DAG ) { unsigned ShAmt1 = N -> getConstantOperandVal ( ) ; SDValue Src = N -> getOperand ( ) ; if ( Src . getOpcode ( ) != N -> getOpcode ( ) ) return SDValue ( ) ; unsigned ShAmt2 = Src . getConstantOperandVal ( ) ; Src = Src . getOperand ( ) ; unsigned CombinedShAmt ; if ( N -> getOpcode ( ) == || N -> getOpcode ( ) == ) CombinedShAmt = ShAmt1 | ShAmt2 ;" LLVM,RISCV,2848,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; return DAG . getNode ( , DL , VT , LHS -> Op , DAG . getTargetConstant ( LHS -> ShAmt , DL , Subtarget . getXLenVT ( ) ) ) ; } } return SDValue ( ) ;" LLVM,RISCV,2849,"Predict the next statement of this code snippet: if ( VA . getLocVT ( ) . isInteger ( ) && VA . getValVT ( ) == ) Val = DAG . getNode ( , DL , , Val ) ;" LLVM,RISCV,2850,"Predict the next statement of this code snippet: if ( VT . isScalarInteger ( ) ) { if ( ! Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) ) return false ; if ( auto * ConstNode = dyn_cast < ConstantSDNode > ( C . getNode ( ) ) ) {" LLVM,RISCV,2851,"Predict the next statement of this code snippet: return addVSetVL ( MI , BB , VLIndex , SEWIndex , RVV -> VLMul ) ; } switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : assert ( ! Subtarget . is64Bit ( ) && ) ; return emitReadCycleWidePseudo ( MI , BB ) ; case : case : case :" LLVM,RISCV,2852,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,2853,"Predict the next statement of this code snippet: break ; NODE_NAME_CASE ( RET_FLAG ) NODE_NAME_CASE ( URET_FLAG ) NODE_NAME_CASE ( SRET_FLAG ) NODE_NAME_CASE ( MRET_FLAG ) NODE_NAME_CASE ( CALL ) NODE_NAME_CASE ( SELECT_CC ) NODE_NAME_CASE ( BuildPairF64 ) NODE_NAME_CASE ( SplitF64 ) NODE_NAME_CASE ( TAIL ) NODE_NAME_CASE ( SLLW ) NODE_NAME_CASE ( SRAW ) NODE_NAME_CASE ( SRLW ) NODE_NAME_CASE ( DIVW ) NODE_NAME_CASE ( DIVUW ) NODE_NAME_CASE ( REMUW ) NODE_NAME_CASE ( ROLW ) NODE_NAME_CASE ( RORW ) NODE_NAME_CASE ( FSLW ) NODE_NAME_CASE ( FSRW ) NODE_NAME_CASE ( FMV_H_X ) NODE_NAME_CASE ( FMV_X_ANYEXTH ) NODE_NAME_CASE ( FMV_W_X_RV64 ) NODE_NAME_CASE ( FMV_X_ANYEXTW_RV64 ) NODE_NAME_CASE ( READ_CYCLE_WIDE ) NODE_NAME_CASE ( GREVI ) NODE_NAME_CASE ( GREVIW ) NODE_NAME_CASE ( GORCI ) NODE_NAME_CASE ( GORCIW ) }" LLVM,RISCV,2854,"Predict the next statement of this code snippet: break ;" LLVM,RISCV,2855,"Predict the next statement of this code snippet: unsigned PartOffset = Ins [ i + ] . PartOffset ; SDValue Address = DAG . getNode ( , DL , PtrVT , ArgValue , DAG . getIntPtrConstant ( PartOffset , DL ) ) ; InVals . push_back ( DAG . getLoad ( PartVA . getValVT ( ) , DL , Chain , Address , MachinePointerInfo ( ) ) ) ; ++ i ; } continue ; } InVals . push_back ( ArgValue ) ; } if ( IsVarArg ) { ArrayRef < MCPhysReg > ArgRegs = makeArrayRef ( ArgGPRs ) ; unsigned Idx = CCInfo . getFirstUnallocated ( ArgRegs ) ; const TargetRegisterClass * RC = & ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; MachineFunctionInfo * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; int VaArgOffset , VarArgsSaveSize ; if ( ArgRegs . size ( ) == Idx ) { VaArgOffset = CCInfo . getNextStackOffset ( ) ; VarArgsSaveSize = ; } else { VarArgsSaveSize = XLenInBytes * ( ArgRegs . size ( ) - Idx ) ; VaArgOffset = - VarArgsSaveSize ; } int FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; RVFI -> setVarArgsFrameIndex ( FI ) ; if ( Idx % ) { MFI . CreateFixedObject ( XLenInBytes , VaArgOffset - ( int ) XLenInBytes , true ) ; VarArgsSaveSize += XLenInBytes ; } for ( unsigned I = Idx ; I < ArgRegs . size ( ) ; ++ I , VaArgOffset += XLenInBytes ) { const Register Reg = RegInfo . createVirtualRegister ( RC ) ; RegInfo . addLiveIn ( ArgRegs [ I ] , Reg ) ; SDValue ArgValue = DAG . getCopyFromReg ( Chain , DL , Reg , XLenVT ) ; FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; SDValue PtrOff = DAG . getFrameIndex ( FI , getPointerTy ( DAG . getDataLayout ( ) ) ) ; SDValue Store = DAG . getStore ( Chain , DL , ArgValue , PtrOff , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ; cast < StoreSDNode > ( Store . getNode ( ) ) -> getMemOperand ( ) -> setValue ( ( Value * ) nullptr ) ; OutChains . push_back ( Store ) ; } RVFI -> setVarArgsSaveSize ( VarArgsSaveSize ) ; } if ( ! OutChains . empty ( ) ) { OutChains . push_back ( Chain ) ;" LLVM,RISCV,2856,"Predict the next statement of this code snippet: assert ( II -> ExtendedOperand < Op . getNumOperands ( ) ) ; SmallVector < SDValue , > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ; SDValue & ScalarOp = Operands [ II -> ExtendedOperand ] ; if ( ScalarOp . getValueType ( ) == || ScalarOp . getValueType ( ) == || ScalarOp . getValueType ( ) == ) { ScalarOp = DAG . getNode ( , DL , Subtarget . getXLenVT ( ) , ScalarOp ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , Operands ) ; } } } } switch ( IntNo ) { default : return SDValue ( ) ; case : { EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ;" LLVM,RISCV,2857,"Predict the next statement of this code snippet: case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : { assert ( ( ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) ) || Subtarget . hasStdExtZfh ( ) ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) == && Subtarget . hasStdExtZfh ( ) ) { if ( Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , Subtarget . getXLenVT ( ) , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } else if ( Op . getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) ) { if ( Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } return SDValue ( ) ; } case : return LowerINTRINSIC_WO_CHAIN ( Op , DAG ) ; case : case : { assert ( Subtarget . hasStdExtZbp ( ) && ) ; MVT VT = Op . getSimpleValueType ( ) ; SDLoc DL ( Op ) ;" LLVM,RISCV,2858,"Predict the next statement of this code snippet: return lowerConstantPool ( Op , DAG ) ; case : return lowerGlobalTLSAddress ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : { assert ( ( ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) ) || Subtarget . hasStdExtZfh ( ) ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) == && Subtarget . hasStdExtZfh ( ) ) { if ( Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , Subtarget . getXLenVT ( ) , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } else if ( Op . getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) ) { if ( Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } return SDValue ( ) ; } case : return LowerINTRINSIC_WO_CHAIN ( Op , DAG ) ; case : case : { assert ( Subtarget . hasStdExtZbp ( ) && ) ;" LLVM,RISCV,2859,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , DAG . getMachineFunction ( ) , RVLocs , * DAG . getContext ( ) ) ; analyzeOutputArgs ( DAG . getMachineFunction ( ) , CCInfo , Outs , true , nullptr ) ; if ( CallConv == CallingConv :: GHC && ! RVLocs . empty ( ) ) report_fatal_error ( ) ; SDValue Glue ; SmallVector < SDValue , > RetOps ( , Chain ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; Register RegLo = VA . getLocReg ( ) ; assert ( RegLo < && ) ; Register RegHi = RegLo + ; if ( STI . isRegisterReservedByUser ( RegLo ) || STI . isRegisterReservedByUser ( RegHi ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegHi , ) ) ; } else { Val = convertValVTToLocVT ( DAG , Val , VA , DL ) ; Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Glue ) ; if ( STI . isRegisterReservedByUser ( VA . getLocReg ( ) ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ; } } RetOps [ ] = Chain ;" LLVM,RISCV,2860,"Predict the next statement of this code snippet: CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; Register RegLo = VA . getLocReg ( ) ; assert ( RegLo < && ) ; Register RegHi = RegLo + ; if ( STI . isRegisterReservedByUser ( RegLo ) || STI . isRegisterReservedByUser ( RegHi ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegHi , ) ) ; } else { Val = convertValVTToLocVT ( DAG , Val , VA , DL ) ; Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Glue ) ; if ( STI . isRegisterReservedByUser ( VA . getLocReg ( ) ) ) MF . getFunction ( ) . getContext ( ) . diagnose ( DiagnosticInfoUnsupported { MF . getFunction ( ) , } ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ; } } RetOps [ ] = Chain ; if ( Glue . getNode ( ) ) { RetOps . push_back ( Glue ) ; } const Function & Func = DAG . getMachineFunction ( ) . getFunction ( ) ; if ( Func . hasFnAttribute ( ) ) { if ( ! Func . getReturnType ( ) -> isVoidTy ( ) ) report_fatal_error ( ) ;" LLVM,RISCV,2861,"Predict the next statement of this code snippet: auto CC = cast < CondCodeSDNode > ( CondV . getOperand ( ) ) ; CCVal = CC -> get ( ) ; normaliseSetCC ( LHS , RHS , CCVal ) ; SDValue TargetCC = DAG . getConstant ( CCVal , DL , XLenVT ) ; SDValue Ops [ ] = { LHS , RHS , TargetCC , TrueV , FalseV } ; return DAG . getNode ( , DL , Op . getValueType ( ) , Ops ) ; } SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; SDValue SetNE = DAG . getConstant ( , DL , XLenVT ) ; SDValue Ops [ ] = { CondV , Zero , SetNE , TrueV , FalseV } ;" LLVM,RISCV,2862,"Predict the next statement of this code snippet: unsigned MaskIdx = Log2_64 ( ShAmt ) ; if ( MaskIdx >= array_lengthof ( BitmanipMasks ) ) return None ; auto Src = Op . getOperand ( ) ; unsigned Width = Op . getValueType ( ) == ? : ; auto ExpMask = BitmanipMasks [ MaskIdx ] & maskTrailingOnes < uint64_t > ( Width ) ; bool SHLExpMask = IsSHL ; if ( ! Mask ) { if ( Src . getOpcode ( ) == && isa < ConstantSDNode > ( Src . getOperand ( ) ) ) { Mask = Src . getConstantOperandVal ( ) ; Src = Src . getOperand ( ) ;" LLVM,RISCV,2863,"Predict the next statement of this code snippet: return DCI . CombineTo ( N , Lo , Hi ) ; } if ( ! ( Op0 . getOpcode ( ) == || Op0 . getOpcode ( ) == ) || ! Op0 . getNode ( ) -> hasOneUse ( ) ) break ; SDValue NewSplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Op0 . getOperand ( ) ) ; SDValue Lo = NewSplitF64 . getValue ( ) ; SDValue Hi = NewSplitF64 . getValue ( ) ; APInt SignBit = APInt :: getSignMask ( ) ; if ( Op0 . getOpcode ( ) == ) { SDValue NewHi = DAG . getNode ( , DL , , Hi , DAG . getConstant ( SignBit , DL , ) ) ; return DCI . CombineTo ( N , Lo , NewHi ) ; } assert ( Op0 . getOpcode ( ) == ) ; SDValue NewHi = DAG . getNode ( , DL , , Hi , DAG . getConstant ( ~ SignBit , DL , ) ) ; return DCI . CombineTo ( N , Lo , NewHi ) ; } case : case : case : case : case : { SDValue LHS = N -> getOperand ( ) ; SDValue RHS = N -> getOperand ( ) ; APInt LHSMask = APInt :: getLowBitsSet ( LHS . getValueSizeInBits ( ) , ) ; APInt RHSMask = APInt :: getLowBitsSet ( RHS . getValueSizeInBits ( ) , ) ; if ( SimplifyDemandedBits ( N -> getOperand ( ) , LHSMask , DCI ) || SimplifyDemandedBits ( N -> getOperand ( ) , RHSMask , DCI ) ) { if ( N -> getOpcode ( ) != ) DCI . AddToWorklist ( N ) ; return SDValue ( N , ) ; } break ; } case : case : { SDValue Op0 = N -> getOperand ( ) ; SDValue Op1 = N -> getOperand ( ) ; SDValue ShAmt = N -> getOperand ( ) ; APInt OpMask = APInt :: getLowBitsSet ( Op0 . getValueSizeInBits ( ) , ) ; APInt ShAmtMask = APInt :: getLowBitsSet ( ShAmt . getValueSizeInBits ( ) , ) ; if ( SimplifyDemandedBits ( Op0 , OpMask , DCI ) || SimplifyDemandedBits ( Op1 , OpMask , DCI ) || SimplifyDemandedBits ( ShAmt , ShAmtMask , DCI ) ) { if ( N -> getOpcode ( ) != ) DCI . AddToWorklist ( N ) ;" LLVM,RISCV,2864,"Predict the next statement of this code snippet: unsigned NumArgs = Args . size ( ) ; for ( unsigned I = ; I != NumArgs ; ++ I ) { MVT ArgVT = Args [ I ] . VT ; if ( ! ArgVT . isScalableVector ( ) || ArgVT . getVectorElementType ( ) . SimpleTy != ) continue ; FirstMaskArgument = I ; break ;" LLVM,RISCV,2865,"Predict the next statement of this code snippet: static void preAssignMask ( const ArgTy & Args , Optional < unsigned > & FirstMaskArgument , CCState & CCInfo ) { unsigned NumArgs = Args . size ( ) ; for ( unsigned I = ; I != NumArgs ; ++ I ) { MVT ArgVT = Args [ I ] . VT ; if ( ! ArgVT . isScalableVector ( ) || ArgVT . getVectorElementType ( ) . SimpleTy != ) continue ; FirstMaskArgument = I ; break ;" LLVM,RISCV,2866,"Predict the next statement of this code snippet: MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; SDValue Val ; const TargetRegisterClass * RC = TLI . getRegClassFor ( LocVT . getSimpleVT ( ) ) ;" LLVM,RISCV,2867,"Predict the next statement of this code snippet: MVT VT = N -> getSimpleValueType ( ) ; unsigned NarrowSize = VT . getScalarSizeInBits ( ) / ; MVT NarrowVT = ( ( NarrowSize ) , VT . getVectorElementCount ( ) ) ; SDValue Mask = N -> getOperand ( ) ; SDValue VL = N -> getOperand ( ) ; SDLoc DL ( N ) ;" LLVM,RISCV,2868,"Predict the next statement of this code snippet: SDValue Op0 = N -> getOperand ( ) ; SDValue Op1 = N -> getOperand ( ) ; if ( Commute ) std :: swap ( Op0 , Op1 ) ; MVT VT = N -> getSimpleValueType ( ) ; unsigned NarrowSize = VT . getScalarSizeInBits ( ) / ; MVT NarrowVT = ( ( NarrowSize ) , VT . getVectorElementCount ( ) ) ; SDValue Mask = N -> getOperand ( ) ; SDValue VL = N -> getOperand ( ) ; SDLoc DL ( N ) ; if ( ( Op1 . getOpcode ( ) == || Op1 . getOpcode ( ) == ) && Op1 . hasOneUse ( ) && Op1 . getOperand ( ) == Mask && Op1 . getOperand ( ) == VL ) { unsigned ExtOpc = Op1 . getOpcode ( ) ; Op1 = Op1 . getOperand ( ) ; if ( Op1 . getValueType ( ) != NarrowVT ) Op1 = DAG . getNode ( ExtOpc , DL , NarrowVT , Op1 , Mask , VL ) ; unsigned WOpc ;" LLVM,RISCV,2869,"Predict the next statement of this code snippet: SDValue Src = N -> getOperand ( ) ; if ( Src . getOpcode ( ) != N -> getOpcode ( ) ) return SDValue ( ) ; if ( ! isa < ConstantSDNode > ( N -> getOperand ( ) ) || ! isa < ConstantSDNode > ( Src . getOperand ( ) ) ) return SDValue ( ) ; unsigned ShAmt1 = N -> getConstantOperandVal ( ) ;" LLVM,RISCV,2870,"Predict the next statement of this code snippet: static SDValue combineGREVI_GORCI ( SDNode * N , SelectionDAG & DAG ) { bool IsGORC = N -> getOpcode ( ) == ; assert ( ( IsGORC || N -> getOpcode ( ) == ) && ) ; SDValue Src = N -> getOperand ( ) ; if ( Src . getOpcode ( ) != N -> getOpcode ( ) ) return SDValue ( ) ; if ( ! isa < ConstantSDNode > ( N -> getOperand ( ) ) || ! isa < ConstantSDNode > ( Src . getOperand ( ) ) ) return SDValue ( ) ; unsigned ShAmt1 = N -> getConstantOperandVal ( ) ; unsigned ShAmt2 = Src . getConstantOperandVal ( ) ; Src = Src . getOperand ( ) ; unsigned CombinedShAmt ;" LLVM,RISCV,2871,"Predict the next statement of this code snippet: } else if ( Op1 . getOpcode ( ) == ) { if ( ! Op1 . getOperand ( ) . isUndef ( ) ) return SDValue ( ) ; if ( Op1 . getOperand ( ) != VL ) return SDValue ( ) ; Op1 = Op1 . getOperand ( ) ; unsigned EltBits = VT . getScalarSizeInBits ( ) ; unsigned ScalarBits = Op1 . getValueSizeInBits ( ) ; if ( ScalarBits < EltBits ) return SDValue ( ) ; if ( IsSignExt && DAG . ComputeNumSignBits ( Op1 ) > ( ScalarBits - NarrowSize ) ) { } else { APInt Mask = APInt :: getBitsSetFrom ( ScalarBits , NarrowSize ) ; if ( DAG . MaskedValueIsZero ( Op1 , Mask ) ) IsVWMULSU = IsSignExt ; else return SDValue ( ) ; } Op1 = DAG . getNode ( , DL , NarrowVT , DAG . getUNDEF ( NarrowVT ) , Op1 , VL ) ; } else return SDValue ( ) ; Op0 = Op0 . getOperand ( ) ;" LLVM,RISCV,2872,"Predict the next statement of this code snippet: unsigned BitWidth = IsWInstruction ? : VT . getSizeInBits ( ) ; assert ( isPowerOf2_32 ( BitWidth ) && ) ; unsigned ShAmt1 = N -> getConstantOperandVal ( ) ; unsigned ShAmt2 = Src . getConstantOperandVal ( ) ; if ( BitWidth < || ShAmt1 != ( BitWidth / ) || ShAmt2 != ( BitWidth - ) ) return SDValue ( ) ; Src = Src . getOperand ( ) ; unsigned CombinedShAmt = ShAmt1 ^ ShAmt2 ; if ( CombinedShAmt == ) return Src ; SDValue Res = DAG . getNode ( , DL , VT , Src , DAG . getConstant ( CombinedShAmt , DL , N -> getOperand ( ) . getValueType ( ) ) ) ; if ( ! IsWInstruction ) return Res ;" LLVM,RISCV,2873,"Predict the next statement of this code snippet: if ( ShAmt & Shift ) { uint64_t Mask = GREVMasks [ Stage ] ; uint64_t Res = ( ( x & Mask ) << Shift ) | ( ( x >> Shift ) & Mask ) ; if ( IsGORC ) Res |= x ; x = Res ; }" LLVM,RISCV,2874,"Predict the next statement of this code snippet: static const uint64_t GREVMasks [ ] = { , , , , , } ; for ( unsigned Stage = ; Stage != ; ++ Stage ) { unsigned Shift = << Stage ; if ( ShAmt & Shift ) { uint64_t Mask = GREVMasks [ Stage ] ; uint64_t Res = ( ( x & Mask ) << Shift ) | ( ( x >> Shift ) & Mask ) ;" LLVM,RISCV,2875,"Predict the next statement of this code snippet: Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: urem ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: udiv ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleTZ = Known2 . trunc ( ) . countMaxTrailingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleTZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; } case : { KnownBits Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned PossibleLZ = Known2 . trunc ( ) . countMaxLeadingZeros ( ) ; unsigned LowBits = Log2_32 ( PossibleLZ ) + ; Known . Zero . setBitsFrom ( LowBits ) ; break ; } case : case : { if ( auto * C = dyn_cast < ConstantSDNode > ( Op . getOperand ( ) ) ) { Known = DAG . computeKnownBits ( Op . getOperand ( ) , Depth + ) ; unsigned ShAmt = C -> getZExtValue ( ) & ( Known . getBitWidth ( ) - ) ; bool IsGORC = Op . getOpcode ( ) == ; Known . Zero = ~ computeGREVOrGORC ( ~ Known . Zero . getZExtValue ( ) , ShAmt , IsGORC ) ; Known . One = computeGREVOrGORC ( Known . One . getZExtValue ( ) , ShAmt , IsGORC ) ; } break ; } case : { unsigned MinVLenB = std :: min ( , Subtarget . getMinVLen ( ) ) / ; if ( MinVLenB > ) Known . Zero . setLowBits ( Log2_32 ( MinVLenB ) ) ; Known . Zero . setBitsFrom ( ) ; break ; } case : case : { unsigned IntNo = Op . getConstantOperandVal ( Opc == ? : ) ; switch ( IntNo ) {" LLVM,RISCV,2876,"Predict the next statement of this code snippet: } switch ( getTargetMachine ( ) . getCodeModel ( ) ) { default : report_fatal_error ( ) ; case CodeModel :: Small : { SDValue AddrHi = getTargetNode ( N , DL , Ty , DAG , ) ; SDValue AddrLo = getTargetNode ( N , DL , Ty , DAG , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , AddrLo ) , ) ; } case CodeModel :: Medium : { SDValue Addr = getTargetNode ( N , DL , Ty , DAG , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ;" LLVM,RISCV,2877,"Predict the next statement of this code snippet: assert ( ContainerVT . isScalableVector ( ) && ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue VL = VecVT . isFixedLengthVector ( ) ? DAG . getConstant ( VecVT . getVectorNumElements ( ) , DL , XLenVT ) : DAG . getRegister ( , XLenVT ) ; MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; SDValue Mask = DAG . getNode ( , DL , MaskVT , VL ) ; return { Mask , VL } ;" LLVM,RISCV,2878,"Predict the next statement of this code snippet: if ( UseGOT ) { SDValue Addr = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue Load = SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineMemOperand * MemOp = MF . getMachineMemOperand ( MachinePointerInfo :: getGOT ( MF ) , MachineMemOperand :: MOLoad | MachineMemOperand :: MODereferenceable | MachineMemOperand :: MOInvariant , LLT ( Ty . getSimpleVT ( ) ) , Align ( Ty . getFixedSizeInBits ( ) / ) ) ; DAG . setNodeMemRefs ( cast < MachineSDNode > ( Load . getNode ( ) ) , { MemOp } ) ; SDValue TPReg = DAG . getRegister ( , XLenVT ) ; return DAG . getNode ( , DL , Ty , Load , TPReg ) ; } SDValue AddrHi = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrAdd = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrLo = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ;" LLVM,RISCV,2879,"Predict the next statement of this code snippet: case : case : Info . opc = ; Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . align = Align ( ) ; Info . flags = MachineMemOperand :: MOLoad | MachineMemOperand :: MOStore | MachineMemOperand :: MOVolatile ; return true ; case : Info . opc = ; Info . ptrVal = I . getArgOperand ( ) ; Info . memVT = getValueType ( DL , I . getType ( ) -> getScalarType ( ) ) ; Info . align = Align ( DL . getTypeSizeInBits ( I . getType ( ) -> getScalarType ( ) ) / ) ; Info . size = MemoryLocation :: UnknownSize ; Info . flags |= MachineMemOperand :: MOLoad ; return true ; case : Info . opc = ;" LLVM,RISCV,2880,"Predict the next statement of this code snippet: bool TargetLowering :: hasBitTest ( SDValue X , SDValue Y ) const {" LLVM,RISCV,2881,"Predict the next statement of this code snippet: return C && C -> getAPIntValue ( ) . ule ( ) ;" LLVM,RISCV,2882,"Predict the next statement of this code snippet: int StartIdx = i - ( M % Size ) ; if ( StartIdx == ) return - ; int CandidateRotation = StartIdx < ? - StartIdx : Size - StartIdx ; if ( Rotation == ) Rotation = CandidateRotation ; else if ( Rotation != CandidateRotation ) return - ; int MaskSrc = M < Size ? : ; int & TargetSrc = StartIdx < ? HiSrc : LoSrc ;" LLVM,RISCV,2883,"Predict the next statement of this code snippet: if ( StartIdx == ) return - ; int CandidateRotation = StartIdx < ? - StartIdx : Size - StartIdx ; if ( Rotation == ) Rotation = CandidateRotation ; else if ( Rotation != CandidateRotation ) return - ; int MaskSrc = M < Size ? : ; int & TargetSrc = StartIdx < ? HiSrc : LoSrc ; if ( TargetSrc < ) TargetSrc = MaskSrc ; else if ( TargetSrc != MaskSrc ) return - ; } assert ( Rotation != && ) ; assert ( ( LoSrc >= || HiSrc >= ) && ) ;" LLVM,RISCV,2884,"Predict the next statement of this code snippet: const APInt & C2 = C2Node -> getAPIntValue ( ) ; if ( C1 . isSignedIntN ( ) && ! ( C1 * C2 ) . isSignedIntN ( ) ) return false ; return true ;" LLVM,RISCV,2885,"Predict the next statement of this code snippet: bool TargetLowering :: isShuffleMaskLegal ( ArrayRef < int > M , EVT VT ) const {" LLVM,RISCV,2886,"Predict the next statement of this code snippet: int LoSrc , HiSrc ; return ( isElementRotate ( LoSrc , HiSrc , M ) > ) || isInterleaveShuffle ( M , SVT , SwapSources , Subtarget ) ;" LLVM,RISCV,2887,"Predict the next statement of this code snippet: assert ( VT . isFixedLengthVector ( ) && ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; X = convertToScalableVector ( ContainerVT , X , DAG , Subtarget ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ; SDValue SplatZero = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ;" LLVM,RISCV,2888,"Predict the next statement of this code snippet: X = convertToScalableVector ( ContainerVT , X , DAG , Subtarget ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ; SDValue SplatZero = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ;" LLVM,RISCV,2889,"Predict the next statement of this code snippet: auto * Load = cast < LoadSDNode > ( Op ) ; assert ( allowsMemoryAccessForAlignment ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , Load -> getMemoryVT ( ) , * Load -> getMemOperand ( ) ) && ) ; MVT VT = Op . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; bool IsMaskOp = VT . getVectorElementType ( ) == ; SDValue IntID = DAG . getTargetConstant ( IsMaskOp ? : , DL , XLenVT ) ; SmallVector < SDValue , > Ops { Load -> getChain ( ) , IntID } ;" LLVM,RISCV,2890,"Predict the next statement of this code snippet: StoreVal = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , VT ) , StoreVal , DAG . getIntPtrConstant ( , DL ) ) ; } MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue NewValue = convertToScalableVector ( ContainerVT , StoreVal , DAG , Subtarget ) ; bool IsMaskOp = VT . getVectorElementType ( ) == ; SDValue IntID = DAG . getTargetConstant ( IsMaskOp ? : , DL , XLenVT ) ;" LLVM,RISCV,2891,"Predict the next statement of this code snippet: SDValue ScalarSplat = lowerScalarSplat ( SDValue ( ) , ScalarVal , DAG . getConstant ( , DL , XLenVT ) , M1VT , DL , DAG , Subtarget ) ; SDValue Reduction = DAG . getNode ( RVVOpcode , DL , M1VT , DAG . getUNDEF ( M1VT ) , VectorVal , ScalarSplat , Mask , VL ) ;" LLVM,RISCV,2892,"Predict the next statement of this code snippet: MVT VecVT = VectorVal . getSimpleValueType ( ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; VectorVal = convertToScalableVector ( ContainerVT , VectorVal , DAG , Subtarget ) ; } MVT M1VT = getLMUL1VT ( VectorVal . getSimpleValueType ( ) ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask , VL ;" LLVM,RISCV,2893,"Predict the next statement of this code snippet: assert ( VT . isVector ( ) && ) ; SDLoc DL ( Op ) ; SDValue Src = DAG . getFreeze ( Op . getOperand ( ) ) ; SDValue Abs = DAG . getNode ( , DL , VT , Src ) ; const fltSemantics & FltSem = DAG . EVTToAPFloatSemantics ( VT ) ; bool Ignored ; APFloat Point5Pred = APFloat ( ) ; Point5Pred . convert ( FltSem , APFloat :: rmNearestTiesToEven , & Ignored ) ; Point5Pred . next ( true ) ; SDValue Adjust = DAG . getNode ( , DL , VT , Abs , DAG . getConstantFP ( Point5Pred , DL , VT ) ) ; MVT IntVT = VT . changeVectorElementTypeToInteger ( ) ; SDValue Truncated = DAG . getNode ( , DL , IntVT , Adjust ) ; Truncated = DAG . getNode ( , DL , VT , Truncated ) ; Truncated = DAG . getNode ( , DL , VT , Truncated , Src ) ;" LLVM,RISCV,2894,"Predict the next statement of this code snippet: SDValue Truncated = DAG . getNode ( , DL , IntVT , Adjust ) ; Truncated = DAG . getNode ( , DL , VT , Truncated ) ; Truncated = DAG . getNode ( , DL , VT , Truncated , Src ) ; unsigned Precision = APFloat :: semanticsPrecision ( FltSem ) ; APFloat MaxVal = APFloat ( FltSem ) ; MaxVal . convertFromAPInt ( APInt :: getOneBitSet ( Precision , Precision - ) , false , APFloat :: rmNearestTiesToEven ) ;" LLVM,RISCV,2895,"Predict the next statement of this code snippet: SDValue Src = DAG . getFreeze ( Op . getOperand ( ) ) ; MVT IntVT = VT . changeVectorElementTypeToInteger ( ) ; SDValue Truncated = DAG . getNode ( , DL , IntVT , Src ) ; Truncated = DAG . getNode ( , DL , VT , Truncated ) ; MVT SetccVT = ( , VT . getVectorElementCount ( ) ) ; if ( Op . getOpcode ( ) == ) { SDValue Adjust = DAG . getNode ( , DL , VT , Truncated , DAG . getConstantFP ( , DL , VT ) ) ; SDValue NeedAdjust = DAG . getSetCC ( DL , SetccVT , Truncated , Src , ) ; Truncated = DAG . getSelect ( DL , VT , NeedAdjust , Adjust , Truncated ) ; } else if ( Op . getOpcode ( ) == ) { SDValue Adjust = DAG . getNode ( , DL , VT , Truncated , DAG . getConstantFP ( , DL , VT ) ) ; SDValue NeedAdjust = DAG . getSetCC ( DL , SetccVT , Truncated , Src , ) ; Truncated = DAG . getSelect ( DL , VT , NeedAdjust , Adjust , Truncated ) ; } Truncated = DAG . getNode ( , DL , VT , Truncated , Src ) ; const fltSemantics & FltSem = DAG . EVTToAPFloatSemantics ( VT ) ; unsigned Precision = APFloat :: semanticsPrecision ( FltSem ) ; APFloat MaxVal = APFloat ( FltSem ) ; MaxVal . convertFromAPInt ( APInt :: getOneBitSet ( Precision , Precision - ) , false , APFloat :: rmNearestTiesToEven ) ; SDValue MaxValNode = DAG . getConstantFP ( MaxVal , DL , VT ) ;" LLVM,RISCV,2896,"Predict the next statement of this code snippet: } } SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue ValInVec ; if ( IsLegalInsert ) { unsigned Opc = VecVT . isFloatingPoint ( ) ? : ; if ( isNullConstant ( Idx ) ) { Vec = DAG . getNode ( Opc , DL , ContainerVT , Vec , Val , VL ) ; if ( ! VecVT . isFixedLengthVector ( ) ) return Vec ; return convertFromScalableVector ( VecVT , Vec , DAG , Subtarget ) ; } ValInVec = DAG . getNode ( Opc , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , Val , VL ) ; } else { SDValue One = DAG . getConstant ( , DL , XLenVT ) ; SDValue ValLo = DAG . getNode ( , DL , , Val , Zero ) ; SDValue ValHi = DAG . getNode ( , DL , , Val , One ) ; MVT I32ContainerVT = ( , ContainerVT . getVectorElementCount ( ) * ) ; SDValue I32Mask = getDefaultScalableVLOps ( I32ContainerVT , DL , DAG , Subtarget ) . first ; SDValue InsertI64VL = DAG . getConstant ( , DL , XLenVT ) ; ValInVec = DAG . getNode ( , DL , I32ContainerVT , DAG . getUNDEF ( I32ContainerVT ) , Zero , InsertI64VL ) ; ValInVec = DAG . getNode ( , DL , I32ContainerVT , DAG . getUNDEF ( I32ContainerVT ) , ValInVec , ValHi , I32Mask , InsertI64VL ) ; ValInVec = DAG . getNode ( , DL , I32ContainerVT , DAG . getUNDEF ( I32ContainerVT ) , ValInVec , ValLo , I32Mask , InsertI64VL ) ; ValInVec = DAG . getBitcast ( ContainerVT , ValInVec ) ;" LLVM,RISCV,2897,"Predict the next statement of this code snippet: } MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; bool IsLegalInsert = Subtarget . is64Bit ( ) || Val . getValueType ( ) != ; if ( ! IsLegalInsert && isa < ConstantSDNode > ( Val ) ) { const auto * CVal = cast < ConstantSDNode > ( Val ) ; if ( isInt < > ( CVal -> getSExtValue ( ) ) ) { IsLegalInsert = true ; Val = DAG . getConstant ( CVal -> getSExtValue ( ) , DL , ) ; } } SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue ValInVec ; if ( IsLegalInsert ) { unsigned Opc = VecVT . isFloatingPoint ( ) ? : ; if ( isNullConstant ( Idx ) ) { Vec = DAG . getNode ( Opc , DL , ContainerVT , Vec , Val , VL ) ; if ( ! VecVT . isFixedLengthVector ( ) ) return Vec ; return convertFromScalableVector ( VecVT , Vec , DAG , Subtarget ) ; } ValInVec = DAG . getNode ( Opc , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , Val , VL ) ; } else { SDValue One = DAG . getConstant ( , DL , XLenVT ) ;" LLVM,RISCV,2898,"Predict the next statement of this code snippet: bool HasPassthru = Passthru && ! Passthru . isUndef ( ) ; if ( ! HasPassthru && ! Passthru ) Passthru = DAG . getUNDEF ( VT ) ; if ( VT . isFloatingPoint ( ) ) { if ( isOneConstant ( VL ) ) return DAG . getNode ( , DL , VT , Passthru , Scalar , VL ) ; return DAG . getNode ( , DL , VT , Passthru , Scalar , VL ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ;" LLVM,RISCV,2899,"Predict the next statement of this code snippet: SDValue Hi = Op . getOperand ( ) ; SDValue Shamt = Op . getOperand ( ) ; EVT VT = Lo . getValueType ( ) ; SDValue Zero = DAG . getConstant ( , DL , VT ) ; SDValue One = DAG . getConstant ( , DL , VT ) ; SDValue MinusXLen = DAG . getConstant ( - ( int ) Subtarget . getXLen ( ) , DL , VT ) ; SDValue XLenMinus1 = DAG . getConstant ( Subtarget . getXLen ( ) - , DL , VT ) ; SDValue ShamtMinusXLen = DAG . getNode ( , DL , VT , Shamt , MinusXLen ) ;" LLVM,RISCV,2900,"Predict the next statement of this code snippet: SDValue MinusXLen = DAG . getConstant ( - ( int ) Subtarget . getXLen ( ) , DL , VT ) ; SDValue XLenMinus1 = DAG . getConstant ( Subtarget . getXLen ( ) - , DL , VT ) ; SDValue ShamtMinusXLen = DAG . getNode ( , DL , VT , Shamt , MinusXLen ) ; SDValue XLenMinus1Shamt = DAG . getNode ( , DL , VT , Shamt , XLenMinus1 ) ; SDValue ShiftRightLo = DAG . getNode ( , DL , VT , Lo , Shamt ) ; SDValue ShiftLeftHi1 = DAG . getNode ( , DL , VT , Hi , One ) ; SDValue ShiftLeftHi = DAG . getNode ( , DL , VT , ShiftLeftHi1 , XLenMinus1Shamt ) ; SDValue LoTrue = DAG . getNode ( , DL , VT , ShiftRightLo , ShiftLeftHi ) ; SDValue HiTrue = DAG . getNode ( ShiftRightOp , DL , VT , Hi , Shamt ) ;" LLVM,RISCV,2901,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerShiftRightParts ( SDValue Op , SelectionDAG & DAG , bool IsSRA ) const { SDLoc DL ( Op ) ; SDValue Lo = Op . getOperand ( ) ; SDValue Hi = Op . getOperand ( ) ; SDValue Shamt = Op . getOperand ( ) ; EVT VT = Lo . getValueType ( ) ; unsigned ShiftRightOp = IsSRA ? : ; SDValue Zero = DAG . getConstant ( , DL , VT ) ; SDValue One = DAG . getConstant ( , DL , VT ) ; SDValue MinusXLen = DAG . getConstant ( - ( int ) Subtarget . getXLen ( ) , DL , VT ) ; SDValue XLenMinus1 = DAG . getConstant ( Subtarget . getXLen ( ) - , DL , VT ) ; SDValue ShamtMinusXLen = DAG . getNode ( , DL , VT , Shamt , MinusXLen ) ;" LLVM,RISCV,2902,"Predict the next statement of this code snippet: SDValue Hi = Op . getOperand ( ) ; if ( VecVT . isFixedLengthVector ( ) ) { MVT ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; SDLoc DL ( Op ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; SDValue Res = splatPartsI64WithVL ( DL , ContainerVT , SDValue ( ) , Lo , Hi , VL , DAG ) ; return convertFromScalableVector ( VecVT , Res , DAG , Subtarget ) ; } if ( isa < ConstantSDNode > ( Lo ) && isa < ConstantSDNode > ( Hi ) ) { int32_t LoC = cast < ConstantSDNode > ( Lo ) -> getSExtValue ( ) ; int32_t HiC = cast < ConstantSDNode > ( Hi ) -> getSExtValue ( ) ;" LLVM,RISCV,2903,"Predict the next statement of this code snippet: if ( isa < ConstantSDNode > ( Lo ) && isa < ConstantSDNode > ( Hi ) ) { int32_t LoC = cast < ConstantSDNode > ( Lo ) -> getSExtValue ( ) ; int32_t HiC = cast < ConstantSDNode > ( Hi ) -> getSExtValue ( ) ; if ( ( LoC >> ) == HiC ) return DAG . getNode ( , DL , VecVT , DAG . getUNDEF ( VecVT ) , Lo , DAG . getRegister ( , ) ) ; } if ( Hi . getOpcode ( ) == && Hi . getOperand ( ) == Lo && isa < ConstantSDNode > ( Hi . getOperand ( ) ) && Hi . getConstantOperandVal ( ) == ) return DAG . getNode ( , DL , VecVT , DAG . getUNDEF ( VecVT ) , Lo , DAG . getRegister ( , ) ) ;" LLVM,RISCV,2904,"Predict the next statement of this code snippet: if ( isPowerOf2_64 ( StepValImm ) ) { SDValue StepVal = DAG . getNode ( , DL , VT , DAG . getUNDEF ( VT ) , DAG . getConstant ( Log2_64 ( StepValImm ) , DL , XLenVT ) ) ; StepVec = DAG . getNode ( , DL , VT , StepVec , StepVal ) ; } else { SDValue StepVal = lowerScalarSplat ( SDValue ( ) , DAG . getConstant ( StepValImm , DL , VT . getVectorElementType ( ) ) , VL , VT , DL , DAG , Subtarget ) ; StepVec = DAG . getNode ( , DL , VT , StepVec , StepVal ) ; } }" LLVM,RISCV,2905,"Predict the next statement of this code snippet: StepVec = DAG . getNode ( , DL , VT , StepVec , StepVal ) ; } else { SDValue StepVal = lowerScalarSplat ( SDValue ( ) , DAG . getConstant ( StepValImm , DL , VT . getVectorElementType ( ) ) , VL , VT , DL , DAG , Subtarget ) ; StepVec = DAG . getNode ( , DL , VT , StepVec , StepVal ) ; } } return StepVec ;" LLVM,RISCV,2906,"Predict the next statement of this code snippet: if ( ! isTypeLegal ( VecEVT ) ) return SDValue ( ) ; MVT VecVT = VecEVT . getSimpleVT ( ) ; MVT VecEltVT = VecVT . getVectorElementType ( ) ; unsigned RVVOpcode = getRVVReductionOp ( Op . getOpcode ( ) ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Vec = convertToScalableVector ( ContainerVT , Vec , DAG , Subtarget ) ; } MVT M1VT = getLMUL1VT ( ContainerVT ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ;" LLVM,RISCV,2907,"Predict the next statement of this code snippet: } MVT ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; MVT I1ContainerVT = ( , ContainerVT . getVectorElementCount ( ) ) ; SDValue CC = convertToScalableVector ( I1ContainerVT , Src , DAG , Subtarget ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue SplatZero = DAG . getConstant ( , DL , XLenVT ) ; SDValue SplatTrueVal = DAG . getConstant ( ExtTrueVal , DL , XLenVT ) ;" LLVM,RISCV,2908,"Predict the next statement of this code snippet: std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue SplatZero = DAG . getConstant ( , DL , XLenVT ) ; SDValue SplatTrueVal = DAG . getConstant ( ExtTrueVal , DL , XLenVT ) ; SplatZero = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatZero , VL ) ;" LLVM,RISCV,2909,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerVectorMaskTrunc ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; EVT MaskVT = Op . getValueType ( ) ; assert ( MaskVT . isVector ( ) && MaskVT . getVectorElementType ( ) == && ) ; SDValue Src = Op . getOperand ( ) ; MVT VecVT = Src . getSimpleValueType ( ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; } SDValue SplatOne = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SDValue SplatZero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SplatOne = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatOne ) ; SplatZero = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatZero ) ; if ( VecVT . isScalableVector ( ) ) { SDValue Trunc = DAG . getNode ( , DL , VecVT , Src , SplatOne ) ; return DAG . getSetCC ( DL , MaskVT , Trunc , SplatZero , ) ; } SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; MVT MaskContainerVT = ContainerVT . changeVectorElementType ( ) ;" LLVM,RISCV,2910,"Predict the next statement of this code snippet: ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Src = convertToScalableVector ( ContainerVT , Src , DAG , Subtarget ) ; } SDValue SplatOne = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SDValue SplatZero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SplatOne = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatOne ) ; SplatZero = DAG . getNode ( , DL , ContainerVT , DAG . getUNDEF ( ContainerVT ) , SplatZero ) ; if ( VecVT . isScalableVector ( ) ) { SDValue Trunc = DAG . getNode ( , DL , VecVT , Src , SplatOne ) ; return DAG . getSetCC ( DL , MaskVT , Trunc , SplatZero , ) ; } SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VecVT , ContainerVT , DL , DAG , Subtarget ) ; MVT MaskContainerVT = ContainerVT . changeVectorElementType ( ) ; SDValue Trunc = DAG . getNode ( , DL , ContainerVT , Src , SplatOne , Mask , VL ) ;" LLVM,RISCV,2911,"Predict the next statement of this code snippet: return DAG . getNode ( , DL , VecVT , Res , Lo , DAG . getIntPtrConstant ( LoVT . getVectorMinNumElements ( ) , DL ) ) ; } IntVT = ( , VecVT . getVectorElementCount ( ) ) ; GatherOpc = ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultScalableVLOps ( VecVT , DL , DAG , Subtarget ) ; unsigned MinElts = VecVT . getVectorMinNumElements ( ) ; SDValue VLMax = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( MinElts , DL , XLenVT ) ) ; SDValue VLMinus1 = DAG . getNode ( , DL , XLenVT , VLMax , DAG . getConstant ( , DL , XLenVT ) ) ; bool IsRV32E64 = ! Subtarget . is64Bit ( ) && IntVT . getVectorElementType ( ) == ; SDValue SplatVL ; if ( ! IsRV32E64 ) SplatVL = DAG . getSplatVector ( IntVT , DL , VLMinus1 ) ; else SplatVL = DAG . getNode ( , DL , IntVT , DAG . getUNDEF ( IntVT ) , VLMinus1 , DAG . getRegister ( , XLenVT ) ) ; SDValue VID = DAG . getNode ( , DL , IntVT , Mask , VL ) ;" LLVM,RISCV,2912,"Predict the next statement of this code snippet: MVT IntVT = VecVT . changeVectorElementTypeToInteger ( ) ; if ( ( MaxVLMAX == || MaxVLMAX > ) && EltSize == ) { if ( MinSize == ( * ) ) { SDValue Lo , Hi ; std :: tie ( Lo , Hi ) = DAG . SplitVectorOperand ( Op . getNode ( ) , ) ; EVT LoVT , HiVT ; std :: tie ( LoVT , HiVT ) = DAG . GetSplitDestVTs ( VecVT ) ; Lo = DAG . getNode ( , DL , LoVT , Lo ) ; Hi = DAG . getNode ( , DL , HiVT , Hi ) ; SDValue Res = DAG . getNode ( , DL , VecVT , DAG . getUNDEF ( VecVT ) , Hi , DAG . getIntPtrConstant ( , DL ) ) ; return DAG . getNode ( , DL , VecVT , Res , Lo , DAG . getIntPtrConstant ( LoVT . getVectorMinNumElements ( ) , DL ) ) ; } IntVT = ( , VecVT . getVectorElementCount ( ) ) ; GatherOpc = ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultScalableVLOps ( VecVT , DL , DAG , Subtarget ) ; unsigned MinElts = VecVT . getVectorMinNumElements ( ) ; SDValue VLMax = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( MinElts , DL , XLenVT ) ) ; SDValue VLMinus1 = DAG . getNode ( , DL , XLenVT , VLMax , DAG . getConstant ( , DL , XLenVT ) ) ; bool IsRV32E64 = ! Subtarget . is64Bit ( ) && IntVT . getVectorElementType ( ) == ; SDValue SplatVL ; if ( ! IsRV32E64 ) SplatVL = DAG . getSplatVector ( IntVT , DL , VLMinus1 ) ;" LLVM,RISCV,2913,"Predict the next statement of this code snippet: SDValue V2 = Op . getOperand ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT VecVT = Op . getSimpleValueType ( ) ; unsigned MinElts = VecVT . getVectorMinNumElements ( ) ; SDValue VLMax = DAG . getNode ( , DL , XLenVT , DAG . getConstant ( MinElts , DL , XLenVT ) ) ; int64_t ImmValue = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getSExtValue ( ) ; SDValue DownOffset , UpOffset ; if ( ImmValue >= ) { DownOffset = DAG . getConstant ( ImmValue , DL , XLenVT ) ;" LLVM,RISCV,2914,"Predict the next statement of this code snippet: assert ( DstVT . isFloatingPoint ( ) && ) ; if ( SrcEltSize == ) { MVT IntVT = DstVT . changeVectorElementTypeToInteger ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; SDValue ZeroSplat = DAG . getNode ( , DL , IntVT , DAG . getUNDEF ( IntVT ) , Zero , VL ) ; SDValue One = DAG . getConstant ( ISDExtOpc == ? : - , DL , XLenVT ) ; SDValue OneSplat = DAG . getNode ( , DL , IntVT , DAG . getUNDEF ( IntVT ) , One , VL ) ; Src = DAG . getNode ( , DL , IntVT , Src , OneSplat , ZeroSplat , VL ) ; } else if ( DstEltSize > ( * SrcEltSize ) ) { MVT IntVT = ( ( DstEltSize / ) , DstVT . getVectorElementCount ( ) ) ; Src = DAG . getNode ( ISDExtOpc , DL , IntVT , { Src , Mask , VL } ) ; } Result = DAG . getNode ( ISDOpc , DL , DstVT , { Src , Mask , VL } ) ; } else { assert ( SrcVT . isFloatingPoint ( ) && DstVT . isInteger ( ) && ) ; if ( DstEltSize > ( * SrcEltSize ) ) { assert ( SrcVT . getVectorElementType ( ) == && ) ; MVT InterimFVT = ( , DstVT . getVectorElementCount ( ) ) ; Src = DAG . getNode ( , DL , InterimFVT , { Src , Mask , VL } ) ; } Result = DAG . getNode ( ISDOpc , DL , DstVT , { Src , Mask , VL } ) ; } } else { if ( SrcVT . isInteger ( ) ) { assert ( DstVT . isFloatingPoint ( ) && ) ; MVT InterimFVT = DstVT ;" LLVM,RISCV,2915,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; SDValue Vec = Op . getOperand ( ) ; EVT VecEVT = Vec . getValueType ( ) ; if ( ! isTypeLegal ( VecEVT ) ) return SDValue ( ) ; MVT VecVT = VecEVT . getSimpleVT ( ) ; MVT VecEltVT = VecVT . getVectorElementType ( ) ; unsigned RVVOpcode = getRVVVPReductionOp ( Op . getOpcode ( ) ) ; MVT ContainerVT = VecVT ; if ( VecVT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VecVT ) ; Vec = convertToScalableVector ( ContainerVT , Vec , DAG , Subtarget ) ; } SDValue VL = Op . getOperand ( ) ; SDValue Mask = Op . getOperand ( ) ; MVT M1VT = getLMUL1VT ( ContainerVT ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ResVT = ! VecVT . isInteger ( ) || VecEltVT . bitsGE ( XLenVT ) ? VecEltVT : XLenVT ; SDValue StartSplat = lowerScalarSplat ( SDValue ( ) , Op . getOperand ( ) , DAG . getConstant ( , DL , XLenVT ) , M1VT , DL , DAG , Subtarget ) ; SDValue Reduction = DAG . getNode ( RVVOpcode , DL , M1VT , StartSplat , Vec , StartSplat , Mask , VL ) ;" LLVM,RISCV,2916,"Predict the next statement of this code snippet: if ( Vec . getValueType ( ) != VT ) return SDValue ( ) ; SDValue Idx = SplatVal . getOperand ( ) ; if ( Idx . getValueType ( ) != Subtarget . getXLenVT ( ) ) return SDValue ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) {" LLVM,RISCV,2917,"Predict the next statement of this code snippet: SDValue Mask , VL ; std :: tie ( Mask , VL ) = getDefaultVLOps ( VT , ContainerVT , DL , DAG , Subtarget ) ; SDValue Gather = DAG . getNode ( , DL , ContainerVT , Vec , Idx , Mask , VL ) ; if ( ! VT . isFixedLengthVector ( ) ) return Gather ;" LLVM,RISCV,2918,"Predict the next statement of this code snippet: static SDValue performBITREVERSECombine ( SDNode * N , SelectionDAG & DAG , const Subtarget & Subtarget ) { assert ( Subtarget . hasStdExtZbkb ( ) && ) ; SDValue Src = N -> getOperand ( ) ; if ( Src . getOpcode ( ) != ) return SDValue ( ) ;" LLVM,RISCV,2919,"Predict the next statement of this code snippet: assert ( Subtarget . hasStdExtZbkb ( ) && ) ; SDValue Src = N -> getOperand ( ) ; if ( Src . getOpcode ( ) != ) return SDValue ( ) ; EVT VT = N -> getValueType ( ) ; if ( ! VT . isScalarInteger ( ) || VT . getSizeInBits ( ) >= Subtarget . getXLen ( ) || ! isPowerOf2_32 ( VT . getSizeInBits ( ) ) ) return SDValue ( ) ;" LLVM,RISCV,2920,"Predict the next statement of this code snippet: if ( Src . getOpcode ( ) == && cast < VTSDNode > ( N -> getOperand ( ) ) -> getVT ( ) . bitsGE ( ) ) return DAG . getNode ( , SDLoc ( N ) , VT , Src . getOperand ( ) ) ; if ( Subtarget . hasStdExtZbb ( ) && Subtarget . is64Bit ( ) && Src . getOpcode ( ) == && Src . hasOneUse ( ) && VT == && cast < VTSDNode > ( N -> getOperand ( ) ) -> getVT ( ) == && DAG . ComputeNumSignBits ( Src . getOperand ( ) ) > ) { SDLoc DL ( N ) ; SDValue Freeze = DAG . getFreeze ( Src . getOperand ( ) ) ; SDValue Neg = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , ) , Freeze ) ; Neg = DAG . getNode ( , DL , , Neg , DAG . getValueType ( ) ) ; return DAG . getNode ( , DL , , Freeze , Neg ) ; } return SDValue ( ) ;" LLVM,RISCV,2921,"Predict the next statement of this code snippet: SDLoc DL ( N ) ; SDValue Freeze = DAG . getFreeze ( Src . getOperand ( ) ) ; SDValue Neg = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , ) , Freeze ) ; Neg = DAG . getNode ( , DL , , Neg , DAG . getValueType ( ) ) ; return DAG . getNode ( , DL , , Freeze , Neg ) ;" LLVM,RISCV,2922,"Predict the next statement of this code snippet: case Instruction :: Xor : case Instruction :: FAdd : case Instruction :: FSub : case Instruction :: FMul : case Instruction :: FDiv : case Instruction :: ICmp : case Instruction :: FCmp : return true ; case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : case Instruction :: UDiv : case Instruction :: SDiv : case Instruction :: URem : case Instruction :: SRem : return Operand == ; case Instruction :: Call : if ( auto * II = dyn_cast < IntrinsicInst > ( I ) ) { switch ( II -> getIntrinsicID ( ) ) { case : case : return Operand == || Operand == ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : return Operand == ; case : case : case : return Operand == || Operand == ; default : return false ; } } return false ; default : return false ; } } ; for ( auto OpIdx : enumerate ( I -> operands ( ) ) ) { if ( ! IsSinker ( I , OpIdx . index ( ) ) ) continue ; Instruction * Op = dyn_cast < Instruction > ( OpIdx . value ( ) . get ( ) ) ; if ( ! Op || any_of ( Ops , [ & ] ( Use * U ) { return U -> get ( ) == Op ; } ) ) continue ; if ( ! match ( Op , m_Shuffle ( m_InsertElt ( m_Undef ( ) , m_Value ( ) , m_ZeroInt ( ) ) , m_Undef ( ) , m_ZeroMask ( ) ) ) ) continue ; for ( Use & U : Op -> uses ( ) ) { Instruction * Insn = cast < Instruction > ( U . getUser ( ) ) ;" LLVM,RISCV,2923,"Predict the next statement of this code snippet: int32_t HiC = cast < ConstantSDNode > ( Hi ) -> getSExtValue ( ) ; if ( ( LoC >> ) == HiC ) return DAG . getNode ( , DL , VT , Passthru , Lo , VL ) ; auto * Const = dyn_cast < ConstantSDNode > ( VL ) ; if ( LoC == HiC && Const && Const -> isAllOnesValue ( ) ) { MVT InterVT = ( , VT . getVectorElementCount ( ) * ) ; auto InterVec = DAG . getNode ( , DL , InterVT , DAG . getUNDEF ( InterVT ) , Lo , DAG . getRegister ( , ) ) ; return DAG . getNode ( , DL , VT , InterVec ) ; } } return DAG . getNode ( , DL , VT , Passthru , Lo , Hi , VL ) ;" LLVM,RISCV,2924,"Predict the next statement of this code snippet: if ( isa < ConstantSDNode > ( Lo ) && isa < ConstantSDNode > ( Hi ) ) { int32_t LoC = cast < ConstantSDNode > ( Lo ) -> getSExtValue ( ) ; int32_t HiC = cast < ConstantSDNode > ( Hi ) -> getSExtValue ( ) ;" LLVM,RISCV,2925,"Predict the next statement of this code snippet: SDValue Hi = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , ) ) ; return splatPartsI64WithVL ( DL , VT , Passthru , Lo , Hi , VL , DAG ) ;" LLVM,RISCV,2926,"Predict the next statement of this code snippet: SmallVectorImpl < CCValAssign > & PendingLocs = State . getPendingLocs ( ) ; SmallVectorImpl < > & PendingArgFlags = State . getPendingArgFlags ( ) ; assert ( PendingLocs . size ( ) == PendingArgFlags . size ( ) && ) ; if ( UseGPRForF64 && XLen == && ValVT == ) { assert ( ! ArgFlags . isSplit ( ) && PendingLocs . empty ( ) && ) ; Register Reg = State . AllocateReg ( ArgGPRs ) ; LocVT = ; if ( ! Reg ) { unsigned StackOffset = State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ; } if ( ! State . AllocateReg ( ArgGPRs ) ) State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } Register Reg ; if ( ValVT == && ! UseGPRForF32 ) Reg = State . AllocateReg ( ArgFPR32s , ArgFPR64s ) ; else if ( ValVT == && ! UseGPRForF16 ) Reg = State . AllocateReg ( ArgFPR16s , ArgFPR64s ) ; else if ( ValVT == && ! UseGPRForF64 ) Reg = State . AllocateReg ( ArgFPR64s , ArgFPR32s ) ; else if ( ValVT . isScalableVector ( ) ) { switch ( ValVT . getSizeInBits ( ) . getKnownMinSize ( ) ) { case :" LLVM,RISCV,2927,"Predict the next statement of this code snippet: case CCValAssign :: BCvt : if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ; } if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ; } if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ; } Val = DAG . getNode ( , DL , VA . getValVT ( ) , Val ) ; break ;" LLVM,RISCV,2928,"Predict the next statement of this code snippet: Val = DAG . getNode ( , DL , , Val ) ; break ; } if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ; } if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ; } Val = DAG . getNode ( , DL , VA . getValVT ( ) , Val ) ; break ; }" LLVM,RISCV,2929,"Predict the next statement of this code snippet: static SDValue convertValVTToLocVT ( SelectionDAG & DAG , SDValue Val , const CCValAssign & VA , const SDLoc & DL ) { EVT LocVT = VA . getLocVT ( ) ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : break ; case CCValAssign :: BCvt : if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ;" LLVM,RISCV,2930,"Predict the next statement of this code snippet: } if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ; break ; } if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { Val = DAG . getNode ( , DL , , Val ) ;" LLVM,RISCV,2931,"Predict the next statement of this code snippet: Register DstReg = MI . getOperand ( ) . getReg ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ; Register HiReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * DstRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( MF ) ;" LLVM,RISCV,2932,"Predict the next statement of this code snippet: Register HiReg = MI . getOperand ( ) . getReg ( ) ; const TargetRegisterClass * DstRC = & ; int FI = MF . getInfo < MachineFunctionInfo > ( ) -> getMoveF64FrameIndex ( MF ) ; MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI ) , MachineMemOperand :: MOStore , , Align ( ) ) ; BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( LoReg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( HiReg , getKillRegState ( MI . getOperand ( ) . isKill ( ) ) ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; TII . loadRegFromStackSlot ( * BB , MI , DstReg , FI , DstRC , RI ) ; MI . eraseFromParent ( ) ; return BB ;" LLVM,RISCV,2933,"Predict the next statement of this code snippet: break ; case : vtypei |= ; break ; case : vtypei |= ; break ; case : vtypei |= ; break ; case : vtypei |= ; break ; case : vtypei |= ; break ; case : vtypei |= ; break ; default : llvm_unreachable ( ) ; } BuildMI ( * BB , MI , MI . getDebugLoc ( ) , TII -> get ( ) , ) . addReg ( ) . addImm ( vtypei ) ; return BB ; } switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case :" LLVM,RISCV,2934,"Predict the next statement of this code snippet: static MachineBasicBlock * emitSplitF64Pseudo ( MachineInstr & MI , MachineBasicBlock * BB ) { assert ( MI . getOpcode ( ) == && ) ; MachineFunction & MF = * BB -> getParent ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; const TargetInstrInfo & TII = * MF . getSubtarget ( ) . getInstrInfo ( ) ; const TargetRegisterInfo * RI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; Register LoReg = MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,2935,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,2936,"Predict the next statement of this code snippet: if ( isNullConstant ( Idx ) ) return Op ; SDValue Vec = Op . getOperand ( ) ; EVT EltVT = Op . getValueType ( ) ; EVT VecVT = Vec . getValueType ( ) ;" LLVM,RISCV,2937,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerEXTRACT_VECTOR_ELT ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; SDValue Idx = Op . getOperand ( ) ; if ( isNullConstant ( Idx ) ) return Op ; SDValue Vec = Op . getOperand ( ) ; EVT EltVT = Op . getValueType ( ) ; EVT VecVT = Vec . getValueType ( ) ; SDValue Slidedown = DAG . getNode ( , DL , VecVT , DAG . getUNDEF ( VecVT ) , Vec , Idx ) ;" LLVM,RISCV,2938,"Predict the next statement of this code snippet: SDValue Promote = DAG . getNode ( , DL , , scalar ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , { Op . getOperand ( ) , Op . getOperand ( ) , Promote , Op . getOperand ( ) } ) ; } break ; } } if ( const * EII = ( IntNo ) ) { if ( EII -> ExtendedOperand ) { assert ( EII -> ExtendedOperand < Op . getNumOperands ( ) ) ; std :: vector < SDValue > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ;" LLVM,RISCV,2939,"Predict the next statement of this code snippet: break ; case : { EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ; return DAG . getRegister ( , PtrVT ) ; } case : { SDValue scalar = Op . getOperand ( ) ; if ( scalar . getSimpleValueType ( ) == ) { SDValue Promote = DAG . getNode ( , DL , , scalar ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , { Op . getOperand ( ) , Op . getOperand ( ) , Promote , Op . getOperand ( ) } ) ; } break ; } } if ( const * EII = ( IntNo ) ) { if ( EII -> ExtendedOperand ) { assert ( EII -> ExtendedOperand < Op . getNumOperands ( ) ) ; std :: vector < SDValue > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ; SDValue & ScalarOp = Operands [ EII -> ExtendedOperand ] ;" LLVM,RISCV,2940,"Predict the next statement of this code snippet: case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : { assert ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( Op ) ;" LLVM,RISCV,2941,"Predict the next statement of this code snippet: return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerGlobalTLSAddress ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : { assert ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) != || Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } case : return lowerEXTRACT_VECTOR_ELT ( Op , DAG ) ; case :" LLVM,RISCV,2942,"Predict the next statement of this code snippet: assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , RCW , RCW . getValue ( ) ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOpWithSExt ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ; break ; } case : { SDNode & Op = * N ; unsigned IntNo = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; switch ( IntNo ) {" LLVM,RISCV,2943,"Predict the next statement of this code snippet: static SDValue unpackFromMemLoc ( SelectionDAG & DAG , SDValue Chain , const CCValAssign & VA , const SDLoc & DL ) { MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; EVT ValVT = VA . getValVT ( ) ; EVT PtrVT = ( DAG . getDataLayout ( ) . getPointerSizeInBits ( ) ) ; int FI = MFI . CreateFixedObject ( ValVT . getSizeInBits ( ) . getKnownMinSize ( ) / , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , PtrVT ) ; SDValue Val ; ExtType ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : case CCValAssign :: Indirect : if ( ValVT . isScalableVector ( ) ) {" LLVM,RISCV,2944,"Predict the next statement of this code snippet: SDValue Val ; ExtType ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : case CCValAssign :: Indirect : if ( ValVT . isScalableVector ( ) ) { return DAG . getLoad ( LocVT , DL , Chain , FIN , MachinePointerInfo :: getFixedStack ( DAG . getMachineFunction ( ) , FI ) ) ; } case CCValAssign :: BCvt : ExtType = ;" LLVM,RISCV,2945,"Predict the next statement of this code snippet: Align StackAlign = std :: max ( Align ( XLenInBytes ) , ArgFlags1 . getNonZeroOrigAlign ( ) ) ; State . addLoc ( CCValAssign :: getMem ( VA1 . getValNo ( ) , VA1 . getValVT ( ) , State . AllocateStack ( XLenInBytes , StackAlign ) , VA1 . getLocVT ( ) , CCValAssign :: Full ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo2 , ValVT2 , State . AllocateStack ( XLenInBytes , Align ( XLenInBytes ) ) , LocVT2 , CCValAssign :: Full ) ) ; return false ; } if ( Register Reg = State . AllocateReg ( ArgGPRs ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo2 , ValVT2 , Reg , LocVT2 , CCValAssign :: Full ) ) ;" LLVM,RISCV,2946,"Predict the next statement of this code snippet: return false ; } } if ( LocVT == ) { static const MCPhysReg FPR16List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR16List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR32List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR32List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == ) { static const MCPhysReg FPR64List [ ] = { , , , , , , , , , , , , , , , , , , , } ; if ( unsigned Reg = State . AllocateReg ( FPR64List ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } } if ( LocVT == || LocVT == ) { unsigned Offset4 = State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , Offset4 , LocVT , LocInfo ) ) ; return false ; } if ( LocVT == || LocVT == ) { unsigned Offset5 = State . AllocateStack ( , Align ( ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , Offset5 , LocVT , LocInfo ) ) ; return false ; }" LLVM,RISCV,2947,"Predict the next statement of this code snippet: case : case : case : case : case : return emitSelectPseudo ( MI , BB ) ; case : return emitBuildPairF64Pseudo ( MI , BB ) ; case : return emitSplitF64Pseudo ( MI , BB ) ;" LLVM,RISCV,2948,"Predict the next statement of this code snippet: assert ( ! Subtarget . is64Bit ( ) && ) ; return emitReadCycleWidePseudo ( MI , BB ) ; case : case : case : case : case : return emitSelectPseudo ( MI , BB ) ; case : return emitBuildPairF64Pseudo ( MI , BB ) ; case :" LLVM,RISCV,2949,"Predict the next statement of this code snippet: assert ( ! ( Subtarget . getTargetABI ( ) ) ) ; unsigned XLen = Subtarget . getXLen ( ) ; Value * Ordering = Builder . getIntN ( XLen , static_cast < uint64_t > ( Ord ) ) ; CmpXchgIntrID = ; if ( XLen == ) { CmpVal = Builder . CreateSExt ( CmpVal , Builder . getInt64Ty ( ) ) ; NewVal = Builder . CreateSExt ( NewVal , Builder . getInt64Ty ( ) ) ; Mask = Builder . CreateSExt ( Mask , Builder . getInt64Ty ( ) ) ; CmpXchgIntrID = ; } Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * MaskedCmpXchg = ( CI -> getModule ( ) , CmpXchgIntrID , Tys ) ; Value * Result = Builder . CreateCall ( MaskedCmpXchg , { AlignedAddr , CmpVal , NewVal , Mask , Ordering } ) ;" LLVM,RISCV,2950,"Predict the next statement of this code snippet: Value * Ordering = Builder . getIntN ( XLen , static_cast < uint64_t > ( Ord ) ) ; CmpXchgIntrID = ; if ( XLen == ) { CmpVal = Builder . CreateSExt ( CmpVal , Builder . getInt64Ty ( ) ) ; NewVal = Builder . CreateSExt ( NewVal , Builder . getInt64Ty ( ) ) ; Mask = Builder . CreateSExt ( Mask , Builder . getInt64Ty ( ) ) ; CmpXchgIntrID = ; } Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * MaskedCmpXchg = ( CI -> getModule ( ) , CmpXchgIntrID , Tys ) ;" LLVM,RISCV,2951,"Predict the next statement of this code snippet: assert ( ! ( Subtarget . getTargetABI ( ) ) ) ; unsigned XLen = Subtarget . getXLen ( ) ; Value * Ordering = Builder . getIntN ( XLen , static_cast < uint64_t > ( AI -> getOrdering ( ) ) ) ; Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * LrwOpScwLoop = ( AI -> getModule ( ) , getIntrinsicForMaskedAtomicRMWBinOp ( XLen , AI -> getOperation ( ) ) , Tys ) ; if ( XLen == ) { Incr = Builder . CreateSExt ( Incr , Builder . getInt64Ty ( ) ) ; Mask = Builder . CreateSExt ( Mask , Builder . getInt64Ty ( ) ) ; ShiftAmt = Builder . CreateSExt ( ShiftAmt , Builder . getInt64Ty ( ) ) ; }" LLVM,RISCV,2952,"Predict the next statement of this code snippet: if ( XLen == ) { Incr = Builder . CreateSExt ( Incr , Builder . getInt64Ty ( ) ) ; Mask = Builder . CreateSExt ( Mask , Builder . getInt64Ty ( ) ) ; ShiftAmt = Builder . CreateSExt ( ShiftAmt , Builder . getInt64Ty ( ) ) ; } Value * Result ; if ( AI -> getOperation ( ) == AtomicRMWInst :: Min || AI -> getOperation ( ) == AtomicRMWInst :: Max ) { const DataLayout & DL = AI -> getModule ( ) -> getDataLayout ( ) ; unsigned ValWidth = DL . getTypeStoreSizeInBits ( AI -> getValOperand ( ) -> getType ( ) ) ; Value * SextShamt = Builder . CreateSub ( Builder . getIntN ( XLen , XLen - ValWidth ) , ShiftAmt ) ; Result = Builder . CreateCall ( LrwOpScwLoop , { AlignedAddr , Incr , Mask , SextShamt , Ordering } ) ;" LLVM,RISCV,2953,"Predict the next statement of this code snippet: SDLoc DL ( N ) ; if ( ( Subtarget . getTargetABI ( ) ) ) { SDValue Addr = getTargetNode ( N , DL , Ty , DAG , ) ; if ( IsLocal && CanDeriveFromPcc ) { return SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; } SDValue Load = SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineMemOperand * MemOp = MF . getMachineMemOperand ( MachinePointerInfo :: getGOT ( MF ) , MachineMemOperand :: MOLoad | MachineMemOperand :: MODereferenceable | MachineMemOperand :: MOInvariant , LLT ( Ty . getSimpleVT ( ) ) , Align ( Ty . getFixedSizeInBits ( ) / ) ) ; DAG . setNodeMemRefs ( cast < MachineSDNode > ( Load . getNode ( ) ) , { MemOp } ) ; return Load ; } if ( isPositionIndependent ( ) ) { SDValue Addr = getTargetNode ( N , DL , Ty , DAG , ) ; if ( IsLocal ) return SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; SDValue Load = SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineMemOperand * MemOp = MF . getMachineMemOperand ( MachinePointerInfo :: getGOT ( MF ) , MachineMemOperand :: MOLoad | MachineMemOperand :: MODereferenceable | MachineMemOperand :: MOInvariant , LLT ( Ty . getSimpleVT ( ) ) , Align ( Ty . getFixedSizeInBits ( ) / ) ) ; DAG . setNodeMemRefs ( cast < MachineSDNode > ( Load . getNode ( ) ) , { MemOp } ) ; return Load ; }" LLVM,RISCV,2954,"Predict the next statement of this code snippet: const GlobalValue * GV = N -> getGlobal ( ) ; unsigned Opcode = ( Subtarget . getTargetABI ( ) ) ? : ; SDValue Addr = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue Load = SDValue ( DAG . getMachineNode ( Opcode , DL , Ty , Addr ) , ) ; ArgListTy Args ;" LLVM,RISCV,2955,"Predict the next statement of this code snippet: return ( Subtarget . getTargetABI ( ) ) ? : ;" LLVM,RISCV,2956,"Predict the next statement of this code snippet: Register TargetLowering :: getExceptionPointerRegister ( const Constant * PersonalityFn ) const { return ( Subtarget . getTargetABI ( ) ) ? : ;" LLVM,RISCV,2957,"Predict the next statement of this code snippet: Register TargetLowering :: getExceptionPointerRegister ( const Constant * PersonalityFn ) const { return ( Subtarget . getTargetABI ( ) ) ? : ;" LLVM,RISCV,2958,"Predict the next statement of this code snippet: unsigned CapSize = Subtarget . typeForCapabilities ( ) . getSizeInBits ( ) / ; if ( Op . size ( ) >= CapSize ) { Align CapAlign ( CapSize ) ; LLVM_DEBUG ( dbgs ( ) << __func__ << << Op . size ( ) << << ( Op . isFixedDstAlign ( ) ? Op . getDstAlign ( ) . value ( ) : ) << << ( Op . isMemset ( ) ? : Op . getSrcAlign ( ) . value ( ) ) << << CapSize << ) ; if ( Op . isAligned ( CapAlign ) ) { return CapType ; } else if ( ! Op . isMemset ( ) ) { return ; }" LLVM,RISCV,2959,"Predict the next statement of this code snippet: EVT TargetLowering :: getSetCCResultType ( const DataLayout & DL , LLVMContext & Context , EVT VT ) const {" LLVM,RISCV,2960,"Predict the next statement of this code snippet: SDValue MNAdd = SDValue ( DAG . getMachineNode ( , DL , Ty , TPReg , MNHi , AddrCIncOffset ) , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , MNAdd , AddrLo ) , ) ; } if ( NotLocal ) { SDValue Addr = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue Load = SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineMemOperand * MemOp = MF . getMachineMemOperand ( MachinePointerInfo :: getGOT ( MF ) , MachineMemOperand :: MOLoad | MachineMemOperand :: MODereferenceable | MachineMemOperand :: MOInvariant , LLT ( Ty . getSimpleVT ( ) ) , Align ( Ty . getFixedSizeInBits ( ) / ) ) ; DAG . setNodeMemRefs ( cast < MachineSDNode > ( Load . getNode ( ) ) , { MemOp } ) ; SDValue TPReg = DAG . getRegister ( , XLenVT ) ; return DAG . getNode ( , DL , Ty , Load , TPReg ) ; } SDValue AddrHi = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrAdd = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue AddrLo = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ; SDValue TPReg = DAG . getRegister ( , XLenVT ) ; SDValue MNAdd = SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , TPReg , AddrAdd ) , ) ;" LLVM,RISCV,2961,"Predict the next statement of this code snippet: TailPaddingAmount TargetLowering :: getTailPaddingForPreciseBounds ( uint64_t Size ) const { if ( ! ( Subtarget . getTargetABI ( ) ) ) return TailPaddingAmount :: None ;" LLVM,RISCV,2962,"Predict the next statement of this code snippet: return false ; case : case : case : case : case :" LLVM,RISCV,2963,"Predict the next statement of this code snippet: BlockAddressSDNode * N = cast < BlockAddressSDNode > ( Op ) ;" LLVM,RISCV,2964,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerBlockAddress ( SDValue Op , SelectionDAG & DAG ) const { BlockAddressSDNode * N = cast < BlockAddressSDNode > ( Op ) ; EVT Ty = Op . getValueType ( ) ; return getAddr ( N , Ty , DAG , true , true ) ;" LLVM,RISCV,2965,"Predict the next statement of this code snippet: translateSetCCForBranch ( DL , LHS , RHS , CCVal , DAG ) ; if ( LHS . getValueType ( ) . isFatPointer ( ) ) { LHS = DAG . getTargetExtractSubreg ( , DL , XLenVT , LHS ) ; RHS = DAG . getTargetExtractSubreg ( , DL , XLenVT , RHS ) ; } SDValue TargetCC = DAG . getCondCode ( CCVal ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , Op . getOperand ( ) , LHS , RHS , TargetCC , Op . getOperand ( ) ) ;" LLVM,RISCV,2966,"Predict the next statement of this code snippet: ConstantPoolSDNode * N = cast < ConstantPoolSDNode > ( Op ) ; EVT Ty = Op . getValueType ( ) ;" LLVM,RISCV,2967,"Predict the next statement of this code snippet: int XLenInBytes = Subtarget . getXLen ( ) / ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ; SDValue FrameAddr = DAG . getCopyFromReg ( DAG . getEntryNode ( ) , DL , FrameReg , VT ) ; unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; while ( Depth -- ) { int Offset = - ( XLenInBytes * ) ; SDValue Ptr = DAG . getPointerAdd ( DL , FrameAddr , Offset ) ; FrameAddr = DAG . getLoad ( VT , DL , DAG . getEntryNode ( ) , Ptr , MachinePointerInfo ( ) ) ; } return FrameAddr ;" LLVM,RISCV,2968,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; EVT Ty = Op . getValueType ( ) ; GlobalAddressSDNode * N = cast < GlobalAddressSDNode > ( Op ) ; int64_t Offset = N -> getOffset ( ) ; const GlobalValue * GV = N -> getGlobal ( ) ; bool IsLocal = getTargetMachine ( ) . shouldAssumeDSOLocal ( * GV -> getParent ( ) , GV ) ; SDValue Addr = getAddr ( N , Ty , DAG , IsLocal , false ) ; if ( Offset != ) return DAG . getPointerAdd ( DL , Addr , Offset ) ; return Addr ;" LLVM,RISCV,2969,"Predict the next statement of this code snippet: GlobalAddressSDNode * N = cast < GlobalAddressSDNode > ( Op ) ; int64_t Offset = N -> getOffset ( ) ; const GlobalValue * GV = N -> getGlobal ( ) ; bool IsLocal = getTargetMachine ( ) . shouldAssumeDSOLocal ( * GV -> getParent ( ) , GV ) ;" LLVM,RISCV,2970,"Predict the next statement of this code snippet: Addr = getStaticTLSAddr ( N , Ty , DAG , true ) ; break ; case TLSModel :: LocalDynamic : case TLSModel :: GeneralDynamic : Addr = getDynamicTLSAddr ( N , Ty , DAG ) ; break ; } if ( Offset != ) return DAG . getPointerAdd ( DL , Addr , Offset ) ; return Addr ;" LLVM,RISCV,2971,"Predict the next statement of this code snippet: SDValue SplattedVal = splatSplitI64WithVL ( DL , VT , Scalar , VL , DAG ) ; SDValue SplattedIdx = DAG . getNode ( , DL , VT , DAG . getConstant ( , DL , ) , VL ) ; MVT MaskVT = ( , VT . getVectorElementCount ( ) ) ; SDValue Mask = DAG . getNode ( , DL , MaskVT , VL ) ; SDValue VID = DAG . getNode ( , DL , VT , Mask , VL ) ; SDValue SelectCond = DAG . getNode ( , DL , MaskVT , VID , SplattedIdx , DAG . getCondCode ( ) , Mask , VL ) ; return DAG . getNode ( , DL , VT , SelectCond , SplattedVal , Vec , VL ) ; } case : case : case : case : { unsigned NumOps = Op . getNumOperands ( ) ; bool IsMasked = NumOps == ; unsigned OpOffset = IsMasked ? : ; SDValue Scalar = Op . getOperand ( + OpOffset ) ; if ( Scalar . getValueType ( ) . bitsLE ( XLenVT ) ) break ; if ( auto * CVal = dyn_cast < ConstantSDNode > ( Scalar ) ) if ( isInt < > ( CVal -> getSExtValue ( ) ) ) break ; MVT VT = Op . getSimpleValueType ( ) ; assert ( VT . getVectorElementType ( ) == && Scalar . getValueType ( ) == && ) ; MVT I32VT = ( , VT . getVectorElementCount ( ) * ) ; SDValue Vec = DAG . getBitcast ( I32VT , Op . getOperand ( + OpOffset ) ) ; SDValue ScalarLo = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue ScalarHi = DAG . getNode ( , DL , , Scalar , DAG . getConstant ( , DL , XLenVT ) ) ; SDValue VL = Op . getOperand ( NumOps - ) ; SDValue I32VL = DAG . getNode ( , DL , XLenVT , VL , DAG . getConstant ( , DL , XLenVT ) ) ; MVT I32MaskVT = ( , I32VT . getVectorElementCount ( ) ) ; SDValue I32Mask = DAG . getNode ( , DL , I32MaskVT , VL ) ; if ( IntNo == || IntNo == ) {" LLVM,RISCV,2972,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerJumpTable ( SDValue Op , SelectionDAG & DAG ) const {" LLVM,RISCV,2973,"Predict the next statement of this code snippet: EVT Ty = Op . getValueType ( ) ; return getAddr ( N , Ty , DAG , true , true ) ;" LLVM,RISCV,2974,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; if ( Depth ) { int Off = - XLenInBytes ; SDValue FrameAddr = lowerFRAMEADDR ( Op , DAG ) ; return DAG . getLoad ( VT , DL , DAG . getEntryNode ( ) , DAG . getPointerAdd ( DL , FrameAddr , Off ) , MachinePointerInfo ( ) ) ;" LLVM,RISCV,2975,"Predict the next statement of this code snippet: const APInt & TrueVal = cast < ConstantSDNode > ( TrueV ) -> getAPIntValue ( ) ; const APInt & FalseVal = cast < ConstantSDNode > ( FalseV ) -> getAPIntValue ( ) ; if ( TrueVal - == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , CondV , FalseV ) ; if ( TrueVal + == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , FalseV , CondV ) ; } translateSetCCForBranch ( DL , LHS , RHS , CCVal , DAG ) ; if ( LHS . getValueType ( ) . isFatPointer ( ) ) { LHS = DAG . getTargetExtractSubreg ( , DL , XLenVT , LHS ) ; RHS = DAG . getTargetExtractSubreg ( , DL , XLenVT , RHS ) ; } SDValue TargetCC = DAG . getTargetConstant ( CCVal , DL , XLenVT ) ; SDValue Ops [ ] = { LHS , RHS , TargetCC , TrueV , FalseV } ; return DAG . getNode ( , DL , Op . getValueType ( ) , Ops ) ; } SDValue Zero = DAG . getConstant ( , DL , XLenVT ) ; SDValue SetNE = DAG . getTargetConstant ( , DL , XLenVT ) ;" LLVM,RISCV,2976,"Predict the next statement of this code snippet: } if ( VT == XLenVT && CondV . getOpcode ( ) == && ( CondV . getOperand ( ) . getSimpleValueType ( ) == XLenVT || CondV . getOperand ( ) . getSimpleValueType ( ) . isFatPointer ( ) ) ) { SDValue LHS = CondV . getOperand ( ) ; SDValue RHS = CondV . getOperand ( ) ; const auto * CC = cast < CondCodeSDNode > ( CondV . getOperand ( ) ) ; CCVal = CC -> get ( ) ; if ( isa < ConstantSDNode > ( TrueV ) && isa < ConstantSDNode > ( FalseV ) && CCVal == ) { const APInt & TrueVal = cast < ConstantSDNode > ( TrueV ) -> getAPIntValue ( ) ; const APInt & FalseVal = cast < ConstantSDNode > ( FalseV ) -> getAPIntValue ( ) ; if ( TrueVal - == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , CondV , FalseV ) ; if ( TrueVal + == FalseVal ) return DAG . getNode ( , DL , Op . getValueType ( ) , FalseV , CondV ) ; } translateSetCCForBranch ( DL , LHS , RHS , CCVal , DAG ) ; if ( LHS . getValueType ( ) . isFatPointer ( ) ) { LHS = DAG . getTargetExtractSubreg ( , DL , XLenVT , LHS ) ; RHS = DAG . getTargetExtractSubreg ( , DL , XLenVT , RHS ) ; } SDValue TargetCC = DAG . getTargetConstant ( CCVal , DL , XLenVT ) ;" LLVM,RISCV,2977,"Predict the next statement of this code snippet: const Value * SV = cast < SrcValueSDNode > ( Op . getOperand ( ) ) -> getValue ( ) ;" LLVM,RISCV,2978,"Predict the next statement of this code snippet: LLVM_FALLTHROUGH ; case : case : break ; } SmallVector < SDNode * , > SetCCs ; for ( SDNode :: use_iterator UI = Src . getNode ( ) -> use_begin ( ) , UE = Src . getNode ( ) -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; if ( User == N ) continue ; if ( UI . getUse ( ) . getResNo ( ) != Src . getResNo ( ) ) continue ; if ( User -> getOpcode ( ) == ) { SetCCs . push_back ( User ) ; continue ; } break ; } if ( SetCCs . empty ( ) ) return SDValue ( ) ; SDLoc DL ( N ) ; SDValue SExt = DAG . getNode ( , DL , , Src ) ; DCI . CombineTo ( N , SExt ) ; for ( SDNode * SetCC : SetCCs ) { SmallVector < SDValue , > Ops ; for ( unsigned j = ; j != ; ++ j ) { SDValue SOp = SetCC -> getOperand ( j ) ; if ( SOp == Src ) Ops . push_back ( SExt ) ; else Ops . push_back ( DAG . getNode ( , DL , , SOp ) ) ; } Ops . push_back ( SetCC -> getOperand ( ) ) ;" LLVM,RISCV,2979,"Predict the next statement of this code snippet: unsigned Size = CI -> getCompareOperand ( ) -> getType ( ) -> getPrimitiveSizeInBits ( ) ; if ( ( Size == || Size == ) && ! ( Subtarget . getTargetABI ( ) ) ) return AtomicExpansionKind :: MaskedIntrinsic ; return AtomicExpansionKind :: None ;" LLVM,RISCV,2980,"Predict the next statement of this code snippet: if ( ( Size == || Size == ) && ! ( Subtarget . getTargetABI ( ) ) ) return AtomicExpansionKind :: MaskedIntrinsic ; return AtomicExpansionKind :: None ;" LLVM,RISCV,2981,"Predict the next statement of this code snippet: if ( AI -> isFloatingPointOperation ( ) ) return AtomicExpansionKind :: CmpXChg ; unsigned Size = AI -> getType ( ) -> getPrimitiveSizeInBits ( ) ;" LLVM,RISCV,2982,"Predict the next statement of this code snippet: ABI = Subtarget . getTargetABI ( ) ;" LLVM,RISCV,2983,"Predict the next statement of this code snippet: if ( DL . isFatPointer ( PointerTy ) && ! ( Subtarget . getTargetABI ( ) ) && ( isa < AtomicRMWInst > ( AI ) || isa < AtomicCmpXchgInst > ( AI ) ) ) return false ;" LLVM,RISCV,2984,"Predict the next statement of this code snippet: int FI = MFI . CreateFixedObject ( ValVT . getStoreSize ( ) , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , PtrVT ) ; SDValue Val ; ExtType ; switch ( VA . getLocInfo ( ) ) { default : llvm_unreachable ( ) ; case CCValAssign :: Full : case CCValAssign :: Indirect : case CCValAssign :: BCvt : ExtType = ; break ; }" LLVM,RISCV,2985,"Predict the next statement of this code snippet: bool hasSplatOperand ( ) const {" LLVM,RISCV,2986,"Predict the next statement of this code snippet: RTLIB :: Libcall LC ; if ( N -> getOpcode ( ) == || N -> getOpcode ( ) == ) LC = RTLIB :: getFPTOSINT ( Op0 . getValueType ( ) , N -> getValueType ( ) ) ; else LC = RTLIB :: getFPTOUINT ( Op0 . getValueType ( ) , N -> getValueType ( ) ) ; MakeLibCallOptions CallOptions ; EVT OpVT = Op0 . getValueType ( ) ; CallOptions . setTypeListBeforeSoften ( OpVT , N -> getValueType ( ) , true ) ; SDValue Chain = IsStrict ? N -> getOperand ( ) : SDValue ( ) ; SDValue Result ; std :: tie ( Result , Chain ) = makeLibCall ( DAG , LC , N -> getValueType ( ) , Op0 , CallOptions , DL , Chain ) ; Results . push_back ( Result ) ; if ( IsStrict ) Results . push_back ( Chain ) ; break ; } case : { assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( RCW ) ; Results . push_back ( RCW . getValue ( ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOpWithSExt ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ;" LLVM,RISCV,2987,"Predict the next statement of this code snippet: if ( Reg == ) Reg = MatchRegisterName ( RegName ) ; if ( Reg == ) report_fatal_error ( Twine ( + StringRef ( RegName ) + ) ) ; BitVector ReservedRegs = Subtarget . getRegisterInfo ( ) -> getReservedRegs ( MF ) ; if ( ! ReservedRegs . test ( Reg ) && ! Subtarget . isRegisterReservedByUser ( Reg ) ) report_fatal_error ( Twine ( + StringRef ( RegName ) + ) ) ;" LLVM,RISCV,2988,"Predict the next statement of this code snippet: if ( ! isa < ConstantFPSDNode > ( V ) && ! isa < ConstantSDNode > ( V ) ) isConstant = false ; if ( ! Value . getNode ( ) ) Value = V ; } if ( ! Value . getNode ( ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return DAG . getUNDEF ( VT ) ;" LLVM,RISCV,2989,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerBUILD_VECTOR ( SDValue Op , SelectionDAG & DAG ) const { assert ( Op . getOpcode ( ) == && ) ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ; unsigned NumElts = VT . getVectorNumElements ( ) ; bool isConstant = true ; SDValue Value ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue V = Op . getOperand ( i ) ; if ( V . isUndef ( ) ) continue ; if ( ! isa < ConstantFPSDNode > ( V ) && ! isa < ConstantSDNode > ( V ) ) isConstant = false ; if ( ! Value . getNode ( ) ) Value = V ; } if ( ! Value . getNode ( ) ) { LLVM_DEBUG ( dbgs ( ) << ) ; return DAG . getUNDEF ( VT ) ; } if ( isConstant ) { LLVM_DEBUG ( dbgs ( ) << ) ; return SDValue ( ) ; }" LLVM,RISCV,2990,"Predict the next statement of this code snippet: else if ( VT == ) return DAG . getNode ( , DL , Op . getValueType ( ) ) , DAG . getConstant ( , DL , ) , Op . getOperand ( ) ; else if ( VT == ) return DAG . getNode ( , DL , Op . getValueType ( ) ) , DAG . getConstant ( , DL , ) , Op . getOperand ( ) ; else if ( VT == ) return DAG . getNode ( , DL , Op . getValueType ( ) ) , DAG . getConstant ( , DL , ) , Op . getOperand ( ) ; else if ( VT == ) return DAG . getNode ( , DL , Op . getValueType ( ) ) , DAG . getConstant ( , DL , ) , Op . getOperand ( ) ; else if ( VT == ) return DAG . getNode ( , DL , Op . getValueType ( ) ) , DAG . getConstant ( , DL , ) , Op . getOperand ( ) ; else if ( VT == ) return DAG . getNode ( , DL , Op . getValueType ( ) ) , DAG . getConstant ( , DL , ) , Op . getOperand ( ) ;" LLVM,RISCV,2991,"Predict the next statement of this code snippet: return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerGlobalTLSAddress ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerBUILD_VECTOR ( Op , DAG ) ; case : return lowerEXTRACT_VECTOR_ELT ( Op , DAG ) ; case : return lowerINSERT_VECTOR_ELT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : { assert ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) != || Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } }" LLVM,RISCV,2992,"Predict the next statement of this code snippet: F -> insert ( I , TailMBB ) ; for ( MachineInstr * DebugInstr : SelectDebugValues ) { TailMBB -> push_back ( DebugInstr -> removeFromParent ( ) ) ; } TailMBB -> splice ( TailMBB -> end ( ) , HeadMBB , std :: next ( LastSelectPseudo -> getIterator ( ) ) , HeadMBB -> end ( ) ) ; TailMBB -> transferSuccessorsAndUpdatePHIs ( HeadMBB ) ; HeadMBB -> addSuccessor ( IfFalseMBB ) ; HeadMBB -> addSuccessor ( TailMBB ) ; unsigned Opcode = getBranchOpcodeForIntCondCode ( CC ) ; BuildMI ( HeadMBB , DL , TII . get ( Opcode ) ) . addReg ( LHS ) . addReg ( RHS ) . addMBB ( TailMBB ) ; IfFalseMBB -> addSuccessor ( TailMBB ) ; auto SelectMBBI = MI . getIterator ( ) ; auto SelectEnd = std :: next ( LastSelectPseudo -> getIterator ( ) ) ; auto InsertionPoint = TailMBB -> begin ( ) ; while ( SelectMBBI != SelectEnd ) { auto Next = std :: next ( SelectMBBI ) ; if ( isSelectPseudo ( * SelectMBBI ) ) { BuildMI ( * TailMBB , InsertionPoint , SelectMBBI -> getDebugLoc ( ) , TII . get ( ) , SelectMBBI -> getOperand ( ) . getReg ( ) ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( HeadMBB ) . addReg ( SelectMBBI -> getOperand ( ) . getReg ( ) ) . addMBB ( IfFalseMBB ) ; SelectMBBI -> eraseFromParent ( ) ; } SelectMBBI = Next ;" LLVM,RISCV,2993,"Predict the next statement of this code snippet: switch ( Constraint [ ] ) { default : break ; case 'f' : return C_RegisterClass ;" LLVM,RISCV,2994,"Predict the next statement of this code snippet: MachineFunction & MF = DAG . getMachineFunction ( ) ; SmallVector < CCValAssign , > ArgLocs ; CCState ArgCCInfo ( CallConv , IsVarArg , MF , ArgLocs , * DAG . getContext ( ) ) ; ArgCCInfo . AnalyzeCallOperands ( Outs , CC_32 ) ; unsigned NumBytes = ArgCCInfo . getNextStackOffset ( ) ; for ( auto & Arg : Outs ) { if ( ! Arg . Flags . isByVal ( ) ) continue ; report_fatal_error ( ) ; } Chain = DAG . getCALLSEQ_START ( Chain , NumBytes , , CLI . DL ) ; SmallVector < std :: pair < unsigned , SDValue > , > RegsToPass ; SDValue StackPtr ; for ( unsigned I = , E = ArgLocs . size ( ) ; I != E ; ++ I ) { CCValAssign & VA = ArgLocs [ I ] ; SDValue ArgValue = OutVals [ I ] ; switch ( VA . getLocInfo ( ) ) { case CCValAssign :: Full : break ; default : llvm_unreachable ( ) ; } if ( VA . isRegLoc ( ) ) { RegsToPass . push_back ( std :: make_pair ( VA . getLocReg ( ) , ArgValue ) ) ; } else { assert ( VA . isMemLoc ( ) && ) ; report_fatal_error ( ) ; } } SDValue Glue ; for ( auto & Reg : RegsToPass ) { Chain = DAG . getCopyToReg ( Chain , DL , Reg . first , Reg . second , Glue ) ; Glue = Chain . getValue ( ) ; } if ( isa < GlobalAddressSDNode > ( Callee ) ) { Callee = lowerGlobalAddress ( Callee , DAG ) ; } else if ( isa < ExternalSymbolSDNode > ( Callee ) ) { Callee = lowerExternalSymbol ( Callee , DAG ) ; } SmallVector < SDValue , > Ops ; Ops . push_back ( Chain ) ; Ops . push_back ( Callee ) ; for ( auto & Reg : RegsToPass ) Ops . push_back ( DAG . getRegister ( Reg . first , Reg . second . getValueType ( ) ) ) ; const TargetRegisterInfo * TRI = Subtarget . getRegisterInfo ( ) ; const uint32_t * Mask = TRI -> getCallPreservedMask ( MF , CallConv ) ; assert ( Mask && ) ; Ops . push_back ( DAG . getRegisterMask ( Mask ) ) ; if ( Glue . getNode ( ) ) Ops . push_back ( Glue ) ;" LLVM,RISCV,2995,"Predict the next statement of this code snippet: report_fatal_error ( ) ; case : return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ;" LLVM,RISCV,2996,"Predict the next statement of this code snippet: for ( auto N : { , , } ) setLoadExtAction ( N , XLenVT , , Promote ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ;" LLVM,RISCV,2997,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ;" LLVM,RISCV,2998,"Predict the next statement of this code snippet: ~ TargetLowering ( ) {" LLVM,RISCV,2999,"Predict the next statement of this code snippet: ~ TargetLowering ( ) {" LLVM,RISCV,3000,"Predict the next statement of this code snippet: assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; Register RegLo = VA . getLocReg ( ) ; Register RegHi = RegLo + ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegHi , ) ) ; } else {" LLVM,RISCV,3001,"Predict the next statement of this code snippet: CCState CCInfo ( CallConv , IsVarArg , DAG . getMachineFunction ( ) , RVLocs , * DAG . getContext ( ) ) ; analyzeOutputArgs ( DAG . getMachineFunction ( ) , CCInfo , Outs , true , nullptr ) ; SDValue Glue ; SmallVector < SDValue , > RetOps ( , Chain ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) { assert ( VA . isRegLoc ( ) && ) ; SDValue SplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Val ) ; SDValue Lo = SplitF64 . getValue ( ) ; SDValue Hi = SplitF64 . getValue ( ) ; Register RegLo = VA . getLocReg ( ) ; Register RegHi = RegLo + ; Chain = DAG . getCopyToReg ( Chain , DL , RegLo , Lo , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegLo , ) ) ; Chain = DAG . getCopyToReg ( Chain , DL , RegHi , Hi , Glue ) ; Glue = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( RegHi , ) ) ; } else {" LLVM,RISCV,3002,"Predict the next statement of this code snippet: for ( unsigned i = ; i != NumArgs ; ++ i ) { MVT ArgVT = Ins [ i ] . VT ; ArgFlags = Ins [ i ] . Flags ; if ( CC_ ( MF . getDataLayout ( ) , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet ) ) { DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << '\n' ) ; llvm_unreachable ( nullptr ) ; } }" LLVM,RISCV,3003,"Predict the next statement of this code snippet: if ( CC_ ( MF . getDataLayout ( ) , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet ) ) { DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << '\n' ) ; llvm_unreachable ( nullptr ) ; }" LLVM,RISCV,3004,"Predict the next statement of this code snippet: if ( CC_ ( MF . getDataLayout ( ) , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet ) ) {" LLVM,RISCV,3005,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , RVLocs , Context ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ; if ( CC_ ( MF . getDataLayout ( ) , i , VT , VT , CCValAssign :: Full , ArgFlags , CCInfo , true , true ) ) return false ; }" LLVM,RISCV,3006,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > RVLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , RVLocs , Context ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { MVT VT = Outs [ i ] . VT ; ArgFlags = Outs [ i ] . Flags ;" LLVM,RISCV,3007,"Predict the next statement of this code snippet: EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ; if ( IsVarArg ) report_fatal_error ( ) ; SmallVector < CCValAssign , > ArgLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , ArgLocs , * DAG . getContext ( ) ) ; analyzeInputArgs ( MF , CCInfo , Ins , false ) ; for ( unsigned i = , e = ArgLocs . size ( ) ; i != e ; ++ i ) { CCValAssign & VA = ArgLocs [ i ] ; assert ( VA . getLocVT ( ) == Subtarget . getXLenVT ( ) && ) ; SDValue ArgValue ; if ( VA . isRegLoc ( ) ) ArgValue = unpackFromRegLoc ( DAG , Chain , VA , DL ) ; else ArgValue = unpackFromMemLoc ( DAG , Chain , VA , DL ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) {" LLVM,RISCV,3008,"Predict the next statement of this code snippet: SmallVector < SDValue , > RetOps ( , Chain ) ; for ( unsigned i = , e = RVLocs . size ( ) ; i < e ; ++ i ) { SDValue Val = OutVals [ i ] ; CCValAssign & VA = RVLocs [ i ] ; assert ( VA . isRegLoc ( ) && ) ; assert ( VA . getLocInfo ( ) == CCValAssign :: Full && ) ; Chain = DAG . getCopyToReg ( Chain , DL , VA . getLocReg ( ) , Val , Flag ) ; Flag = Chain . getValue ( ) ; RetOps . push_back ( DAG . getRegister ( VA . getLocReg ( ) , VA . getLocVT ( ) ) ) ;" LLVM,RISCV,3009,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ;" LLVM,RISCV,3010,"Predict the next statement of this code snippet: SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , AddrLo ) , ) ; } case CodeModel :: Medium : { SDValue Addr = getTargetNode ( N , DL , Ty , DAG , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , Addr ) , ) ; }" LLVM,RISCV,3011,"Predict the next statement of this code snippet: case CodeModel :: Small : { SDValue AddrHi = getTargetNode ( N , DL , Ty , DAG , ) ; SDValue AddrLo = getTargetNode ( N , DL , Ty , DAG , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , AddrHi ) , ) ; return SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , AddrLo ) , ) ;" LLVM,RISCV,3012,"Predict the next statement of this code snippet: if ( isPositionIndependent ( ) ) report_fatal_error ( ) ;" LLVM,RISCV,3013,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerBlockAddress ( SDValue Op , SelectionDAG & DAG ) const { BlockAddressSDNode * N = cast < BlockAddressSDNode > ( Op ) ;" LLVM,RISCV,3014,"Predict the next statement of this code snippet: if ( isPositionIndependent ( ) ) report_fatal_error ( ) ;" LLVM,RISCV,3015,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerGlobalAddress ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; EVT Ty = Op . getValueType ( ) ; GlobalAddressSDNode * N = cast < GlobalAddressSDNode > ( Op ) ; int64_t Offset = N -> getOffset ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( isPositionIndependent ( ) ) report_fatal_error ( ) ; SDValue Addr = getAddr ( N , DAG ) ; if ( Offset != ) return DAG . getNode ( , DL , Ty , Addr , DAG . getConstant ( Offset , DL , XLenVT ) ) ; return Addr ;" LLVM,RISCV,3016,"Predict the next statement of this code snippet: switch ( Op . getOpcode ( ) ) { default : report_fatal_error ( ) ; case : return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : {" LLVM,RISCV,3017,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerOperation ( SDValue Op , SelectionDAG & DAG ) const { switch ( Op . getOpcode ( ) ) { default : report_fatal_error ( ) ; case : return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case :" LLVM,RISCV,3018,"Predict the next statement of this code snippet: MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; auto BuildVSETVLI = [ & ] ( ) { if ( VLIndex >= ) { Register DestReg = MRI . createVirtualRegister ( & ) ; const MachineOperand & VLOp = MI . getOperand ( VLIndex ) ; if ( VLOp . isImm ( ) ) return BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( DestReg , RegState :: Define | RegState :: Dead ) . addImm ( VLOp . getImm ( ) ) ; Register VLReg = MI . getOperand ( VLIndex ) . getReg ( ) ; return BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( DestReg , RegState :: Define | RegState :: Dead ) . addReg ( VLReg ) ; } return BuildMI ( * BB , MI , DL , TII . get ( ) ) . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) ; } ; MachineInstrBuilder MIB = BuildVSETVLI ( ) ; bool TailAgnostic = true ; unsigned UseOpIdx ; if ( ! ForceTailAgnostic && MI . isRegTiedToUseOperand ( , & UseOpIdx ) ) { TailAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI . getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI ) { UseMI = elideCopies ( UseMI , MRI ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ;" LLVM,RISCV,3019,"Predict the next statement of this code snippet: while ( true ) { if ( ! MI -> isFullCopy ( ) ) return MI ; if ( ! Register :: isVirtualRegister ( MI -> getOperand ( ) . getReg ( ) ) ) return nullptr ; MI = MRI . getVRegDef ( MI -> getOperand ( ) . getReg ( ) ) ;" LLVM,RISCV,3020,"Predict the next statement of this code snippet: switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : assert ( ! Subtarget . is64Bit ( ) && ) ; return emitReadCycleWidePseudo ( MI , BB ) ; case : case : case : case : return emitSelectPseudo ( MI , BB ) ;" LLVM,RISCV,3021,"Predict the next statement of this code snippet: if ( ( TSFlags ) ) { unsigned NumOperands = MI . getNumExplicitOperands ( ) ; int VLIndex = ( TSFlags ) ? NumOperands - : - ; unsigned SEWIndex = NumOperands - ; bool ForceTailAgnostic = ( TSFlags ) ; VLMul = ( TSFlags ) ; return addVSetVL ( MI , BB , VLIndex , SEWIndex , VLMul , ForceTailAgnostic ) ; } switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : assert ( ! Subtarget . is64Bit ( ) && ) ; return emitReadCycleWidePseudo ( MI , BB ) ; case : case : case : case : return emitSelectPseudo ( MI , BB ) ;" LLVM,RISCV,3022,"Predict the next statement of this code snippet: return convertFromScalableVector ( VecVT , Res , DAG , Subtarget ) ; } if ( isa < ConstantSDNode > ( Lo ) && isa < ConstantSDNode > ( Hi ) ) { int32_t LoC = cast < ConstantSDNode > ( Lo ) -> getSExtValue ( ) ; int32_t HiC = cast < ConstantSDNode > ( Hi ) -> getSExtValue ( ) ; if ( ( LoC >> ) == HiC ) return DAG . getNode ( , DL , VecVT , Lo ) ; } if ( Hi . getOpcode ( ) == && Hi . getOperand ( ) == Lo && isa < ConstantSDNode > ( Hi . getOperand ( ) ) && Hi . getConstantOperandVal ( ) == ) return DAG . getNode ( , DL , VecVT , Lo ) ;" LLVM,RISCV,3023,"Predict the next statement of this code snippet: bool SelectMaskVal = ( MaskIndex < ( int ) NumElts ) ^ InvertMask ; MaskVals . push_back ( DAG . getConstant ( SelectMaskVal , DL , XLenVT ) ) ; if ( ! IsSelect ) { bool IsLHS = MaskIndex < ( int ) NumElts ; GatherIndicesLHS . push_back ( DAG . getConstant ( IsLHS ? std :: max ( MaskIndex , ) : , DL , XLenVT ) ) ; GatherIndicesRHS . push_back ( DAG . getConstant ( IsLHS ? : MaskIndex - NumElts , DL , XLenVT ) ) ; } } if ( SwapOps ) { std :: swap ( V1 , V2 ) ; std :: swap ( GatherIndicesLHS , GatherIndicesRHS ) ; } assert ( MaskVals . size ( ) == NumElts && ) ; MVT MaskVT = ( , NumElts ) ; SDValue SelectMask = DAG . getBuildVector ( MaskVT , DL , MaskVals ) ; if ( IsSelect ) return DAG . getNode ( , DL , VT , SelectMask , V1 , V2 ) ; if ( VT . getScalarSizeInBits ( ) == && VT . getVectorNumElements ( ) > ) { return SDValue ( ) ; } unsigned GatherOpc = ; MVT IndexVT = VT . changeTypeToInteger ( ) ; if ( IndexVT . getScalarType ( ) . bitsGT ( XLenVT ) ) { GatherOpc = ; IndexVT = IndexVT . changeVectorElementType ( ) ; } MVT IndexContainerVT = ContainerVT . changeVectorElementType ( IndexVT . getScalarType ( ) ) ; SDValue Gather ; if ( SDValue SplatValue = DAG . getSplatValue ( V1 ) ) { Gather = lowerScalarSplat ( SplatValue , VL , ContainerVT , DL , DAG , Subtarget ) ; } else { SDValue LHSIndices = DAG . getBuildVector ( IndexVT , DL , GatherIndicesLHS ) ; LHSIndices = convertToScalableVector ( IndexContainerVT , LHSIndices , DAG , Subtarget ) ; V1 = convertToScalableVector ( ContainerVT , V1 , DAG , Subtarget ) ; Gather = DAG . getNode ( GatherOpc , DL , ContainerVT , V1 , LHSIndices , TrueMask , VL ) ; } if ( ! V2 . isUndef ( ) ) { MVT MaskContainerVT = ContainerVT . changeVectorElementType ( ) ; SelectMask = convertToScalableVector ( MaskContainerVT , SelectMask , DAG , Subtarget ) ;" LLVM,RISCV,3024,"Predict the next statement of this code snippet: SDValue Chain = DAG . getEntryNode ( ) ; Lo = DAG . getStore ( Chain , DL , Lo , StackSlot , MPI , Align ( ) ) ; SDValue OffsetSlot = DAG . getMemBasePlusOffset ( StackSlot , TypeSize :: Fixed ( ) , DL ) ; Hi = DAG . getStore ( Chain , DL , Hi , OffsetSlot , MPI . getWithOffset ( ) , Align ( ) ) ; Chain = DAG . getNode ( , DL , , Lo , Hi ) ; SDVTList VTs = DAG . getVTList ( { VT , } ) ; SDValue IntID = DAG . getTargetConstant ( , DL , ) ; SDValue Ops [ ] = { Chain , IntID , StackSlot , DAG . getRegister ( , ) , VL } ; return DAG . getMemIntrinsicNode ( , DL , VTs , Ops , , MPI , Align ( ) , MachineMemOperand :: MOLoad ) ;" LLVM,RISCV,3025,"Predict the next statement of this code snippet: int32_t HiC = cast < ConstantSDNode > ( Hi ) -> getSExtValue ( ) ; if ( ( LoC >> ) == HiC ) return DAG . getNode ( , DL , VT , Lo , VL ) ;" LLVM,RISCV,3026,"Predict the next statement of this code snippet: static SDValue splatPartsI64WithVL ( const SDLoc & DL , MVT VT , SDValue Lo , SDValue Hi , SDValue VL , SelectionDAG & DAG ) { if ( isa < ConstantSDNode > ( Lo ) && isa < ConstantSDNode > ( Hi ) ) { int32_t LoC = cast < ConstantSDNode > ( Lo ) -> getSExtValue ( ) ;" LLVM,RISCV,3027,"Predict the next statement of this code snippet: LocInfo = CCValAssign :: BCvt ; } if ( IsRet && ValNo > ) return true ; unsigned TwoXLenInBytes = ( * XLen ) / ; if ( ! IsFixed && ArgFlags . getOrigAlign ( ) == TwoXLenInBytes && DL . getTypeAllocSize ( OrigTy ) == TwoXLenInBytes ) { unsigned RegIdx = State . getFirstUnallocated ( ArgGPRs ) ; if ( RegIdx != array_lengthof ( ArgGPRs ) && RegIdx % == ) State . AllocateReg ( ArgGPRs ) ; } SmallVectorImpl < CCValAssign > & PendingLocs = State . getPendingLocs ( ) ; SmallVectorImpl < > & PendingArgFlags = State . getPendingArgFlags ( ) ; assert ( PendingLocs . size ( ) == PendingArgFlags . size ( ) && ) ; if ( XLen == && ValVT == ) { assert ( ! ArgFlags . isSplit ( ) && PendingLocs . empty ( ) && ) ; unsigned Reg = State . AllocateReg ( ArgGPRs ) ; LocVT = ; if ( ! Reg ) { unsigned StackOffset = State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ; } if ( ! State . AllocateReg ( ArgGPRs ) ) State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ;" LLVM,RISCV,3028,"Predict the next statement of this code snippet: assert ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) != || Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ;" LLVM,RISCV,3029,"Predict the next statement of this code snippet: case : return lowerRETURNADDR ( Op , DAG ) ; case : { assert ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) != || Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ;" LLVM,RISCV,3030,"Predict the next statement of this code snippet: default : break ; case : { SDValue Op0 = N -> getOperand ( ) ; if ( Op0 -> getOpcode ( ) == ) return DCI . CombineTo ( N , Op0 . getOperand ( ) , Op0 . getOperand ( ) ) ; SDLoc DL ( N ) ; if ( ! ( Op0 . getOpcode ( ) == || Op0 . getOpcode ( ) == ) || ! Op0 . getNode ( ) -> hasOneUse ( ) ) break ; SDValue NewSplitF64 = DAG . getNode ( , DL , DAG . getVTList ( , ) , Op0 . getOperand ( ) ) ; SDValue Lo = NewSplitF64 . getValue ( ) ; SDValue Hi = NewSplitF64 . getValue ( ) ; APInt SignBit = APInt :: getSignMask ( ) ; if ( Op0 . getOpcode ( ) == ) { SDValue NewHi = DAG . getNode ( , DL , , Hi , DAG . getConstant ( SignBit , DL , ) ) ; return DCI . CombineTo ( N , Lo , NewHi ) ; } assert ( Op0 . getOpcode ( ) == ) ; SDValue NewHi = DAG . getNode ( , DL , , Hi , DAG . getConstant ( ~ SignBit , DL , ) ) ; return DCI . CombineTo ( N , Lo , NewHi ) ; } case : case :" LLVM,RISCV,3031,"Predict the next statement of this code snippet: APInt LHSMask = APInt :: getLowBitsSet ( LHS . getValueSizeInBits ( ) , ) ; APInt RHSMask = APInt :: getLowBitsSet ( RHS . getValueSizeInBits ( ) , ) ; if ( ( SimplifyDemandedBits ( N -> getOperand ( ) , LHSMask , DCI ) ) || ( SimplifyDemandedBits ( N -> getOperand ( ) , RHSMask , DCI ) ) ) return SDValue ( ) ; break ; } case : { SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 -> getOpcode ( ) == ) { SDValue AExtOp = DAG . getNode ( , DL , , Op0 . getOperand ( ) ) ; return DCI . CombineTo ( N , AExtOp ) ; } if ( ! ( Op0 . getOpcode ( ) == || Op0 . getOpcode ( ) == ) || ! Op0 . getNode ( ) -> hasOneUse ( ) ) break ; SDValue NewFMV = DAG . getNode ( , DL , , Op0 . getOperand ( ) ) ; APInt SignBit = APInt :: getSignMask ( ) . sext ( ) ; if ( Op0 . getOpcode ( ) == ) { return DCI . CombineTo ( N , DAG . getNode ( , DL , , NewFMV , DAG . getConstant ( SignBit , DL , ) ) ) ; } assert ( Op0 . getOpcode ( ) == ) ; return DCI . CombineTo ( N , DAG . getNode ( , DL , , NewFMV , DAG . getConstant ( ~ SignBit , DL , ) ) ) ;" LLVM,RISCV,3032,"Predict the next statement of this code snippet: setOperationAction ( , , Custom ) ; } if ( ! Subtarget . hasStdExtM ( ) ) { setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; } if ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) ) { setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtF ( ) && Subtarget . is64Bit ( ) ) setOperationAction ( , , Custom ) ; if ( Subtarget . hasStdExtD ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ;" LLVM,RISCV,3033,"Predict the next statement of this code snippet: setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( auto VT : { , , } ) setOperationAction ( , VT , Expand ) ; if ( Subtarget . is64Bit ( ) ) { setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; } if ( ! Subtarget . hasStdExtM ( ) ) { setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; } if ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) ) { setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = {" LLVM,RISCV,3034,"Predict the next statement of this code snippet: } if ( Base == Op -> getOperand ( ) ) { Offset = Op -> getOperand ( ) ; } else if ( Base == Op -> getOperand ( ) ) { Offset = Op -> getOperand ( ) ;" LLVM,RISCV,3035,"Predict the next statement of this code snippet: if ( ! Subtarget . hasExtXCoreVMem ( ) ) return false ; if ( Op -> getOpcode ( ) != ) return false ; if ( LSBaseSDNode * LS = dyn_cast < LSBaseSDNode > ( N ) ) { Base = LS -> getBasePtr ( ) ; } else { return false ;" LLVM,RISCV,3036,"Predict the next statement of this code snippet: case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : { assert ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) != || Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } case : return LowerINTRINSIC_WO_CHAIN ( Op , DAG ) ; case :" LLVM,RISCV,3037,"Predict the next statement of this code snippet: CallOptions . setTypeListBeforeSoften ( OpVT , N -> getValueType ( ) , true ) ; SDValue Chain = IsStrict ? N -> getOperand ( ) : SDValue ( ) ; SDValue Result ; std :: tie ( Result , Chain ) = makeLibCall ( DAG , LC , N -> getValueType ( ) , Op0 , CallOptions , DL , Chain ) ; Results . push_back ( Result ) ; if ( IsStrict ) Results . push_back ( Chain ) ; break ; } case : { assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , RCW , RCW . getValue ( ) ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOpWithSExt ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ; break ;" LLVM,RISCV,3038,"Predict the next statement of this code snippet: CallOptions . setTypeListBeforeSoften ( OpVT , N -> getValueType ( ) , true ) ; SDValue Chain = IsStrict ? N -> getOperand ( ) : SDValue ( ) ; SDValue Result ; std :: tie ( Result , Chain ) = makeLibCall ( DAG , LC , N -> getValueType ( ) , Op0 , CallOptions , DL , Chain ) ; Results . push_back ( Result ) ; if ( IsStrict ) Results . push_back ( Chain ) ; break ; } case : { assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , RCW , RCW . getValue ( ) ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOpWithSExt ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ;" LLVM,RISCV,3039,"Predict the next statement of this code snippet: Info . size = MemoryLocation :: UnknownSize ; Info . flags |= MachineMemOperand :: MOLoad ; return true ; case : Info . opc = ; Info . ptrVal = I . getArgOperand ( ) ; Info . memVT = ( I . getArgOperand ( ) -> getType ( ) -> getScalarType ( ) ) ; Info . align = Align ( I . getArgOperand ( ) -> getType ( ) -> getScalarSizeInBits ( ) / ) ; Info . size = MemoryLocation :: UnknownSize ; Info . flags |= MachineMemOperand :: MOStore ; return true ; }" LLVM,RISCV,3040,"Predict the next statement of this code snippet: unsigned IntNo = Op . getConstantOperandVal ( ) ; switch ( IntNo ) { default : break ; case : { SDLoc DL ( Op ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask = Op . getOperand ( ) ; bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT VT = Op -> getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue PassThru = Op . getOperand ( ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ;" LLVM,RISCV,3041,"Predict the next statement of this code snippet: switch ( IntNo ) { default : break ; case : { SDLoc DL ( Op ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDValue Mask = Op . getOperand ( ) ; bool IsUnmasked = ( Mask . getNode ( ) ) ; MVT VT = Op -> getSimpleValueType ( ) ; MVT ContainerVT = getContainerForFixedLengthVector ( VT ) ; SDValue PassThru = Op . getOperand ( ) ; if ( ! IsUnmasked ) { MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; } SDValue VL = DAG . getConstant ( VT . getVectorNumElements ( ) , DL , XLenVT ) ; SDValue IntID = DAG . getTargetConstant ( IsUnmasked ? : , DL , XLenVT ) ; auto * Load = cast < MemIntrinsicSDNode > ( Op ) ; SmallVector < SDValue , > Ops { Load -> getChain ( ) , IntID } ; if ( ! IsUnmasked ) Ops . push_back ( PassThru ) ; Ops . push_back ( Op . getOperand ( ) ) ; Ops . push_back ( Op . getOperand ( ) ) ; if ( ! IsUnmasked ) Ops . push_back ( Mask ) ; Ops . push_back ( VL ) ; SDVTList VTs = DAG . getVTList ( { ContainerVT , } ) ;" LLVM,RISCV,3042,"Predict the next statement of this code snippet: const auto * MLoad = cast < MaskedLoadSDNode > ( Op ) ; Mask = MLoad -> getMask ( ) ; PassThru = MLoad -> getPassThru ( ) ; } MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ContainerVT = VT ; if ( VT . isFixedLengthVector ( ) ) { ContainerVT = getContainerForFixedLengthVector ( VT ) ; MVT MaskVT = ( , ContainerVT . getVectorElementCount ( ) ) ; Mask = convertToScalableVector ( MaskVT , Mask , DAG , Subtarget ) ; PassThru = convertToScalableVector ( ContainerVT , PassThru , DAG , Subtarget ) ; }" LLVM,RISCV,3043,"Predict the next statement of this code snippet: SDValue BasePtr = MemSD -> getBasePtr ( ) ; SDValue Val , Mask , VL ; if ( const auto * VPStore = dyn_cast < VPStoreSDNode > ( Op ) ) { Val = VPStore -> getValue ( ) ; Mask = VPStore -> getMask ( ) ; VL = VPStore -> getVectorLength ( ) ; } else { const auto * MStore = cast < MaskedStoreSDNode > ( Op ) ; Val = MStore -> getValue ( ) ; Mask = MStore -> getMask ( ) ; } MVT VT = Val . getSimpleValueType ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; MVT ContainerVT = VT ;" LLVM,RISCV,3044,"Predict the next statement of this code snippet: if ( SDValue V = transformAddShlImm ( N , DAG , Subtarget ) ) return V ;" LLVM,RISCV,3045,"Predict the next statement of this code snippet: if ( SDValue V = transformAddShlImm ( N , DAG , Subtarget ) ) return V ; return combineSelectAndUseCommutative ( N , DAG , false ) ;" LLVM,RISCV,3046,"Predict the next statement of this code snippet: case Instruction :: FAdd : case Instruction :: FSub : case Instruction :: FMul : case Instruction :: FDiv : return true ; case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : return Operand == ; case Instruction :: Call : if ( auto * II = dyn_cast < IntrinsicInst > ( I ) ) { switch ( II -> getIntrinsicID ( ) ) { case : return Operand == || Operand == ; default : return false ; } } return false ; default : return false ; } } ; for ( auto OpIdx : enumerate ( I -> operands ( ) ) ) { if ( ! IsSinker ( I , OpIdx . index ( ) ) ) continue ; Instruction * Op = dyn_cast < Instruction > ( OpIdx . value ( ) . get ( ) ) ;" LLVM,RISCV,3047,"Predict the next statement of this code snippet: } } ; for ( auto OpIdx : enumerate ( I -> operands ( ) ) ) { if ( ! IsSinker ( I , OpIdx . index ( ) ) ) continue ; Instruction * Op = dyn_cast < Instruction > ( OpIdx . value ( ) . get ( ) ) ; if ( ! Op || any_of ( Ops , [ & ] ( Use * U ) { return U -> get ( ) == Op ; } ) ) continue ; if ( ! match ( Op , m_Shuffle ( m_InsertElt ( m_Undef ( ) , m_Value ( ) , m_ZeroInt ( ) ) , m_Undef ( ) , m_ZeroMask ( ) ) ) ) continue ; for ( Use & U : Op -> uses ( ) ) { Instruction * Insn = cast < Instruction > ( U . getUser ( ) ) ; if ( ! IsSinker ( Insn , U . getOperandNo ( ) ) ) return false ;" LLVM,RISCV,3048,"Predict the next statement of this code snippet: return std :: make_pair ( , & ) ; case 'f' : if ( Subtarget . hasStdExtF ( ) && VT == ) return std :: make_pair ( , & ) ; if ( Subtarget . hasStdExtD ( ) && VT == ) return std :: make_pair ( , & ) ; break ;" LLVM,RISCV,3049,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; } return nullptr ;" LLVM,RISCV,3050,"Predict the next statement of this code snippet: case : break ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,3051,"Predict the next statement of this code snippet: case : return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerGlobalTLSAddress ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerShiftLeftParts ( Op , DAG ) ; case : return lowerShiftRightParts ( Op , DAG , true ) ; case :" LLVM,RISCV,3052,"Predict the next statement of this code snippet: return ; } assert ( ( N -> getNumValues ( ) == Res -> getNumValues ( ) ) && ) ; for ( unsigned I = , E = N -> getNumValues ( ) ; I != E ; ++ I ) Results . push_back ( Res . getValue ( I ) ) ;" LLVM,RISCV,3053,"Predict the next statement of this code snippet: if ( ! Res . getNode ( ) ) return ; if ( N -> getNumValues ( ) == ) { Results . push_back ( Res ) ; return ; } assert ( ( N -> getNumValues ( ) == Res -> getNumValues ( ) ) && ) ;" LLVM,RISCV,3054,"Predict the next statement of this code snippet: SDValue V2 = Op . getOperand ( ) ; EVT Ty = Op . getValueType ( ) ; assert ( Ty == && ) ; return DAG . getNode ( , DL , , V2 , V1 ) ;" LLVM,RISCV,3055,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerVectorBuild ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; SDValue V1 = Op . getOperand ( ) ; SDValue V2 = Op . getOperand ( ) ; EVT Ty = Op . getValueType ( ) ; assert ( Ty == && ) ;" LLVM,RISCV,3056,"Predict the next statement of this code snippet: rawResult = DAG . getNode ( , DL , RegTy , dummy , V1 ) ; } else { rawResult = DAG . getNode ( , DL , RegTy , dummy , V1 ) ; } signed_bit = DAG . getNode ( , DL , RegTy , DAG . getNode ( , DL , RegTy , rawResult , DAG . getConstant ( , DL , RegTy ) ) , DAG . getConstant ( lowShift , DL , RegTy ) ) ; mask = DAG . getNode ( , DL , RegTy , signed_bit , DAG . getConstant ( lowShift - , DL , RegTy ) ) ; SDValue finalResult = DAG . getNode ( , DL , RegTy , rawResult , mask ) ;" LLVM,RISCV,3057,"Predict the next statement of this code snippet: SDValue num = Op . getOperand ( ) ; auto * index = dyn_cast < ConstantSDNode > ( Op . getOperand ( ) ) ; APInt pos = index -> getAPIntValue ( ) ; EVT Ty = Op . getValueType ( ) ;" LLVM,RISCV,3058,"Predict the next statement of this code snippet: Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ; break ;" LLVM,RISCV,3059,"Predict the next statement of this code snippet: Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : {" LLVM,RISCV,3060,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtF ( ) && Subtarget . is64Bit ( ) ) setOperationAction ( , , Custom ) ; if ( Subtarget . hasStdExtD ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtP ( ) && Subtarget . is64Bit ( ) ) { setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , , Subtarget . is64Bit ( ) ? Legal : Custom ) ; if ( Subtarget . hasStdExtA ( ) ) { setMaxAtomicSizeInBitsSupported ( Subtarget . getXLen ( ) ) ; setMinCmpXchgSizeInBits ( ) ; } else { setMaxAtomicSizeInBitsSupported ( ) ; } setBooleanContents ( ZeroOrOneBooleanContent ) ; unsigned FunctionAlignment = Subtarget . hasStdExtC ( ) ? : ;" LLVM,RISCV,3061,"Predict the next statement of this code snippet: } setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Custom ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtF ( ) && Subtarget . is64Bit ( ) ) setOperationAction ( , , Custom ) ; if ( Subtarget . hasStdExtD ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtP ( ) && Subtarget . is64Bit ( ) ) { setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; }" LLVM,RISCV,3062,"Predict the next statement of this code snippet: setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; setOperationAction ( , XLenVT , Expand ) ; FPCCToExtend [ ] = { , , , , , , , , , , , , } ; FPOpToExtend [ ] = { , , , , } ; if ( Subtarget . hasStdExtF ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } if ( Subtarget . hasStdExtF ( ) && Subtarget . is64Bit ( ) ) setOperationAction ( , , Custom ) ; if ( Subtarget . hasStdExtD ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( auto CC : FPCCToExtend ) setCondCodeAction ( CC , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; for ( auto Op : FPOpToExtend ) setOperationAction ( Op , , Expand ) ; } setOperationAction ( , XLenVT , Custom ) ;" LLVM,RISCV,3063,"Predict the next statement of this code snippet: switch ( N -> getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : case : case : case : { bool IsStrict = N -> isStrictFPOpcode ( ) ; assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; SDValue Op0 = IsStrict ? N -> getOperand ( ) : N -> getOperand ( ) ; RTLIB :: Libcall LC ; if ( N -> getOpcode ( ) == || N -> getOpcode ( ) == ) LC = RTLIB :: getFPTOSINT ( Op0 . getValueType ( ) , N -> getValueType ( ) ) ; else LC = RTLIB :: getFPTOUINT ( Op0 . getValueType ( ) , N -> getValueType ( ) ) ; MakeLibCallOptions CallOptions ; EVT OpVT = Op0 . getValueType ( ) ; CallOptions . setTypeListBeforeSoften ( OpVT , N -> getValueType ( ) , true ) ; SDValue Chain = IsStrict ? N -> getOperand ( ) : SDValue ( ) ; SDValue Result ; std :: tie ( Result , Chain ) = makeLibCall ( DAG , LC , N -> getValueType ( ) , Op0 , CallOptions , DL , Chain ) ; Results . push_back ( Result ) ; if ( IsStrict ) Results . push_back ( Chain ) ; break ; } case : { assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , RCW , RCW . getValue ( ) ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case :" LLVM,RISCV,3064,"Predict the next statement of this code snippet: assert ( ! Subtarget . is64Bit ( ) && ) ; SDVTList VTs = DAG . getVTList ( , , ) ; SDValue RCW = DAG . getNode ( , DL , VTs , N -> getOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , RCW , RCW . getValue ( ) ) ) ; Results . push_back ( RCW . getValue ( ) ) ; break ; } case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOpWithSExt ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ;" LLVM,RISCV,3065,"Predict the next statement of this code snippet: assert ( VType :: isValidSEW ( SEW ) && ) ; VSEW ElementWidth = static_cast < VSEW > ( Log2_32 ( SEW / ) ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; MachineInstrBuilder MIB = BuildMI ( * BB , MI , DL , TII . get ( ) ) ; if ( VLIndex >= ) { Register DestReg = MRI . createVirtualRegister ( & ) ; MIB . addReg ( DestReg , RegState :: Define | RegState :: Dead ) . addReg ( MI . getOperand ( VLIndex ) . getReg ( ) ) ; } else MIB . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) ; bool TailAgnostic = true ; unsigned UseOpIdx ; if ( MI . isRegTiedToUseOperand ( , & UseOpIdx ) && ! WritesElement0 ) { TailAgnostic = false ; const MachineOperand & UseMO = MI . getOperand ( UseOpIdx ) ; MachineInstr * UseMI = MRI . getVRegDef ( UseMO . getReg ( ) ) ; if ( UseMI && UseMI -> isImplicitDef ( ) ) TailAgnostic = true ; } MIB . addImm ( VType :: encodeVTYPE ( VLMul , ElementWidth , TailAgnostic , false ) ) ; MI . getOperand ( SEWIndex ) . setImm ( - ) ; if ( VLIndex >= ) {" LLVM,RISCV,3066,"Predict the next statement of this code snippet: if ( VLIndex >= ) { Register DestReg = MRI . createVirtualRegister ( & ) ; MIB . addReg ( DestReg , RegState :: Define | RegState :: Dead ) . addReg ( MI . getOperand ( VLIndex ) . getReg ( ) ) ; } else MIB . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) ; bool TailAgnostic = true ; unsigned UseOpIdx ; if ( MI . isRegTiedToUseOperand ( , & UseOpIdx ) && ! WritesElement0 ) { TailAgnostic = false ;" LLVM,RISCV,3067,"Predict the next statement of this code snippet: void TargetLowering :: computeKnownBitsForTargetNode ( const SDValue Op , KnownBits & Known , const APInt & DemandedElts , const SelectionDAG & DAG , unsigned Depth ) const { unsigned BitWidth = Known . getBitWidth ( ) ; unsigned Opc = Op . getOpcode ( ) ; assert ( ( Opc >= || Opc == || Opc == || Opc == ) && ) ; Known . resetAll ( ) ; switch ( Opc ) { default : break ; case : { KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: urem ( Known . trunc ( ) , Known2 . trunc ( ) ) ;" LLVM,RISCV,3068,"Predict the next statement of this code snippet: Known = Known . sext ( BitWidth ) ; break ; } case : { KnownBits Known2 ; Known = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known2 = DAG . computeKnownBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; Known = KnownBits :: udiv ( Known . trunc ( ) , Known2 . trunc ( ) ) ; Known = Known . sext ( BitWidth ) ;" LLVM,RISCV,3069,"Predict the next statement of this code snippet: case : return ; case : if ( Op . getOperand ( ) . getScalarValueSizeInBits ( ) > Subtarget . getXLen ( ) ) return ; return Subtarget . getXLen ( ) - Op . getOperand ( ) . getScalarValueSizeInBits ( ) + ; } return ;" LLVM,RISCV,3070,"Predict the next statement of this code snippet: bool WritesElement0 = TSFlags & ; VLMUL VLMul = static_cast < VLMUL > ( ( TSFlags & ) >> ) ; return addVSetVL ( MI , BB , VLIndex , SEWIndex , VLMul , WritesElement0 ) ; } switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : assert ( ! Subtarget . is64Bit ( ) && ) ; return emitReadCycleWidePseudo ( MI , BB ) ; case : case : case : case :" LLVM,RISCV,3071,"Predict the next statement of this code snippet: switch ( ( ) Opcode ) { case : break ; NODE_NAME_CASE ( RET_FLAG ) NODE_NAME_CASE ( URET_FLAG ) NODE_NAME_CASE ( SRET_FLAG ) NODE_NAME_CASE ( MRET_FLAG ) NODE_NAME_CASE ( CALL ) NODE_NAME_CASE ( SELECT_CC ) NODE_NAME_CASE ( BuildPairF64 ) NODE_NAME_CASE ( SplitF64 ) NODE_NAME_CASE ( TAIL ) NODE_NAME_CASE ( SLLW ) NODE_NAME_CASE ( SRAW ) NODE_NAME_CASE ( SRLW ) NODE_NAME_CASE ( DIVW ) NODE_NAME_CASE ( DIVUW ) NODE_NAME_CASE ( REMUW ) NODE_NAME_CASE ( ROLW ) NODE_NAME_CASE ( RORW ) NODE_NAME_CASE ( FSLW ) NODE_NAME_CASE ( FSRW ) NODE_NAME_CASE ( FMV_H_X ) NODE_NAME_CASE ( FMV_X_ANYEXTH ) NODE_NAME_CASE ( FMV_W_X_RV64 ) NODE_NAME_CASE ( FMV_X_ANYEXTW_RV64 ) NODE_NAME_CASE ( READ_CYCLE_WIDE ) NODE_NAME_CASE ( GREVI ) NODE_NAME_CASE ( GREVIW ) NODE_NAME_CASE ( GORCI ) NODE_NAME_CASE ( GORCIW ) NODE_NAME_CASE ( VMV_X_S ) NODE_NAME_CASE ( SPLAT_VECTOR_I64 ) NODE_NAME_CASE ( READ_VLENB ) NODE_NAME_CASE ( TRUNCATE_VECTOR ) NODE_NAME_CASE ( VLEFF ) NODE_NAME_CASE ( VLEFF_MASK ) NODE_NAME_CASE ( VLSEGFF ) NODE_NAME_CASE ( VLSEGFF_MASK ) NODE_NAME_CASE ( READ_VL ) NODE_NAME_CASE ( VSLIDEUP ) NODE_NAME_CASE ( VSLIDEDOWN ) NODE_NAME_CASE ( VID ) } return nullptr ;" LLVM,RISCV,3072,"Predict the next statement of this code snippet: SDValue Val = Op . getOperand ( ) ; SDValue Idx = Op . getOperand ( ) ; if ( Subtarget . is64Bit ( ) || VecVT . getVectorElementType ( ) != ) { if ( isNullConstant ( Idx ) ) return Op ; SDValue Slidedown = DAG . getNode ( , DL , VecVT , DAG . getUNDEF ( VecVT ) , Vec , Idx ) ; SDValue InsertElt0 = DAG . getNode ( , DL , VecVT , Slidedown , Val , DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ) ; return DAG . getNode ( , DL , VecVT , Vec , InsertElt0 , Idx ) ; } SDValue SplattedVal = DAG . getSplatVector ( VecVT , DL , Val ) ; SDValue SplattedIdx = DAG . getNode ( , DL , VecVT , Idx ) ; SDValue VID = DAG . getNode ( , DL , VecVT ) ; auto SetCCVT = getSetCCResultType ( DAG . getDataLayout ( ) , * DAG . getContext ( ) , VecVT ) ;" LLVM,RISCV,3073,"Predict the next statement of this code snippet: } else if ( Op . getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) ) { if ( Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } return SDValue ( ) ; } case : return LowerINTRINSIC_WO_CHAIN ( Op , DAG ) ; case : return LowerINTRINSIC_W_CHAIN ( Op , DAG ) ; case : case : { assert ( Subtarget . hasStdExtZbp ( ) && ) ; MVT VT = Op . getSimpleValueType ( ) ; SDLoc DL ( Op ) ; unsigned Imm = VT . getSizeInBits ( ) - ; if ( Op . getOpcode ( ) == ) Imm &= ~ ; return DAG . getNode ( , DL , VT , Op . getOperand ( ) , DAG . getTargetConstant ( Imm , DL , Subtarget . getXLenVT ( ) ) ) ; } case : { SDLoc DL ( Op ) ; EVT VT = Op . getValueType ( ) ; if ( ! VT . isVector ( ) ) return Op ; if ( VT . getVectorElementType ( ) == ) return lowerVectorMaskTrunc ( Op , DAG ) ; EVT DstEltVT = VT . getVectorElementType ( ) ; SDValue Src = Op . getOperand ( ) ; EVT SrcVT = Src . getValueType ( ) ; EVT SrcEltVT = SrcVT . getVectorElementType ( ) ; assert ( DstEltVT . bitsLT ( SrcEltVT ) && isPowerOf2_64 ( DstEltVT . getSizeInBits ( ) ) && isPowerOf2_64 ( SrcEltVT . getSizeInBits ( ) ) && ) ; SDValue Result = Src ; LLVMContext & Context = * DAG . getContext ( ) ; const ElementCount Count = SrcVT . getVectorElementCount ( ) ; do { SrcEltVT = EVT :: getIntegerVT ( Context , SrcEltVT . getSizeInBits ( ) / ) ; EVT ResultVT = EVT :: getVectorVT ( Context , SrcEltVT , Count ) ; Result = DAG . getNode ( , DL , ResultVT , Result ) ; } while ( SrcEltVT != DstEltVT ) ; return Result ; } case : case : return lowerVectorMaskExt ( Op , DAG , ) ; case : return lowerVectorMaskExt ( Op , DAG , - ) ; case : return lowerSPLATVECTOR ( Op , DAG ) ; case :" LLVM,RISCV,3074,"Predict the next statement of this code snippet: assert ( Subtarget . hasStdExtZbp ( ) && ) ; MVT VT = Op . getSimpleValueType ( ) ; SDLoc DL ( Op ) ; unsigned Imm = VT . getSizeInBits ( ) - ; if ( Op . getOpcode ( ) == ) Imm &= ~ ; return DAG . getNode ( , DL , VT , Op . getOperand ( ) , DAG . getTargetConstant ( Imm , DL , Subtarget . getXLenVT ( ) ) ) ; } case : { SDLoc DL ( Op ) ; EVT VT = Op . getValueType ( ) ; if ( ! VT . isVector ( ) ) return Op ; if ( VT . getVectorElementType ( ) == ) return lowerVectorMaskTrunc ( Op , DAG ) ; EVT DstEltVT = VT . getVectorElementType ( ) ; SDValue Src = Op . getOperand ( ) ; EVT SrcVT = Src . getValueType ( ) ; EVT SrcEltVT = SrcVT . getVectorElementType ( ) ; assert ( DstEltVT . bitsLT ( SrcEltVT ) && isPowerOf2_64 ( DstEltVT . getSizeInBits ( ) ) && isPowerOf2_64 ( SrcEltVT . getSizeInBits ( ) ) && ) ; SDValue Result = Src ; LLVMContext & Context = * DAG . getContext ( ) ; const ElementCount Count = SrcVT . getVectorElementCount ( ) ; do { SrcEltVT = EVT :: getIntegerVT ( Context , SrcEltVT . getSizeInBits ( ) / ) ; EVT ResultVT = EVT :: getVectorVT ( Context , SrcEltVT , Count ) ; Result = DAG . getNode ( , DL , ResultVT , Result ) ; } while ( SrcEltVT != DstEltVT ) ; return Result ; } case : case : return lowerVectorMaskExt ( Op , DAG , ) ;" LLVM,RISCV,3075,"Predict the next statement of this code snippet: } SDValue One = DAG . getConstant ( , DL , ) ; SDValue Zero = DAG . getConstant ( , DL , ) ; SDValue ThirtyTwoV = DAG . getConstant ( , DL , VecVT ) ; SDValue Lo = DAG . getNode ( , DL , , SplatVal , Zero ) ; SDValue Hi = DAG . getNode ( , DL , , SplatVal , One ) ; Lo = DAG . getNode ( , DL , VecVT , Lo ) ; Lo = DAG . getNode ( , DL , VecVT , Lo , ThirtyTwoV ) ;" LLVM,RISCV,3076,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerSPLATVECTOR ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; EVT VecVT = Op . getValueType ( ) ; assert ( ! Subtarget . is64Bit ( ) && VecVT . getVectorElementType ( ) == && ) ; SDValue SplatVal = Op . getOperand ( ) ; if ( auto * CVal = dyn_cast < ConstantSDNode > ( SplatVal ) ) { if ( isInt < > ( CVal -> getSExtValue ( ) ) ) return DAG . getNode ( , DL , VecVT , DAG . getConstant ( CVal -> getSExtValue ( ) , DL , ) ) ; } if ( SplatVal . getOpcode ( ) == && SplatVal . getOperand ( ) . getValueType ( ) == ) { return DAG . getNode ( , DL , VecVT , SplatVal . getOperand ( ) ) ; } SDValue One = DAG . getConstant ( , DL , ) ; SDValue Zero = DAG . getConstant ( , DL , ) ; SDValue ThirtyTwoV = DAG . getConstant ( , DL , VecVT ) ; SDValue Lo = DAG . getNode ( , DL , , SplatVal , Zero ) ; SDValue Hi = DAG . getNode ( , DL , , SplatVal , One ) ; Lo = DAG . getNode ( , DL , VecVT , Lo ) ; Lo = DAG . getNode ( , DL , VecVT , Lo , ThirtyTwoV ) ; Lo = DAG . getNode ( , DL , VecVT , Lo , ThirtyTwoV ) ; if ( isNullConstant ( Hi ) ) return Lo ;" LLVM,RISCV,3077,"Predict the next statement of this code snippet: if ( ! Src . getValueType ( ) . isVector ( ) || Src . getValueType ( ) . getVectorElementType ( ) != ) return Op ; bool IsRV32E64 = ! Subtarget . is64Bit ( ) && VecVT . getVectorElementType ( ) == ; SDValue SplatZero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SDValue SplatTrueVal = DAG . getConstant ( ExtTrueVal , DL , Subtarget . getXLenVT ( ) ) ; if ( ! IsRV32E64 ) { SplatZero = DAG . getSplatVector ( VecVT , DL , SplatZero ) ; SplatTrueVal = DAG . getSplatVector ( VecVT , DL , SplatTrueVal ) ; } else {" LLVM,RISCV,3078,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerVectorMaskTrunc ( SDValue Op , SelectionDAG & DAG ) const { SDLoc DL ( Op ) ; EVT MaskVT = Op . getValueType ( ) ; assert ( MaskVT . isVector ( ) && MaskVT . getVectorElementType ( ) == && ) ; SDValue Src = Op . getOperand ( ) ; EVT VecVT = Src . getValueType ( ) ; bool IsRV32E64 = ! Subtarget . is64Bit ( ) && VecVT . getVectorElementType ( ) == ; SDValue SplatOne = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; SDValue SplatZero = DAG . getConstant ( , DL , Subtarget . getXLenVT ( ) ) ; if ( ! IsRV32E64 ) { SplatOne = DAG . getSplatVector ( VecVT , DL , SplatOne ) ; SplatZero = DAG . getSplatVector ( VecVT , DL , SplatZero ) ; } else {" LLVM,RISCV,3079,"Predict the next statement of this code snippet: EVT VT = Op . getValueType ( ) ; if ( VT . isVector ( ) ) return false ; if ( Op . getOpcode ( ) != ) return false ; ConstantSDNode * C = dyn_cast < ConstantSDNode > ( Op . getOperand ( ) ) ; if ( ! C ) return false ; const APInt & Mask = C -> getAPIntValue ( ) ; APInt ShrunkMask = Mask & DemandedBits ; if ( ShrunkMask . isSignedIntN ( ) ) return false ; APInt ExpandedMask = Mask | ~ DemandedBits ; if ( ! ExpandedMask . isNegative ( ) ) return false ; unsigned MinSignedBits = ExpandedMask . getMinSignedBits ( ) ; APInt NewMask = ShrunkMask ; if ( MinSignedBits <= ) NewMask . setBitsFrom ( ) ; else if ( MinSignedBits <= && ! ShrunkMask . isSignedIntN ( ) ) NewMask . setBitsFrom ( ) ; else return false ; assert ( NewMask . isSubsetOf ( ExpandedMask ) ) ; if ( NewMask == Mask ) return true ; SDLoc DL ( Op ) ; SDValue NewC = TLO . DAG . getConstant ( NewMask , DL , VT ) ; SDValue NewOp = TLO . DAG . getNode ( , DL , VT , Op . getOperand ( ) , NewC ) ; return TLO . CombineTo ( Op , NewOp ) ;" LLVM,RISCV,3080,"Predict the next statement of this code snippet: SDValue LHS = N -> getOperand ( ) ; SDLoc DL ( N ) ; SDValue NewRHS = DAG . getNode ( , DL , RHS . getValueType ( ) , RHS , DAG . getValueType ( EVT :: getIntegerVT ( * DAG . getContext ( ) , ) ) ) ; return DCI . CombineTo ( N , DAG . getNode ( N -> getOpcode ( ) , DL , LHS . getValueType ( ) , LHS , NewRHS ) ) ; } case : { SDValue Src = N -> getOperand ( ) ;" LLVM,RISCV,3081,"Predict the next statement of this code snippet: if ( ! DCI . isBeforeLegalize ( ) ) break ; SDValue RHS = N -> getOperand ( ) ; if ( N -> getValueType ( ) != || RHS -> getOpcode ( ) == || ( RHS -> getOpcode ( ) == && cast < VTSDNode > ( RHS -> getOperand ( ) ) -> getVT ( ) . getSizeInBits ( ) <= ) ) break ; SDValue LHS = N -> getOperand ( ) ; SDLoc DL ( N ) ; SDValue NewRHS = DAG . getNode ( , DL , RHS . getValueType ( ) , RHS , DAG . getValueType ( EVT :: getIntegerVT ( * DAG . getContext ( ) , ) ) ) ; return DCI . CombineTo ( N , DAG . getNode ( N -> getOpcode ( ) , DL , LHS . getValueType ( ) , LHS , NewRHS ) ) ; } case : { SDValue Src = N -> getOperand ( ) ; if ( N -> getValueType ( ) != || Src . getValueType ( ) != ) break ; if ( ! isVariableShift ( Src ) && ! ( Subtarget . hasStdExtM ( ) && isVariableSDivUDivURem ( Src ) ) ) break ; SDLoc DL ( N ) ; return DCI . CombineTo ( N , DAG . getNode ( , DL , , Src ) ) ; } case : { SDValue Op0 = N -> getOperand ( ) ; if ( Op0 -> getOpcode ( ) != ) break ;" LLVM,RISCV,3082,"Predict the next statement of this code snippet: if ( LoadSDNode * LD = dyn_cast < LoadSDNode > ( N ) ) { Base = LD -> getBasePtr ( ) ; } else if ( StoreSDNode * ST = dyn_cast < StoreSDNode > ( N ) ) { Base = ST -> getBasePtr ( ) ; } else { return false ; } if ( Base == Op -> getOperand ( ) ) { Offset = Op -> getOperand ( ) ; } else if ( Base == Op -> getOperand ( ) ) {" LLVM,RISCV,3083,"Predict the next statement of this code snippet: Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : case : case : assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtM ( ) && ) ; if ( N -> getOperand ( ) . getOpcode ( ) == || N -> getOperand ( ) . getOpcode ( ) == ) return ; Results . push_back ( customLegalizeToWOp ( N , DAG ) ) ; break ; case : { assert ( N -> getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) && ) ; SDLoc DL ( N ) ; SDValue Op0 = N -> getOperand ( ) ; if ( Op0 . getValueType ( ) != ) return ; SDValue FPConv = DAG . getNode ( , DL , , Op0 ) ; Results . push_back ( DAG . getNode ( , DL , , FPConv ) ) ; break ; } case : { switch ( N -> getConstantOperandVal ( ) ) { default : break ; case : SDValue Op0 = N -> getOperand ( ) ; SDValue Op1 = N -> getOperand ( ) ; SDValue Op2 = N -> getOperand ( ) ; EVT ValueVTs [ ] = { Subtarget . getXLenVT ( ) , N -> getValueType ( ) } ;" LLVM,RISCV,3084,"Predict the next statement of this code snippet: unsigned RA ; switch ( MI . getOpcode ( ) ) { case : jump = ; RA = ; break ; case : jump = ; RA = ; break ; case : jump = ; RA = ; break ; case : jump = ; RA = ; break ; default : llvm_unreachable ( ) ; } MachineInstrBuilder jumpMI = BuildMI ( * BB , MI , DL , TII -> get ( jump ) , RA ) ; for ( unsigned i = ; i < MI . getNumOperands ( ) ; i ++ ) { jumpMI . addOperand ( MI . getOperand ( i ) ) ; } MI . eraseFromParent ( ) ; return BB ;" LLVM,RISCV,3085,"Predict the next statement of this code snippet: case : case : return emitCALL ( MI , MBB ) ; case : case : return emitPEXTRACT ( MI , MBB , false ) ; case : case : return emitPEXTRACT ( MI , MBB , true ) ; case : return emitPINSERT ( MI , MBB ) ; case : return emitPBCLRSET ( MI , MBB , false ) ; case : return emitPBCLRSET ( MI , MBB , true ) ; case : case : case : case : return emitPRN ( MI , MBB ) ; default : llvm_unreachable ( ) ;" LLVM,RISCV,3086,"Predict the next statement of this code snippet: } else if ( MI . getOperand ( ) . isImm ( ) ) { immediate = ; registr = ; } assert ( immediate != && registr != ) ; int n = MI . getOperand ( immediate ) . getImm ( ) ; unsigned int l_pos , r_pos ; if ( ! RI5CY_bitIntervalExtraction ( n , & l_pos , & r_pos , isset ) ) { llvm_unreachable ( ) ; return NULL ; } assert ( r_pos <= l_pos ) ; unsigned opcode = isset ? : ; MachineInstrBuilder pbclrMI = BuildMI ( * BB , MI , DL , TII -> get ( opcode ) ) ; pbclrMI . addOperand ( MI . getOperand ( ) ) ; pbclrMI . addOperand ( MI . getOperand ( registr ) ) ;" LLVM,RISCV,3087,"Predict the next statement of this code snippet: int n = MI . getOperand ( immediate ) . getImm ( ) ; unsigned int l_pos , r_pos ; if ( ! RI5CY_bitIntervalExtraction ( n , & l_pos , & r_pos , isset ) ) { llvm_unreachable ( ) ; return NULL ; } assert ( r_pos <= l_pos ) ; unsigned opcode = isset ? : ; MachineInstrBuilder pbclrMI = BuildMI ( * BB , MI , DL , TII -> get ( opcode ) ) ; pbclrMI . addOperand ( MI . getOperand ( ) ) ; pbclrMI . addOperand ( MI . getOperand ( registr ) ) ;" LLVM,RISCV,3088,"Predict the next statement of this code snippet: const TargetInstrInfo * TII = BB -> getParent ( ) -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; int imm2 = MI . getOperand ( imm2_pos ) . getImm ( ) ; int imm3 = MI . getOperand ( imm3_pos ) . getImm ( ) ; if ( imm2 + imm3 <= ) { MachineInstrBuilder newMI = BuildMI ( * BB , MI , DL , TII -> get ( unsign ? : ) ) ; newMI . addOperand ( MI . getOperand ( ) ) ; newMI . addOperand ( MI . getOperand ( src1_pos ) ) ; newMI . addImm ( - imm2 - imm3 ) ; newMI . addImm ( imm3 ) ; } else { MachineInstrBuilder newMI = BuildMI ( * BB , MI , DL , TII -> get ( ) ) ; newMI . addOperand ( MI . getOperand ( ) ) ; newMI . addOperand ( MI . getOperand ( src1_pos ) ) ; newMI . addImm ( ) ; } MI . eraseFromParent ( ) ;" LLVM,RISCV,3089,"Predict the next statement of this code snippet: int imm3 = MI . getOperand ( imm3_pos ) . getImm ( ) ; if ( imm2 + imm3 <= ) { MachineInstrBuilder newMI = BuildMI ( * BB , MI , DL , TII -> get ( unsign ? : ) ) ; newMI . addOperand ( MI . getOperand ( ) ) ; newMI . addOperand ( MI . getOperand ( src1_pos ) ) ; newMI . addImm ( - imm2 - imm3 ) ; newMI . addImm ( imm3 ) ; } else { MachineInstrBuilder newMI = BuildMI ( * BB , MI , DL , TII -> get ( ) ) ;" LLVM,RISCV,3090,"Predict the next statement of this code snippet: MachineBasicBlock * TargetLowering :: emitPINSERT ( MachineInstr & MI , MachineBasicBlock * BB ) const { const unsigned dst_pos = ; const unsigned src_pos = ; const unsigned imm2_pos = ; const unsigned imm3_pos = ; assert ( MI . getNumOperands ( ) == ) ; assert ( MI . getOperand ( dst_pos ) . isReg ( ) ) ; assert ( MI . getOperand ( src_pos ) . isReg ( ) ) ; assert ( MI . getOperand ( imm2_pos ) . isImm ( ) ) ; assert ( MI . getOperand ( imm3_pos ) . isImm ( ) ) ; const TargetInstrInfo * TII = BB -> getParent ( ) -> getSubtarget ( ) . getInstrInfo ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; int n = MI . getOperand ( imm2_pos ) . getImm ( ) ; int shift_imm = MI . getOperand ( imm3_pos ) . getImm ( ) ; unsigned int l_pos , r_pos ; if ( ! RI5CY_bitIntervalExtraction ( n , & l_pos , & r_pos , true ) || r_pos != ) { llvm_unreachable ( ) ; return NULL ; } assert ( isUInt < > ( l_pos ) ) ; assert ( isUInt < > ( shift_imm ) ) ; unsigned opcode = ; MachineInstrBuilder pinsertMI = BuildMI ( * BB , MI , DL , TII -> get ( opcode ) ) ; pinsertMI . addOperand ( MI . getOperand ( ) ) ; pinsertMI . addOperand ( MI . getOperand ( dst_pos ) ) ; pinsertMI . addOperand ( MI . getOperand ( src_pos ) ) ; pinsertMI . addImm ( l_pos ) ; pinsertMI . addImm ( shift_imm ) ; MI . eraseFromParent ( ) ;" LLVM,RISCV,3091,"Predict the next statement of this code snippet: unsigned opcode = issub ? ( unsign ? : ) : ( unsign ? : ) ; MachineInstrBuilder paddrnMI = BuildMI ( * BB , MI , DL , TII -> get ( opcode ) ) ; paddrnMI . addOperand ( MI . getOperand ( ) ) ; paddrnMI . addOperand ( MI . getOperand ( reg1 ) ) ; paddrnMI . addOperand ( MI . getOperand ( reg2 ) ) ; paddrnMI . addImm ( n2 ) ; } else { MachineInstrBuilder sra = BuildMI ( * BB , MI , DL , TII -> get ( unsign ? : ) ) ; sra . addOperand ( MI . getOperand ( ) ) ; sra . addOperand ( MI . getOperand ( ) ) ; sra . addImm ( n2 ) ; MachineInstrBuilder addsub = BuildMI ( * BB , sra . getInstr ( ) , DL , TII -> get ( ) ) ; addsub . addOperand ( MI . getOperand ( ) ) ; addsub . addOperand ( MI . getOperand ( ) ) ; addsub . addImm ( n1 ) ;" LLVM,RISCV,3092,"Predict the next statement of this code snippet: unsigned bne = RC == & ? : ; unsigned zero = RC == & ? : ; BuildMI ( BB , DL , TII -> get ( bne ) ) . addMBB ( sinkMBB ) . addReg ( zero ) . addReg ( MI . getOperand ( ) . getReg ( ) ) ; BB = copy0MBB ; BB -> addSuccessor ( sinkMBB ) ; BB = sinkMBB ; if ( MI . getOperand ( ) . getReg ( ) == || MI . getOperand ( ) . getReg ( ) == ) { const TargetRegisterClass * RC = MI . getOperand ( ) . getReg ( ) == ? & : & ; unsigned VReg = F -> getRegInfo ( ) . createVirtualRegister ( RC ) ; BuildMI ( * copy0MBB , copy0MBB -> begin ( ) , DL , TII -> get ( TargetOpcode :: COPY ) , VReg ) . addReg ( MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( * BB , BB -> begin ( ) , DL , TII -> get ( ) , VReg ) . addReg ( MI . getOperand ( ) . getReg ( ) ) . addMBB ( copy0MBB ) . addReg ( MI . getOperand ( ) . getReg ( ) ) . addMBB ( thisMBB ) ; } else if ( MI . getOperand ( ) . getReg ( ) == || MI . getOperand ( ) . getReg ( ) == ) { const TargetRegisterClass * RC = MI . getOperand ( ) . getReg ( ) == ? & : & ; unsigned VReg = F -> getRegInfo ( ) . createVirtualRegister ( RC ) ; BuildMI ( * copy0MBB , copy0MBB -> begin ( ) , DL , TII -> get ( TargetOpcode :: COPY ) , VReg ) . addReg ( MI . getOperand ( ) . getReg ( ) ) ; BuildMI ( * BB , BB -> begin ( ) , DL , TII -> get ( ) , MI . getOperand ( ) . getReg ( ) ) . addReg ( MI . getOperand ( ) . getReg ( ) ) . addMBB ( thisMBB ) . addReg ( VReg ) . addMBB ( copy0MBB ) ;" LLVM,RISCV,3093,"Predict the next statement of this code snippet: default : break ; case 'd' : case 'r' : if ( Subtarget . isRV64 ( ) ) return std :: make_pair ( , & ) ; return std :: make_pair ( , & ) ; case 'f' : if ( Subtarget . hasD ( ) ) return std :: make_pair ( , & ) ; else if ( Subtarget . hasF ( ) ) return std :: make_pair ( , & ) ; else if ( Subtarget . isRV64 ( ) ) return std :: make_pair ( , & ) ;" LLVM,RISCV,3094,"Predict the next statement of this code snippet: OPCODE ( Lo ) ; OPCODE ( FENCE ) ; OPCODE ( SELECT_CC ) ; OPCODE ( SMIN ) ; OPCODE ( UMIN ) ; OPCODE ( SMAX ) ; OPCODE ( UMAX ) ; } return NULL ;" LLVM,RISCV,3095,"Predict the next statement of this code snippet: OPCODE ( Hi ) ; OPCODE ( Lo ) ; OPCODE ( FENCE ) ; OPCODE ( SELECT_CC ) ; OPCODE ( SMIN ) ; OPCODE ( UMIN ) ; OPCODE ( SMAX ) ; OPCODE ( UMAX ) ; } return NULL ;" LLVM,RISCV,3096,"Predict the next statement of this code snippet: case AtomicOrdering :: NotAtomic : case AtomicOrdering :: Unordered : case AtomicOrdering :: Monotonic : case AtomicOrdering :: Acquire : case AtomicOrdering :: Release : case AtomicOrdering :: AcquireRelease : case AtomicOrdering :: SequentiallyConsistent : PI = << ; PO = << ; PR = << ; PW = << ; } switch ( Op . getConstantOperandVal ( ) ) { case SingleThread : case CrossThread : SI = << ; SO = << ;" LLVM,RISCV,3097,"Predict the next statement of this code snippet: SO = << ; SR = << ; SW = << ; } unsigned pred = PI | PO | PR | PW ; unsigned succ = SI | SO | SR | SW ;" LLVM,RISCV,3098,"Predict the next statement of this code snippet: int FI = MFI -> CreateFixedObject ( ValVT . getSizeInBits ( ) / , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , getPointerTy ( DAG . getDataLayout ( ) ) ) ; InVals . push_back ( DAG . getLoad ( ValVT , DL , Chain , FIN , MachinePointerInfo :: getFixedStack ( DAG . getMachineFunction ( ) , FI ) , false , false , false , ) ) ; } } if ( IsVarArg ) { auto ArgRegs = IsRV32 ? RV32IntRegs : RV64IntRegs ; unsigned NumRegs = llvm :: ; unsigned Idx = CCInfo . getFirstUnallocated ( ArrayRef < MCPhysReg > ( ArgRegs , ) ) ; unsigned RegSize = IsRV32 ? : ; MVT RegTy = ( RegSize * ) ; const TargetRegisterClass * RC = getRegClassFor ( RegTy ) ; int VaArgOffset ; if ( NumRegs == Idx ) VaArgOffset = alignTo ( CCInfo . getNextStackOffset ( ) , RegSize ) ; else VaArgOffset = - ( int ) ( RegSize * ( NumRegs - Idx ) ) ; int FI = MFI -> CreateFixedObject ( RegSize , VaArgOffset , true ) ; FI -> setVarArgsFrameIndex ( FI ) ; for ( unsigned I = Idx ; I < NumRegs ; ++ I , VaArgOffset += RegSize ) { unsigned Reg = addLiveIn ( MF , ArgRegs [ I ] , RC ) ; SDValue ArgValue = DAG . getCopyFromReg ( Chain , DL , Reg , RegTy ) ; FI = MFI -> CreateFixedObject ( RegSize , VaArgOffset , true ) ; SDValue PtrOff = DAG . getFrameIndex ( FI , getPointerTy ( DAG . getDataLayout ( ) ) ) ; SDValue Store = DAG . getStore ( Chain , DL , ArgValue , PtrOff , MachinePointerInfo ( ) , false , false , ) ; cast < StoreSDNode > ( Store . getNode ( ) ) -> getMemOperand ( ) -> setValue ( ( Value * ) nullptr ) ; OutChains . push_back ( Store ) ; } } if ( ! OutChains . empty ( ) ) {" LLVM,RISCV,3099,"Predict the next statement of this code snippet: MachineFunction & MF = DAG . getMachineFunction ( ) ; SmallVector < CCValAssign , > RetLocs ; CCState RetCCInfo ( CallConv , IsVarArg , MF , RetLocs , * DAG . getContext ( ) ) ; if ( Subtarget . isRV64 ( ) ) RetCCInfo . AnalyzeReturn ( Outs , RetCC_64 ) ; else RetCCInfo . AnalyzeReturn ( Outs , RetCC_32 ) ; SDValue Glue ; if ( RetLocs . empty ( ) ) return DAG . getNode ( , DL , , Chain ) ; SmallVector < SDValue , > RetOps ; RetOps . push_back ( Chain ) ;" LLVM,RISCV,3100,"Predict the next statement of this code snippet: lowerSELECT_CC ( SDValue Op , SelectionDAG & DAG ) const { return SDValue ( ) ;" LLVM,RISCV,3101,"Predict the next statement of this code snippet: lowerSELECT_CC ( SDValue Op , SelectionDAG & DAG ) const {" LLVM,RISCV,3102,"Predict the next statement of this code snippet: if ( C . front ( ) != '{' || C . back ( ) != '}' ) return std :: make_pair ( false , false ) ; StringRef :: const_iterator I , B = C . begin ( ) + , E = C . end ( ) - ; I = std :: find_if ( B , E , isdigit ) ; Prefix = StringRef ( B , I - B ) ;" LLVM,RISCV,3103,"Predict the next statement of this code snippet: StringRef Prefix ; unsigned long long Reg ; std :: pair < bool , bool > R = parsePhysicalReg ( C , Prefix , Reg ) ; if ( ! R . first ) return std :: make_pair ( , nullptr ) ; if ( ! R . second ) return std :: make_pair ( , nullptr ) ; if ( Prefix == ) { if ( VT == ) VT = ( Subtarget . hasD ( ) ) ? : ; RC = getRegClassFor ( VT ) ; } else {" LLVM,RISCV,3104,"Predict the next statement of this code snippet: std :: pair < bool , bool > R = parsePhysicalReg ( C , Prefix , Reg ) ; if ( ! R . first ) return std :: make_pair ( , nullptr ) ; if ( ! R . second ) return std :: make_pair ( , nullptr ) ; if ( Prefix == ) { if ( VT == ) VT = ( Subtarget . hasD ( ) ) ? : ; RC = getRegClassFor ( VT ) ;" LLVM,RISCV,3105,"Predict the next statement of this code snippet: DAG . computeKnownBits ( Op -> getOperand ( ) , Known2 , Depth + ) ; Known . Zero &= Known2 . Zero ; Known . One &= Known2 . One ;" LLVM,RISCV,3106,"Predict the next statement of this code snippet: KnownBits Known2 ; DAG . computeKnownBits ( Op -> getOperand ( ) , Known , Depth + ) ;" LLVM,RISCV,3107,"Predict the next statement of this code snippet: TargetLowering :: ConstraintType TargetLowering :: getConstraintType ( StringRef Constraint ) const { if ( Constraint . size ( ) == ) { switch ( Constraint [ ] ) { case 'A' : return C_Memory ; default : break ; } } return TargetLowering :: getConstraintType ( Constraint ) ;" LLVM,RISCV,3108,"Predict the next statement of this code snippet: default : return SDValue ( ) ; case : return lowerSETVL ( Op , DAG ) ; case :" LLVM,RISCV,3109,"Predict the next statement of this code snippet: default : report_fatal_error ( ) ; case : return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case : return lowerRETURNADDR ( Op , DAG ) ; case : return lowerINTRINSIC_WO_CHAIN ( Op , DAG ) ; }" LLVM,RISCV,3110,"Predict the next statement of this code snippet: return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case : return lowerFRAMEADDR ( Op , DAG ) ; case :" LLVM,RISCV,3111,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; SDVTList ResultVTs = DAG . getVTList ( XLenVT , XLenVT ) ;" LLVM,RISCV,3112,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; SDVTList ResultVTs = DAG . getVTList ( XLenVT , XLenVT ) ;" LLVM,RISCV,3113,"Predict the next statement of this code snippet: if ( ElemVT == ) { SDValue SplatVal = Op . getOperand ( ) ; return DAG . getNode ( , DL , VT , SplatVal ) ; } return SDValue ( ) ;" LLVM,RISCV,3114,"Predict the next statement of this code snippet: if ( ElemVT == ) { SDValue SplatVal = Op . getOperand ( ) ; return DAG . getNode ( , DL , VT , SplatVal ) ;" LLVM,RISCV,3115,"Predict the next statement of this code snippet: VSEW ElementWidth = static_cast < VSEW > ( Log2_32 ( SEW / ) ) ; VLMUL Multiplier = static_cast < VLMUL > ( VLMul ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; MachineInstrBuilder MIB = BuildMI ( * BB , MI , DL , TII . get ( ) ) ; if ( VLIndex >= ) { Register DestReg = MRI . createVirtualRegister ( & ) ; MIB . addReg ( DestReg , RegState :: Define | RegState :: Dead ) . addReg ( MI . getOperand ( VLIndex ) . getReg ( ) ) ; } else MIB . addReg ( , RegState :: Define | RegState :: Dead ) . addReg ( , RegState :: Kill ) ; bool TailAgnostic = true ; if ( MI . isRegTiedToUseOperand ( ) && ! WritesElement0 ) TailAgnostic = false ; MIB . addImm ( VType :: encodeVTYPE ( Multiplier , ElementWidth , TailAgnostic , false ) ) ; MI . getOperand ( SEWIndex ) . setImm ( - ) ; if ( VLIndex >= ) {" LLVM,RISCV,3116,"Predict the next statement of this code snippet: MachineFunction & MF = * BB -> getParent ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; const TargetInstrInfo & TII = * MF . getSubtarget ( ) . getInstrInfo ( ) ; unsigned SEW = MI . getOperand ( SEWIndex ) . getImm ( ) ; assert ( VType :: isValidSEW ( SEW ) && ) ; VSEW ElementWidth = static_cast < VSEW > ( Log2_32 ( SEW / ) ) ; VLMUL Multiplier = static_cast < VLMUL > ( VLMul ) ;" LLVM,RISCV,3117,"Predict the next statement of this code snippet: switch ( MI . getOpcode ( ) ) { default : llvm_unreachable ( ) ; case : assert ( ! Subtarget . is64Bit ( ) && ) ; return emitReadCycleWidePseudo ( MI , BB ) ; case : case : case : case :" LLVM,RISCV,3118,"Predict the next statement of this code snippet: MachineBasicBlock * TargetLowering :: EmitInstrWithCustomInserter ( MachineInstr & MI , MachineBasicBlock * BB ) const { if ( const * RVV = ( MI . getOpcode ( ) ) ) { int VLIndex = RVV -> getVLIndex ( ) ; int SEWIndex = RVV -> getSEWIndex ( ) ; bool WritesElement0 = RVV -> writesElement0 ( ) ; assert ( SEWIndex >= && ) ; return addVSetVL ( MI , BB , VLIndex , SEWIndex , RVV -> VLMul , WritesElement0 ) ;" LLVM,RISCV,3119,"Predict the next statement of this code snippet: if ( ! VT . isVector ( ) ) return getPointerTy ( DL ) ; if ( Subtarget . hasStdExtV ( ) ) return ( , VT . getVectorElementCount ( ) ) ; return VT . changeVectorElementTypeToInteger ( ) ;" LLVM,RISCV,3120,"Predict the next statement of this code snippet: if ( ! VT . isVector ( ) ) return getPointerTy ( DL ) ; if ( Subtarget . hasStdExtV ( ) ) return ( , VT . getVectorElementCount ( ) ) ;" LLVM,RISCV,3121,"Predict the next statement of this code snippet: unsigned IntNo = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; SDLoc DL ( Op ) ; if ( Subtarget . hasStdExtV ( ) ) { if ( const * II = ( IntNo ) ) { if ( II -> ExtendedOperand ) { assert ( II -> ExtendedOperand < Op . getNumOperands ( ) ) ; SmallVector < SDValue , > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ; SDValue & ScalarOp = Operands [ II -> ExtendedOperand ] ; EVT OpVT = ScalarOp . getValueType ( ) ; if ( OpVT == || OpVT == || ( OpVT == && Subtarget . is64Bit ( ) ) ) { unsigned ExtOpc = isa < ConstantSDNode > ( ScalarOp ) ? : ; ScalarOp = DAG . getNode ( ExtOpc , DL , Subtarget . getXLenVT ( ) , ScalarOp ) ; return DAG . getNode ( , DL , Op . getValueType ( ) , Operands ) ; }" LLVM,RISCV,3122,"Predict the next statement of this code snippet: assert ( ExtendOp < Op . getNumOperands ( ) ) ; SmallVector < SDValue , > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ; SDValue & ScalarOp = Operands [ ExtendOp ] ; EVT OpVT = ScalarOp . getValueType ( ) ; if ( OpVT == || OpVT == || ( OpVT == && Subtarget . is64Bit ( ) ) ) { unsigned ExtOpc = isa < ConstantSDNode > ( ScalarOp ) ? : ; ScalarOp = DAG . getNode ( ExtOpc , DL , Subtarget . getXLenVT ( ) , ScalarOp ) ; return DAG . getNode ( , DL , Op -> getVTList ( ) , Operands ) ; } } } } return SDValue ( ) ;" LLVM,RISCV,3123,"Predict the next statement of this code snippet: unsigned ExtendOp = II -> ExtendedOperand + ; assert ( ExtendOp < Op . getNumOperands ( ) ) ; SmallVector < SDValue , > Operands ( Op -> op_begin ( ) , Op -> op_end ( ) ) ; SDValue & ScalarOp = Operands [ ExtendOp ] ; EVT OpVT = ScalarOp . getValueType ( ) ; if ( OpVT == || OpVT == || ( OpVT == && Subtarget . is64Bit ( ) ) ) { unsigned ExtOpc = isa < ConstantSDNode > ( ScalarOp ) ? : ; ScalarOp = DAG . getNode ( ExtOpc , DL , Subtarget . getXLenVT ( ) , ScalarOp ) ; return DAG . getNode ( , DL , Op -> getVTList ( ) , Operands ) ; }" LLVM,RISCV,3124,"Predict the next statement of this code snippet: case : return lowerShiftRightParts ( Op , DAG , true ) ; case : return lowerShiftRightParts ( Op , DAG , false ) ; case : { assert ( ( ( Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) ) || Subtarget . hasStdExtZfh ( ) ) && ) ; SDLoc DL ( Op ) ; SDValue Op0 = Op . getOperand ( ) ; if ( Op . getValueType ( ) == && Subtarget . hasStdExtZfh ( ) ) { if ( Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , Subtarget . getXLenVT ( ) , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } else if ( Op . getValueType ( ) == && Subtarget . is64Bit ( ) && Subtarget . hasStdExtF ( ) ) { if ( Op0 . getValueType ( ) != ) return SDValue ( ) ; SDValue NewOp0 = DAG . getNode ( , DL , , Op0 ) ; SDValue FPConv = DAG . getNode ( , DL , , NewOp0 ) ; return FPConv ; } return SDValue ( ) ; } case : return LowerINTRINSIC_WO_CHAIN ( Op , DAG ) ; case :" LLVM,RISCV,3125,"Predict the next statement of this code snippet: if ( auto * CVal = dyn_cast < ConstantSDNode > ( SplatVal ) ) { if ( isInt < > ( CVal -> getSExtValue ( ) ) ) return DAG . getNode ( , DL , VecVT , DAG . getConstant ( CVal -> getSExtValue ( ) , DL , ) ) ; } SDValue One = DAG . getConstant ( , DL , ) ; SDValue Zero = DAG . getConstant ( , DL , ) ; SDValue ThirtyTwoV = DAG . getConstant ( , DL , VecVT ) ; SDValue Lo = DAG . getNode ( , DL , , SplatVal , Zero ) ; SDValue Hi = DAG . getNode ( , DL , , SplatVal , One ) ; Lo = DAG . getNode ( , DL , VecVT , Lo ) ; Lo = DAG . getNode ( , DL , VecVT , Lo , ThirtyTwoV ) ; Lo = DAG . getNode ( , DL , VecVT , Lo , ThirtyTwoV ) ; if ( isNullConstant ( Hi ) ) return Lo ; Hi = DAG . getNode ( , DL , VecVT , Hi ) ; Hi = DAG . getNode ( , DL , VecVT , Hi , ThirtyTwoV ) ;" LLVM,RISCV,3126,"Predict the next statement of this code snippet: SDLoc DL ( Op ) ; EVT VecVT = Op . getValueType ( ) ; assert ( ! Subtarget . is64Bit ( ) && VecVT . getVectorElementType ( ) == && ) ; SDValue SplatVal = Op . getOperand ( ) ; if ( auto * CVal = dyn_cast < ConstantSDNode > ( SplatVal ) ) { if ( isInt < > ( CVal -> getSExtValue ( ) ) ) return DAG . getNode ( , DL , VecVT , DAG . getConstant ( CVal -> getSExtValue ( ) , DL , ) ) ; } SDValue One = DAG . getConstant ( , DL , ) ; SDValue Zero = DAG . getConstant ( , DL , ) ; SDValue ThirtyTwoV = DAG . getConstant ( , DL , VecVT ) ; SDValue Lo = DAG . getNode ( , DL , , SplatVal , Zero ) ; SDValue Hi = DAG . getNode ( , DL , , SplatVal , One ) ; Lo = DAG . getNode ( , DL , VecVT , Lo ) ; Lo = DAG . getNode ( , DL , VecVT , Lo , ThirtyTwoV ) ; Lo = DAG . getNode ( , DL , VecVT , Lo , ThirtyTwoV ) ;" LLVM,RISCV,3127,"Predict the next statement of this code snippet: if ( ArgVT . isScalableVector ( ) && ArgVT . getVectorElementType ( ) . SimpleTy == ) return ArgIdx . index ( ) ; }" LLVM,RISCV,3128,"Predict the next statement of this code snippet: for ( const auto & ArgIdx : enumerate ( Args ) ) { MVT ArgVT = ArgIdx . value ( ) . VT ;" LLVM,RISCV,3129,"Predict the next statement of this code snippet: unsigned Tmp2 = DAG . ComputeNumSignBits ( Op . getOperand ( ) , DemandedElts , Depth + ) ; return std :: min ( Tmp , Tmp2 ) ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : return ; case : case : { if ( Op . getValueType ( ) == && isa < ConstantSDNode > ( Op . getOperand ( ) ) && ( Op . getConstantOperandVal ( ) & ) == ) { unsigned Tmp = DAG . ComputeNumSignBits ( Op . getOperand ( ) , Depth + ) ; if ( Tmp > ) return ; } break ; } case : if ( Op . getOperand ( ) . getScalarValueSizeInBits ( ) > Subtarget . getXLen ( ) ) return ; return Subtarget . getXLen ( ) - Op . getOperand ( ) . getScalarValueSizeInBits ( ) + ; }" LLVM,RISCV,3130,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) return false ; return Subtarget . hasStdExtZbb ( ) && ! isa < ConstantSDNode > ( Y ) ;" LLVM,RISCV,3131,"Predict the next statement of this code snippet: bool TargetLowering :: hasAndNotCompare ( SDValue Y ) const {" LLVM,RISCV,3132,"Predict the next statement of this code snippet: case Instruction :: SDiv : case Instruction :: URem : case Instruction :: SRem : return Operand == ; case Instruction :: Call : if ( auto * II = dyn_cast < IntrinsicInst > ( I ) ) { switch ( II -> getIntrinsicID ( ) ) { case : return Operand == || Operand == ; default : return false ; } } return false ; default : return false ; } } ; for ( auto OpIdx : enumerate ( I -> operands ( ) ) ) { if ( ! IsSinker ( I , OpIdx . index ( ) ) ) continue ; Instruction * Op = dyn_cast < Instruction > ( OpIdx . value ( ) . get ( ) ) ;" LLVM,RISCV,3133,"Predict the next statement of this code snippet: bool TargetLowering :: shouldSinkOperands ( Instruction * I , SmallVectorImpl < Use * > & Ops ) const { using namespace llvm :: PatternMatch ; if ( ! I -> getType ( ) -> isVectorTy ( ) || ! Subtarget . hasVInstructions ( ) ) return false ; auto IsSinker = [ & ] ( Instruction * I , int Operand ) { switch ( I -> getOpcode ( ) ) { case Instruction :: Add : case Instruction :: Sub : case Instruction :: Mul : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : case Instruction :: FAdd : case Instruction :: FSub : case Instruction :: FMul : case Instruction :: FDiv : case Instruction :: ICmp : case Instruction :: FCmp : return true ; case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : case Instruction :: UDiv : case Instruction :: SDiv : case Instruction :: URem : case Instruction :: SRem : return Operand == ; case Instruction :: Call : if ( auto * II = dyn_cast < IntrinsicInst > ( I ) ) { switch ( II -> getIntrinsicID ( ) ) { case : return Operand == || Operand == ; default : return false ; } } return false ; default : return false ;" LLVM,RISCV,3134,"Predict the next statement of this code snippet: if ( VA . isExtInLoc ( ) ) Value = DAG . getNode ( , DL , VA . getValVT ( ) , Value ) ;" LLVM,RISCV,3135,"Predict the next statement of this code snippet: static SDValue convertLocVTToValVT ( SelectionDAG & DAG , SDLoc DL , CCValAssign & VA , SDValue Chain , SDValue Value ) { if ( VA . getLocInfo ( ) == CCValAssign :: SExt ) Value = DAG . getNode ( , DL , VA . getLocVT ( ) , Value , DAG . getValueType ( VA . getValVT ( ) ) ) ;" LLVM,RISCV,3136,"Predict the next statement of this code snippet: case : return emitSelectCC ( MI , MBB ) ; case : case : case : case : return emitCALL ( MI , MBB ) ;" LLVM,RISCV,3137,"Predict the next statement of this code snippet: switch ( MI . getOpcode ( ) ) { case : case : case : case : return emitSelectCC ( MI , MBB ) ;" LLVM,RISCV,3138,"Predict the next statement of this code snippet: MachineFrameInfo * MFI = MF . getFrameInfo ( ) ; FunctionInfo * FI = MF . getInfo < FunctionInfo > ( ) ; FI -> setVarArgsFrameIndex ( ) ; std :: vector < SDValue > OutChains ; SmallVector < CCValAssign , > ArgLocs ; CCState CCInfo ( CallConv , IsVarArg , DAG . getMachineFunction ( ) , ArgLocs , * DAG . getContext ( ) ) ; CCInfo . AnalyzeFormalArguments ( Ins , IsRV32 ? IsVarArg ? CC_32_VAR : CC_32 : IsVarArg ? CC_64_VAR : CC_64 ) ; for ( unsigned i = , e = ArgLocs . size ( ) ; i != e ; ++ i ) { CCValAssign & VA = ArgLocs [ i ] ; if ( VA . isRegLoc ( ) ) { EVT RegVT = VA . getLocVT ( ) ; const TargetRegisterClass * RC ; if ( RegVT == ) { RC = & ; if ( Subtarget . isRV64 ( ) ) RC = & ; } else if ( RegVT == ) { if ( Subtarget . isRV32 ( ) ) { RC = & ; } else { RC = & ; } } else if ( RegVT == ) { if ( Subtarget . hasD ( ) ) RC = & ; else if ( Subtarget . hasF ( ) ) RC = & ; else RC = & ; } else if ( RegVT == ) { if ( Subtarget . hasD ( ) ) RC = & ; else if ( Subtarget . hasF ( ) ) RC = & ; else if ( Subtarget . isRV64 ( ) ) RC = & ; else RC = & ; } else llvm_unreachable ( ) ; unsigned Reg = MF . addLiveIn ( VA . getLocReg ( ) , RC ) ;" LLVM,RISCV,3139,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerVASTART ( SDValue Op , SelectionDAG & DAG ) const { MachineFunction & MF = DAG . getMachineFunction ( ) ; FunctionInfo * FuncInfo = MF . getInfo < FunctionInfo > ( ) ; EVT PtrVT = getPointerTy ( DAG . getDataLayout ( ) ) ; SDValue Chain = Op . getOperand ( ) ; SDValue Addr = Op . getOperand ( ) ;" LLVM,RISCV,3140,"Predict the next statement of this code snippet: if ( IsRet ) ArgTy = FType -> getReturnType ( ) ; else if ( Ins [ i ] . isOrigArg ( ) ) ArgTy = FType -> getParamType ( Ins [ i ] . getOrigArgIndex ( ) ) ; if ( CC_ ( MF . getDataLayout ( ) , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , true , IsRet , ArgTy ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << '\n' ) ; llvm_unreachable ( nullptr ) ; } }" LLVM,RISCV,3141,"Predict the next statement of this code snippet: if ( CC_ ( MF . getDataLayout ( ) , i , ArgVT , ArgVT , CCValAssign :: Full , ArgFlags , CCInfo , Outs [ i ] . IsFixed , IsRet , OrigTy ) ) { LLVM_DEBUG ( dbgs ( ) << << i << << EVT ( ArgVT ) . getEVTString ( ) << ) ; llvm_unreachable ( nullptr ) ;" LLVM,RISCV,3142,"Predict the next statement of this code snippet: unsigned StackOffset = State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ; } if ( ! State . AllocateReg ( ArgGPRs ) ) State . AllocateStack ( , ) ; State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ArgFlags . isSplit ( ) || ! PendingLocs . empty ( ) ) { LocVT = XLenVT ; LocInfo = CCValAssign :: Indirect ; PendingLocs . push_back ( CCValAssign :: getPending ( ValNo , ValVT , LocVT , LocInfo ) ) ; PendingArgFlags . push_back ( ArgFlags ) ; if ( ! ArgFlags . isSplitEnd ( ) ) { return false ; } } if ( ArgFlags . isSplitEnd ( ) && PendingLocs . size ( ) <= ) { assert ( PendingLocs . size ( ) == && ) ; CCValAssign VA = PendingLocs [ ] ; AF = PendingArgFlags [ ] ; PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return CC_Assign2XLen ( XLen , State , VA , AF , ValNo , ValVT , LocVT , ArgFlags ) ; } unsigned Reg = State . AllocateReg ( ArgGPRs ) ; unsigned StackOffset = Reg ? : State . AllocateStack ( XLen / , XLen / ) ; if ( ! PendingLocs . empty ( ) ) { assert ( ArgFlags . isSplitEnd ( ) && ) ; assert ( PendingLocs . size ( ) > && ) ; for ( auto & It : PendingLocs ) { if ( Reg ) It . convertToReg ( Reg ) ; else It . convertToMem ( StackOffset ) ; State . addLoc ( It ) ; } PendingLocs . clear ( ) ; PendingArgFlags . clear ( ) ; return false ; } assert ( LocVT == XLenVT && ) ; if ( Reg ) { State . addLoc ( CCValAssign :: getReg ( ValNo , ValVT , Reg , LocVT , LocInfo ) ) ; return false ; } if ( ValVT == ) { LocVT = ; LocInfo = CCValAssign :: Full ; } State . addLoc ( CCValAssign :: getMem ( ValNo , ValVT , StackOffset , LocVT , LocInfo ) ) ; return false ;" LLVM,RISCV,3143,"Predict the next statement of this code snippet: static bool CC_Assign2XLen ( unsigned XLen , CCState & State , CCValAssign VA1 , ArgFlags1 , unsigned ValNo2 , MVT ValVT2 , MVT LocVT2 , ArgFlags2 ) { unsigned XLenInBytes = XLen / ; if ( unsigned Reg = State . AllocateReg ( ArgGPRs ) ) { State . addLoc ( CCValAssign :: getReg ( VA1 . getValNo ( ) , VA1 . getValVT ( ) , Reg , VA1 . getLocVT ( ) , CCValAssign :: Full ) ) ; } else { unsigned StackAlign = std :: max ( XLenInBytes , ArgFlags1 . getOrigAlign ( ) ) ; State . addLoc ( CCValAssign :: getMem ( VA1 . getValNo ( ) , VA1 . getValVT ( ) , State . AllocateStack ( XLenInBytes , StackAlign ) , VA1 . getLocVT ( ) , CCValAssign :: Full ) ) ; State . addLoc ( CCValAssign :: getMem ( ValNo2 , ValVT2 , State . AllocateStack ( XLenInBytes , XLenInBytes ) , LocVT2 , CCValAssign :: Full ) ) ; return false ; } if ( unsigned Reg = State . AllocateReg ( ArgGPRs ) ) { State . addLoc ( CCValAssign :: getReg ( ValNo2 , ValVT2 , Reg , LocVT2 , CCValAssign :: Full ) ) ; } else {" LLVM,RISCV,3144,"Predict the next statement of this code snippet: case CCValAssign :: Full : break ; case CCValAssign :: BCvt :" LLVM,RISCV,3145,"Predict the next statement of this code snippet: case CCValAssign :: Full : break ; case CCValAssign :: BCvt : Val = DAG . getNode ( , DL , VA . getValVT ( ) , Val ) ;" LLVM,RISCV,3146,"Predict the next statement of this code snippet: break ; case CCValAssign :: BCvt : Val = DAG . getNode ( , DL , LocVT , Val ) ; break ; }" LLVM,RISCV,3147,"Predict the next statement of this code snippet: if ( isa < LoadInst > ( Inst ) && Ord == AtomicOrdering :: SequentiallyConsistent ) return Builder . CreateFence ( Ord ) ;" LLVM,RISCV,3148,"Predict the next statement of this code snippet: Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * MaskedCmpXchg = ( CI -> getModule ( ) , CmpXchgIntrID , Tys ) ; Value * Result = Builder . CreateCall ( MaskedCmpXchg , { AlignedAddr , CmpVal , NewVal , Mask , Ordering } ) ; if ( XLen == ) Result = Builder . CreateTrunc ( Result , Builder . getInt32Ty ( ) ) ;" LLVM,RISCV,3149,"Predict the next statement of this code snippet: CmpXchgIntrID = ; if ( XLen == ) { CmpVal = Builder . CreateSExt ( CmpVal , Builder . getInt64Ty ( ) ) ; NewVal = Builder . CreateSExt ( NewVal , Builder . getInt64Ty ( ) ) ; Mask = Builder . CreateSExt ( Mask , Builder . getInt64Ty ( ) ) ; CmpXchgIntrID = ; } Type * Tys [ ] = { AlignedAddr -> getType ( ) } ; Function * MaskedCmpXchg = ( CI -> getModule ( ) , CmpXchgIntrID , Tys ) ;" LLVM,RISCV,3150,"Predict the next statement of this code snippet: if ( AI -> getOperation ( ) == AtomicRMWInst :: Min || AI -> getOperation ( ) == AtomicRMWInst :: Max ) { const DataLayout & DL = AI -> getModule ( ) -> getDataLayout ( ) ; unsigned ValWidth = DL . getTypeStoreSizeInBits ( AI -> getValOperand ( ) -> getType ( ) ) ; Value * SextShamt = Builder . CreateSub ( Builder . getIntN ( XLen , XLen - ValWidth ) , ShiftAmt ) ; Result = Builder . CreateCall ( LrwOpScwLoop , { AlignedAddr , Incr , Mask , SextShamt , Ordering } ) ; } else {" LLVM,RISCV,3151,"Predict the next statement of this code snippet: MachineMemOperand * MMO = MF . getMachineMemOperand ( MachinePointerInfo :: getFixedStack ( MF , FI ) , MachineMemOperand :: MOLoad , , ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , LoReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; BuildMI ( * BB , MI , DL , TII . get ( ) , HiReg ) . addFrameIndex ( FI ) . addImm ( ) . addMemOperand ( MMO ) ; MI . eraseFromParent ( ) ; return BB ;" LLVM,RISCV,3152,"Predict the next statement of this code snippet: Instruction * TargetLowering :: emitTrailingFence ( IRBuilder < > & Builder , Instruction * Inst , AtomicOrdering Ord ) const { if ( isa < LoadInst > ( Inst ) && isAcquireOrStronger ( Ord ) ) return Builder . CreateFence ( AtomicOrdering :: Acquire ) ; return nullptr ;" LLVM,RISCV,3153,"Predict the next statement of this code snippet: if ( isa < LoadInst > ( Inst ) && isAcquireOrStronger ( Ord ) ) return Builder . CreateFence ( AtomicOrdering :: Acquire ) ;" LLVM,RISCV,3154,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : return ; case AtomicRMWInst :: Add : return ; case AtomicRMWInst :: Sub : return ; case AtomicRMWInst :: Nand : return ; case AtomicRMWInst :: Max : return ; case AtomicRMWInst :: Min : return ; case AtomicRMWInst :: UMax : return ; case AtomicRMWInst :: UMin : return ; } } if ( XLen == ) { switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : return ; case AtomicRMWInst :: Add : return ; case AtomicRMWInst :: Sub : return ; case AtomicRMWInst :: Nand : return ;" LLVM,RISCV,3155,"Predict the next statement of this code snippet: return ; case AtomicRMWInst :: Add : return ; case AtomicRMWInst :: Sub : return ; case AtomicRMWInst :: Nand : return ; case AtomicRMWInst :: Max : return ; case AtomicRMWInst :: Min : return ; case AtomicRMWInst :: UMax : return ; case AtomicRMWInst :: UMin : return ; } } if ( XLen == ) { switch ( BinOp ) { default : llvm_unreachable ( ) ; case AtomicRMWInst :: Xchg : return ; case AtomicRMWInst :: Add : return ; case AtomicRMWInst :: Sub : return ; case AtomicRMWInst :: Nand : return ; case AtomicRMWInst :: Max : return ; case AtomicRMWInst :: Min : return ; case AtomicRMWInst :: UMax : return ; case AtomicRMWInst :: UMin : return ; } } llvm_unreachable ( ) ;" LLVM,RISCV,3156,"Predict the next statement of this code snippet: std :: pair < unsigned , const TargetRegisterClass * > TargetLowering :: getRegForInlineAsmConstraint ( const TargetRegisterInfo * TRI , StringRef Constraint , MVT VT ) const { if ( Constraint . size ( ) == ) { switch ( Constraint [ ] ) { case 'r' : return std :: make_pair ( , & ) ; default : break ; } }" LLVM,RISCV,3157,"Predict the next statement of this code snippet: std :: pair < unsigned , const TargetRegisterClass * > TargetLowering :: getRegForInlineAsmConstraint ( const TargetRegisterInfo * TRI , StringRef Constraint , MVT VT ) const { if ( Constraint . size ( ) == ) { switch ( Constraint [ ] ) { case 'r' : return std :: make_pair ( , & ) ; default : break ; }" LLVM,RISCV,3158,"Predict the next statement of this code snippet: EVT TargetLowering :: getSetCCResultType ( const DataLayout & DL , LLVMContext & , EVT VT ) const { if ( ! VT . isVector ( ) ) return getPointerTy ( DL ) ; return VT . changeVectorElementTypeToInteger ( ) ;" LLVM,RISCV,3159,"Predict the next statement of this code snippet: EVT TargetLowering :: getSetCCResultType ( const DataLayout & DL , LLVMContext & , EVT VT ) const {" LLVM,RISCV,3160,"Predict the next statement of this code snippet: break ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,RISCV,3161,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,RISCV,3162,"Predict the next statement of this code snippet: case : case : PointerType * PtrTy = cast < PointerType > ( I . getArgOperand ( ) -> getType ( ) ) ; Info . opc = ; Info . memVT = ( PtrTy -> getElementType ( ) ) ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . align = ;" LLVM,RISCV,3163,"Predict the next statement of this code snippet: auto CalleeCC = CLI . CallConv ; auto IsVarArg = CLI . IsVarArg ; auto & Outs = CLI . Outs ; auto & Caller = MF . getFunction ( ) ; auto CallerCC = Caller . getCallingConv ( ) ; if ( Caller . getFnAttribute ( ) . getValueAsString ( ) == ) return false ; if ( Caller . hasFnAttribute ( ) ) return false ; if ( IsVarArg ) return false ; if ( CCInfo . getNextStackOffset ( ) != ) return false ; for ( auto & VA : ArgLocs ) if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) return false ; auto IsCallerStructRet = Caller . hasStructRetAttr ( ) ; auto IsCalleeStructRet = Outs . empty ( ) ? false : Outs [ ] . Flags . isSRet ( ) ;" LLVM,RISCV,3164,"Predict the next statement of this code snippet: bool TargetLowering :: isLegalAddressingMode ( const DataLayout & DL , const AddrMode & AM , Type * Ty , unsigned AS , Instruction * I ) const { if ( AM . BaseGV ) return false ; if ( ! isInt < > ( AM . BaseOffs ) ) return false ; switch ( AM . Scale ) { case : break ; case : if ( ! AM . HasBaseReg ) break ;" LLVM,RISCV,3165,"Predict the next statement of this code snippet: bool TargetLowering :: isLegalICmpImmediate ( int64_t Imm ) const { return isInt < > ( Imm ) ;" LLVM,RISCV,3166,"Predict the next statement of this code snippet: bool TargetLowering :: isSExtCheaperThanZExt ( EVT SrcVT , EVT DstVT ) const { return Subtarget . is64Bit ( ) && SrcVT == && DstVT == ;" LLVM,RISCV,3167,"Predict the next statement of this code snippet: bool TargetLowering :: isSExtCheaperThanZExt ( EVT SrcVT , EVT DstVT ) const {" LLVM,RISCV,3168,"Predict the next statement of this code snippet: if ( Subtarget . is64Bit ( ) || SrcVT . isVector ( ) || DstVT . isVector ( ) || ! SrcVT . isInteger ( ) || ! DstVT . isInteger ( ) ) return false ; unsigned SrcBits = SrcVT . getSizeInBits ( ) ; unsigned DestBits = DstVT . getSizeInBits ( ) ; return ( SrcBits == && DestBits == ) ;" LLVM,RISCV,3169,"Predict the next statement of this code snippet: static bool isVariableSDivUDivURem ( SDValue Val ) { switch ( Val . getOpcode ( ) ) { default : return false ; case :" LLVM,RISCV,3170,"Predict the next statement of this code snippet: case : case : case :" LLVM,RISCV,3171,"Predict the next statement of this code snippet: bool TargetLowering :: isZExtFree ( SDValue Val , EVT VT2 ) const { if ( auto * LD = dyn_cast < LoadSDNode > ( Val ) ) { EVT MemVT = LD -> getMemoryVT ( ) ; if ( ( MemVT == || MemVT == || ( Subtarget . is64Bit ( ) && MemVT == ) ) && ( LD -> getExtensionType ( ) == || LD -> getExtensionType ( ) == ) ) return true ; }" LLVM,RISCV,3172,"Predict the next statement of this code snippet: if ( isPositionIndependent ( ) ) report_fatal_error ( ) ; SDValue BAHi = DAG . getTargetBlockAddress ( BA , Ty , Offset , ) ; SDValue BALo = DAG . getTargetBlockAddress ( BA , Ty , Offset , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , BAHi ) , ) ;" LLVM,RISCV,3173,"Predict the next statement of this code snippet: InVals . push_back ( DAG . getLoad ( PartVA . getValVT ( ) , DL , Chain , Address , MachinePointerInfo ( ) ) ) ; ++ i ; } continue ; } InVals . push_back ( ArgValue ) ; } if ( IsVarArg ) { ArrayRef < MCPhysReg > ArgRegs = makeArrayRef ( ArgGPRs ) ; unsigned Idx = CCInfo . getFirstUnallocated ( ArgRegs ) ; const TargetRegisterClass * RC = & ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; MachineFunctionInfo * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; int VaArgOffset , VarArgsSaveSize ; if ( ArgRegs . size ( ) == Idx ) { VaArgOffset = CCInfo . getNextStackOffset ( ) ; VarArgsSaveSize = ; } else { VarArgsSaveSize = XLenInBytes * ( ArgRegs . size ( ) - Idx ) ; VaArgOffset = - VarArgsSaveSize ; } int FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; RVFI -> setVarArgsFrameIndex ( FI ) ; if ( Idx % ) { FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset - ( int ) XLenInBytes , true ) ; VarArgsSaveSize += XLenInBytes ; } for ( unsigned I = Idx ; I < ArgRegs . size ( ) ; ++ I , VaArgOffset += XLenInBytes ) { const unsigned Reg = RegInfo . createVirtualRegister ( RC ) ; RegInfo . addLiveIn ( ArgRegs [ I ] , Reg ) ; SDValue ArgValue = DAG . getCopyFromReg ( Chain , DL , Reg , XLenVT ) ; FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; SDValue PtrOff = DAG . getFrameIndex ( FI , getPointerTy ( DAG . getDataLayout ( ) ) ) ; SDValue Store = DAG . getStore ( Chain , DL , ArgValue , PtrOff , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ; cast < StoreSDNode > ( Store . getNode ( ) ) -> getMemOperand ( ) -> setValue ( ( Value * ) nullptr ) ;" LLVM,RISCV,3174,"Predict the next statement of this code snippet: SmallVector < CCValAssign , > ArgLocs ; CCState CCInfo ( CallConv , IsVarArg , MF , ArgLocs , * DAG . getContext ( ) ) ; analyzeInputArgs ( MF , CCInfo , Ins , false ) ; for ( unsigned i = , e = ArgLocs . size ( ) ; i != e ; ++ i ) { CCValAssign & VA = ArgLocs [ i ] ; SDValue ArgValue ; if ( VA . getLocVT ( ) == && VA . getValVT ( ) == ) ArgValue = unpackF64OnRV32DSoftABI ( DAG , Chain , VA , DL ) ; else if ( VA . isRegLoc ( ) ) ArgValue = unpackFromRegLoc ( DAG , Chain , VA , DL ) ; else ArgValue = unpackFromMemLoc ( DAG , Chain , VA , DL ) ; if ( VA . getLocInfo ( ) == CCValAssign :: Indirect ) { InVals . push_back ( DAG . getLoad ( VA . getValVT ( ) , DL , Chain , ArgValue , MachinePointerInfo ( ) ) ) ; unsigned ArgIndex = Ins [ i ] . OrigArgIndex ; assert ( Ins [ i ] . PartOffset == ) ; while ( i + != e && Ins [ i + ] . OrigArgIndex == ArgIndex ) { CCValAssign & PartVA = ArgLocs [ i + ] ; unsigned PartOffset = Ins [ i + ] . PartOffset ; SDValue Address = DAG . getNode ( , DL , PtrVT , ArgValue , DAG . getIntPtrConstant ( PartOffset , DL ) ) ; InVals . push_back ( DAG . getLoad ( PartVA . getValVT ( ) , DL , Chain , Address , MachinePointerInfo ( ) ) ) ; ++ i ; } continue ; } InVals . push_back ( ArgValue ) ; } if ( IsVarArg ) { ArrayRef < MCPhysReg > ArgRegs = makeArrayRef ( ArgGPRs ) ; unsigned Idx = CCInfo . getFirstUnallocated ( ArgRegs ) ; const TargetRegisterClass * RC = & ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; MachineFunctionInfo * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; int VaArgOffset , VarArgsSaveSize ; if ( ArgRegs . size ( ) == Idx ) { VaArgOffset = CCInfo . getNextStackOffset ( ) ; VarArgsSaveSize = ; } else { VarArgsSaveSize = XLenInBytes * ( ArgRegs . size ( ) - Idx ) ; VaArgOffset = - VarArgsSaveSize ; } int FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset , true ) ; RVFI -> setVarArgsFrameIndex ( FI ) ; if ( Idx % ) { FI = MFI . CreateFixedObject ( XLenInBytes , VaArgOffset - ( int ) XLenInBytes , true ) ; VarArgsSaveSize += XLenInBytes ; } for ( unsigned I = Idx ; I < ArgRegs . size ( ) ; ++ I , VaArgOffset += XLenInBytes ) {" LLVM,RISCV,3175,"Predict the next statement of this code snippet: while ( Depth -- ) { int Offset = - ( XLenInBytes * ) ; SDValue Ptr = DAG . getNode ( , DL , VT , FrameAddr , DAG . getIntPtrConstant ( Offset , DL ) ) ; FrameAddr = DAG . getLoad ( VT , DL , DAG . getEntryNode ( ) , Ptr , MachinePointerInfo ( ) ) ;" LLVM,RISCV,3176,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MFI . setFrameAddressIsTaken ( true ) ; unsigned FrameReg = RI . getFrameRegister ( MF ) ; int XLenInBytes = Subtarget . getXLen ( ) / ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ; SDValue FrameAddr = DAG . getCopyFromReg ( DAG . getEntryNode ( ) , DL , FrameReg , VT ) ; unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ;" LLVM,RISCV,3177,"Predict the next statement of this code snippet: EVT Ty = Op . getValueType ( ) ; GlobalAddressSDNode * N = cast < GlobalAddressSDNode > ( Op ) ; const GlobalValue * GV = N -> getGlobal ( ) ; int64_t Offset = N -> getOffset ( ) ; MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( isPositionIndependent ( ) ) report_fatal_error ( ) ; SDValue GAHi = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue GALo = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , GAHi ) , ) ; SDValue MNLo = SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , GALo ) , ) ; if ( Offset != ) return DAG . getNode ( , DL , Ty , MNLo , DAG . getConstant ( Offset , DL , XLenVT ) ) ;" LLVM,RISCV,3178,"Predict the next statement of this code snippet: SDValue GALo = DAG . getTargetGlobalAddress ( GV , DL , Ty , , ) ; SDValue MNHi = SDValue ( DAG . getMachineNode ( , DL , Ty , GAHi ) , ) ; SDValue MNLo = SDValue ( DAG . getMachineNode ( , DL , Ty , MNHi , GALo ) , ) ; if ( Offset != ) return DAG . getNode ( , DL , Ty , MNLo , DAG . getConstant ( Offset , DL , XLenVT ) ) ; return MNLo ;" LLVM,RISCV,3179,"Predict the next statement of this code snippet: switch ( Op . getOpcode ( ) ) { default : report_fatal_error ( ) ; case : return lowerGlobalAddress ( Op , DAG ) ; case : return lowerBlockAddress ( Op , DAG ) ; case : return lowerConstantPool ( Op , DAG ) ; case : return lowerSELECT ( Op , DAG ) ; case : return lowerVASTART ( Op , DAG ) ; case :" LLVM,RISCV,3180,"Predict the next statement of this code snippet: EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ; unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; if ( Depth ) { int Off = - XLenInBytes ; SDValue FrameAddr = lowerFRAMEADDR ( Op , DAG ) ;" LLVM,RISCV,3181,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; int XLenInBytes = Subtarget . getXLen ( ) / ; if ( verifyReturnAddressArgumentIsConstant ( Op , DAG ) ) return SDValue ( ) ; EVT VT = Op . getValueType ( ) ; SDLoc DL ( Op ) ; unsigned Depth = cast < ConstantSDNode > ( Op . getOperand ( ) ) -> getZExtValue ( ) ; if ( Depth ) { int Off = - XLenInBytes ; SDValue FrameAddr = lowerFRAMEADDR ( Op , DAG ) ; SDValue Offset = DAG . getConstant ( Off , DL , VT ) ; return DAG . getLoad ( VT , DL , DAG . getEntryNode ( ) , DAG . getNode ( , DL , VT , FrameAddr , Offset ) , MachinePointerInfo ( ) ) ; } unsigned Reg = MF . addLiveIn ( RI . getRARegister ( ) , getRegClassFor ( XLenVT ) ) ; return DAG . getCopyFromReg ( DAG . getEntryNode ( ) , DL , Reg , XLenVT ) ;" LLVM,RISCV,3182,"Predict the next statement of this code snippet: MVT XLenVT = Subtarget . getXLenVT ( ) ; if ( Op . getSimpleValueType ( ) == XLenVT && CondV . getOpcode ( ) == && CondV . getOperand ( ) . getSimpleValueType ( ) == XLenVT ) { SDValue LHS = CondV . getOperand ( ) ; SDValue RHS = CondV . getOperand ( ) ; auto CC = cast < CondCodeSDNode > ( CondV . getOperand ( ) ) ; CCVal = CC -> get ( ) ; normaliseSetCC ( LHS , RHS , CCVal ) ; SDValue TargetCC = DAG . getConstant ( CCVal , DL , XLenVT ) ; SDVTList VTs = DAG . getVTList ( Op . getValueType ( ) , ) ;" LLVM,RISCV,3183,"Predict the next statement of this code snippet: const Value * SV = cast < SrcValueSDNode > ( Op . getOperand ( ) ) -> getValue ( ) ; return DAG . getStore ( Op . getOperand ( ) , DL , FI , Op . getOperand ( ) , MachinePointerInfo ( SV ) ) ;" LLVM,RISCV,3184,"Predict the next statement of this code snippet: SDValue TargetLowering :: lowerVASTART ( SDValue Op , SelectionDAG & DAG ) const { MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFunctionInfo * FuncInfo = MF . getInfo < MachineFunctionInfo > ( ) ;" LLVM,RISCV,3185,"Predict the next statement of this code snippet: case : case : case : case : CC = ( CC ) ; std :: swap ( LHS , RHS ) ; break ; }" LLVM,RISCV,3186,"Predict the next statement of this code snippet: break ; case : case : case : { assert ( Subtarget . getXLen ( ) == && ) ; if ( ! DCI . isBeforeLegalize ( ) ) break ; SDValue RHS = N -> getOperand ( ) ; if ( N -> getValueType ( ) != || RHS -> getOpcode ( ) == || ( RHS -> getOpcode ( ) == && cast < VTSDNode > ( RHS -> getOperand ( ) ) -> getVT ( ) . getSizeInBits ( ) <= ) ) break ; SDValue LHS = N -> getOperand ( ) ; SDLoc DL ( N ) ; SDValue NewRHS = DAG . getNode ( , DL , RHS . getValueType ( ) , RHS , DAG . getValueType ( EVT :: getIntegerVT ( * DAG . getContext ( ) , ) ) ) ; return DCI . CombineTo ( N , DAG . getNode ( N -> getOpcode ( ) , DL , LHS . getValueType ( ) , LHS , NewRHS ) ) ; } case : { SDValue Src = N -> getOperand ( ) ; if ( N -> getValueType ( ) != || Src . getValueType ( ) != ) break ; if ( ! isVariableShift ( Src ) && ! ( Subtarget . hasStdExtM ( ) && isVariableSDivUDivURem ( Src ) ) ) break ; SDLoc DL ( N ) ;" LLVM,RISCV,3187,"Predict the next statement of this code snippet: bool shouldConvertConstantLoadToIntImm ( const APInt & Imm , Type * Ty ) const override {" LLVM,RISCV,3188,"Predict the next statement of this code snippet: bool shouldConvertConstantLoadToIntImm ( const APInt & Imm , Type * Ty ) const override { return true ;" LLVM,RISCV,3189,"Predict the next statement of this code snippet: unsigned Size = CI -> getCompareOperand ( ) -> getType ( ) -> getPrimitiveSizeInBits ( ) ; if ( Size == || Size == ) return AtomicExpansionKind :: MaskedIntrinsic ;" LLVM,RISCV,3190,"Predict the next statement of this code snippet: TargetLowering :: AtomicExpansionKind TargetLowering :: shouldExpandAtomicCmpXchgInIR ( AtomicCmpXchgInst * CI ) const {" LLVM,RISCV,3191,"Predict the next statement of this code snippet: if ( Size == || Size == ) return AtomicExpansionKind :: MaskedIntrinsic ;" LLVM,RISCV,3192,"Predict the next statement of this code snippet: assert ( VA . getLocVT ( ) == && VA . getValVT ( ) == && ) ; MachineFunction & MF = DAG . getMachineFunction ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & RegInfo = MF . getRegInfo ( ) ; if ( VA . isMemLoc ( ) ) { int FI = MFI . CreateFixedObject ( , VA . getLocMemOffset ( ) , true ) ; SDValue FIN = DAG . getFrameIndex ( FI , ) ; return DAG . getLoad ( , DL , Chain , FIN , MachinePointerInfo :: getFixedStack ( MF , FI ) ) ; } assert ( VA . isRegLoc ( ) && ) ; unsigned LoVReg = RegInfo . createVirtualRegister ( & ) ; RegInfo . addLiveIn ( VA . getLocReg ( ) , LoVReg ) ; SDValue Lo = DAG . getCopyFromReg ( Chain , DL , LoVReg , ) ; SDValue Hi ; if ( VA . getLocReg ( ) == ) {" LLVM,RISCV,3193,"Predict the next statement of this code snippet: MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; EVT LocVT = VA . getLocVT ( ) ; EVT ValVT = VA . getValVT ( ) ; EVT PtrVT = ( DAG . getDataLayout ( ) . getPointerSizeInBits ( ) ) ;" LLVM,RISCV,3194,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case CCValAssign :: Full : case CCValAssign :: Indirect : ExtType = ; break ; } Val = DAG . getExtLoad ( ExtType , DL , LocVT , Chain , FIN , MachinePointerInfo :: getFixedStack ( DAG . getMachineFunction ( ) , FI ) , ValVT ) ; return Val ;" LLVM,RISCV,3195,"Predict the next statement of this code snippet: computeTables ( ) ;" LLVM,RISCV,3196,"Predict the next statement of this code snippet: getLegacyLegalizerInfo ( ) . computeTables ( ) ;" LLVM,RISCV,3197,"Predict the next statement of this code snippet: LegalizerInfo :: LegalizerInfo ( const Subtarget & ST ) {" LLVM,RISCV,3198,"Predict the next statement of this code snippet: unsigned getCalleeSavedStackSize ( ) const { return CalleeSavedStackSize ;" LLVM,RISCV,3199,"Predict the next statement of this code snippet: uint64_t getRVVPadding ( ) const {" LLVM,RISCV,3200,"Predict the next statement of this code snippet: uint64_t getRVVPadding ( ) const { return RVVPadding ;" LLVM,RISCV,3201,"Predict the next statement of this code snippet: return RVVStackAlign ;" LLVM,RISCV,3202,"Predict the next statement of this code snippet: uint64_t getRVVStackSize ( ) const {" LLVM,RISCV,3203,"Predict the next statement of this code snippet: static void mapping ( IO & YamlIO , MachineFunctionInfo & MFI ) {" LLVM,RISCV,3204,"Predict the next statement of this code snippet: void setCalleeSavedStackSize ( unsigned Size ) { CalleeSavedStackSize = Size ;" LLVM,RISCV,3205,"Predict the next statement of this code snippet: void setRVVStackAlign ( Align StackAlign ) {" LLVM,RISCV,3206,"Predict the next statement of this code snippet: RVVStackSize = Size ;" LLVM,RISCV,3207,"Predict the next statement of this code snippet: bool useSaveRestoreLibCalls ( const MachineFunction & MF ) const { return MF . getSubtarget < Subtarget > ( ) . enableSaveRestore ( ) && VarArgsSaveSize == && ! MF . getFrameInfo ( ) . hasTailCall ( ) && ! MF . getFunction ( ) . hasFnAttribute ( ) ;" LLVM,RISCV,3208,"Predict the next statement of this code snippet: bool useSaveRestoreLibCalls ( ) const { return MF . getSubtarget < Subtarget > ( ) . enableSaveRestore ( ) && VarArgsSaveSize == && ! MF . getFrameInfo ( ) . hasTailCall ( ) ;" LLVM,RISCV,3209,"Predict the next statement of this code snippet: bool useSaveRestoreLibCalls ( ) const {" LLVM,RISCV,3210,"Predict the next statement of this code snippet: for ( int I = ; I < ; ++ I ) { const Subtarget * ST = & MF . getSubtarget < Subtarget > ( ) ; const TargetRegisterClass * RC = ST -> isRV64 ( ) ? & : & ; EhDataRegFI [ I ] = MF . getFrameInfo ( ) -> CreateStackObject ( RC -> getSize ( ) , RC -> getAlignment ( ) , false ) ; }" LLVM,RISCV,3211,"Predict the next statement of this code snippet: EhDataRegFI [ I ] = MF . getFrameInfo ( ) -> CreateStackObject ( RC -> getSize ( ) , RC -> getAlignment ( ) , false ) ; }" LLVM,RISCV,3212,"Predict the next statement of this code snippet: unsigned getLibCallStackSize ( ) const { return LibCallStackSize ;" LLVM,RISCV,3213,"Predict the next statement of this code snippet: unsigned getLibCallStackSize ( ) const { return LibCallStackSize ;" LLVM,RISCV,3214,"Predict the next statement of this code snippet: int getMoveF64FrameIndex ( MachineFunction & MF ) {" LLVM,RISCV,3215,"Predict the next statement of this code snippet: return CallsEhReturn && ( FI == EhDataRegFI [ ] || FI == EhDataRegFI [ ] ) ;" LLVM,RISCV,3216,"Predict the next statement of this code snippet: return Res != HwlpBasicBlocks . end ( ) ;" LLVM,RISCV,3217,"Predict the next statement of this code snippet: return Res != HwlpBasicBlocks . end ( ) ;" LLVM,RISCV,3218,"Predict the next statement of this code snippet: HwlpBasicBlocks . insert ( BB ) ;" LLVM,RISCV,3219,"Predict the next statement of this code snippet: MachineFunctionInfo ( const MachineFunction & MF ) {" LLVM,RISCV,3220,"Predict the next statement of this code snippet: MachineFunctionInfo ( const MachineFunction & MF ) {" LLVM,RISCV,3221,"Predict the next statement of this code snippet: void setLibCallStackSize ( unsigned Size ) { LibCallStackSize = Size ;" LLVM,RISCV,3222,"Predict the next statement of this code snippet: return MF . getSubtarget < Subtarget > ( ) . enableSaveRestore ( ) && VarArgsSaveSize == && ! MF . getFrameInfo ( ) . hasTailCall ( ) ;" LLVM,RISCV,3223,"Predict the next statement of this code snippet: return CallsEhReturn ;" LLVM,RISCV,3224,"Predict the next statement of this code snippet: bool getManipulatesSP ( ) const {" LLVM,RISCV,3225,"Predict the next statement of this code snippet: return ManipulatesSP ;" LLVM,RISCV,3226,"Predict the next statement of this code snippet: return SavedGPRFrameSize ;" LLVM,RISCV,3227,"Predict the next statement of this code snippet: unsigned getVarArgsFirstFPR ( ) const { return VarArgsFirstFPR ;" LLVM,RISCV,3228,"Predict the next statement of this code snippet: return VarArgsFirstGPR ;" LLVM,RISCV,3229,"Predict the next statement of this code snippet: return VarArgsFrameIndex ;" LLVM,RISCV,3230,"Predict the next statement of this code snippet: return HasByvalArg ;" LLVM,RISCV,3231,"Predict the next statement of this code snippet: return HasByvalArg ;" LLVM,RISCV,3232,"Predict the next statement of this code snippet: explicit FunctionInfo ( MachineFunction & MF ) : MF ( MF ) , SavedGPRFrameSize ( ) , LowSavedGPR ( ) , HighSavedGPR ( ) , VarArgsFirstGPR ( ) , VarArgsFirstFPR ( ) , VarArgsFrameIndex ( ) , RegSaveFrameIndex ( ) , ManipulatesSP ( false ) , CallsEhReturn ( false ) {" LLVM,RISCV,3233,"Predict the next statement of this code snippet: explicit FunctionInfo ( MachineFunction & MF ) : MF ( MF ) , SavedGPRFrameSize ( ) , LowSavedGPR ( ) , HighSavedGPR ( ) , VarArgsFirstGPR ( ) , VarArgsFirstFPR ( ) , VarArgsFrameIndex ( ) , RegSaveFrameIndex ( ) , ManipulatesSP ( false ) , CallsEhReturn ( false ) {" LLVM,RISCV,3234,"Predict the next statement of this code snippet: CallsEhReturn = ceret ;" LLVM,RISCV,3235,"Predict the next statement of this code snippet: CallsEhReturn = ceret ;" LLVM,RISCV,3236,"Predict the next statement of this code snippet: void setFormalArgInfo ( unsigned Size , bool HasByval ) {" LLVM,RISCV,3237,"Predict the next statement of this code snippet: void setHighSavedGPR ( unsigned Reg ) { HighSavedGPR = Reg ;" LLVM,RISCV,3238,"Predict the next statement of this code snippet: void setLowSavedGPR ( unsigned Reg ) {" LLVM,RISCV,3239,"Predict the next statement of this code snippet: void setManipulatesSP ( bool MSP ) {" LLVM,RISCV,3240,"Predict the next statement of this code snippet: void setRegSaveFrameIndex ( unsigned FI ) { RegSaveFrameIndex = FI ;" LLVM,RISCV,3241,"Predict the next statement of this code snippet: void setSavedGPRFrameSize ( unsigned bytes ) {" LLVM,RISCV,3242,"Predict the next statement of this code snippet: SavedGPRFrameSize = bytes ;" LLVM,RISCV,3243,"Predict the next statement of this code snippet: void setVarArgsFirstFPR ( unsigned FPR ) {" LLVM,RISCV,3244,"Predict the next statement of this code snippet: VarArgsFirstGPR = GPR ;" LLVM,RISCV,3245,"Predict the next statement of this code snippet: explicit MachineFunctionInfo ( MachineFunction & MF ) {" LLVM,RISCV,3246,"Predict the next statement of this code snippet: explicit MachineFunctionInfo ( MachineFunction & MF ) {" LLVM,RISCV,3247,"Predict the next statement of this code snippet: if ( MoveF64FrameIndex == - ) MoveF64FrameIndex = MF . getFrameInfo ( ) . CreateStackObject ( , , false ) ;" LLVM,RISCV,3248,"Predict the next statement of this code snippet: if ( MoveF64FrameIndex == - ) MoveF64FrameIndex = MF . getFrameInfo ( ) . CreateStackObject ( , , false ) ;" LLVM,RISCV,3249,"Predict the next statement of this code snippet: return VarArgsFrameIndex ;" LLVM,RISCV,3250,"Predict the next statement of this code snippet: VarArgsFrameIndex = YamlMFI . VarArgsFrameIndex ;" LLVM,RISCV,3251,"Predict the next statement of this code snippet: void MachineFunctionInfo :: initializeBaseYamlFields ( const yaml :: MachineFunctionInfo & YamlMFI ) { VarArgsFrameIndex = YamlMFI . VarArgsFrameIndex ; VarArgsSaveSize = YamlMFI . VarArgsSaveSize ;" LLVM,RISCV,3252,"Predict the next statement of this code snippet: MachineFunctionInfo ( MachineFunction & MF ) : MF ( MF ) {" LLVM,RISCV,3253,"Predict the next statement of this code snippet: MachineFunctionInfo ( MachineFunction & MF ) : MF ( MF ) {" LLVM,RISCV,3254,"Predict the next statement of this code snippet: VarArgsFrameIndex = Index ;" LLVM,RISCV,3255,"Predict the next statement of this code snippet: void setVarArgsSaveSize ( int Size ) { VarArgsSaveSize = Size ;" LLVM,RISCV,3256,"Predict the next statement of this code snippet: VarArgsSaveSize = Size ;" LLVM,RISCV,3257,"Predict the next statement of this code snippet: } if ( MIs . size ( ) < || ( RegImm . Imm != && MIs . size ( ) < ) ) return ; const TargetRegisterClass * RCToScavenge ; if ( . contains ( RegImm . Reg ) ) RCToScavenge = & ; else if ( . contains ( RegImm . Reg ) ) RCToScavenge = & ; else if ( . contains ( RegImm . Reg ) ) RCToScavenge = & ;" LLVM,RISCV,3258,"Predict the next statement of this code snippet: static uint8_t compressedLDSTOffsetMask ( unsigned Opcode ) {" LLVM,RISCV,3259,"Predict the next statement of this code snippet: static uint8_t compressedLDSTOffsetMask ( unsigned Opcode ) {" LLVM,RISCV,3260,"Predict the next statement of this code snippet: FunctionPass * llvm :: createMakeCompressibleOptPass ( ) { return new MakeCompressibleOpt ( ) ;" LLVM,RISCV,3261,"Predict the next statement of this code snippet: static int64_t getBaseAdjustForCompression ( int64_t Offset , unsigned Opcode ) {" LLVM,RISCV,3262,"Predict the next statement of this code snippet: static int64_t getBaseAdjustForCompression ( int64_t Offset , unsigned Opcode ) {" LLVM,RISCV,3263,"Predict the next statement of this code snippet: return _COMPRESS_INSTRS_NAME ;" LLVM,RISCV,3264,"Predict the next statement of this code snippet: const unsigned Opcode = MI . getOpcode ( ) ; if ( isCompressibleLoad ( MI ) || isCompressibleStore ( MI ) ) { const MachineOperand & MOImm = MI . getOperand ( ) ; if ( ! MOImm . isImm ( ) ) return RegImmPair ( , ) ; int64_t Offset = MOImm . getImm ( ) ; int64_t NewBaseAdjust = getBaseAdjustForCompression ( Offset , Opcode ) ; Register Base = MI . getOperand ( ) . getReg ( ) ; if ( . contains ( Base ) ) { if ( ! compressibleSPOffset ( Offset , Opcode ) && NewBaseAdjust ) return RegImmPair ( Base , NewBaseAdjust ) ; } else { Register SrcDest = MI . getOperand ( ) . getReg ( ) ; bool SrcDestCompressed = isCompressedReg ( SrcDest ) ; bool BaseCompressed = isCompressedReg ( Base ) ; if ( ( ! BaseCompressed || NewBaseAdjust ) && SrcDestCompressed ) return RegImmPair ( Base , NewBaseAdjust ) ; if ( isCompressibleStore ( MI ) ) { if ( ! SrcDestCompressed && ( BaseCompressed || SrcDest == Base ) && ! NewBaseAdjust ) return RegImmPair ( SrcDest , NewBaseAdjust ) ; } }" LLVM,RISCV,3265,"Predict the next statement of this code snippet: static RegImmPair getRegImmPairPreventingCompression ( const MachineInstr & MI ) { const unsigned Opcode = MI . getOpcode ( ) ; if ( isCompressibleLoad ( MI ) || isCompressibleStore ( MI ) ) { const MachineOperand & MOImm = MI . getOperand ( ) ; if ( ! MOImm . isImm ( ) ) return RegImmPair ( , ) ; int64_t Offset = MOImm . getImm ( ) ; int64_t NewBaseAdjust = getBaseAdjustForCompression ( Offset , Opcode ) ; Register Base = MI . getOperand ( ) . getReg ( ) ; if ( . contains ( Base ) ) { if ( ! compressibleSPOffset ( Offset , Opcode ) && NewBaseAdjust ) return RegImmPair ( Base , NewBaseAdjust ) ; } else { Register SrcDest = MI . getOperand ( ) . getReg ( ) ; bool SrcDestCompressed = isCompressedReg ( SrcDest ) ; bool BaseCompressed = isCompressedReg ( Base ) ; if ( ( ! BaseCompressed || NewBaseAdjust ) && SrcDestCompressed ) return RegImmPair ( Base , NewBaseAdjust ) ;" LLVM,RISCV,3266,"Predict the next statement of this code snippet: static bool isCompressedReg ( Register Reg ) {" LLVM,RISCV,3267,"Predict the next statement of this code snippet: static bool isCompressedReg ( Register Reg ) {" LLVM,RISCV,3268,"Predict the next statement of this code snippet: const unsigned Opcode = MI . getOpcode ( ) ;" LLVM,RISCV,3269,"Predict the next statement of this code snippet: const Subtarget & STI = MI . getMF ( ) -> getSubtarget < Subtarget > ( ) ; const unsigned Opcode = MI . getOpcode ( ) ;" LLVM,RISCV,3270,"Predict the next statement of this code snippet: return Opcode == || ( ! STI . is64Bit ( ) && Opcode == ) || Opcode == || Opcode == ;" LLVM,RISCV,3271,"Predict the next statement of this code snippet: case : case : case : case : return ; case : case : case :" LLVM,RISCV,3272,"Predict the next statement of this code snippet: MakeCompressibleOpt ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3273,"Predict the next statement of this code snippet: SmallVector < MachineInstr * , > MIs ; Register NewReg = analyzeCompressibleUses ( MI , RegImm , MIs ) ; if ( ! NewReg ) continue ; if ( . contains ( RegImm . Reg ) ) { assert ( isInt < > ( RegImm . Imm ) ) ; BuildMI ( MBB , MI , MI . getDebugLoc ( ) , TII . get ( ) , NewReg ) . addReg ( RegImm . Reg ) . addImm ( RegImm . Imm ) ; } else { assert ( RegImm . Imm == ) ; unsigned Opcode = . contains ( RegImm . Reg ) ? : ; BuildMI ( MBB , MI , MI . getDebugLoc ( ) , TII . get ( Opcode ) , NewReg ) . addReg ( RegImm . Reg ) . addReg ( RegImm . Reg ) ; } for ( MachineInstr * UpdateMI : MIs ) updateOperands ( * UpdateMI , RegImm , NewReg ) ; } }" LLVM,RISCV,3274,"Predict the next statement of this code snippet: if ( MO . isDef ( ) ) { assert ( isCompressibleLoad ( MI ) ) ; continue ; } MO . setReg ( NewReg ) ; } MachineOperand & MOImm = MI . getOperand ( ) ; int64_t NewOffset = MOImm . getImm ( ) & compressedLDSTOffsetMask ( Opcode ) ; MOImm . setImm ( NewOffset ) ;" LLVM,RISCV,3275,"Predict the next statement of this code snippet: Inst ( unsigned Opc , int64_t Imm ) : Opc ( Opc ) , Imm ( Imm ) {" LLVM,RISCV,3276,"Predict the next statement of this code snippet: Inst ( unsigned Opc , int64_t Imm ) : Opc ( Opc ) , Imm ( Imm ) {" LLVM,RISCV,3277,"Predict the next statement of this code snippet: int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ; Hi52 = SignExtend64 ( Hi52 >> ( ShiftAmount - ) , - ShiftAmount ) ; generateInstSeq ( Hi52 , Is64Bit , Res ) ; Res . push_back ( Inst ( , ShiftAmount ) ) ; if ( Lo12 ) Res . push_back ( Inst ( , Lo12 ) ) ;" LLVM,RISCV,3278,"Predict the next statement of this code snippet: unsigned AddiOpc = ( Is64Bit && Hi20 ) ? : ; Res . push_back ( Inst ( AddiOpc , Lo12 ) ) ; } return ; } assert ( Is64Bit && ) ; int64_t Lo12 = SignExtend64 < > ( Val ) ; int64_t Hi52 = ( Val + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ; Hi52 = SignExtend64 ( Hi52 >> ( ShiftAmount - ) , - ShiftAmount ) ; generateInstSeq ( Hi52 , Is64Bit , Res ) ; Res . push_back ( Inst ( , ShiftAmount ) ) ; if ( Lo12 ) Res . push_back ( Inst ( , Lo12 ) ) ;" LLVM,RISCV,3279,"Predict the next statement of this code snippet: generateInstSeqImpl ( ShiftedVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , LeadingZeros ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } if ( LeadingZeros == && ActiveFeatures [ ] ) { uint64_t LeadingOnesVal = Val | maskLeadingOnes < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( LeadingOnesVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; }" LLVM,RISCV,3280,"Predict the next statement of this code snippet: if ( isInt < > ( Val ) ) { int64_t Hi20 = ( ( Val + ) >> ) & ; int64_t Lo12 = SignExtend64 < > ( Val ) ; if ( Hi20 ) Res . push_back ( ( , Hi20 ) ) ; if ( Lo12 || Hi20 == ) { unsigned AddiOpc = ( IsRV64 && Hi20 ) ? : ; Res . push_back ( ( AddiOpc , Lo12 ) ) ; } return ; } assert ( IsRV64 && ) ;" LLVM,RISCV,3281,"Predict the next statement of this code snippet: InstSeq generateInstSeq ( int64_t Val , bool IsRV64 ) { Res ; generateInstSeqImpl ( Val , IsRV64 , Res ) ; if ( Val > && Res . size ( ) > ) { assert ( IsRV64 && ) ; unsigned ShiftAmount = countLeadingZeros ( ( uint64_t ) Val ) ; Val <<= ShiftAmount ; Val |= maskTrailingOnes < uint64_t > ( ShiftAmount ) ; TmpSeq ; generateInstSeqImpl ( Val , IsRV64 , TmpSeq ) ; TmpSeq . push_back ( ( , ShiftAmount ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; Val &= maskTrailingZeros < uint64_t > ( ShiftAmount ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( Val , IsRV64 , TmpSeq ) ; TmpSeq . push_back ( ( , ShiftAmount ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } return Res ;" LLVM,RISCV,3282,"Predict the next statement of this code snippet: TmpSeq . push_back ( ( , ShiftAmount ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; Val &= maskTrailingZeros < uint64_t > ( ShiftAmount ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( Val , IsRV64 , TmpSeq ) ; TmpSeq . push_back ( ( , ShiftAmount ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; }" LLVM,RISCV,3283,"Predict the next statement of this code snippet: if ( isInt < > ( Val ) ) { int64_t Hi20 = ( ( Val + ) >> ) & ; int64_t Lo12 = SignExtend64 < > ( Val ) ; if ( Hi20 ) Res . push_back ( ( , Hi20 ) ) ; if ( Lo12 || Hi20 == ) {" LLVM,RISCV,3284,"Predict the next statement of this code snippet: APInt Chunk = Val . ashr ( ShiftVal ) . sextOrTrunc ( PlatRegSize ) ; InstSeq MatSeq = generateInstSeq ( Chunk . getSExtValue ( ) , IsRV64 ) ;" LLVM,RISCV,3285,"Predict the next statement of this code snippet: for ( unsigned ShiftVal = ; ShiftVal < Size ; ShiftVal += PlatRegSize ) {" LLVM,RISCV,3286,"Predict the next statement of this code snippet: generateInstSeqImpl ( ShiftedVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , LeadingZeros ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } ShiftedVal &= maskTrailingZeros < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( ShiftedVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , LeadingZeros ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } if ( LeadingZeros == && ActiveFeatures [ ] ) { uint64_t LeadingOnesVal = Val | maskLeadingOnes < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( LeadingOnesVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ;" LLVM,RISCV,3287,"Predict the next statement of this code snippet: bool IsRV64 = ActiveFeatures [ ] ; if ( isInt < > ( Val ) ) { int64_t Hi20 = ( ( Val + ) >> ) & ; int64_t Lo12 = SignExtend64 < > ( Val ) ; if ( Hi20 ) Res . push_back ( ( , Hi20 ) ) ; if ( Lo12 || Hi20 == ) { unsigned AddiOpc = ( IsRV64 && Hi20 ) ? : ; Res . push_back ( ( AddiOpc , Lo12 ) ) ; } return ; } assert ( IsRV64 && ) ; int64_t Lo12 = SignExtend64 < > ( Val ) ; int64_t Hi52 = ( ( uint64_t ) Val + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ; Hi52 = SignExtend64 ( Hi52 >> ( ShiftAmount - ) , - ShiftAmount ) ; bool Unsigned = false ;" LLVM,RISCV,3288,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : case : Compressed = true ; break ; case : case : case : Compressed = isInt < > ( Instr . Imm ) ; break ; case : Compressed = false ; break ;" LLVM,RISCV,3289,"Predict the next statement of this code snippet: int64_t Lo12 = SignExtend64 < > ( Val ) ; int64_t Hi52 = ( ( uint64_t ) Val + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ; Hi52 = SignExtend64 ( Hi52 >> ( ShiftAmount - ) , - ShiftAmount ) ; generateInstSeq ( Hi52 , IsRV64 , Res ) ;" LLVM,RISCV,3290,"Predict the next statement of this code snippet: if ( isInt < > ( Val ) ) { int64_t Hi20 = ( ( Val + ) >> ) & ; int64_t Lo12 = SignExtend64 < > ( Val ) ; if ( Hi20 ) Res . push_back ( Inst ( , Hi20 ) ) ; if ( Lo12 || Hi20 == ) { unsigned AddiOpc = ( IsRV64 && Hi20 ) ? : ; Res . push_back ( Inst ( AddiOpc , Lo12 ) ) ; } return ; } assert ( IsRV64 && ) ; int64_t Lo12 = SignExtend64 < > ( Val ) ; int64_t Hi52 = ( ( uint64_t ) Val + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ; Hi52 = SignExtend64 ( Hi52 >> ( ShiftAmount - ) , - ShiftAmount ) ; generateInstSeq ( Hi52 , IsRV64 , Res ) ; Res . push_back ( Inst ( , ShiftAmount ) ) ;" LLVM,RISCV,3291,"Predict the next statement of this code snippet: generateInstSeq ( Chunk . getSExtValue ( ) , IsRV64 , MatSeq ) ; Cost += MatSeq . size ( ) ; }" LLVM,RISCV,3292,"Predict the next statement of this code snippet: int PlatRegSize = IsRV64 ? : ; int Cost = ; for ( unsigned ShiftVal = ; ShiftVal < Size ; ShiftVal += PlatRegSize ) { APInt Chunk = Val . ashr ( ShiftVal ) . sextOrTrunc ( PlatRegSize ) ; InstSeq MatSeq ;" LLVM,RISCV,3293,"Predict the next statement of this code snippet: unsigned LowerLeadingOnes = countLeadingOnes ( Lo_32 ( Val ) ) ; if ( UpperTrailingOnes < && ( UpperTrailingOnes + LowerLeadingOnes ) > ( - ) ) return - UpperTrailingOnes ; return ;" LLVM,RISCV,3294,"Predict the next statement of this code snippet: if ( TrailingOnes > && TrailingOnes < && ( LeadingOnes + TrailingOnes ) > ( - ) ) return - TrailingOnes ; unsigned UpperTrailingOnes = countTrailingOnes ( Hi_32 ( Val ) ) ; unsigned LowerLeadingOnes = countLeadingOnes ( Lo_32 ( Val ) ) ; if ( UpperTrailingOnes < && ( UpperTrailingOnes + LowerLeadingOnes ) > ( - ) ) return - UpperTrailingOnes ; return ;" LLVM,RISCV,3295,"Predict the next statement of this code snippet: if ( Res . size ( ) <= ) return Res ; } if ( LeadingZeros == && ActiveFeatures [ ] ) { uint64_t LeadingOnesVal = Val | maskLeadingOnes < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( LeadingOnesVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } } } if ( Res . size ( ) > && ActiveFeatures [ ] ) { assert ( ActiveFeatures [ ] && ) ; int64_t NewVal ; unsigned Opc ; if ( Val < ) { Opc = ; NewVal = Val | ; } else { Opc = ; NewVal = Val & ~ ; } if ( isInt < > ( NewVal ) ) { TmpSeq ; generateInstSeqImpl ( NewVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( Opc , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } int32_t Lo = Val ; uint32_t Hi = Val >> ; Opc = ; TmpSeq ; generateInstSeqImpl ( Lo , ActiveFeatures , TmpSeq ) ; if ( Lo > && TmpSeq . size ( ) + countPopulation ( Hi ) < Res . size ( ) ) { Opc = ; } else if ( Lo < && TmpSeq . size ( ) + countPopulation ( ~ Hi ) < Res . size ( ) ) { Opc = ; Hi = ~ Hi ; } if ( Opc > ) { while ( Hi != ) { unsigned Bit = countTrailingZeros ( Hi ) ; TmpSeq . push_back ( ( Opc , Bit + ) ) ; Hi &= ~ ( << Bit ) ; } if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } } if ( Res . size ( ) > && ActiveFeatures [ ] ) { assert ( ActiveFeatures [ ] && ) ; int64_t Div = ; unsigned Opc = ; TmpSeq ;" LLVM,RISCV,3296,"Predict the next statement of this code snippet: bool Unsigned = false ; if ( ShiftAmount > && ! isInt < > ( Hi52 ) ) { if ( isInt < > ( ( uint64_t ) Hi52 << ) ) { ShiftAmount -= ; Hi52 = ( uint64_t ) Hi52 << ; } else if ( isUInt < > ( ( uint64_t ) Hi52 << ) && ActiveFeatures [ ] ) { ShiftAmount -= ; Hi52 = ( ( uint64_t ) Hi52 << ) | ( << ) ; Unsigned = true ; } } if ( isUInt < > ( ( uint64_t ) Hi52 ) && ! isInt < > ( ( uint64_t ) Hi52 ) && ActiveFeatures [ ] ) { Hi52 = ( ( uint64_t ) Hi52 ) | ( << ) ; Unsigned = true ; } generateInstSeqImpl ( Hi52 , ActiveFeatures , Res ) ; if ( Unsigned ) Res . push_back ( ( , ShiftAmount ) ) ; else Res . push_back ( ( , ShiftAmount ) ) ;" LLVM,RISCV,3297,"Predict the next statement of this code snippet: bool Compressed ; switch ( Instr . Opc ) { default : llvm_unreachable ( ) ; case : case : Compressed = true ; break ; case : case : case : Compressed = isInt < > ( Instr . Imm ) ; break ; case : Compressed = false ; break ; } if ( ! Compressed ) Cost += ; else Cost += ; } return Cost ;" LLVM,RISCV,3298,"Predict the next statement of this code snippet: case : case : Compressed = true ; break ; case : case : case : Compressed = isInt < > ( Instr . Imm ) ; break ; case : Compressed = false ; break ; } if ( ! Compressed ) Cost += ; else Cost += ;" LLVM,RISCV,3299,"Predict the next statement of this code snippet: if ( Res . size ( ) <= ) return Res ; } ShiftedVal &= maskTrailingZeros < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( ShiftedVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , LeadingZeros ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } if ( LeadingZeros == && ActiveFeatures [ ] ) { uint64_t LeadingOnesVal = Val | maskLeadingOnes < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( LeadingOnesVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } } } if ( Res . size ( ) > && ActiveFeatures [ ] ) { assert ( ActiveFeatures [ ] && ) ; int64_t NewVal ; unsigned Opc ; if ( Val < ) { Opc = ; NewVal = Val | ; } else { Opc = ; NewVal = Val & ~ ; } if ( isInt < > ( NewVal ) ) { TmpSeq ; generateInstSeqImpl ( NewVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( Opc , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } int32_t Lo = Val ; uint32_t Hi = Val >> ; Opc = ; TmpSeq ; generateInstSeqImpl ( Lo , ActiveFeatures , TmpSeq ) ; if ( Lo > && TmpSeq . size ( ) + countPopulation ( Hi ) < Res . size ( ) ) { Opc = ; } else if ( Lo < && TmpSeq . size ( ) + countPopulation ( ~ Hi ) < Res . size ( ) ) { Opc = ; Hi = ~ Hi ; } if ( Opc > ) { while ( Hi != ) { unsigned Bit = countTrailingZeros ( Hi ) ; TmpSeq . push_back ( ( Opc , Bit + ) ) ; Hi &= ~ ( << Bit ) ; }" LLVM,RISCV,3300,"Predict the next statement of this code snippet: if ( Hi20 ) Res . push_back ( Inst ( , Hi20 ) ) ; if ( Lo12 || Hi20 == ) { unsigned AddiOpc = ( IsRV64 && Hi20 ) ? : ; Res . push_back ( Inst ( AddiOpc , Lo12 ) ) ; } return ; } assert ( IsRV64 && ) ; int64_t Lo12 = SignExtend64 < > ( Val ) ; int64_t Hi52 = ( Val + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ;" LLVM,RISCV,3301,"Predict the next statement of this code snippet: if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } ShiftedVal &= maskTrailingZeros < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( ShiftedVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , LeadingZeros ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } if ( LeadingZeros == && ActiveFeatures [ ] ) { uint64_t LeadingOnesVal = Val | maskLeadingOnes < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( LeadingOnesVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } } } if ( Res . size ( ) > && ActiveFeatures [ ] ) { assert ( ActiveFeatures [ ] && ) ; int64_t NewVal ; unsigned Opc ; if ( Val < ) { Opc = ; NewVal = Val | ; } else { Opc = ; NewVal = Val & ~ ; } if ( isInt < > ( NewVal ) ) { TmpSeq ; generateInstSeqImpl ( NewVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( Opc , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } int32_t Lo = Val ; uint32_t Hi = Val >> ; Opc = ; TmpSeq ; generateInstSeqImpl ( Lo , ActiveFeatures , TmpSeq ) ; if ( Lo > && TmpSeq . size ( ) + countPopulation ( Hi ) < Res . size ( ) ) { Opc = ; } else if ( Lo < && TmpSeq . size ( ) + countPopulation ( ~ Hi ) < Res . size ( ) ) { Opc = ; Hi = ~ Hi ; } if ( Opc > ) { while ( Hi != ) { unsigned Bit = countTrailingZeros ( Hi ) ; TmpSeq . push_back ( ( Opc , Bit + ) ) ; Hi &= ~ ( << Bit ) ; } if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } } if ( Res . size ( ) > && ActiveFeatures [ ] ) { assert ( ActiveFeatures [ ] && ) ; int64_t Div = ; unsigned Opc = ; TmpSeq ;" LLVM,RISCV,3302,"Predict the next statement of this code snippet: bool Unsigned = false ; if ( ! isInt < > ( Val ) ) { ShiftAmount = findFirstSet ( ( uint64_t ) Val ) ; Val >>= ShiftAmount ; if ( ShiftAmount > && ! isInt < > ( Val ) ) { if ( isInt < > ( ( uint64_t ) Val << ) ) { ShiftAmount -= ; Val = ( uint64_t ) Val << ; } else if ( isUInt < > ( ( uint64_t ) Val << ) && ActiveFeatures [ ] ) { ShiftAmount -= ; Val = ( ( uint64_t ) Val << ) | ( << ) ; Unsigned = true ; } } if ( isUInt < > ( ( uint64_t ) Val ) && ! isInt < > ( ( uint64_t ) Val ) && ActiveFeatures [ ] ) { Val = ( ( uint64_t ) Val ) | ( << ) ; Unsigned = true ; } }" LLVM,RISCV,3303,"Predict the next statement of this code snippet: if ( ! HasRVC ) return Res . size ( ) ; int Cost = ; for ( auto Instr : Res ) { bool Compressed = false ; switch ( Instr . Opc ) { case : case : Compressed = true ; break ; case : case : case : Compressed = isInt < > ( Instr . Imm ) ;" LLVM,RISCV,3304,"Predict the next statement of this code snippet: generateInstSeqImpl ( ShiftedVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , LeadingZeros ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } if ( LeadingZeros == && ActiveFeatures [ ] ) { uint64_t LeadingOnesVal = Val | maskLeadingOnes < uint64_t > ( LeadingZeros ) ; TmpSeq . clear ( ) ; generateInstSeqImpl ( LeadingOnesVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) { Res = TmpSeq ; if ( Res . size ( ) <= ) return Res ; } } } if ( Res . size ( ) > && ActiveFeatures [ ] ) { assert ( ActiveFeatures [ ] && ) ; int64_t NewVal ; unsigned Opc ; if ( Val < ) { Opc = ; NewVal = Val | ; } else { Opc = ; NewVal = Val & ~ ; } if ( isInt < > ( NewVal ) ) { TmpSeq ; generateInstSeqImpl ( NewVal , ActiveFeatures , TmpSeq ) ; TmpSeq . push_back ( ( Opc , ) ) ; if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } int32_t Lo = Val ; uint32_t Hi = Val >> ; Opc = ; TmpSeq ; generateInstSeqImpl ( Lo , ActiveFeatures , TmpSeq ) ; if ( Lo > && TmpSeq . size ( ) + countPopulation ( Hi ) < Res . size ( ) ) { Opc = ; } else if ( Lo < && TmpSeq . size ( ) + countPopulation ( ~ Hi ) < Res . size ( ) ) { Opc = ; Hi = ~ Hi ; } if ( Opc > ) { while ( Hi != ) { unsigned Bit = countTrailingZeros ( Hi ) ; TmpSeq . push_back ( ( Opc , Bit + ) ) ; Hi &= ~ ( << Bit ) ; } if ( TmpSeq . size ( ) < Res . size ( ) ) Res = TmpSeq ; } } if ( Res . size ( ) > && ActiveFeatures [ ] ) { assert ( ActiveFeatures [ ] && ) ; int64_t Div = ;" LLVM,RISCV,3305,"Predict the next statement of this code snippet: if ( isInt < > ( Val ) ) { int64_t Hi20 = ( ( Val + ) >> ) & ; int64_t Lo12 = SignExtend64 < > ( Val ) ; if ( Hi20 ) Res . push_back ( ( , Hi20 ) ) ; if ( Lo12 || Hi20 == ) { unsigned AddiOpc = ( IsRV64 && Hi20 ) ? : ; Res . push_back ( ( AddiOpc , Lo12 ) ) ; } return ; } assert ( IsRV64 && ) ; int64_t Lo12 = SignExtend64 < > ( Val ) ; int64_t Hi52 = ( ( uint64_t ) Val + ) >> ; int ShiftAmount = + findFirstSet ( ( uint64_t ) Hi52 ) ; Hi52 = SignExtend64 ( Hi52 >> ( ShiftAmount - ) , - ShiftAmount ) ; bool Unsigned = false ;" LLVM,RISCV,3306,"Predict the next statement of this code snippet: for ( auto Instr : Res ) { bool Compressed ; switch ( Instr . Opc ) { default : llvm_unreachable ( ) ; case : case : Compressed = true ; break ; case : case : case : Compressed = isInt < > ( Instr . Imm ) ; break ;" LLVM,RISCV,3307,"Predict the next statement of this code snippet: int PlatRegSize = IsRV64 ? : ; int Cost = ; for ( unsigned ShiftVal = ; ShiftVal < Size ; ShiftVal += PlatRegSize ) { APInt Chunk = Val . ashr ( ShiftVal ) . sextOrTrunc ( PlatRegSize ) ; InstSeq MatSeq = generateInstSeq ( Chunk . getSExtValue ( ) , ActiveFeatures ) ; Cost += getInstSeqCost ( MatSeq , HasRVC ) ; } return std :: max ( , Cost ) ;" LLVM,RISCV,3308,"Predict the next statement of this code snippet: for ( unsigned ShiftVal = ; ShiftVal < Size ; ShiftVal += PlatRegSize ) { APInt Chunk = Val . ashr ( ShiftVal ) . sextOrTrunc ( PlatRegSize ) ; InstSeq MatSeq = generateInstSeq ( Chunk . getSExtValue ( ) , ActiveFeatures ) ; Cost += getInstSeqCost ( MatSeq , HasRVC ) ; }" LLVM,RISCV,3309,"Predict the next statement of this code snippet: MCObjectWriter * createObjectWriter ( raw_pwrite_stream & OS ) const override { return createObjectWriter ( OS , OSABI ) ; } } ; } const MCFixupKindInfo & MCAsmBackend :: getFixupKindInfo ( MCFixupKind Kind ) const { const static MCFixupKindInfo Infos [ ] = { { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , } ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ; assert ( unsigned ( Kind - FirstTargetFixupKind ) < getNumFixupKinds ( ) && ) ; return Infos [ Kind - FirstTargetFixupKind ] ; } void MCAsmBackend :: applyFixup ( const MCFixup & Fixup , char * Data , unsigned DataSize , uint64_t Value , bool IsPCRel ) const { MCFixupKind Kind = Fixup . getKind ( ) ; unsigned Offset = Fixup . getOffset ( ) ; unsigned Size = ( getFixupKindInfo ( Kind ) . TargetSize + ) / ; assert ( Offset + Size <= DataSize && ) ;" LLVM,RISCV,3310,"Predict the next statement of this code snippet: void MCAsmBackend :: relaxInstruction ( const MCInst & Inst , MCInst & Res ) const { unsigned Opcode = getRelaxedOpcode ( Inst . getOpcode ( ) ) ;" LLVM,RISCV,3311,"Predict the next statement of this code snippet: MCAsmBackend * llvm :: createMCAsmBackend ( const Target & T , const MCRegisterInfo & MRI , const Triple & TT , StringRef CPU ) {" LLVM,RISCV,3312,"Predict the next statement of this code snippet: } unsigned getNumFixupKinds ( ) const override { return ; } const MCFixupKindInfo & getFixupKindInfo ( MCFixupKind Kind ) const override ; void applyFixup ( const MCFixup & Fixup , char * Data , unsigned DataSize , uint64_t Value , bool IsPCRel ) const override ; bool mayNeedRelaxation ( const MCInst & Inst ) const override ; bool fixupNeedsRelaxation ( const MCFixup & Fixup , uint64_t Value , const MCRelaxableFragment * Fragment , const MCAsmLayout & Layout ) const override ; void relaxInstruction ( const MCInst & Inst , const MCSubtargetInfo & STI , MCInst & Res ) const override ; bool writeNopData ( uint64_t Count , MCObjectWriter * OW ) const override ; MCObjectWriter * createObjectWriter ( raw_pwrite_stream & OS ) const override { return createObjectWriter ( OS , OSABI ) ; } } ; } const MCFixupKindInfo & MCAsmBackend :: getFixupKindInfo ( MCFixupKind Kind ) const { const static MCFixupKindInfo Infos [ ] = { { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , { , , , MCFixupKindInfo :: FKF_IsPCRel } , } ; if ( Kind < FirstTargetFixupKind ) return MCAsmBackend :: getFixupKindInfo ( Kind ) ; assert ( unsigned ( Kind - FirstTargetFixupKind ) < getNumFixupKinds ( ) && ) ; return Infos [ Kind - FirstTargetFixupKind ] ; } void MCAsmBackend :: applyFixup ( const MCFixup & Fixup , char * Data , unsigned DataSize , uint64_t Value , bool IsPCRel ) const { MCFixupKind Kind = Fixup . getKind ( ) ; unsigned Offset = Fixup . getOffset ( ) ; unsigned Size = ( getFixupKindInfo ( Kind ) . TargetSize + ) / ; assert ( Offset + Size <= DataSize && ) ; Value = extractBitsForFixup ( Kind , Value ) ; unsigned ShiftValue = ( Size * ) - ; for ( unsigned I = ; I != Size ; ++ I ) { Data [ Offset + I ] |= uint8_t ( Value >> ShiftValue ) ;" LLVM,RISCV,3313,"Predict the next statement of this code snippet: Value = extractBitsForFixup ( Fixup . getKind ( ) , Value ) ;" LLVM,RISCV,3314,"Predict the next statement of this code snippet: bool MCAsmBackend :: fixupNeedsRelaxation ( const MCFixup & Fixup , uint64_t Value , const MCRelaxableFragment * Fragment , const MCAsmLayout & Layout ) const { Value = extractBitsForFixup ( Fixup . getKind ( ) , Value ) ; return ( int16_t ) Value != ( int64_t ) Value ;" LLVM,RISCV,3315,"Predict the next statement of this code snippet: assert ( Opcode && ) ; Res = Inst ; Res . setOpcode ( Opcode ) ;" LLVM,RISCV,3316,"Predict the next statement of this code snippet: MCAsmBackend ( uint8_t osABI ) : OSABI ( osABI ) {" LLVM,RISCV,3317,"Predict the next statement of this code snippet: MCAsmBackend ( uint8_t osABI ) : OSABI ( osABI ) {" LLVM,RISCV,3318,"Predict the next statement of this code snippet: bool MCAsmBackend :: writeNopData ( uint64_t Count , MCObjectWriter * OW ) const { for ( uint64_t I = ; I != Count ; ++ I ) OW -> write8 ( ) ;" LLVM,RISCV,3319,"Predict the next statement of this code snippet: CommentString = ; AlignmentIsInBytes = false ; SupportsDebugInformation = true ;" LLVM,RISCV,3320,"Predict the next statement of this code snippet: const MCExpr * MCAsmInfo :: getExprForFDESymbol ( const MCSymbol * Sym , unsigned Encoding , MCStreamer & Streamer ) const { if ( ! ( Encoding & dwarf :: DW_EH_PE_pcrel ) ) return MCAsmInfo :: getExprForFDESymbol ( Sym , Encoding , Streamer ) ;" LLVM,RISCV,3321,"Predict the next statement of this code snippet: CodePointerSize = CalleeSaveStackSlotSize = TT . isArch64Bit ( ) ? : ; CommentString = ; AlignmentIsInBytes = false ; SupportsDebugInformation = true ; ExceptionsType = ExceptionHandling :: DwarfCFI ; Data16bitsDirective = ; Data32bitsDirective = ;" LLVM,RISCV,3322,"Predict the next statement of this code snippet: AlignmentIsInBytes = false ; SupportsDebugInformation = true ; ExceptionsType = ExceptionHandling :: DwarfCFI ; Data16bitsDirective = ; Data32bitsDirective = ;" LLVM,RISCV,3323,"Predict the next statement of this code snippet: void MCAsmInfo :: anchor ( ) {" LLVM,RISCV,3324,"Predict the next statement of this code snippet: void MCAsmInfo :: anchor ( ) {" LLVM,RISCV,3325,"Predict the next statement of this code snippet: MCAsmInfo :: MCAsmInfo ( const Triple & TT ) { CodePointerSize = CalleeSaveStackSlotSize = TT . isArch64Bit ( ) ? : ; CommentString = ; AlignmentIsInBytes = false ;" LLVM,RISCV,3326,"Predict the next statement of this code snippet: CodePointerSize = CalleeSaveStackSlotSize = TT . isArch64Bit ( ) ? : ; CommentString = ; AlignmentIsInBytes = false ; SupportsDebugInformation = true ; Data16bitsDirective = ;" LLVM,RISCV,3327,"Predict the next statement of this code snippet: IsCheriPurecapABI = ABI != && ( ABI ) ; CommentString = ; AlignmentIsInBytes = false ; SupportsDebugInformation = true ;" LLVM,RISCV,3328,"Predict the next statement of this code snippet: MCAsmInfo :: MCAsmInfo ( const Triple & TT ) { PointerSize = CalleeSaveStackSlotSize = TT . isArch64Bit ( ) ? : ;" LLVM,RISCV,3329,"Predict the next statement of this code snippet: MCAsmInfo :: MCAsmInfo ( const Triple & TT ) {" LLVM,RISCV,3330,"Predict the next statement of this code snippet: MCAsmInfo :: MCAsmInfo ( const Triple & TT ) { CodePointerSize = CalleeSaveStackSlotSize = TT . isArch64Bit ( ) ? : ; CommentString = ; AlignmentIsInBytes = false ;" LLVM,RISCV,3331,"Predict the next statement of this code snippet: Data64bitsDirective = ; UsesELFSectionDirectiveForBSS = true ; SupportsDebugInformation = true ; ExceptionsType = ExceptionHandling :: DwarfCFI ;" LLVM,RISCV,3332,"Predict the next statement of this code snippet: Ra = MI . getOperand ( ) . getReg ( ) ; } uint32_t Binary ; assert ( Func . isExpr ( ) && ) ; const MCExpr * CallExpr = Func . getExpr ( ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addExpr ( CallExpr ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ;" LLVM,RISCV,3333,"Predict the next statement of this code snippet: if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; break ; case MCExpr :: VK__HI : FixupKind = ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax ) { if ( FixupKind == ) {" LLVM,RISCV,3334,"Predict the next statement of this code snippet: FixupKind = ; if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; break ; case MCExpr :: VK__HI : FixupKind = ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax ) { if ( FixupKind == ) { Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( ) , MI . getLoc ( ) ) ) ;" LLVM,RISCV,3335,"Predict the next statement of this code snippet: MCNumEmitted += ; return ; } if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { expandVMSGE ( MI , OS , Fixups , STI ) ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; }" LLVM,RISCV,3336,"Predict the next statement of this code snippet: break ; case : case : case : Opcode = ; break ; } if ( MI . getNumOperands ( ) == ) { TmpInst = MCInstBuilder ( Opcode ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) . addReg ( ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; TmpInst = MCInstBuilder ( ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; } else if ( MI . getNumOperands ( ) == ) { assert ( MI . getOperand ( ) . getReg ( ) != && ) ; TmpInst = MCInstBuilder ( Opcode ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; TmpInst = MCInstBuilder ( ) . addOperand ( MI . getOperand ( ) ) . addOperand ( MI . getOperand ( ) ) . addReg ( ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; } else if ( MI . getNumOperands ( ) == ) {" LLVM,RISCV,3337,"Predict the next statement of this code snippet: expandFunctionCall ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } if ( MI . getOpcode ( ) == ) { expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } if ( MI . getOpcode ( ) == ) { expandCIncOffsetTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; } case : {" LLVM,RISCV,3338,"Predict the next statement of this code snippet: MCOperand DestReg = MI . getOperand ( ) ; MCOperand TPReg = MI . getOperand ( ) ; MCOperand SrcReg = MI . getOperand ( ) ; assert ( TPReg . isReg ( ) && TPReg . getReg ( ) == && ) ; MCOperand SrcSymbol = MI . getOperand ( ) ; assert ( SrcSymbol . isExpr ( ) && ) ; const MCExpr * Expr = dyn_cast < MCExpr > ( SrcSymbol . getExpr ( ) ) ; assert ( Expr && Expr -> getKind ( ) == MCExpr :: VK__TPREL_CINCOFFSET && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( ) , MI . getLoc ( ) ) ) ;" LLVM,RISCV,3339,"Predict the next statement of this code snippet: assert ( Expr && Expr -> getKind ( ) == MCExpr :: VK__TPREL_CINCOFFSET && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( ) , MI . getLoc ( ) ) ) ; if ( STI . getFeatureBits ( ) [ ] ) { const MCConstantExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ; Fixups . push_back ( MCFixup :: create ( , Dummy , MCFixupKind ( ) , MI . getLoc ( ) ) ) ; }" LLVM,RISCV,3340,"Predict the next statement of this code snippet: IsCap = false ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ; IsCap = false ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = ; IsCap = false ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ; IsCap = false ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = ; IsCap = true ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ; IsCap = true ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = ; IsCap = true ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ; IsCap = true ; } uint32_t Binary ; assert ( Func . isExpr ( ) && ) ;" LLVM,RISCV,3341,"Predict the next statement of this code snippet: FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__TLS_GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TLS_GD_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL_PLT : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CAPTAB_PCREL_HI : FixupKind = ; break ; case MCExpr :: VK__TPREL_CINCOFFSET : llvm_unreachable ( ) ; case MCExpr :: VK__TLS_IE_CAPTAB_PCREL_HI : FixupKind = ; break ; case MCExpr :: VK__TLS_GD_CAPTAB_PCREL_HI : FixupKind = ; break ; case MCExpr :: VK__CCALL : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { if ( Desc . getOpcode ( ) == ) FixupKind = ; else FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; }" LLVM,RISCV,3342,"Predict the next statement of this code snippet: Func = MI . getOperand ( ) ; Ra = ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ; } uint32_t Binary ; assert ( Func . isExpr ( ) && ) ; const MCExpr * CallExpr = Func . getExpr ( ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ; else TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addReg ( Ra ) . addImm ( ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ;" LLVM,RISCV,3343,"Predict the next statement of this code snippet: unsigned Size = Desc . getSize ( ) ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { expandFunctionCall ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } if ( MI . getOpcode ( ) == ) { expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; } case : { uint32_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write ( OS , Bits , ) ; break ; } } ++ MCNumEmitted ;" LLVM,RISCV,3344,"Predict the next statement of this code snippet: } if ( MI . getOpcode ( ) == ) { expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; } case : { uint32_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write ( OS , Bits , ) ;" LLVM,RISCV,3345,"Predict the next statement of this code snippet: void MCCodeEmitter :: expandFunctionCall ( const MCInst & MI , raw_ostream & OS , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { MCInst TmpInst ; MCOperand Func ; Register Ra ; if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ;" LLVM,RISCV,3346,"Predict the next statement of this code snippet: return new MCCodeEmitter ( Ctx , MCII ) ;" LLVM,RISCV,3347,"Predict the next statement of this code snippet: void MCCodeEmitter :: encodeInstruction ( const MCInst & MI , raw_ostream & OS , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { verifyInstructionPredicates ( MI , computeAvailableFeatures ( STI . getFeatureBits ( ) ) ) ; const MCInstrDesc & Desc = MCII . get ( MI . getOpcode ( ) ) ; unsigned Size = Desc . getSize ( ) ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { expandFunctionCall ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } if ( MI . getOpcode ( ) == ) { expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; }" LLVM,RISCV,3348,"Predict the next statement of this code snippet: expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; } case : {" LLVM,RISCV,3349,"Predict the next statement of this code snippet: MCOperand DestReg = MI . getOperand ( ) ; MCOperand SrcReg = MI . getOperand ( ) ; MCOperand TPReg = MI . getOperand ( ) ; assert ( TPReg . isReg ( ) && TPReg . getReg ( ) == && ) ; MCOperand SrcSymbol = MI . getOperand ( ) ; assert ( SrcSymbol . isExpr ( ) && ) ; const MCExpr * Expr = dyn_cast < MCExpr > ( SrcSymbol . getExpr ( ) ) ; assert ( Expr && Expr -> getKind ( ) == MCExpr :: VK__TPREL_ADD && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( ) , MI . getLoc ( ) ) ) ;" LLVM,RISCV,3350,"Predict the next statement of this code snippet: MCOperand DestReg = MI . getOperand ( ) ; MCOperand SrcReg = MI . getOperand ( ) ; MCOperand TPReg = MI . getOperand ( ) ; assert ( TPReg . isReg ( ) && TPReg . getReg ( ) == && ) ; MCOperand SrcSymbol = MI . getOperand ( ) ; assert ( SrcSymbol . isExpr ( ) && ) ; const MCExpr * Expr = dyn_cast < MCExpr > ( SrcSymbol . getExpr ( ) ) ;" LLVM,RISCV,3351,"Predict the next statement of this code snippet: Func = MI . getOperand ( ) ; Ra = ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ; } uint32_t Binary ; assert ( Func . isExpr ( ) && ) ; const MCExpr * CallExpr = Func . getExpr ( ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ; else TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addReg ( Ra ) . addImm ( ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ;" LLVM,RISCV,3352,"Predict the next statement of this code snippet: TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ; else TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addReg ( Ra ) . addImm ( ) ;" LLVM,RISCV,3353,"Predict the next statement of this code snippet: switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : case MCExpr :: VK__32_PCREL : llvm_unreachable ( ) ; case MCExpr :: VK__TPREL_ADD : llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TPREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__TPREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__TLS_GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TLS_GD_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL_PLT : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) {" LLVM,RISCV,3354,"Predict the next statement of this code snippet: assert ( MO . isReg ( ) && ) ; switch ( MO . getReg ( ) ) { default : llvm_unreachable ( ) ; case : return ; case : return ; }" LLVM,RISCV,3355,"Predict the next statement of this code snippet: void MCCodeEmitter :: encodeInstruction ( const MCInst & MI , raw_ostream & OS , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { uint32_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: Writer < > ( OS ) . write ( Bits ) ; ++ MCNumEmitted ;" LLVM,RISCV,3356,"Predict the next statement of this code snippet: uint32_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: Writer < > ( OS ) . write ( Bits ) ;" LLVM,RISCV,3357,"Predict the next statement of this code snippet: if ( MO . isImm ( ) ) return MO . getImm ( ) ; assert ( MO . isExpr ( ) && ) ; const MCExpr * Expr = MO . getExpr ( ) ; MCExpr :: ExprKind Kind = Expr -> getKind ( ) ; FixupKind = ; if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : FixupKind = MIFrm == ? : ; break ; case MCExpr :: VK__HI : FixupKind = ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) {" LLVM,RISCV,3358,"Predict the next statement of this code snippet: MCCodeEmitter ( MCContext & ctx ) : Ctx ( ctx ) {" LLVM,RISCV,3359,"Predict the next statement of this code snippet: MCCodeEmitter ( MCContext & ctx ) : Ctx ( ctx ) {" LLVM,RISCV,3360,"Predict the next statement of this code snippet: switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: Writer < > ( OS ) . write < uint16_t > ( Bits ) ; break ; } case : { uint32_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: Writer < > ( OS ) . write ( Bits ) ; break ; } } ++ MCNumEmitted ;" LLVM,RISCV,3361,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; break ; case MCExpr :: VK__HI : FixupKind = ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ;" LLVM,RISCV,3362,"Predict the next statement of this code snippet: unsigned Size = Desc . getSize ( ) ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { expandFunctionCall ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } if ( MI . getOpcode ( ) == ) { expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; }" LLVM,RISCV,3363,"Predict the next statement of this code snippet: if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { expandFunctionCall ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } if ( MI . getOpcode ( ) == ) { expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; } case : {" LLVM,RISCV,3364,"Predict the next statement of this code snippet: unsigned MCCodeEmitter :: getImmOpValue ( const MCInst & MI , unsigned OpNo , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { const MCOperand & MO = MI . getOperand ( OpNo ) ; MCInstrDesc const & Desc = MCII . get ( MI . getOpcode ( ) ) ; unsigned MIFrm = Desc . TSFlags & ; if ( MO . isImm ( ) ) return MO . getImm ( ) ; assert ( MO . isExpr ( ) && ) ; const MCExpr * Expr = MO . getExpr ( ) ; MCExpr :: ExprKind Kind = Expr -> getKind ( ) ; FixupKind = ; if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : FixupKind = MIFrm == ? : ; break ; case MCExpr :: VK__HI : FixupKind = ;" LLVM,RISCV,3365,"Predict the next statement of this code snippet: RelaxCandidate = true ; break ; case MCExpr :: VK__GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TPREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__TPREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__TLS_GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TLS_GD_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL_PLT : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { if ( MI . getNumOperands ( ) == ) { auto & MOCount = MI . getOperand ( ) ; if ( MOCount . isReg ( ) ) FixupKind = ; else FixupKind = ; } else {" LLVM,RISCV,3366,"Predict the next statement of this code snippet: bool RelaxCandidate = false ; if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : case MCExpr :: VK__32_PCREL : llvm_unreachable ( ) ; case MCExpr :: VK__TPREL_ADD : llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TPREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__TPREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__TLS_GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TLS_GD_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL_PLT : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) {" LLVM,RISCV,3367,"Predict the next statement of this code snippet: case MCExpr :: VK__GOT_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax && RelaxCandidate ) { const MCConstantExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ;" LLVM,RISCV,3368,"Predict the next statement of this code snippet: bool EnableRelax = STI . getFeatureBits ( ) [ ] ; const MCOperand & MO = MI . getOperand ( OpNo ) ; MCInstrDesc const & Desc = MCII . get ( MI . getOpcode ( ) ) ; unsigned MIFrm = Desc . TSFlags & ; if ( MO . isImm ( ) ) return MO . getImm ( ) ; assert ( MO . isExpr ( ) && ) ; const MCExpr * Expr = MO . getExpr ( ) ; MCExpr :: ExprKind Kind = Expr -> getKind ( ) ; FixupKind = ; bool RelaxCandidate = false ; if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__GOT_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax && RelaxCandidate ) { const MCConstantExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ; Fixups . push_back ( MCFixup :: create ( , Dummy , MCFixupKind ( ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ;" LLVM,RISCV,3369,"Predict the next statement of this code snippet: MCOperand Func ; unsigned Ra ; if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = ; } else if ( MI . getOpcode ( ) == ) { Func = MI . getOperand ( ) ; Ra = MI . getOperand ( ) . getReg ( ) ; } else { Func = MI . getOperand ( ) ; Ra = ; } uint32_t Binary ; assert ( Func . isExpr ( ) && ) ; const MCExpr * CallExpr = Func . getExpr ( ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; if ( MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ; else TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addReg ( Ra ) . addImm ( ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ;" LLVM,RISCV,3370,"Predict the next statement of this code snippet: const MCExpr * CallExpr = Func . getExpr ( ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; if ( MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ;" LLVM,RISCV,3371,"Predict the next statement of this code snippet: FixupKind = ; break ; case MCExpr :: VK__TLS_GD_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL_PLT : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax && RelaxCandidate ) { const MCConstantExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ; Fixups . push_back ( MCFixup :: create ( , Dummy , MCFixupKind ( ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; } return ;" LLVM,RISCV,3372,"Predict the next statement of this code snippet: FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__TLS_GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TLS_GD_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL_PLT : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else { switch ( MI . getOpcode ( ) ) { case : case : case : FixupKind = ; break ; case : FixupKind = ; break ; default : break ; } } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax && RelaxCandidate ) { const MCConstantExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ; Fixups . push_back ( MCFixup :: create ( , Dummy , MCFixupKind ( ) , MI . getLoc ( ) ) ) ;" LLVM,RISCV,3373,"Predict the next statement of this code snippet: case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TPREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__TPREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__TLS_GOT_HI : FixupKind = ; break ; case MCExpr :: VK__TLS_GD_HI : FixupKind = ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL_PLT : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else { switch ( MI . getOpcode ( ) ) { case : case : case : FixupKind = ; break ; case : FixupKind = ; break ; default : break ; } } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax && RelaxCandidate ) { const MCConstantExpr * Dummy = MCConstantExpr :: create ( , Ctx ) ; Fixups . push_back ( MCFixup :: create ( , Dummy , MCFixupKind ( ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; } return ;" LLVM,RISCV,3374,"Predict the next statement of this code snippet: MCCodeEmitter * llvm :: createMCCodeEmitter ( const MCInstrInfo & MCII , const MCRegisterInfo & MRI , MCContext & Ctx ) {" LLVM,RISCV,3375,"Predict the next statement of this code snippet: MCCodeEmitter * llvm :: createMCCodeEmitter ( const MCInstrInfo & MCII , const MCRegisterInfo & MRI , MCContext & Ctx ) {" LLVM,RISCV,3376,"Predict the next statement of this code snippet: unsigned ShiftValue = ; for ( unsigned I = ; I != Size ; ++ I ) {" LLVM,RISCV,3377,"Predict the next statement of this code snippet: unsigned getBranchTargetEncoding ( const MCInst & MI , unsigned int OpNum , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { const MCOperand & MO = MI . getOperand ( OpNum ) ; if ( MO . isImm ( ) ) return MO . getImm ( ) << ; Fixups . push_back ( MCFixup :: create ( , MO . getExpr ( ) , ( MCFixupKind ) ) ) ;" LLVM,RISCV,3378,"Predict the next statement of this code snippet: const MCOperand & MO = MI . getOperand ( OpNum ) ; if ( MO . isImm ( ) ) return MO . getImm ( ) << ; Fixups . push_back ( MCFixup :: create ( , MO . getExpr ( ) , ( MCFixupKind ) ) ) ; Fixups . push_back ( MCFixup :: create ( , MO . getExpr ( ) , ( MCFixupKind ) ) ) ; return ;" LLVM,RISCV,3379,"Predict the next statement of this code snippet: unsigned getCallEncoding ( const MCInst & MI , unsigned int OpNum , SmallVectorImpl < MCFixup > & Fixups ) const {" LLVM,RISCV,3380,"Predict the next statement of this code snippet: const MCOperand & MO = MI . getOperand ( OpNum ) ; if ( MO . isImm ( ) ) return MO . getImm ( ) << ;" LLVM,RISCV,3381,"Predict the next statement of this code snippet: unsigned getJumpTargetEncoding ( const MCInst & MI , unsigned int OpNum , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { const MCOperand & MO = MI . getOperand ( OpNum ) ;" LLVM,RISCV,3382,"Predict the next statement of this code snippet: if ( MO . isReg ( ) ) return Ctx . getRegisterInfo ( ) -> getEncodingValue ( MO . getReg ( ) ) ; if ( MO . isImm ( ) ) return static_cast < unsigned > ( MO . getImm ( ) ) ;" LLVM,RISCV,3383,"Predict the next statement of this code snippet: unsigned MCCodeEmitter :: getMachineOpValue ( const MCInst & MI , const MCOperand & MO , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { if ( MO . isReg ( ) ) return Ctx . getRegisterInfo ( ) -> getEncodingValue ( MO . getReg ( ) ) ;" LLVM,RISCV,3384,"Predict the next statement of this code snippet: if ( MO . isImm ( ) ) return MO . getImm ( ) << ;" LLVM,RISCV,3385,"Predict the next statement of this code snippet: if ( MO . isImm ( ) ) return MO . getImm ( ) << ;" LLVM,RISCV,3386,"Predict the next statement of this code snippet: unsigned getPCImmEncoding ( const MCInst & MI , unsigned int OpNum , SmallVectorImpl < MCFixup > & Fixups , const MCSubtargetInfo & STI ) const { const MCOperand & MO = MI . getOperand ( OpNum ) ;" LLVM,RISCV,3387,"Predict the next statement of this code snippet: if ( MO . isImm ( ) ) return MO . getImm ( ) / ; const MCExpr * Expr = MO . getExpr ( ) ; if ( Offset ) {" LLVM,RISCV,3388,"Predict the next statement of this code snippet: if ( MO . isImm ( ) ) return MO . getImm ( ) / ; const MCExpr * Expr = MO . getExpr ( ) ; if ( Offset ) {" LLVM,RISCV,3389,"Predict the next statement of this code snippet: MCCodeEmitter ( const MCInstrInfo & mcii , MCContext & ctx ) : MCII ( mcii ) , Ctx ( ctx ) {" LLVM,RISCV,3390,"Predict the next statement of this code snippet: MCCodeEmitter ( const MCInstrInfo & mcii , MCContext & ctx ) : MCII ( mcii ) , Ctx ( ctx ) {" LLVM,RISCV,3391,"Predict the next statement of this code snippet: ~ MCCodeEmitter ( ) {" LLVM,RISCV,3392,"Predict the next statement of this code snippet: ~ MCCodeEmitter ( ) {" LLVM,RISCV,3393,"Predict the next statement of this code snippet: if ( MI . getOpcode ( ) == ) { expandAddTPRel ( MI , OS , Fixups , STI ) ; MCNumEmitted += ; return ; } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; } case : { uint32_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write ( OS , Bits , ) ; break ; } } ++ MCNumEmitted ;" LLVM,RISCV,3394,"Predict the next statement of this code snippet: const MCExpr * CallExpr = Func . getExpr ( ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; if ( MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ;" LLVM,RISCV,3395,"Predict the next statement of this code snippet: break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; return ;" LLVM,RISCV,3396,"Predict the next statement of this code snippet: case MCExpr :: VK__PCREL_HI : FixupKind = ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ;" LLVM,RISCV,3397,"Predict the next statement of this code snippet: const MCExpr * CallExpr = MCExpr :: create ( Expr , MCExpr :: VK__CALL , Ctx ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addReg ( Ra ) . addImm ( ) ;" LLVM,RISCV,3398,"Predict the next statement of this code snippet: const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : FixupKind = MIFrm == ? : ; break ; case MCExpr :: VK__HI : FixupKind = ; break ; case MCExpr :: VK__PCREL_LO : FixupKind = MIFrm == ? : ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ;" LLVM,RISCV,3399,"Predict the next statement of this code snippet: MCCodeEmitter * llvm :: createMCCodeEmitter ( const MCInstrInfo & MCII , const MCRegisterInfo & MRI , MCContext & Ctx ) { return new MCCodeEmitter ( Ctx , MCII ) ;" LLVM,RISCV,3400,"Predict the next statement of this code snippet: } switch ( Size ) { default : llvm_unreachable ( ) ; case : { uint16_t Bits = getBinaryCodeForInstr ( MI , Fixups , STI ) ; :: write < uint16_t > ( OS , Bits , ) ; break ; } case : {" LLVM,RISCV,3401,"Predict the next statement of this code snippet: if ( MI . getOpcode ( ) == ) TmpInst = MCInstBuilder ( ) . addReg ( ) . addReg ( Ra ) . addImm ( ) ; else TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addReg ( Ra ) . addImm ( ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ;" LLVM,RISCV,3402,"Predict the next statement of this code snippet: unsigned Ra = ( MI . getOpcode ( ) == ) ? : ; uint32_t Binary ; assert ( Func . isExpr ( ) && ) ; const MCExpr * Expr = Func . getExpr ( ) ; const MCExpr * CallExpr = MCExpr :: create ( Expr , MCExpr :: VK__CALL , Ctx ) ; TmpInst = MCInstBuilder ( ) . addReg ( Ra ) . addOperand ( MCOperand :: createExpr ( CallExpr ) ) ; Binary = getBinaryCodeForInstr ( TmpInst , Fixups , STI ) ; :: write ( OS , Binary , ) ;" LLVM,RISCV,3403,"Predict the next statement of this code snippet: assert ( MO . isExpr ( ) && ) ; const MCExpr * Expr = MO . getExpr ( ) ; MCExpr :: ExprKind Kind = Expr -> getKind ( ) ; FixupKind = ; bool RelaxCandidate = false ; if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; RelaxCandidate = true ;" LLVM,RISCV,3404,"Predict the next statement of this code snippet: bool RelaxCandidate = false ; if ( Kind == MCExpr :: Target ) { const MCExpr * RVExpr = cast < MCExpr > ( Expr ) ; switch ( RVExpr -> getKind ( ) ) { case MCExpr :: VK__None : case MCExpr :: VK__Invalid : llvm_unreachable ( ) ; case MCExpr :: VK__LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_LO : if ( MIFrm == ) FixupKind = ; else if ( MIFrm == ) FixupKind = ; else llvm_unreachable ( ) ; RelaxCandidate = true ; break ; case MCExpr :: VK__PCREL_HI : FixupKind = ; RelaxCandidate = true ; break ; case MCExpr :: VK__CALL : FixupKind = ; RelaxCandidate = true ; break ; } } else if ( Kind == MCExpr :: SymbolRef && cast < MCSymbolRefExpr > ( Expr ) -> getKind ( ) == MCSymbolRefExpr :: VK_None ) { if ( Desc . getOpcode ( ) == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } else if ( MIFrm == ) { FixupKind = ; } } assert ( FixupKind != && ) ; Fixups . push_back ( MCFixup :: create ( , Expr , MCFixupKind ( FixupKind ) , MI . getLoc ( ) ) ) ; ++ MCNumFixups ; if ( EnableRelax && RelaxCandidate ) {" LLVM,RISCV,3405,"Predict the next statement of this code snippet: unsigned Res = MO . getImm ( ) ; assert ( ( Res & ) == && ) ;" LLVM,RISCV,3406,"Predict the next statement of this code snippet: if ( MO . isImm ( ) ) return static_cast < unsigned > ( MO . getImm ( ) ) ; llvm_unreachable ( ) ;" LLVM,RISCV,3407,"Predict the next statement of this code snippet: MCCodeEmitter ( MCContext & ctx , MCInstrInfo const & MCII ) : Ctx ( ctx ) , MCII ( MCII ) {" LLVM,RISCV,3408,"Predict the next statement of this code snippet: MCCodeEmitter ( MCContext & ctx , MCInstrInfo const & MCII ) : Ctx ( ctx ) , MCII ( MCII ) {" LLVM,RISCV,3409,"Predict the next statement of this code snippet: ~ MCCodeEmitter ( ) override {" LLVM,RISCV,3410,"Predict the next statement of this code snippet: ~ MCCodeEmitter ( ) override {" LLVM,RISCV,3411,"Predict the next statement of this code snippet: const MCExpr * MCExpr :: create ( const MCExpr * Expr , VariantKind Kind , MCContext & Ctx ) {" LLVM,RISCV,3412,"Predict the next statement of this code snippet: if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ; if ( ! Value . isAbsolute ( ) ) return false ; Res = evaluateAsInt64 ( Value . getConstant ( ) ) ;" LLVM,RISCV,3413,"Predict the next statement of this code snippet: case VK__HI : return ( ( Value + ) >> ) & ; }" LLVM,RISCV,3414,"Predict the next statement of this code snippet: if ( ! AUIPCSymbol ) return false ; const MCFixup * TargetFixup = getPCRelHiFixup ( ) ; if ( ! TargetFixup ) return false ; if ( ( unsigned ) TargetFixup -> getKind ( ) != ) return false ; MCValue Target ; if ( ! TargetFixup -> getValue ( ) -> evaluateAsValue ( Target , * Layout ) ) return false ; if ( ! Target . getSymA ( ) || ! Target . getSymA ( ) -> getSymbol ( ) . isInSection ( ) ) return false ; if ( & Target . getSymA ( ) -> getSymbol ( ) . getSection ( ) != findAssociatedFragment ( ) -> getParent ( ) ) return false ; uint64_t AUIPCOffset = AUIPCSymbol -> getOffset ( ) ; Res = MCValue :: get ( Target . getSymA ( ) , nullptr , Target . getConstant ( ) + ( Fixup -> getOffset ( ) - AUIPCOffset ) ) ; return true ;" LLVM,RISCV,3415,"Predict the next statement of this code snippet: const MCSymbolRefExpr * AUIPCSRE = AUIPCLoc . getSymA ( ) ; if ( ! AUIPCSRE ) return nullptr ; const auto * DF = dyn_cast_or_null < MCDataFragment > ( AUIPCSRE -> findAssociatedFragment ( ) ) ; if ( ! DF ) return nullptr ;" LLVM,RISCV,3416,"Predict the next statement of this code snippet: if ( ! DF ) return nullptr ; const MCSymbol * AUIPCSymbol = & AUIPCSRE -> getSymbol ( ) ; for ( const MCFixup & F : DF -> getFixups ( ) ) { if ( F . getOffset ( ) != AUIPCSymbol -> getOffset ( ) ) continue ; switch ( ( unsigned ) F . getKind ( ) ) { default : continue ; case : return & F ; } }" LLVM,RISCV,3417,"Predict the next statement of this code snippet: MCExpr :: VariantKind MCExpr :: getVariantKindForName ( StringRef name ) { return StringSwitch < MCExpr :: VariantKind > ( name ) . Case ( , VK__LO ) . Case ( , VK__HI ) . Case ( , VK__PCREL_LO ) . Case ( , VK__PCREL_HI ) . Default ( VK__Invalid ) ;" LLVM,RISCV,3418,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case VK__LO : return ; case VK__HI : return ; case VK__PCREL_LO : return ; case VK__PCREL_HI : return ; }" LLVM,RISCV,3419,"Predict the next statement of this code snippet: if ( HasVariant ) OS << '%' << getVariantKindName ( getKind ( ) ) << '(' ; Expr -> print ( OS , MAI ) ; if ( HasVariant ) OS << ')' ;" LLVM,RISCV,3420,"Predict the next statement of this code snippet: if ( HasVariant ) OS << '%' << getVariantKindName ( getKind ( ) ) << '(' ; Expr -> print ( OS , MAI ) ; if ( HasVariant ) OS << ')' ;" LLVM,RISCV,3421,"Predict the next statement of this code snippet: void MCExpr :: visitUsedExpr ( MCStreamer & Streamer ) const {" LLVM,RISCV,3422,"Predict the next statement of this code snippet: Streamer . visitUsedExpr ( * getSubExpr ( ) ) ;" LLVM,RISCV,3423,"Predict the next statement of this code snippet: MCValue Value ; if ( Kind == VK__PCREL_HI || Kind == VK__PCREL_LO || Kind == VK__GOT_HI || Kind == VK__TPREL_HI || Kind == VK__TPREL_LO || Kind == VK__TPREL_ADD || Kind == VK__TLS_GOT_HI || Kind == VK__TLS_GD_HI || Kind == VK__CALL || Kind == VK__CALL_PLT ) return false ; if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ; if ( ! Value . isAbsolute ( ) ) return false ;" LLVM,RISCV,3424,"Predict the next statement of this code snippet: MCValue Value ; if ( Kind == VK__PCREL_HI || Kind == VK__PCREL_LO || Kind == VK__GOT_HI || Kind == VK__TPREL_HI || Kind == VK__TPREL_LO || Kind == VK__TPREL_ADD || Kind == VK__TLS_GOT_HI || Kind == VK__TLS_GD_HI || Kind == VK__CALL || Kind == VK__CALL_PLT ) return false ; if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ; if ( ! Value . isAbsolute ( ) ) return false ; Res = evaluateAsInt64 ( Value . getConstant ( ) ) ;" LLVM,RISCV,3425,"Predict the next statement of this code snippet: Res = MCValue :: get ( Res . getSymA ( ) , Res . getSymB ( ) , Res . getConstant ( ) , getKind ( ) ) ;" LLVM,RISCV,3426,"Predict the next statement of this code snippet: bool MCExpr :: evaluateAsRelocatableImpl ( MCValue & Res , const MCAsmLayout * Layout , const MCFixup * Fixup ) const { if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Res , nullptr , nullptr ) ) return false ; Res = MCValue :: get ( Res . getSymA ( ) , Res . getSymB ( ) , Res . getConstant ( ) , getKind ( ) ) ;" LLVM,RISCV,3427,"Predict the next statement of this code snippet: switch ( getKind ( ) ) { default : return ;" LLVM,RISCV,3428,"Predict the next statement of this code snippet: case MCExpr :: SymbolRef : { const MCSymbolRefExpr & SymRef = * cast < MCSymbolRefExpr > ( Expr ) ; cast < MCSymbolELF > ( SymRef . getSymbol ( ) ) . setType ( ELF :: STT_TLS ) ; break ; } case MCExpr :: Unary : fixELFSymbolsInTLSFixupsImpl ( cast < MCUnaryExpr > ( Expr ) -> getSubExpr ( ) , Asm ) ;" LLVM,RISCV,3429,"Predict the next statement of this code snippet: case MCExpr :: SymbolRef : { const MCSymbolRefExpr & SymRef = * cast < MCSymbolRefExpr > ( Expr ) ; cast < MCSymbolELF > ( SymRef . getSymbol ( ) ) . setType ( ELF :: STT_TLS ) ; break ; }" LLVM,RISCV,3430,"Predict the next statement of this code snippet: DF = dyn_cast_or_null < MCDataFragment > ( DF -> getNextNode ( ) ) ; if ( ! DF ) return nullptr ; Offset = ; } for ( const MCFixup & F : DF -> getFixups ( ) ) { if ( F . getOffset ( ) != Offset ) continue ; switch ( ( unsigned ) F . getKind ( ) ) { default : continue ; case : case : case : case : if ( DFOut ) * DFOut = DF ; return & F ; } } return nullptr ;" LLVM,RISCV,3431,"Predict the next statement of this code snippet: return ; case VK__TLS_GOT_HI : return ; case VK__TLS_GD_HI : return ; case VK__CALL : return ; case VK__CALL_PLT : return ; case VK__32_PCREL : return ;" LLVM,RISCV,3432,"Predict the next statement of this code snippet: if ( HasVariant ) OS << '%' << getVariantKindName ( getKind ( ) ) << '(' ; Expr -> print ( OS , MAI ) ; if ( Kind == VK__CALL_PLT ) OS << ;" LLVM,RISCV,3433,"Predict the next statement of this code snippet: VariantKind Kind = getKind ( ) ; bool HasVariant = ( ( Kind != VK__None ) && ( Kind != VK__CALL ) && ( Kind != VK__CALL_PLT ) ) ; if ( HasVariant ) OS << '%' << getVariantKindName ( getKind ( ) ) << '(' ; Expr -> print ( OS , MAI ) ;" LLVM,RISCV,3434,"Predict the next statement of this code snippet: bool MCExpr :: evaluateAsConstant ( int64_t & Res ) const { MCValue Value ; if ( Kind == VK__PCREL_HI || Kind == VK__PCREL_LO || Kind == VK__GOT_HI || Kind == VK__TPREL_HI || Kind == VK__TPREL_LO || Kind == VK__TPREL_ADD || Kind == VK__TLS_GOT_HI || Kind == VK__TLS_GD_HI || Kind == VK__CALL || Kind == VK__CALL_PLT || Kind == VK__CAPTAB_PCREL_HI || Kind == VK__TPREL_CINCOFFSET || Kind == VK__TLS_IE_CAPTAB_PCREL_HI || Kind == VK__TLS_GD_CAPTAB_PCREL_HI || Kind == VK__CCALL ) return false ; if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ; if ( ! Value . isAbsolute ( ) ) return false ; Res = evaluateAsInt64 ( Value . getConstant ( ) ) ;" LLVM,RISCV,3435,"Predict the next statement of this code snippet: case VK__TLS_GD_HI : case VK__TLS_IE_CAPTAB_PCREL_HI : case VK__TLS_GD_CAPTAB_PCREL_HI : break ; } fixELFSymbolsInTLSFixupsImpl ( getSubExpr ( ) , Asm ) ;" LLVM,RISCV,3436,"Predict the next statement of this code snippet: const MCSymbolRefExpr * AUIPCSRE = AUIPCLoc . getSymA ( ) ; if ( ! AUIPCSRE ) return nullptr ; const MCSymbol * AUIPCSymbol = & AUIPCSRE -> getSymbol ( ) ; const auto * DF = dyn_cast_or_null < MCDataFragment > ( AUIPCSymbol -> getFragment ( ) ) ; if ( ! DF ) return nullptr ; uint64_t Offset = AUIPCSymbol -> getOffset ( ) ; if ( DF -> getContents ( ) . size ( ) == Offset ) { DF = dyn_cast_or_null < MCDataFragment > ( DF -> getNextNode ( ) ) ; if ( ! DF ) return nullptr ; Offset = ; }" LLVM,RISCV,3437,"Predict the next statement of this code snippet: return StringSwitch < MCExpr :: VariantKind > ( name ) . Case ( , VK__LO ) . Case ( , VK__HI ) . Case ( , VK__PCREL_LO ) . Case ( , VK__PCREL_HI ) . Case ( , VK__GOT_HI ) . Case ( , VK__TPREL_LO ) . Case ( , VK__TPREL_HI ) . Case ( , VK__TPREL_ADD ) . Case ( , VK__TLS_GOT_HI ) . Case ( , VK__TLS_GD_HI ) . Case ( , VK__CAPTAB_PCREL_HI ) . Case ( , VK__TPREL_CINCOFFSET ) . Case ( , VK__TLS_IE_CAPTAB_PCREL_HI ) . Case ( , VK__TLS_GD_CAPTAB_PCREL_HI ) . Default ( VK__Invalid ) ;" LLVM,RISCV,3438,"Predict the next statement of this code snippet: return StringSwitch < MCExpr :: VariantKind > ( name ) . Case ( , VK__LO ) . Case ( , VK__HI ) . Case ( , VK__PCREL_LO ) . Case ( , VK__PCREL_HI ) . Case ( , VK__GOT_HI ) . Case ( , VK__TPREL_LO ) . Case ( , VK__TPREL_HI ) . Case ( , VK__TPREL_ADD ) . Case ( , VK__TLS_GOT_HI ) . Case ( , VK__TLS_GD_HI ) . Case ( , VK__CAPTAB_PCREL_HI ) . Case ( , VK__TPREL_CINCOFFSET ) . Case ( , VK__TLS_IE_CAPTAB_PCREL_HI ) . Case ( , VK__TLS_GD_CAPTAB_PCREL_HI ) . Default ( VK__Invalid ) ;" LLVM,RISCV,3439,"Predict the next statement of this code snippet: case VK__TPREL_HI : return ; case VK__TPREL_ADD : return ; case VK__TLS_GOT_HI : return ; case VK__TLS_GD_HI : return ; case VK__CAPTAB_PCREL_HI : return ; case VK__TPREL_CINCOFFSET : return ; case VK__TLS_IE_CAPTAB_PCREL_HI : return ; case VK__TLS_GD_CAPTAB_PCREL_HI : return ; case VK__CALL : return ; case VK__CALL_PLT : return ; case VK__CCALL : return ; case VK__32_PCREL : return ; }" LLVM,RISCV,3440,"Predict the next statement of this code snippet: void MCExpr :: printImpl ( raw_ostream & OS , const MCAsmInfo * MAI ) const { VariantKind Kind = getKind ( ) ; bool HasVariant = ( ( Kind != VK__None ) && ( Kind != VK__CALL ) && ( Kind != VK__CALL_PLT ) && ( Kind != VK__CCALL ) ) ; if ( HasVariant ) OS << '%' << getVariantKindName ( getKind ( ) ) << '(' ; Expr -> print ( OS , MAI ) ; if ( Kind == VK__CALL_PLT ) OS << ;" LLVM,RISCV,3441,"Predict the next statement of this code snippet: bool MCExpr :: evaluateAsConstant ( int64_t & Res ) const { MCValue Value ; if ( Kind == VK__PCREL_HI || Kind == VK__PCREL_LO || Kind == VK__GOT_HI || Kind == VK__CALL ) return false ; if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ; if ( ! Value . isAbsolute ( ) ) return false ; Res = evaluateAsInt64 ( Value . getConstant ( ) ) ; return true ;" LLVM,RISCV,3442,"Predict the next statement of this code snippet: MCValue Value ; if ( Kind == VK__PCREL_HI || Kind == VK__PCREL_LO || Kind == VK__GOT_HI || Kind == VK__CALL ) return false ; if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ;" LLVM,RISCV,3443,"Predict the next statement of this code snippet: if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Res , Layout , Fixup ) ) return false ;" LLVM,RISCV,3444,"Predict the next statement of this code snippet: const MCSymbol * AUIPCSymbol = & AUIPCSRE -> getSymbol ( ) ; for ( const MCFixup & F : DF -> getFixups ( ) ) { if ( F . getOffset ( ) != AUIPCSymbol -> getOffset ( ) ) continue ; switch ( ( unsigned ) F . getKind ( ) ) { default : continue ; case : case : return & F ; }" LLVM,RISCV,3445,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case VK__LO : return ; case VK__HI : return ; case VK__PCREL_LO : return ; case VK__PCREL_HI : return ; case VK__GOT_HI : return ; }" LLVM,RISCV,3446,"Predict the next statement of this code snippet: StringRef MCExpr :: getVariantKindName ( VariantKind Kind ) { switch ( Kind ) { default : llvm_unreachable ( ) ; case VK__LO : return ; case VK__HI : return ; case VK__PCREL_LO : return ; case VK__PCREL_HI : return ; case VK__GOT_HI : return ; case VK__TPREL_LO : return ; case VK__TPREL_HI : return ; case VK__TPREL_ADD : return ;" LLVM,RISCV,3447,"Predict the next statement of this code snippet: if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Res , Layout , Fixup ) ) return false ; if ( Res . getSymA ( ) && Res . getSymB ( ) ) { switch ( getKind ( ) ) { default : return true ; case VK__LO : case VK__HI : case VK__PCREL_LO :" LLVM,RISCV,3448,"Predict the next statement of this code snippet: if ( Res . getSymA ( ) && Res . getSymB ( ) ) { switch ( getKind ( ) ) { default : return true ; case VK__LO : case VK__HI : case VK__PCREL_LO : case VK__PCREL_HI : return false ; } }" LLVM,RISCV,3449,"Predict the next statement of this code snippet: getFixupKind ( ) const {" LLVM,RISCV,3450,"Predict the next statement of this code snippet: if ( DF -> getContents ( ) . size ( ) == Offset ) { DF = dyn_cast_or_null < MCDataFragment > ( DF -> getNextNode ( ) ) ; if ( ! DF ) return nullptr ; Offset = ; } for ( const MCFixup & F : DF -> getFixups ( ) ) { if ( F . getOffset ( ) != Offset ) continue ; switch ( ( unsigned ) F . getKind ( ) ) {" LLVM,RISCV,3451,"Predict the next statement of this code snippet: explicit MCExpr ( VariantKind Kind , const MCExpr * Expr ) : Kind ( Kind ) , Expr ( Expr ) {" LLVM,RISCV,3452,"Predict the next statement of this code snippet: explicit MCExpr ( VariantKind Kind , const MCExpr * Expr ) : Kind ( Kind ) , Expr ( Expr ) {" LLVM,RISCV,3453,"Predict the next statement of this code snippet: if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ; if ( ! Value . isAbsolute ( ) ) return false ;" LLVM,RISCV,3454,"Predict the next statement of this code snippet: return new ( Ctx ) MCExpr ( Kind , Expr ) ;" LLVM,RISCV,3455,"Predict the next statement of this code snippet: const MCExpr * MCExpr :: create ( MCExpr :: VariantKind Kind , const MCExpr * Expr , MCContext & Ctx ) { return new ( Ctx ) MCExpr ( Kind , Expr ) ;" LLVM,RISCV,3456,"Predict the next statement of this code snippet: default : return ; case VK__TPREL_HI20 : case VK__TPREL_LO12 : break ; }" LLVM,RISCV,3457,"Predict the next statement of this code snippet: static void fixELFSymbolsInTLSFixupsImpl ( const MCExpr * Expr , MCAssembler & Asm ) { switch ( Expr -> getKind ( ) ) { case MCExpr :: Target : llvm_unreachable ( ) ; break ; case MCExpr :: Constant : break ; case MCExpr :: Binary : { const MCBinaryExpr * BE = cast < MCBinaryExpr > ( Expr ) ; fixELFSymbolsInTLSFixupsImpl ( BE -> getLHS ( ) , Asm ) ; fixELFSymbolsInTLSFixupsImpl ( BE -> getRHS ( ) , Asm ) ; break ; } case MCExpr :: SymbolRef : { const MCSymbolRefExpr & SymRef = * cast < MCSymbolRefExpr > ( Expr ) ; cast < MCSymbolELF > ( SymRef . getSymbol ( ) ) . setType ( ELF :: STT_TLS ) ; break ;" LLVM,RISCV,3458,"Predict the next statement of this code snippet: case VK__LO12 : return ; case VK__HI20 : return ; case VK__PCREL_LO12 : return ;" LLVM,RISCV,3459,"Predict the next statement of this code snippet: case VK__HI20 : return ; case VK__PCREL_LO12 : return ; case VK__PCREL_HI20 : return ; case VK__TPREL_LO12 : return ;" LLVM,RISCV,3460,"Predict the next statement of this code snippet: return StringSwitch < MCExpr :: VariantKind > ( name ) . Case ( , VK__LO12 ) . Case ( , VK__HI20 ) . Case ( , VK__PCREL_LO12 ) . Case ( , VK__PCREL_HI20 ) . Case ( , VK__TPREL_LO12 ) . Case ( , VK__TPREL_HI20 ) . Default ( VK__None ) ;" LLVM,RISCV,3461,"Predict the next statement of this code snippet: bool closeParen = printVariantKind ( OS , Kind ) ; const MCExpr * Expr = getSubExpr ( ) ;" LLVM,RISCV,3462,"Predict the next statement of this code snippet: case VK__None : closeParen = false ; break ; case VK__LO12 : OS << ; break ; case VK__HI20 : OS << ; break ; case VK__PCREL_LO12 : OS << ; break ;" LLVM,RISCV,3463,"Predict the next statement of this code snippet: bool MCExpr :: evaluateAsRelocatableImpl ( MCValue & Res , const MCAsmLayout * Layout , const MCFixup * Fixup ) const { if ( Kind == VK__PCREL_LO && evaluatePCRelLo ( Res , Layout , Fixup ) ) return true ; if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Res , Layout , Fixup ) ) return false ; if ( Res . getSymA ( ) && Res . getSymB ( ) ) { switch ( getKind ( ) ) { default : return true ; case VK__LO : case VK__HI : case VK__PCREL_LO :" LLVM,RISCV,3464,"Predict the next statement of this code snippet: MCValue Target ; if ( ! TargetFixup -> getValue ( ) -> evaluateAsValue ( Target , * Layout ) ) return false ; if ( ! Target . getSymA ( ) || ! Target . getSymA ( ) -> getSymbol ( ) . isInSection ( ) ) return false ; if ( & Target . getSymA ( ) -> getSymbol ( ) . getSection ( ) != findAssociatedFragment ( ) -> getParent ( ) ) return false ; uint64_t AUIPCOffset = AUIPCSymbol -> getOffset ( ) ; Res = MCValue :: get ( Target . getSymA ( ) , nullptr , Target . getConstant ( ) + ( Fixup -> getOffset ( ) - AUIPCOffset ) ) ;" LLVM,RISCV,3465,"Predict the next statement of this code snippet: auto & RAB = static_cast < AsmBackend & > ( Layout -> getAssembler ( ) . getBackend ( ) ) ; if ( RAB . willForceRelocations ( ) ) return false ; MCValue AUIPCLoc ; if ( ! getSubExpr ( ) -> evaluateAsValue ( AUIPCLoc , * Layout ) ) return false ; const MCSymbolRefExpr * AUIPCSRE = AUIPCLoc . getSymA ( ) ; if ( ! AUIPCSRE || findAssociatedFragment ( ) != AUIPCSRE -> findAssociatedFragment ( ) ) return false ; const MCSymbol * AUIPCSymbol = & AUIPCSRE -> getSymbol ( ) ; if ( ! AUIPCSymbol ) return false ; const MCFixup * TargetFixup = getPCRelHiFixup ( ) ; if ( ! TargetFixup ) return false ; if ( ( unsigned ) TargetFixup -> getKind ( ) != ) return false ; MCValue Target ; if ( ! TargetFixup -> getValue ( ) -> evaluateAsValue ( Target , * Layout ) ) return false ; if ( ! Target . getSymA ( ) || ! Target . getSymA ( ) -> getSymbol ( ) . isInSection ( ) ) return false ; if ( & Target . getSymA ( ) -> getSymbol ( ) . getSection ( ) != findAssociatedFragment ( ) -> getParent ( ) ) return false ; uint64_t AUIPCOffset = AUIPCSymbol -> getOffset ( ) ;" LLVM,RISCV,3466,"Predict the next statement of this code snippet: const MCSymbol * AUIPCSymbol = & AUIPCSRE -> getSymbol ( ) ; const auto * DF = dyn_cast_or_null < MCDataFragment > ( AUIPCSymbol -> getFragment ( ) ) ; if ( ! DF ) return nullptr ; uint64_t Offset = AUIPCSymbol -> getOffset ( ) ; if ( DF -> getContents ( ) . size ( ) == Offset ) { DF = dyn_cast_or_null < MCDataFragment > ( DF -> getNextNode ( ) ) ; if ( ! DF ) return nullptr ;" LLVM,RISCV,3467,"Predict the next statement of this code snippet: DF = dyn_cast_or_null < MCDataFragment > ( DF -> getNextNode ( ) ) ; if ( ! DF ) return nullptr ; Offset = ; } for ( const MCFixup & F : DF -> getFixups ( ) ) { if ( F . getOffset ( ) != Offset ) continue ; switch ( ( unsigned ) F . getKind ( ) ) { default : continue ;" LLVM,RISCV,3468,"Predict the next statement of this code snippet: auto & RAB = static_cast < AsmBackend & > ( Layout -> getAssembler ( ) . getBackend ( ) ) ; if ( RAB . willForceRelocations ( ) ) return false ; MCValue AUIPCLoc ; if ( ! getSubExpr ( ) -> evaluateAsValue ( AUIPCLoc , * Layout ) ) return false ; const MCSymbolRefExpr * AUIPCSRE = AUIPCLoc . getSymA ( ) ; if ( ! AUIPCSRE || findAssociatedFragment ( ) != AUIPCSRE -> findAssociatedFragment ( ) ) return false ; const MCSymbol * AUIPCSymbol = & AUIPCSRE -> getSymbol ( ) ; if ( ! AUIPCSymbol ) return false ;" LLVM,RISCV,3469,"Predict the next statement of this code snippet: MCValue Value ; if ( Kind == VK__PCREL_HI ) return false ; if ( ! getSubExpr ( ) -> evaluateAsRelocatable ( Value , nullptr , nullptr ) ) return false ; if ( ! Value . isAbsolute ( ) ) return false ; Res = evaluateAsInt64 ( Value . getConstant ( ) ) ;" LLVM,RISCV,3470,"Predict the next statement of this code snippet: if ( ! Value . isAbsolute ( ) ) return false ; Res = evaluateAsInt64 ( Value . getConstant ( ) ) ; return true ;" LLVM,RISCV,3471,"Predict the next statement of this code snippet: bool MCExpr :: evaluateAsRelocatableImpl ( MCValue & Res , const MCAsmLayout * Layout , const MCFixup * Fixup ) const {" LLVM,RISCV,3472,"Predict the next statement of this code snippet: bool MCExpr :: evaluateAsRelocatableImpl ( MCValue & Res , const MCAsmLayout * Layout , const MCFixup * Fixup ) const { return getSubExpr ( ) -> evaluateAsRelocatable ( Res , Layout , Fixup ) ;" LLVM,RISCV,3473,"Predict the next statement of this code snippet: return getSubExpr ( ) -> findAssociatedFragment ( ) ;" LLVM,RISCV,3474,"Predict the next statement of this code snippet: return getSubExpr ( ) -> findAssociatedFragment ( ) ;" LLVM,RISCV,3475,"Predict the next statement of this code snippet: void fixELFSymbolsInTLSFixups ( MCAssembler & Asm ) const override {" LLVM,RISCV,3476,"Predict the next statement of this code snippet: void fixELFSymbolsInTLSFixups ( MCAssembler & Asm ) const override {" LLVM,RISCV,3477,"Predict the next statement of this code snippet: return Kind ;" LLVM,RISCV,3478,"Predict the next statement of this code snippet: VariantKind getKind ( ) const { return Kind ;" LLVM,RISCV,3479,"Predict the next statement of this code snippet: return Expr ;" LLVM,RISCV,3480,"Predict the next statement of this code snippet: return Expr ;" LLVM,RISCV,3481,"Predict the next statement of this code snippet: MCExpr :: VariantKind MCExpr :: getVariantKindForName ( StringRef name ) { return StringSwitch < MCExpr :: VariantKind > ( name ) . Case ( , VK__LO ) . Case ( , VK__HI ) . Case ( , VK__PCREL_HI ) . Default ( VK__Invalid ) ;" LLVM,RISCV,3482,"Predict the next statement of this code snippet: MCExpr :: VariantKind MCExpr :: getVariantKindForName ( StringRef name ) {" LLVM,RISCV,3483,"Predict the next statement of this code snippet: StringRef MCExpr :: getVariantKindName ( VariantKind Kind ) { switch ( Kind ) { default : llvm_unreachable ( ) ; case VK__LO : return ; case VK__HI : return ;" LLVM,RISCV,3484,"Predict the next statement of this code snippet: explicit MCExpr ( const MCExpr * Expr , VariantKind Kind ) : Expr ( Expr ) , Kind ( Kind ) {" LLVM,RISCV,3485,"Predict the next statement of this code snippet: explicit MCExpr ( const MCExpr * Expr , VariantKind Kind ) : Expr ( Expr ) , Kind ( Kind ) {" LLVM,RISCV,3486,"Predict the next statement of this code snippet: static MCSymbolRefExpr :: VariantKind getVariantKind ( unsigned Flags ) {" LLVM,RISCV,3487,"Predict the next statement of this code snippet: OutMI . setOpcode ( Opcode ) ; for ( unsigned I = , E = MI -> getNumOperands ( ) ; I != E ; ++ I ) { const MachineOperand & MO = MI -> getOperand ( I ) ; MCOperand MCOp = lowerOperand ( MO ) ; if ( MCOp . isValid ( ) ) OutMI . addOperand ( MCOp ) ; }" LLVM,RISCV,3488,"Predict the next statement of this code snippet: MCOperand MCInstLower :: lowerOperand ( const MachineOperand & MO ) const { switch ( MO . getType ( ) ) { default : llvm_unreachable ( ) ; case MachineOperand :: MO_Register : if ( MO . isImplicit ( ) ) return MCOperand ( ) ; return MCOperand :: createReg ( MO . getReg ( ) ) ; case MachineOperand :: MO_Immediate : return MCOperand :: createImm ( MO . getImm ( ) ) ; case MachineOperand :: MO_MachineBasicBlock : return lowerSymbolOperand ( MO , MO . getMBB ( ) -> getSymbol ( ) , ) ; case MachineOperand :: MO_GlobalAddress : return lowerSymbolOperand ( MO , AsmPrinter . getSymbol ( MO . getGlobal ( ) ) , MO . getOffset ( ) ) ; case MachineOperand :: MO_ExternalSymbol : { StringRef Name = MO . getSymbolName ( ) ; return lowerSymbolOperand ( MO , AsmPrinter . GetExternalSymbolSymbol ( Name ) , MO . getOffset ( ) ) ; } case MachineOperand :: MO_JumpTableIndex : return lowerSymbolOperand ( MO , AsmPrinter . GetJTISymbol ( MO . getIndex ( ) ) , ) ; case MachineOperand :: MO_ConstantPoolIndex : return lowerSymbolOperand ( MO , AsmPrinter . GetCPISymbol ( MO . getIndex ( ) ) , MO . getOffset ( ) ) ; case MachineOperand :: MO_BlockAddress : { const BlockAddress * BA = MO . getBlockAddress ( ) ; return lowerSymbolOperand ( MO , AsmPrinter . GetBlockAddressSymbol ( BA ) , MO . getOffset ( ) ) ; }" LLVM,RISCV,3489,"Predict the next statement of this code snippet: case : Kind = MCSymbolRefExpr :: VK_Mips_ABS_LO ; break ; case : Kind = MCSymbolRefExpr :: VK_Mips_TPREL_HI ; break ; case : Kind = MCSymbolRefExpr :: VK_Mips_TPREL_LO ; break ; } const MCExpr * Expr = MCSymbolRefExpr :: create ( Symbol , Kind , Ctx ) ;" LLVM,RISCV,3490,"Predict the next statement of this code snippet: case : Kind = MCSymbolRefExpr :: VK_Mips_ABS_HI ; break ; case : Kind = MCSymbolRefExpr :: VK_Mips_ABS_LO ; break ; case : Kind = MCSymbolRefExpr :: VK_Mips_TPREL_HI ; break ; case : Kind = MCSymbolRefExpr :: VK_Mips_TPREL_LO ; break ; } const MCExpr * Expr = MCSymbolRefExpr :: create ( Symbol , Kind , Ctx ) ; if ( Offset ) { const MCExpr * OffsetExpr = MCConstantExpr :: create ( Offset , Ctx ) ; Expr = MCBinaryExpr :: createAdd ( Expr , OffsetExpr , Ctx ) ;" LLVM,RISCV,3491,"Predict the next statement of this code snippet: MCInstLower :: MCInstLower ( MCContext & ctx , AsmPrinter & asmprinter ) : Ctx ( ctx ) , AsmPrinter ( asmprinter ) {" LLVM,RISCV,3492,"Predict the next statement of this code snippet: MCInstLower :: MCInstLower ( MCContext & ctx , AsmPrinter & asmprinter ) : Ctx ( ctx ) , AsmPrinter ( asmprinter ) {" LLVM,RISCV,3493,"Predict the next statement of this code snippet: if ( lowerMachineOperandToMCOperand ( MO , MCOp , AP ) ) OutMI . addOperand ( MCOp ) ; } switch ( OutMI . getOpcode ( ) ) { case TargetOpcode :: PATCHABLE_FUNCTION_ENTER : { const Function & F = MI -> getParent ( ) -> getParent ( ) -> getFunction ( ) ; if ( F . hasFnAttribute ( ) ) { unsigned Num ; if ( F . getFnAttribute ( ) . getValueAsString ( ) . getAsInteger ( , Num ) ) return false ; AP . emitNops ( Num ) ; return true ; } break ; } case : OutMI . setOpcode ( ) ;" LLVM,RISCV,3494,"Predict the next statement of this code snippet: break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = lowerSymbolOperand ( MO , MO . getMBB ( ) -> getSymbol ( ) , AP ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = lowerSymbolOperand ( MO , AP . getSymbolPreferLocal ( * MO . getGlobal ( ) ) , AP ) ; break ; case MachineOperand :: MO_BlockAddress : MCOp = lowerSymbolOperand ( MO , AP . GetBlockAddressSymbol ( MO . getBlockAddress ( ) ) , AP ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = lowerSymbolOperand ( MO , AP . GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) , AP ) ; break ; case MachineOperand :: MO_ConstantPoolIndex : MCOp = lowerSymbolOperand ( MO , AP . GetCPISymbol ( MO . getIndex ( ) ) , AP ) ; break ; case MachineOperand :: MO_JumpTableIndex : MCOp = lowerSymbolOperand ( MO , AP . GetJTISymbol ( MO . getIndex ( ) ) , AP ) ;" LLVM,RISCV,3495,"Predict the next statement of this code snippet: break ; case : Kind = MCExpr :: VK__CALL ; break ; case : Kind = MCExpr :: VK__CALL_PLT ; break ; case : Kind = MCExpr :: VK__LO ; break ; case : Kind = MCExpr :: VK__HI ; break ; case : Kind = MCExpr :: VK__PCREL_LO ; break ; case : Kind = MCExpr :: VK__PCREL_HI ; break ; case : Kind = MCExpr :: VK__GOT_HI ; break ; case : Kind = MCExpr :: VK__TPREL_LO ; break ; case : Kind = MCExpr :: VK__TPREL_HI ; break ;" LLVM,RISCV,3496,"Predict the next statement of this code snippet: switch ( MO . getType ( ) ) { default : report_fatal_error ( ) ; case MachineOperand :: MO_Register : if ( MO . isImplicit ( ) ) return false ; MCOp = MCOperand :: createReg ( MO . getReg ( ) ) ; break ; case MachineOperand :: MO_RegisterMask : return false ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = lowerSymbolOperand ( MO , MO . getMBB ( ) -> getSymbol ( ) , AP ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = lowerSymbolOperand ( MO , AP . getSymbol ( MO . getGlobal ( ) ) , AP ) ; break ; case MachineOperand :: MO_BlockAddress : MCOp = lowerSymbolOperand ( MO , AP . GetBlockAddressSymbol ( MO . getBlockAddress ( ) ) , AP ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = lowerSymbolOperand ( MO , AP . GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) , AP ) ; break ;" LLVM,RISCV,3497,"Predict the next statement of this code snippet: const MachineBasicBlock * MBB = MI -> getParent ( ) ; assert ( MBB && ) ; const MachineFunction * MF = MBB -> getParent ( ) ; assert ( MF && ) ; const TargetRegisterInfo * TRI = MF -> getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; assert ( TRI && ) ; uint64_t TSFlags = MI -> getDesc ( ) . TSFlags ; int NumOps = MI -> getNumExplicitOperands ( ) ; for ( const MachineOperand & MO : MI -> explicit_operands ( ) ) { int OpNo = ( int ) MI -> getOperandNo ( & MO ) ; assert ( OpNo >= && ) ; if ( ( TSFlags & ) && OpNo == ( NumOps - ) ) continue ; if ( ( TSFlags & ) && OpNo == ( NumOps - ) ) continue ; if ( ( TSFlags & ) && OpNo == ) {" LLVM,RISCV,3498,"Predict the next statement of this code snippet: if ( lowerVMachineInstrToMCInst ( MI , OutMI ) ) return false ; OutMI . setOpcode ( MI -> getOpcode ( ) ) ; for ( const MachineOperand & MO : MI -> operands ( ) ) { MCOperand MCOp ; if ( LowerMachineOperandToMCOperand ( MO , MCOp , AP ) ) OutMI . addOperand ( MCOp ) ; } switch ( OutMI . getOpcode ( ) ) { case TargetOpcode :: PATCHABLE_FUNCTION_ENTER : { const Function & F = MI -> getParent ( ) -> getParent ( ) -> getFunction ( ) ; if ( F . hasFnAttribute ( ) ) { unsigned Num ; if ( F . getFnAttribute ( ) . getValueAsString ( ) . getAsInteger ( , Num ) ) return false ;" LLVM,RISCV,3499,"Predict the next statement of this code snippet: switch ( OutMI . getOpcode ( ) ) { case TargetOpcode :: PATCHABLE_FUNCTION_ENTER : { const Function & F = MI -> getParent ( ) -> getParent ( ) -> getFunction ( ) ; if ( F . hasFnAttribute ( ) ) { unsigned Num ; if ( F . getFnAttribute ( ) . getValueAsString ( ) . getAsInteger ( , Num ) ) return false ; AP . emitNops ( Num ) ; return true ; } break ; } case : OutMI . setOpcode ( ) ;" LLVM,RISCV,3500,"Predict the next statement of this code snippet: MCOp = lowerSymbolOperand ( MO , AP . GetBlockAddressSymbol ( MO . getBlockAddress ( ) ) , AP ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = lowerSymbolOperand ( MO , AP . GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) , AP ) ; break ; case MachineOperand :: MO_ConstantPoolIndex : MCOp = lowerSymbolOperand ( MO , AP . GetCPISymbol ( MO . getIndex ( ) ) , AP ) ; break ; case MachineOperand :: MO_JumpTableIndex : MCOp = lowerSymbolOperand ( MO , AP . GetJTISymbol ( MO . getIndex ( ) ) , AP ) ; break ;" LLVM,RISCV,3501,"Predict the next statement of this code snippet: case MachineOperand :: MO_Register : if ( MO . isImplicit ( ) ) return false ; MCOp = MCOperand :: createReg ( MO . getReg ( ) ) ; break ; case MachineOperand :: MO_RegisterMask : return false ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = MCOperand :: createExpr ( MCSymbolRefExpr :: create ( MO . getMBB ( ) -> getSymbol ( ) , AP . OutContext ) ) ; break ;" LLVM,RISCV,3502,"Predict the next statement of this code snippet: switch ( MO . getTargetFlags ( ) ) { default : llvm_unreachable ( ) ; case : Kind = MCExpr :: VK__None ; break ; case : Kind = MCExpr :: VK__LO ; break ; case : Kind = MCExpr :: VK__HI ; break ; } const MCExpr * ME = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , Ctx ) ;" LLVM,RISCV,3503,"Predict the next statement of this code snippet: static MCOperand lowerSymbolOperand ( const MachineOperand & MO , MCSymbol * Sym , const AsmPrinter & AP ) { MCContext & Ctx = AP . OutContext ; MCExpr :: VariantKind Kind ; switch ( MO . getTargetFlags ( ) ) { default : llvm_unreachable ( ) ; case : Kind = MCExpr :: VK__None ; break ; case : Kind = MCExpr :: VK__CALL ; break ; case : Kind = MCExpr :: VK__LO ; break ; case : Kind = MCExpr :: VK__HI ; break ; case :" LLVM,RISCV,3504,"Predict the next statement of this code snippet: switch ( MO . getTargetFlags ( ) ) { default : llvm_unreachable ( ) ; case : Kind = MCExpr :: VK__None ; break ; case : Kind = MCExpr :: VK__CALL ; break ; case : Kind = MCExpr :: VK__LO ; break ; case : Kind = MCExpr :: VK__HI ; break ; case : Kind = MCExpr :: VK__PCREL_LO ; break ;" LLVM,RISCV,3505,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; case : Kind = MCExpr :: VK__None ; break ; case : Kind = MCExpr :: VK__LO ; break ; case : Kind = MCExpr :: VK__HI ; break ; }" LLVM,RISCV,3506,"Predict the next statement of this code snippet: if ( ! MO . isJTI ( ) && ! MO . isMBB ( ) && MO . getOffset ( ) ) ME = MCBinaryExpr :: createAdd ( ME , MCConstantExpr :: create ( MO . getOffset ( ) , Ctx ) , Ctx ) ; if ( Kind != MCExpr :: VK__None ) ME = MCExpr :: create ( ME , Kind , Ctx ) ; return MCOperand :: createExpr ( ME ) ;" LLVM,RISCV,3507,"Predict the next statement of this code snippet: MCContext & Ctx = AP . OutContext ; MCExpr :: VariantKind Kind ; switch ( MO . getTargetFlags ( ) ) { default : llvm_unreachable ( ) ; case : Kind = MCExpr :: VK__None ; break ; case : Kind = MCExpr :: VK__CALL ; break ; case : Kind = MCExpr :: VK__LO ; break ; case : Kind = MCExpr :: VK__HI ; break ; case : Kind = MCExpr :: VK__PCREL_LO ; break ; case : Kind = MCExpr :: VK__PCREL_HI ; break ; case : Kind = MCExpr :: VK__GOT_HI ; break ; } const MCExpr * ME = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , Ctx ) ; if ( ! MO . isJTI ( ) && ! MO . isMBB ( ) && MO . getOffset ( ) ) ME = MCBinaryExpr :: createAdd ( ME , MCConstantExpr :: create ( MO . getOffset ( ) , Ctx ) , Ctx ) ;" LLVM,RISCV,3508,"Predict the next statement of this code snippet: Kind = MCExpr :: VK__HI ; break ; case : Kind = MCExpr :: VK__PCREL_LO ; break ; case : Kind = MCExpr :: VK__PCREL_HI ; break ; case : Kind = MCExpr :: VK__GOT_HI ; break ; } const MCExpr * ME = MCSymbolRefExpr :: create ( Sym , MCSymbolRefExpr :: VK_None , Ctx ) ; if ( ! MO . isJTI ( ) && ! MO . isMBB ( ) && MO . getOffset ( ) ) ME = MCBinaryExpr :: createAdd ( ME , MCConstantExpr :: create ( MO . getOffset ( ) , Ctx ) , Ctx ) ; if ( Kind != MCExpr :: VK__None ) ME = MCExpr :: create ( ME , Kind , Ctx ) ; return MCOperand :: createExpr ( ME ) ;" LLVM,RISCV,3509,"Predict the next statement of this code snippet: case : case : return MCSymbolRefExpr :: VK_TPREL ; } llvm_unreachable ( ) ;" LLVM,RISCV,3510,"Predict the next statement of this code snippet: switch ( MO . getTargetFlags ( ) ) { case : TargetKind = MCExpr :: VK__HI20 ; break ; case : TargetKind = MCExpr :: VK__LO12 ; break ; case : TargetKind = MCExpr :: VK__TPREL_HI20 ; break ; case : TargetKind = MCExpr :: VK__TPREL_LO12 ; break ;" LLVM,RISCV,3511,"Predict the next statement of this code snippet: MCExpr :: VariantKind TargetKind = MCExpr :: VK__None ; switch ( MO . getTargetFlags ( ) ) { case : TargetKind = MCExpr :: VK__HI20 ; break ; case : TargetKind = MCExpr :: VK__LO12 ; break ; case : TargetKind = MCExpr :: VK__TPREL_HI20 ; break ; case : TargetKind = MCExpr :: VK__TPREL_LO12 ; break ; } const MCExpr * Expr = MCSymbolRefExpr :: create ( Symbol , Kind , Ctx ) ; if ( Offset ) { const MCExpr * OffsetExpr = MCConstantExpr :: create ( Offset , Ctx ) ;" LLVM,RISCV,3512,"Predict the next statement of this code snippet: for ( const MachineOperand & MO : MI -> operands ( ) ) { MCOperand MCOp ; if ( LowerMachineOperandToMCOperand ( MO , MCOp , AP ) ) OutMI . addOperand ( MCOp ) ;" LLVM,RISCV,3513,"Predict the next statement of this code snippet: bool llvm :: LowerMachineOperandToMCOperand ( const MachineOperand & MO , MCOperand & MCOp , const AsmPrinter & AP ) { switch ( MO . getType ( ) ) { default : report_fatal_error ( ) ; case MachineOperand :: MO_Register : if ( MO . isImplicit ( ) ) return false ; MCOp = MCOperand :: createReg ( MO . getReg ( ) ) ; break ; case MachineOperand :: MO_RegisterMask : return false ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = lowerSymbolOperand ( MO , MO . getMBB ( ) -> getSymbol ( ) , AP ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = lowerSymbolOperand ( MO , AP . getSymbol ( MO . getGlobal ( ) ) , AP ) ; break ;" LLVM,RISCV,3514,"Predict the next statement of this code snippet: OutMI . setOpcode ( RVV -> BaseInstr ) ; const MachineBasicBlock * MBB = MI -> getParent ( ) ; assert ( MBB && ) ; const MachineFunction * MF = MBB -> getParent ( ) ; assert ( MF && ) ; const TargetRegisterInfo * TRI = MF -> getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; assert ( TRI && ) ; for ( const MachineOperand & MO : MI -> explicit_operands ( ) ) { int OpNo = ( int ) MI -> getOperandNo ( & MO ) ; assert ( OpNo >= && ) ; if ( OpNo == RVV -> getVLIndex ( ) || OpNo == RVV -> getSEWIndex ( ) || OpNo == RVV -> getMergeOpIndex ( ) ) continue ; MCOperand MCOp ; switch ( MO . getType ( ) ) { default : llvm_unreachable ( ) ; case MachineOperand :: MO_Register : { unsigned Reg = MO . getReg ( ) ; if ( . contains ( Reg ) || . contains ( Reg ) || . contains ( Reg ) ) {" LLVM,RISCV,3515,"Predict the next statement of this code snippet: switch ( MO . getType ( ) ) { default : report_fatal_error ( ) ; case MachineOperand :: MO_Register : if ( MO . isImplicit ( ) ) return false ; MCOp = MCOperand :: createReg ( MO . getReg ( ) ) ; break ; case MachineOperand :: MO_RegisterMask : return false ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = lowerSymbolOperand ( MO , MO . getMBB ( ) -> getSymbol ( ) , AP ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = lowerSymbolOperand ( MO , AP . getSymbol ( MO . getGlobal ( ) ) , AP ) ;" LLVM,RISCV,3516,"Predict the next statement of this code snippet: for ( const MachineOperand & MO : MI -> operands ( ) ) { MCOperand MCOp ; if ( LowerMachineOperandToMCOperand ( MO , MCOp , AP ) ) OutMI . addOperand ( MCOp ) ; }" LLVM,RISCV,3517,"Predict the next statement of this code snippet: MCOperand MCOp ;" LLVM,RISCV,3518,"Predict the next statement of this code snippet: if ( MO . isImplicit ( ) ) return false ; MCOp = MCOperand :: createReg ( MO . getReg ( ) ) ; break ; case MachineOperand :: MO_RegisterMask : return false ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = lowerSymbolOperand ( MO , MO . getMBB ( ) -> getSymbol ( ) , AP ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = lowerSymbolOperand ( MO , AP . getSymbol ( MO . getGlobal ( ) ) , AP ) ; break ; case MachineOperand :: MO_BlockAddress : MCOp = lowerSymbolOperand ( MO , AP . GetBlockAddressSymbol ( MO . getBlockAddress ( ) ) , AP ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = lowerSymbolOperand ( MO , AP . GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) , AP ) ; break ; case MachineOperand :: MO_ConstantPoolIndex : MCOp = lowerSymbolOperand ( MO , AP . GetCPISymbol ( MO . getIndex ( ) ) , AP ) ;" LLVM,RISCV,3519,"Predict the next statement of this code snippet: MCOp = MCOperand :: createReg ( MO . getReg ( ) ) ; break ; case MachineOperand :: MO_RegisterMask : return false ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = lowerSymbolOperand ( MO , MO . getMBB ( ) -> getSymbol ( ) , AP ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = lowerSymbolOperand ( MO , AP . getSymbol ( MO . getGlobal ( ) ) , AP ) ; break ; case MachineOperand :: MO_BlockAddress : MCOp = lowerSymbolOperand ( MO , AP . GetBlockAddressSymbol ( MO . getBlockAddress ( ) ) , AP ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = lowerSymbolOperand ( MO , AP . GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) , AP ) ;" LLVM,RISCV,3520,"Predict the next statement of this code snippet: const MCSubtargetInfo * STI = getContext ( ) . getSubtargetInfo ( ) ;" LLVM,RISCV,3521,"Predict the next statement of this code snippet: unsigned ( ) const {" LLVM,RISCV,3522,"Predict the next statement of this code snippet: assert ( ! IsPCRel && ) ; return getTLSLEReloc ( Kind ) ; case MCSymbolRefExpr :: VK_GOT : llvm_unreachable ( ) ; case MCSymbolRefExpr :: VK_PLT : assert ( IsPCRel && ) ; return getPLTReloc ( Kind ) ;" LLVM,RISCV,3523,"Predict the next statement of this code snippet: MCSymbolRefExpr :: VariantKind Modifier = ( Target . isAbsolute ( ) ? MCSymbolRefExpr :: VK_None : Target . getSymA ( ) -> getKind ( ) ) ; unsigned Kind = Fixup . getKind ( ) ; switch ( Modifier ) { case MCSymbolRefExpr :: VK_None : if ( IsPCRel ) return getPCRelReloc ( Kind ) ; return getAbsoluteReloc ( Kind ) ; case MCSymbolRefExpr :: VK_NTPOFF : assert ( ! IsPCRel && ) ; return getTLSLEReloc ( Kind ) ; case MCSymbolRefExpr :: VK_GOT : llvm_unreachable ( ) ; case MCSymbolRefExpr :: VK_PLT : assert ( IsPCRel && ) ; return getPLTReloc ( Kind ) ;" LLVM,RISCV,3524,"Predict the next statement of this code snippet: case FK_Data_4 : return ELF :: R__32 ;" LLVM,RISCV,3525,"Predict the next statement of this code snippet: static unsigned getAbsoluteReloc ( unsigned Kind ) {" LLVM,RISCV,3526,"Predict the next statement of this code snippet: static unsigned getPCRelReloc ( unsigned Kind ) { switch ( Kind ) { case FK_Data_4 : return ELF :: R__CALL ; case : return ELF :: R__BRANCH ;" LLVM,RISCV,3527,"Predict the next statement of this code snippet: case : return ELF :: R__CALL_PLT ; }" LLVM,RISCV,3528,"Predict the next statement of this code snippet: unsigned Kind = Fixup . getKind ( ) ; switch ( Modifier ) { case MCSymbolRefExpr :: VK_None : if ( IsPCRel ) return getPCRelReloc ( Kind ) ; return getAbsoluteReloc ( Kind ) ; case MCSymbolRefExpr :: VK_NTPOFF : assert ( ! IsPCRel && ) ; return getTLSLEReloc ( Kind ) ; case MCSymbolRefExpr :: VK_GOT :" LLVM,RISCV,3529,"Predict the next statement of this code snippet: case FK_Data_4 : return ELF :: R__TLS_TPREL32 ; case FK_Data_8 : return ELF :: R__TLS_TPREL64 ; }" LLVM,RISCV,3530,"Predict the next statement of this code snippet: case FK_Data_4 : return ELF :: R__TLS_TPREL32 ; case FK_Data_8 : return ELF :: R__TLS_TPREL64 ; } llvm_unreachable ( ) ;" LLVM,RISCV,3531,"Predict the next statement of this code snippet: ( uint8_t OSABI ) : MCELFObjectTargetWriter ( true , OSABI , ELF :: EM_ , true ) {" LLVM,RISCV,3532,"Predict the next statement of this code snippet: ( uint8_t OSABI ) : MCELFObjectTargetWriter ( true , OSABI , ELF :: EM_ , true ) {" LLVM,RISCV,3533,"Predict the next statement of this code snippet: ObjectWriter ( ) {" LLVM,RISCV,3534,"Predict the next statement of this code snippet: ObjectWriter ( ) {" LLVM,RISCV,3535,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT ) { MCAsmInfo * MAI = new MCAsmInfo ( ) ; MCCFIInstruction Inst = MCCFIInstruction :: createDefCfa ( nullptr , MRI . getDwarfRegNum ( , true ) , ) ; MAI -> addInitialFrameState ( Inst ) ;" LLVM,RISCV,3536,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT ) { MCAsmInfo * MAI = new MCAsmInfo ( ) ; MCCFIInstruction Inst = MCCFIInstruction :: createDefCfa ( nullptr , MRI . getDwarfRegNum ( , true ) , ) ; MAI -> addInitialFrameState ( Inst ) ;" LLVM,RISCV,3537,"Predict the next statement of this code snippet: if ( CM == CodeModel :: Default ) CM = CodeModel :: Small ; else if ( CM == CodeModel :: JITDefault ) CM = RM == Reloc :: PIC_ ? CodeModel :: Small : CodeModel :: Medium ; X -> initMCCodeGenInfo ( RM , CM , OL ) ; return X ;" LLVM,RISCV,3538,"Predict the next statement of this code snippet: if ( CM == CodeModel :: Default ) CM = CodeModel :: Small ; else if ( CM == CodeModel :: JITDefault ) CM = RM == Reloc :: PIC_ ? CodeModel :: Small : CodeModel :: Medium ; X -> initMCCodeGenInfo ( RM , CM , OL ) ;" LLVM,RISCV,3539,"Predict the next statement of this code snippet: static MCInstPrinter * createMCInstPrinter ( const Triple & TT , unsigned SyntaxVariant , const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) {" LLVM,RISCV,3540,"Predict the next statement of this code snippet: MCInstrInfo * X = new MCInstrInfo ( ) ; InitMCInstrInfo ( X ) ; return X ;" LLVM,RISCV,3541,"Predict the next statement of this code snippet: MCInstrInfo * X = new MCInstrInfo ( ) ; InitMCInstrInfo ( X ) ;" LLVM,RISCV,3542,"Predict the next statement of this code snippet: return createELFStreamer ( Ctx , MAB , OS , Emitter , RelaxAll ) ;" LLVM,RISCV,3543,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( const Triple & TT , StringRef CPU , StringRef FS ) {" LLVM,RISCV,3544,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( const Triple & TT , StringRef CPU , StringRef FS ) {" LLVM,RISCV,3545,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCCodeGenInfo ( The64Target , createMCCodeGenInfo ) ; TargetRegistry :: RegisterMCCodeEmitter ( TheTarget , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCCodeEmitter ( The64Target , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget , createMCInstrInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCRegInfo ( The64Target , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( TheTarget , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( The64Target , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( TheTarget , createMCAsmBackend ) ; TargetRegistry :: RegisterMCAsmBackend ( The64Target , createMCAsmBackend ) ; TargetRegistry :: RegisterMCInstPrinter ( TheTarget , createMCInstPrinter ) ; TargetRegistry :: RegisterMCInstPrinter ( The64Target , createMCInstPrinter ) ; TargetRegistry :: RegisterELFStreamer ( TheTarget , createMCObjectStreamer ) ; TargetRegistry :: RegisterELFStreamer ( The64Target , createMCObjectStreamer ) ;" LLVM,RISCV,3546,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( const Triple & TT , StringRef CPU , StringRef FS ) {" LLVM,RISCV,3547,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterObjectTargetStreamer ( * T , createObjectTargetStreamer ) ; TargetRegistry :: RegisterMCInstrAnalysis ( * T , createInstrAnalysis ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createAsmTargetStreamer ) ;" LLVM,RISCV,3548,"Predict the next statement of this code snippet: for ( Target * T : { & getThe32Target ( ) , & getThe64Target ( ) } ) { TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterObjectTargetStreamer ( * T , createObjectTargetStreamer ) ; TargetRegistry :: RegisterMCInstrAnalysis ( * T , createInstrAnalysis ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createAsmTargetStreamer ) ; TargetRegistry :: RegisterNullTargetStreamer ( * T , createNullTargetStreamer ) ;" LLVM,RISCV,3549,"Predict the next statement of this code snippet: if ( TT . isOSBinFormatELF ( ) ) return new TargetELFStreamer ( S , STI ) ;" LLVM,RISCV,3550,"Predict the next statement of this code snippet: static MCTargetStreamer * createObjectTargetStreamer ( MCStreamer & S , const MCSubtargetInfo & STI ) { const Triple & TT = STI . getTargetTriple ( ) ;" LLVM,RISCV,3551,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ;" LLVM,RISCV,3552,"Predict the next statement of this code snippet: MCCFIInstruction Inst = MCCFIInstruction :: createDefCfa ( nullptr , SP , ) ; MAI -> addInitialFrameState ( Inst ) ;" LLVM,RISCV,3553,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT ) {" LLVM,RISCV,3554,"Predict the next statement of this code snippet: MCAsmInfo * MAI = new MCAsmInfo ( TT ) ; return MAI ;" LLVM,RISCV,3555,"Predict the next statement of this code snippet: static MCRegisterInfo * createMCRegisterInfo ( const Triple & TT ) { MCRegisterInfo * X = new MCRegisterInfo ( ) ;" LLVM,RISCV,3556,"Predict the next statement of this code snippet: static MCRegisterInfo * createMCRegisterInfo ( const Triple & TT ) { MCRegisterInfo * X = new MCRegisterInfo ( ) ;" LLVM,RISCV,3557,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ;" LLVM,RISCV,3558,"Predict the next statement of this code snippet: for ( Target * T : { & getThe32Target ( ) , & getThe64Target ( ) } ) { RegisterMCAsmInfoFn X ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ;" LLVM,RISCV,3559,"Predict the next statement of this code snippet: std :: string CPUName = std :: string ( CPU ) ; if ( CPUName . empty ( ) ) CPUName = TT . isArch64Bit ( ) ? : ;" LLVM,RISCV,3560,"Predict the next statement of this code snippet: std :: string CPUName = std :: string ( CPU ) ;" LLVM,RISCV,3561,"Predict the next statement of this code snippet: if ( CPU == ) report_fatal_error ( Twine ( ) + ( TT . isArch64Bit ( ) ? : ) ) ;" LLVM,RISCV,3562,"Predict the next statement of this code snippet: if ( CPU . empty ( ) ) CPU = TT . isArch64Bit ( ) ? : ;" LLVM,RISCV,3563,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT , const MCTargetOptions & Options ) { MCAsmInfo * MAI = new MCAsmInfo ( TT ) ; Register SP = MRI . getDwarfRegNum ( , true ) ; MCCFIInstruction Inst = MCCFIInstruction :: createDefCfa ( nullptr , SP , ) ; MAI -> addInitialFrameState ( Inst ) ;" LLVM,RISCV,3564,"Predict the next statement of this code snippet: MCAsmInfo * MAI = new MCAsmInfo ( TT ) ; Register SP = MRI . getDwarfRegNum ( , true ) ; MCCFIInstruction Inst = MCCFIInstruction :: createDefCfa ( nullptr , SP , ) ; MAI -> addInitialFrameState ( Inst ) ; return MAI ;" LLVM,RISCV,3565,"Predict the next statement of this code snippet: MCStreamer * createELFStreamer ( const Triple & T , MCContext & Context , std :: unique_ptr < MCAsmBackend > && MAB , std :: unique_ptr < MCObjectWriter > && MOW , std :: unique_ptr < MCCodeEmitter > && MCE , bool RelaxAll ) {" LLVM,RISCV,3566,"Predict the next statement of this code snippet: return createELFStreamer ( Context , std :: move ( MAB ) , std :: move ( MOW ) , std :: move ( MCE ) , RelaxAll ) ;" LLVM,RISCV,3567,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT , const MCTargetOptions & Options ) { MCAsmInfo * MAI = new MCAsmInfo ( TT ) ; MCRegister SP = MRI . getDwarfRegNum ( , true ) ; MCCFIInstruction Inst = MCCFIInstruction :: cfiDefCfa ( nullptr , SP , ) ;" LLVM,RISCV,3568,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT , const MCTargetOptions & Options ) { MCAsmInfo * MAI = new MCAsmInfo ( TT ) ;" LLVM,RISCV,3569,"Predict the next statement of this code snippet: MOFI -> initMCObjectFileInfo ( Ctx , PIC , LargeCodeModel ) ;" LLVM,RISCV,3570,"Predict the next statement of this code snippet: MCObjectFileInfo * MOFI = new MCObjectFileInfo ( ) ; MOFI -> initMCObjectFileInfo ( Ctx , PIC , LargeCodeModel ) ;" LLVM,RISCV,3571,"Predict the next statement of this code snippet: if ( CPU . empty ( ) || CPU == ) CPU = TT . isArch64Bit ( ) ? : ;" LLVM,RISCV,3572,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( const Triple & TT , StringRef CPU , StringRef FS ) {" LLVM,RISCV,3573,"Predict the next statement of this code snippet: return new TargetStreamer ( S ) ;" LLVM,RISCV,3574,"Predict the next statement of this code snippet: if ( Size == ) Imm = Inst . getOperand ( ) . getImm ( ) ; else Imm = Inst . getOperand ( ) . getImm ( ) ; Target = Addr + Imm ; return true ; } if ( Inst . getOpcode ( ) == || Inst . getOpcode ( ) == ) { Target = Addr + Inst . getOperand ( ) . getImm ( ) ; return true ; }" LLVM,RISCV,3575,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCObjectFileInfo ( * T , createMCObjectFileInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterELFStreamer ( * T , createELFStreamer ) ;" LLVM,RISCV,3576,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterELFStreamer ( * T , createELFStreamer ) ; TargetRegistry :: RegisterObjectTargetStreamer ( * T , createObjectTargetStreamer ) ; TargetRegistry :: RegisterMCInstrAnalysis ( * T , createInstrAnalysis ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createAsmTargetStreamer ) ;" LLVM,RISCV,3577,"Predict the next statement of this code snippet: explicit MCInstrAnalysis ( const MCInstrInfo * Info ) : MCInstrAnalysis ( Info ) {" LLVM,RISCV,3578,"Predict the next statement of this code snippet: explicit MCInstrAnalysis ( const MCInstrInfo * Info ) : MCInstrAnalysis ( Info ) {" LLVM,RISCV,3579,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ;" LLVM,RISCV,3580,"Predict the next statement of this code snippet: MCRegister SP = MRI . getDwarfRegNum ( SPReg , true ) ; MCCFIInstruction Inst = MCCFIInstruction :: cfiDefCfa ( nullptr , SP , ) ; MAI -> addInitialFrameState ( Inst ) ;" LLVM,RISCV,3581,"Predict the next statement of this code snippet: if ( ABI != && ( ABI ) ) RAReg = ; else RAReg = ;" LLVM,RISCV,3582,"Predict the next statement of this code snippet: for ( Target * T : { & getThe32Target ( ) , & getThe64Target ( ) } ) { TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterELFStreamer ( * T , createELFStreamer ) ; TargetRegistry :: RegisterObjectTargetStreamer ( * T , createObjectTargetStreamer ) ;" LLVM,RISCV,3583,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeTargetMC ( ) { for ( Target * T : { & getThe32Target ( ) , & getThe64Target ( ) } ) { TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ;" LLVM,RISCV,3584,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterObjectTargetStreamer ( * T , createObjectTargetStreamer ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createAsmTargetStreamer ) ; }" LLVM,RISCV,3585,"Predict the next statement of this code snippet: void LLVMInitializeTargetMC ( ) { for ( Target * T : { & getThe32Target ( ) , & getThe64Target ( ) } ) { TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ;" LLVM,RISCV,3586,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCCodeEmitter ( TheTarget , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCCodeEmitter ( The64Target , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget , createMCInstrInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( The64Target , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCRegInfo ( The64Target , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( TheTarget , createMCSubtargetInfo ) ;" LLVM,RISCV,3587,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT ) { MCAsmInfo * MAI = new MCAsmInfo ( TT ) ; unsigned Reg = MRI . getDwarfRegNum ( , true ) ;" LLVM,RISCV,3588,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterObjectTargetStreamer ( * T , createObjectTargetStreamer ) ; TargetRegistry :: RegisterMCInstrAnalysis ( * T , createInstrAnalysis ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createAsmTargetStreamer ) ;" LLVM,RISCV,3589,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfoImpl ) ; }" LLVM,RISCV,3590,"Predict the next statement of this code snippet: void LLVMInitializeTargetMC ( ) { for ( Target * T : { & getThe32Target ( ) , & getThe64Target ( ) } ) { TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ;" LLVM,RISCV,3591,"Predict the next statement of this code snippet: return new TargetAsmStreamer ( S , OS ) ;" LLVM,RISCV,3592,"Predict the next statement of this code snippet: return new TargetAsmStreamer ( S , OS ) ;" LLVM,RISCV,3593,"Predict the next statement of this code snippet: static MCAsmInfo * createMCAsmInfo ( const MCRegisterInfo & MRI , const Triple & TT ) { return new MCAsmInfo ( TT ) ;" LLVM,RISCV,3594,"Predict the next statement of this code snippet: InitMCRegisterInfo ( X , ) ;" LLVM,RISCV,3595,"Predict the next statement of this code snippet: const Triple & TT = STI . getTargetTriple ( ) ; if ( TT . isOSBinFormatELF ( ) ) return new TargetELFStreamer ( S , STI ) ; return nullptr ;" LLVM,RISCV,3596,"Predict the next statement of this code snippet: const Triple & TT = STI . getTargetTriple ( ) ; if ( TT . isOSBinFormatELF ( ) ) return new TargetELFStreamer ( S , STI ) ; return nullptr ;" LLVM,RISCV,3597,"Predict the next statement of this code snippet: void LLVMInitializeTargetMC ( ) { for ( Target * T : { & getThe32Target ( ) , & getThe64Target ( ) } ) { TargetRegistry :: RegisterMCAsmInfo ( * T , createMCAsmInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ;" LLVM,RISCV,3598,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCAsmBackend ( * T , createAsmBackend ) ; TargetRegistry :: RegisterMCCodeEmitter ( * T , createMCCodeEmitter ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterObjectTargetStreamer ( * T , createObjectTargetStreamer ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createAsmTargetStreamer ) ; }" LLVM,RISCV,3599,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : { if ( Tail . getOperand ( ) . isFI ( ) ) return false ; unsigned BaseAddrReg = Tail . getOperand ( ) . getReg ( ) ; if ( DestReg != BaseAddrReg ) return false ; MachineOperand & TailImmOp = Tail . getOperand ( ) ; int64_t Offset = TailImmOp . getImm ( ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ; Tail . RemoveOperand ( ) ; MachineOperand & ImmOp = LoADDI . getOperand ( ) ; ImmOp . setOffset ( Offset ) ; Tail . addOperand ( ImmOp ) ; Tail . getOperand ( ) . setReg ( HiLUI . getOperand ( ) . getReg ( ) ) ; DeadInstrs . insert ( & LoADDI ) ; return true ;" LLVM,RISCV,3600,"Predict the next statement of this code snippet: MachineInstr & Tail = * MRI -> use_begin ( DestReg ) -> getParent ( ) ; switch ( Tail . getOpcode ( ) ) { default : LLVM_DEBUG ( dbgs ( ) << << Tail ) ; return false ; case : { int64_t Offset = Tail . getOperand ( ) . getImm ( ) ; LLVM_DEBUG ( dbgs ( ) << << Tail ) ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } break ; case : { int64_t Offset ; if ( ! matchLargeOffset ( Tail , DestReg , Offset ) ) return false ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } break ; case : case : case : case : case : case : case : case :" LLVM,RISCV,3601,"Predict the next statement of this code snippet: bool MergeBaseOffsetOpt :: detectLuiAddiGlobal ( MachineInstr & HiLUI , MachineInstr * & LoADDI ) { if ( HiLUI . getOpcode ( ) != || HiLUI . getOperand ( ) . getTargetFlags ( ) != || HiLUI . getOperand ( ) . getType ( ) != MachineOperand :: MO_GlobalAddress || HiLUI . getOperand ( ) . getOffset ( ) != || ! MRI -> hasOneUse ( HiLUI . getOperand ( ) . getReg ( ) ) ) return false ; unsigned HiLuiDestReg = HiLUI . getOperand ( ) . getReg ( ) ; LoADDI = MRI -> use_begin ( HiLuiDestReg ) -> getParent ( ) ;" LLVM,RISCV,3602,"Predict the next statement of this code snippet: bool MergeBaseOffsetOpt :: detectLuiAddiGlobal ( MachineInstr & HiLUI , MachineInstr * & LoADDI ) { if ( HiLUI . getOpcode ( ) != || HiLUI . getOperand ( ) . getTargetFlags ( ) != || HiLUI . getOperand ( ) . getType ( ) != MachineOperand :: MO_GlobalAddress || HiLUI . getOperand ( ) . getOffset ( ) != || ! MRI -> hasOneUse ( HiLUI . getOperand ( ) . getReg ( ) ) ) return false ;" LLVM,RISCV,3603,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : { if ( Tail . getOperand ( ) . isFI ( ) ) return false ; Register BaseAddrReg = Tail . getOperand ( ) . getReg ( ) ; if ( DestReg != BaseAddrReg ) return false ; MachineOperand & TailImmOp = Tail . getOperand ( ) ; int64_t Offset = TailImmOp . getImm ( ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ; Tail . RemoveOperand ( ) ; MachineOperand & ImmOp = LoADDI . getOperand ( ) ;" LLVM,RISCV,3604,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : { if ( Tail . getOperand ( ) . isFI ( ) ) return false ; Register BaseAddrReg = Tail . getOperand ( ) . getReg ( ) ; if ( DestReg != BaseAddrReg ) return false ; MachineOperand & TailImmOp = Tail . getOperand ( ) ; int64_t Offset = TailImmOp . getImm ( ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ; Tail . RemoveOperand ( ) ; MachineOperand & ImmOp = LoADDI . getOperand ( ) ; ImmOp . setOffset ( Offset ) ; Tail . addOperand ( ImmOp ) ; Tail . getOperand ( ) . setReg ( HiLUI . getOperand ( ) . getReg ( ) ) ; DeadInstrs . insert ( & LoADDI ) ; return true ;" LLVM,RISCV,3605,"Predict the next statement of this code snippet: default : LLVM_DEBUG ( dbgs ( ) << << Tail ) ; return false ; case : { int64_t Offset = Tail . getOperand ( ) . getImm ( ) ; LLVM_DEBUG ( dbgs ( ) << << Tail ) ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } break ; case : { int64_t Offset ; if ( ! matchLargeOffset ( Tail , DestReg , Offset ) ) return false ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } break ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { if ( Tail . getOperand ( ) . isFI ( ) ) return false ; Register BaseAddrReg = Tail . getOperand ( ) . getReg ( ) ; if ( DestReg != BaseAddrReg ) return false ; MachineOperand & TailImmOp = Tail . getOperand ( ) ; int64_t Offset = TailImmOp . getImm ( ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ; Tail . RemoveOperand ( ) ; MachineOperand & ImmOp = LoADDI . getOperand ( ) ; ImmOp . setOffset ( Offset ) ; Tail . addOperand ( ImmOp ) ; Tail . getOperand ( ) . setReg ( HiLUI . getOperand ( ) . getReg ( ) ) ; DeadInstrs . insert ( & LoADDI ) ; return true ; } break ; } return false ;" LLVM,RISCV,3606,"Predict the next statement of this code snippet: MRI = & Fn . getRegInfo ( ) ; for ( MachineBasicBlock & MBB : Fn ) { LLVM_DEBUG ( dbgs ( ) << << MBB . getName ( ) << ) ; for ( MachineInstr & HiLUI : MBB ) {" LLVM,RISCV,3607,"Predict the next statement of this code snippet: MRI = & Fn . getRegInfo ( ) ; for ( MachineBasicBlock & MBB : Fn ) { LLVM_DEBUG ( dbgs ( ) << << MBB . getName ( ) << ) ; for ( MachineInstr & HiLUI : MBB ) { MachineInstr * LoADDI = nullptr ; if ( ! detectLuiAddiGlobal ( HiLUI , LoADDI ) ) continue ; LLVM_DEBUG ( dbgs ( ) << << * LoADDI -> getOperand ( ) . getGlobal ( ) << ) ; detectAndFoldOffset ( HiLUI , * LoADDI ) ; } } for ( auto * MI : DeadInstrs ) MI -> eraseFromParent ( ) ; return true ;" LLVM,RISCV,3608,"Predict the next statement of this code snippet: DeadInstrs . insert ( & Tail ) ; MRI -> replaceRegWith ( Tail . getOperand ( ) . getReg ( ) , LoADDI . getOperand ( ) . getReg ( ) ) ;" LLVM,RISCV,3609,"Predict the next statement of this code snippet: void MergeBaseOffsetOpt :: foldOffset ( MachineInstr & HiLUI , MachineInstr & LoADDI , MachineInstr & Tail , int64_t Offset ) { assert ( isInt < > ( Offset ) && ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ;" LLVM,RISCV,3610,"Predict the next statement of this code snippet: Register Rt = TailAdd . getOperand ( ) . getReg ( ) ; Register Reg = Rs == GAReg ? Rt : Rs ; if ( ! MRI -> hasOneUse ( Reg ) ) return false ; MachineInstr & OffsetTail = * MRI -> getVRegDef ( Reg ) ; if ( OffsetTail . getOpcode ( ) == ) { MachineOperand & AddiImmOp = OffsetTail . getOperand ( ) ; if ( AddiImmOp . getTargetFlags ( ) != ) return false ; int64_t OffLo = AddiImmOp . getImm ( ) ; MachineInstr & OffsetLui = * MRI -> getVRegDef ( OffsetTail . getOperand ( ) . getReg ( ) ) ; MachineOperand & LuiImmOp = OffsetLui . getOperand ( ) ; if ( OffsetLui . getOpcode ( ) != || LuiImmOp . getTargetFlags ( ) != || ! MRI -> hasOneUse ( OffsetLui . getOperand ( ) . getReg ( ) ) ) return false ; Offset = SignExtend64 < > ( LuiImmOp . getImm ( ) << ) ; Offset += OffLo ; if ( ! ST -> is64Bit ( ) ) Offset = SignExtend64 < > ( Offset ) ; if ( ! isInt < > ( Offset ) ) return false ; LLVM_DEBUG ( dbgs ( ) << << OffsetTail << << OffsetLui ) ; DeadInstrs . insert ( & OffsetTail ) ; DeadInstrs . insert ( & OffsetLui ) ; return true ; } else if ( OffsetTail . getOpcode ( ) == ) { LLVM_DEBUG ( dbgs ( ) << << OffsetTail ) ; Offset = SignExtend64 < > ( OffsetTail . getOperand ( ) . getImm ( ) << ) ; DeadInstrs . insert ( & OffsetTail ) ;" LLVM,RISCV,3611,"Predict the next statement of this code snippet: if ( ! MRI -> hasOneUse ( Reg ) ) return false ; MachineInstr & OffsetTail = * MRI -> getVRegDef ( Reg ) ; if ( OffsetTail . getOpcode ( ) == ) { MachineOperand & AddiImmOp = OffsetTail . getOperand ( ) ; if ( AddiImmOp . getTargetFlags ( ) != ) return false ; int64_t OffLo = AddiImmOp . getImm ( ) ; MachineInstr & OffsetLui = * MRI -> getVRegDef ( OffsetTail . getOperand ( ) . getReg ( ) ) ; MachineOperand & LuiImmOp = OffsetLui . getOperand ( ) ; if ( OffsetLui . getOpcode ( ) != || LuiImmOp . getTargetFlags ( ) != || ! MRI -> hasOneUse ( OffsetLui . getOperand ( ) . getReg ( ) ) ) return false ; Offset = SignExtend64 < > ( LuiImmOp . getImm ( ) << ) ; Offset += OffLo ; if ( ! ST -> is64Bit ( ) ) Offset = SignExtend64 < > ( Offset ) ; if ( ! isInt < > ( Offset ) ) return false ; LLVM_DEBUG ( dbgs ( ) << << OffsetTail << << OffsetLui ) ; DeadInstrs . insert ( & OffsetTail ) ; DeadInstrs . insert ( & OffsetLui ) ; return true ; } else if ( OffsetTail . getOpcode ( ) == ) { LLVM_DEBUG ( dbgs ( ) << << OffsetTail ) ; Offset = SignExtend64 < > ( OffsetTail . getOperand ( ) . getImm ( ) << ) ;" LLVM,RISCV,3612,"Predict the next statement of this code snippet: MRI = & Fn . getRegInfo ( ) ; for ( MachineBasicBlock & MBB : Fn ) { LLVM_DEBUG ( dbgs ( ) << << MBB . getName ( ) << ) ; for ( MachineInstr & HiLUI : MBB ) { MachineInstr * LoADDI = nullptr ;" LLVM,RISCV,3613,"Predict the next statement of this code snippet: case : { int64_t Offset = Tail . getOperand ( ) . getImm ( ) ; LLVM_DEBUG ( dbgs ( ) << << Tail ) ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } break ; case : { int64_t Offset ; if ( ! matchLargeOffset ( Tail , DestReg , Offset ) ) return false ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } break ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { if ( Tail . getOperand ( ) . isFI ( ) ) return false ; Register BaseAddrReg = Tail . getOperand ( ) . getReg ( ) ; if ( DestReg != BaseAddrReg ) return false ; MachineOperand & TailImmOp = Tail . getOperand ( ) ; int64_t Offset = TailImmOp . getImm ( ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ; Tail . RemoveOperand ( ) ; MachineOperand & ImmOp = LoADDI . getOperand ( ) ; ImmOp . setOffset ( Offset ) ; Tail . addOperand ( ImmOp ) ;" LLVM,RISCV,3614,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { if ( Tail . getOperand ( ) . isFI ( ) ) return false ; Register BaseAddrReg = Tail . getOperand ( ) . getReg ( ) ; if ( DestReg != BaseAddrReg ) return false ; MachineOperand & TailImmOp = Tail . getOperand ( ) ; int64_t Offset = TailImmOp . getImm ( ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ; Tail . removeOperand ( ) ; MachineOperand & ImmOp = LoADDI . getOperand ( ) ; ImmOp . setOffset ( Offset ) ; Tail . addOperand ( ImmOp ) ; Tail . getOperand ( ) . setReg ( HiLUI . getOperand ( ) . getReg ( ) ) ; DeadInstrs . insert ( & LoADDI ) ; return true ; } } return false ;" LLVM,RISCV,3615,"Predict the next statement of this code snippet: if ( LoADDI -> getOpcode ( ) != || LoADDI -> getOperand ( ) . getTargetFlags ( ) != || LoADDI -> getOperand ( ) . getType ( ) != MachineOperand :: MO_GlobalAddress || LoADDI -> getOperand ( ) . getOffset ( ) != || ! MRI -> hasOneUse ( LoADDI -> getOperand ( ) . getReg ( ) ) ) return false ; return true ;" LLVM,RISCV,3616,"Predict the next statement of this code snippet: return new MergeBaseOffsetOpt ( ) ;" LLVM,RISCV,3617,"Predict the next statement of this code snippet: MachineInstr & Tail = * MRI -> use_begin ( DestReg ) -> getParent ( ) ; switch ( Tail . getOpcode ( ) ) { default : LLVM_DEBUG ( dbgs ( ) << << Tail ) ; return false ; case : { int64_t Offset = Tail . getOperand ( ) . getImm ( ) ; LLVM_DEBUG ( dbgs ( ) << << Tail ) ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } case : { int64_t Offset ; if ( ! matchLargeOffset ( Tail , DestReg , Offset ) ) return false ; foldOffset ( HiLUI , LoADDI , Tail , Offset ) ; return true ; } case : case : case : case : case : case : case : case : case : case :" LLVM,RISCV,3618,"Predict the next statement of this code snippet: return true ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { if ( Tail . getOperand ( ) . isFI ( ) ) return false ; Register BaseAddrReg = Tail . getOperand ( ) . getReg ( ) ; if ( DestReg != BaseAddrReg ) return false ; MachineOperand & TailImmOp = Tail . getOperand ( ) ; int64_t Offset = TailImmOp . getImm ( ) ; HiLUI . getOperand ( ) . setOffset ( Offset ) ; Tail . removeOperand ( ) ; MachineOperand & ImmOp = LoADDI . getOperand ( ) ;" LLVM,RISCV,3619,"Predict the next statement of this code snippet: Register HiLuiDestReg = HiLUI . getOperand ( ) . getReg ( ) ; LoADDI = MRI -> use_begin ( HiLuiDestReg ) -> getParent ( ) ; if ( LoADDI -> getOpcode ( ) != || LoADDI -> getOperand ( ) . getTargetFlags ( ) != || LoADDI -> getOperand ( ) . getType ( ) != MachineOperand :: MO_GlobalAddress || LoADDI -> getOperand ( ) . getOffset ( ) != || ! MRI -> hasOneUse ( LoADDI -> getOperand ( ) . getReg ( ) ) ) return false ;" LLVM,RISCV,3620,"Predict the next statement of this code snippet: void MergeBaseOffsetOpt :: foldOffset ( MachineInstr & HiLUI , MachineInstr & LoADDI , MachineInstr & Tail , int64_t Offset ) { HiLUI . getOperand ( ) . setOffset ( Offset ) ; LoADDI . getOperand ( ) . setOffset ( Offset ) ; DeadInstrs . insert ( & Tail ) ;" LLVM,RISCV,3621,"Predict the next statement of this code snippet: DeadInstrs . insert ( & Tail ) ;" LLVM,RISCV,3622,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,RISCV,3623,"Predict the next statement of this code snippet: Register Rs = TailAdd . getOperand ( ) . getReg ( ) ; Register Rt = TailAdd . getOperand ( ) . getReg ( ) ; Register Reg = Rs == GAReg ? Rt : Rs ; if ( ! MRI -> hasOneUse ( Reg ) ) return false ; MachineInstr & OffsetTail = * MRI -> getVRegDef ( Reg ) ; if ( OffsetTail . getOpcode ( ) == ) { MachineOperand & AddiImmOp = OffsetTail . getOperand ( ) ; if ( AddiImmOp . getTargetFlags ( ) != ) return false ; int64_t OffLo = AddiImmOp . getImm ( ) ;" LLVM,RISCV,3624,"Predict the next statement of this code snippet: MergeBaseOffsetOpt ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3625,"Predict the next statement of this code snippet: MergeBaseOffsetOpt ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3626,"Predict the next statement of this code snippet: DeadInstrs . clear ( ) ; MRI = & Fn . getRegInfo ( ) ; for ( MachineBasicBlock & MBB : Fn ) { LLVM_DEBUG ( dbgs ( ) << << MBB . getName ( ) << ) ; for ( MachineInstr & HiLUI : MBB ) { MachineInstr * LoADDI = nullptr ; if ( ! detectLuiAddiGlobal ( HiLUI , LoADDI ) ) continue ; LLVM_DEBUG ( dbgs ( ) << << * LoADDI -> getOperand ( ) . getGlobal ( ) << ) ; MadeChange |= detectAndFoldOffset ( HiLUI , * LoADDI ) ;" LLVM,RISCV,3627,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << MBB . getName ( ) << ) ; for ( MachineInstr & HiLUI : MBB ) { MachineInstr * LoADDI = nullptr ; if ( ! detectLuiAddiGlobal ( HiLUI , LoADDI ) ) continue ; LLVM_DEBUG ( dbgs ( ) << << * LoADDI -> getOperand ( ) . getGlobal ( ) << ) ; MadeChange |= detectAndFoldOffset ( HiLUI , * LoADDI ) ; }" LLVM,RISCV,3628,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return _OPTIMIZE_VSETVL_USES_NAME ;" LLVM,RISCV,3629,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,RISCV,3630,"Predict the next statement of this code snippet: bool isSameRegisterClass ( unsigned Reg1 , unsigned Reg2 ) { return . contains ( Reg1 , Reg2 ) || . contains ( Reg1 , Reg2 ) ;" LLVM,RISCV,3631,"Predict the next statement of this code snippet: bool isSameRegisterClass ( unsigned Reg1 , unsigned Reg2 ) { return . contains ( Reg1 , Reg2 ) || . contains ( Reg1 , Reg2 ) ;" LLVM,RISCV,3632,"Predict the next statement of this code snippet: OptimizeVSETVLUses ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3633,"Predict the next statement of this code snippet: OptimizeVSETVLUses ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3634,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << Fn . getFunction ( ) . getName ( ) << ) ; for ( MachineBasicBlock & MBB : Fn ) { for ( MachineInstr & Instr : MBB ) { if ( Instr . isCopy ( ) ) { const auto & CopyDest = Instr . getOperand ( ) ; auto & CopySource = Instr . getOperand ( ) ; const MachineInstr * MI = MRI . getVRegDef ( CopySource . getReg ( ) ) ; if ( ! MI ) { continue ; }" LLVM,RISCV,3635,"Predict the next statement of this code snippet: } if ( MI -> getOpcode ( ) == && ! isSameRegisterClass ( CopyDest . getReg ( ) , CopySource . getReg ( ) ) ) { LLVM_DEBUG ( dbgs ( ) << << << ) ; LLVM_DEBUG ( Instr . dump ( ) ) ; const auto & VSETVLDefGPR = MI -> getOperand ( ) ; const auto & VSETVLDefVLR = MI -> getOperand ( ) ; const auto & Replacement = VSETVLDefGPR . getReg ( ) != CopySource . getReg ( ) ? VSETVLDefGPR : VSETVLDefVLR ; CopySource . setIsKill ( false ) ; CopySource . setReg ( Replacement . getReg ( ) ) ; MRI . clearKillFlags ( Replacement . getReg ( ) ) ; } } } } return true ;" LLVM,RISCV,3636,"Predict the next statement of this code snippet: FunctionPass * llvm :: createPulpHWLoopsPass ( ) {" LLVM,RISCV,3637,"Predict the next statement of this code snippet: assert ( ! OuterLoopSetup && ) ; if ( LoopSetup ) { OuterLoopSetup = LoopSetup ; } LoopSetup = & MI ; } if ( MI . getOpcode ( ) == ) { assert ( LoopSetup && ) ; Setups . push_back ( LoopSetup ) ; Branches . push_back ( & MI ) ;" LLVM,RISCV,3638,"Predict the next statement of this code snippet: AU . addRequired < MachineDominatorTree > ( ) ;" LLVM,RISCV,3639,"Predict the next statement of this code snippet: AU . addRequired < MachineDominatorTree > ( ) ; MachineFunctionPass :: getAnalysisUsage ( AU ) ;" LLVM,RISCV,3640,"Predict the next statement of this code snippet: return PULP_HWLOOPS_NAME ;" LLVM,RISCV,3641,"Predict the next statement of this code snippet: LastInstr -> setPreInstrSymbol ( MF , LastInstrSymbol ) ; } int Offset = , SetupOffset = , FirstInstrOffset = , LastInstrOffset = ; for ( auto & BB : MF ) { for ( auto & MI : BB ) { if ( & MI == Setup ) { SetupOffset = Offset ; } else if ( & MI == FirstInstr ) { FirstInstrOffset = Offset ; } else if ( & MI == LastInstr ) { LastInstrOffset = Offset ; } Offset += TII -> getInstSizeInBytes ( MI ) ; } } assert ( isUInt < > ( FirstInstrOffset - SetupOffset ) && isUInt < > ( LastInstrOffset - SetupOffset ) && ) ; MachineBasicBlock * Preheader = Setup -> getParent ( ) ; if ( Setup -> getOpcode ( ) == ) { Register count = Setup -> getOperand ( ) . getReg ( ) ; if ( FirstInstrOffset - SetupOffset == ) { BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addReg ( count ) . addSym ( LastInstrSymbol ) ; } else { BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addReg ( count ) ; BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addMBB ( LoopHeader ) ; BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addSym ( LastInstrSymbol ) ; } } else { int64_t count = Setup -> getOperand ( ) . getImm ( ) ; if ( FirstInstrOffset - SetupOffset == && LastInstrOffset - SetupOffset < ) { BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addImm ( count ) . addSym ( LastInstrSymbol ) ; } else { BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addImm ( count ) ; BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addMBB ( LoopHeader ) ; BuildMI ( * Preheader , Setup , Setup -> getDebugLoc ( ) , TII -> get ( ) ) . addImm ( LoopNum ) . addSym ( LastInstrSymbol ) ; }" LLVM,RISCV,3642,"Predict the next statement of this code snippet: PulpHWLoops ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3643,"Predict the next statement of this code snippet: PulpHWLoops ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3644,"Predict the next statement of this code snippet: TII = MF . getSubtarget ( ) . getInstrInfo ( ) ; MachineDominatorTree * MDT = & getAnalysis < MachineDominatorTree > ( ) ; FindInstrPairs ( MDT -> getRootNode ( ) , nullptr , nullptr ) ; assert ( Setups . size ( ) == Branches . size ( ) && Setups . size ( ) == LoopNums . size ( ) ) ; if ( Setups . empty ( ) ) return false ; while ( ! Setups . empty ( ) ) { ProcessHardwareLoop ( Setups . pop_back_val ( ) , Branches . pop_back_val ( ) , LoopNums . pop_back_val ( ) , MF ) ;" LLVM,RISCV,3645,"Predict the next statement of this code snippet: FunctionPass * llvm :: createRedundantCopyEliminationPass ( ) {" LLVM,RISCV,3646,"Predict the next statement of this code snippet: return new RedundantCopyElimination ( ) ;" LLVM,RISCV,3647,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,RISCV,3648,"Predict the next statement of this code snippet: return ;" LLVM,RISCV,3649,"Predict the next statement of this code snippet: return MachineFunctionProperties ( ) . set ( MachineFunctionProperties :: Property :: NoVRegs ) ;" LLVM,RISCV,3650,"Predict the next statement of this code snippet: if ( Opc == && MI . getOperand ( ) . getReg ( ) == && & MBB != MI . getOperand ( ) . getMBB ( ) ) return true ; return false ;" LLVM,RISCV,3651,"Predict the next statement of this code snippet: if ( Opc == && MI . getOperand ( ) . getReg ( ) == && & MBB == MI . getOperand ( ) . getMBB ( ) ) return true ; if ( Opc == && MI . getOperand ( ) . getReg ( ) == && & MBB != MI . getOperand ( ) . getMBB ( ) ) return true ; return false ;" LLVM,RISCV,3652,"Predict the next statement of this code snippet: Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( SrcReg == && ! MRI -> isReserved ( DefReg ) && TargetReg == DefReg ) { LLVM_DEBUG ( dbgs ( ) << ) ; LLVM_DEBUG ( MI -> print ( dbgs ( ) ) ) ; MI -> eraseFromParent ( ) ; Changed = true ; LastChange = I ; ++ NumCopiesRemoved ; continue ; } } if ( MI -> modifiesRegister ( TargetReg , TRI ) ) break ; } if ( ! Changed ) return false ; CondBr -> clearRegisterKills ( TargetReg , TRI ) ; if ( ! MBB . isLiveIn ( TargetReg ) ) MBB . addLiveIn ( TargetReg ) ; for ( MachineInstr & MMI : make_range ( MBB . begin ( ) , LastChange ) ) MMI . clearRegisterKills ( TargetReg , TRI ) ; return true ;" LLVM,RISCV,3653,"Predict the next statement of this code snippet: RedundantCopyElimination ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3654,"Predict the next statement of this code snippet: bool RedundantCopyElimination :: runOnMachineFunction ( MachineFunction & MF ) { if ( skipFunction ( MF . getFunction ( ) ) ) return false ; TRI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; MRI = & MF . getRegInfo ( ) ; bool Changed = false ; for ( MachineBasicBlock & MBB : MF ) Changed |= optimizeBlock ( MBB ) ;" LLVM,RISCV,3655,"Predict the next statement of this code snippet: RegisterBankInfo :: RegisterBankInfo ( const TargetRegisterInfo & TRI ) : GenRegisterBankInfo ( ) {" LLVM,RISCV,3656,"Predict the next statement of this code snippet: RegisterBankInfo :: RegisterBankInfo ( const TargetRegisterInfo & TRI ) : GenRegisterBankInfo ( ) {" LLVM,RISCV,3657,"Predict the next statement of this code snippet: RegisterBankInfo :: RegisterBankInfo ( const TargetRegisterInfo & TRI ) {" LLVM,RISCV,3658,"Predict the next statement of this code snippet: RegisterBankInfo :: RegisterBankInfo ( const TargetRegisterInfo & TRI ) {" LLVM,RISCV,3659,"Predict the next statement of this code snippet: const TargetRegisterClass * getPointerRegClass ( const MachineFunction & MF , unsigned Kind = ) const override {" LLVM,RISCV,3660,"Predict the next statement of this code snippet: const TargetRegisterClass * getPointerRegClass ( const MachineFunction & MF , unsigned Kind = ) const override {" LLVM,RISCV,3661,"Predict the next statement of this code snippet: bool requiresFrameIndexScavenging ( const MachineFunction & MF ) const override {" LLVM,RISCV,3662,"Predict the next statement of this code snippet: int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; unsigned FrameReg ; int Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MachineBasicBlock & MBB = * MI . getParent ( ) ; bool FrameRegIsKill = false ; if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ;" LLVM,RISCV,3663,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_SaveList ; if ( Subtarget . hasStdExtF ( ) ) return CSR_XLEN_F32_Interrupt_SaveList ; return CSR_Interrupt_SaveList ; } switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_SaveList ; case : case : return CSR_ILP32F_LP64F_SaveList ; case : case :" LLVM,RISCV,3664,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_SaveList ; if ( Subtarget . hasStdExtF ( ) ) return CSR_XLEN_F32_Interrupt_SaveList ; return CSR_Interrupt_SaveList ; } switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_SaveList ;" LLVM,RISCV,3665,"Predict the next statement of this code snippet: return CSR_Interrupt_RegMask ; } switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_RegMask ; case : case : return CSR_ILP32F_LP64F_RegMask ; case : case : return CSR_ILP32D_LP64D_RegMask ;" LLVM,RISCV,3666,"Predict the next statement of this code snippet: const uint32_t * RegisterInfo :: getCallPreservedMask ( const MachineFunction & MF , CallingConv :: ID ) const { auto & Subtarget = MF . getSubtarget < Subtarget > ( ) ; if ( MF . getFunction ( ) . hasFnAttribute ( ) ) { if ( Subtarget . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_RegMask ; if ( Subtarget . hasStdExtF ( ) ) return CSR_XLEN_F32_Interrupt_RegMask ; return CSR_Interrupt_RegMask ; } switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ;" LLVM,RISCV,3667,"Predict the next statement of this code snippet: markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3668,"Predict the next statement of this code snippet: markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3669,"Predict the next statement of this code snippet: unsigned FrameReg ; int Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MachineBasicBlock & MBB = * MI . getParent ( ) ; bool FrameRegIsKill = false ; if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm32 ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ; FrameReg = ScratchReg ; FrameRegIsKill = true ;" LLVM,RISCV,3670,"Predict the next statement of this code snippet: MI . getOperand ( FIOperandNum ) . ChangeToRegister ( FrameReg , false , false , FrameRegIsKill ) ; if ( ! IsRVVSpill ) MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset . getFixed ( ) ) ; else { if ( Offset . getFixed ( ) ) { Register ScratchReg = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg , getKillRegState ( FrameRegIsKill ) ) . addImm ( Offset . getFixed ( ) ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( ScratchReg , false , false , true ) ; } } } else { assert ( ScalableFactorRegister && ) ; if ( MI . getOpcode ( ) == && ! Offset . getFixed ( ) ) { BuildMI ( MBB , II , DL , TII -> get ( ScalableAdjOpc ) , MI . getOperand ( ) . getReg ( ) ) . addReg ( FrameReg , getKillRegState ( FrameRegIsKill ) ) . addReg ( ScalableFactorRegister , RegState :: Kill ) ; MI . eraseFromParent ( ) ; return ; } Register VL = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ScalableAdjOpc ) , VL ) . addReg ( FrameReg , getKillRegState ( FrameRegIsKill ) ) . addReg ( ScalableFactorRegister , RegState :: Kill ) ; if ( IsRVVSpill && Offset . getFixed ( ) ) { BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL ) . addImm ( Offset . getFixed ( ) ) ; } MI . getOperand ( FIOperandNum ) . ChangeToRegister ( VL , false , false , true ) ; if ( ! IsRVVSpill ) MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset . getFixed ( ) ) ; } auto ZvlssegInfo = TII -> isRVVSpillForZvlsseg ( MI . getOpcode ( ) ) ; if ( ZvlssegInfo ) {" LLVM,RISCV,3671,"Predict the next statement of this code snippet: const TargetRegisterClass * RegisterInfo :: getLargestLegalSuperClass ( const TargetRegisterClass * RC , const MachineFunction & ) const { if ( RC == & ) return & ; return RC ;" LLVM,RISCV,3672,"Predict the next statement of this code snippet: if ( RC == & ) return & ; return RC ;" LLVM,RISCV,3673,"Predict the next statement of this code snippet: DIExpression :: appendOffset ( Ops , Offset . getFixed ( ) ) ; unsigned VLENB = getDwarfRegNum ( , true ) ; int64_t VLENBSized = Offset . getScalable ( ) / ; if ( VLENBSized > ) { Ops . push_back ( dwarf :: DW_OP_constu ) ; Ops . push_back ( VLENBSized ) ; Ops . append ( { dwarf :: DW_OP_bregx , VLENB , } ) ; Ops . push_back ( dwarf :: DW_OP_mul ) ; Ops . push_back ( dwarf :: DW_OP_plus ) ; } else if ( VLENBSized < ) { Ops . push_back ( dwarf :: DW_OP_constu ) ; Ops . push_back ( - VLENBSized ) ; Ops . append ( { dwarf :: DW_OP_bregx , VLENB , } ) ; Ops . push_back ( dwarf :: DW_OP_mul ) ; Ops . push_back ( dwarf :: DW_OP_minus ) ; }" LLVM,RISCV,3674,"Predict the next statement of this code snippet: unsigned VLENB = getDwarfRegNum ( , true ) ; int64_t VLENBSized = Offset . getScalable ( ) / ; if ( VLENBSized > ) { Ops . push_back ( dwarf :: DW_OP_constu ) ; Ops . push_back ( VLENBSized ) ; Ops . append ( { dwarf :: DW_OP_bregx , VLENB , } ) ; Ops . push_back ( dwarf :: DW_OP_mul ) ; Ops . push_back ( dwarf :: DW_OP_plus ) ; } else if ( VLENBSized < ) { Ops . push_back ( dwarf :: DW_OP_constu ) ; Ops . push_back ( - VLENBSized ) ; Ops . append ( { dwarf :: DW_OP_bregx , VLENB , } ) ; Ops . push_back ( dwarf :: DW_OP_mul ) ; Ops . push_back ( dwarf :: DW_OP_minus ) ; }" LLVM,RISCV,3675,"Predict the next statement of this code snippet: return MF . getSubtarget < Subtarget > ( ) . hasStdExtC ( ) ? : ;" LLVM,RISCV,3676,"Predict the next statement of this code snippet: return MF . getSubtarget < Subtarget > ( ) . hasStdExtC ( ) ? : ;" LLVM,RISCV,3677,"Predict the next statement of this code snippet: if ( MF . getSubtarget < Subtarget > ( ) . isRegisterReservedByUser ( Reg ) ) markSuperRegs ( Reserved , Reg ) ; } markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ;" LLVM,RISCV,3678,"Predict the next statement of this code snippet: } markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; if ( TFI -> hasBP ( MF ) ) markSuperRegs ( Reserved , ( ) ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ;" LLVM,RISCV,3679,"Predict the next statement of this code snippet: const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( ! RVFI -> useSaveRestoreLibCalls ( MF ) ) return false ; const auto * FII = llvm :: find_if ( FixedCSRFIMap , [ & ] ( auto P ) { return P . first == Reg ; } ) ; if ( FII == std :: end ( FixedCSRFIMap ) ) return false ; FrameIdx = FII -> second ; return true ;" LLVM,RISCV,3680,"Predict the next statement of this code snippet: BitVector Reserved ( getNumRegs ( ) ) ; for ( size_t Reg = ; Reg < getNumRegs ( ) ; Reg ++ ) { if ( MF . getSubtarget < Subtarget > ( ) . isRegisterReservedByUser ( Reg ) ) markSuperRegs ( Reserved , Reg ) ;" LLVM,RISCV,3681,"Predict the next statement of this code snippet: return ! MF . getSubtarget < Subtarget > ( ) . isRegisterReservedByUser ( PhysReg ) ;" LLVM,RISCV,3682,"Predict the next statement of this code snippet: if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; if ( TFI -> hasBP ( MF ) ) markSuperRegs ( Reserved , ( ) ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ;" LLVM,RISCV,3683,"Predict the next statement of this code snippet: markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; if ( TFI -> hasBP ( MF ) ) markSuperRegs ( Reserved , ( ) ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3684,"Predict the next statement of this code snippet: assert ( SPAdj == && ) ; MachineInstr & MI = * II ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; Register FrameReg ; int Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) ; if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MachineBasicBlock & MBB = * MI . getParent ( ) ; if ( MFI . getStackID ( FrameIndex ) == TargetStackID :: Vector ) { switch ( MI . getOpcode ( ) ) { case : { MachineOperand StackSlot = MI . getOperand ( FIOperandNum ) ; unsigned Opcode = getRegSizeInBits ( ) == ? : ; MachineInstr * StoreAddr = BuildMI ( MBB , II , DL , TII -> get ( Opcode ) , MI . getOperand ( ) . getReg ( ) ) . add ( StackSlot ) . addImm ( ) ; MI . eraseFromParent ( ) ; return eliminateFrameIndex ( StoreAddr , , , RS ) ; } case : case : case : case : case : case : case : case : case : case : { MachineOperand StackSlot = MI . getOperand ( FIOperandNum ) ; unsigned Opcode = getRegSizeInBits ( ) == ? : ; Register addr = MF . getRegInfo ( ) . createVirtualRegister ( & ) ; MachineInstr * StoreAddr = BuildMI ( MBB , II , DL , TII -> get ( Opcode ) , addr ) . add ( StackSlot ) . addImm ( ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( addr , false , false , false ) ; return eliminateFrameIndex ( StoreAddr , , , RS ) ; } default :" LLVM,RISCV,3685,"Predict the next statement of this code snippet: switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_RegMask ; case : case : return CSR_ILP32F_LP64F_RegMask ; case : case : return CSR_ILP32D_LP64D_RegMask ;" LLVM,RISCV,3686,"Predict the next statement of this code snippet: BitVector Reserved ( getNumRegs ( ) ) ; for ( size_t Reg = ; Reg < getNumRegs ( ) ; Reg ++ ) { if ( MF . getSubtarget < Subtarget > ( ) . isRegisterReservedByUser ( Reg ) ) markSuperRegs ( Reserved , Reg ) ; } markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ;" LLVM,RISCV,3687,"Predict the next statement of this code snippet: else { if ( Offset . getFixed ( ) ) { Register ScratchReg = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg , getKillRegState ( FrameRegIsKill ) ) . addImm ( Offset . getFixed ( ) ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( ScratchReg , false , false , true ) ; } } } else { assert ( ! ( STI . getTargetABI ( ) ) && ) ; assert ( ScalableFactorRegister && ) ; if ( MI . getOpcode ( ) == && ! Offset . getFixed ( ) ) { BuildMI ( MBB , II , DL , TII -> get ( ScalableAdjOpc ) , MI . getOperand ( ) . getReg ( ) ) . addReg ( FrameReg , getKillRegState ( FrameRegIsKill ) ) . addReg ( ScalableFactorRegister , RegState :: Kill ) ; MI . eraseFromParent ( ) ; return ; } Register VL = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ScalableAdjOpc ) , VL ) . addReg ( FrameReg , getKillRegState ( FrameRegIsKill ) ) . addReg ( ScalableFactorRegister , RegState :: Kill ) ; if ( IsRVVSpill && Offset . getFixed ( ) ) { BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL ) . addImm ( Offset . getFixed ( ) ) ; } MI . getOperand ( FIOperandNum ) . ChangeToRegister ( VL , false , false , true ) ; if ( ! IsRVVSpill ) MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset . getFixed ( ) ) ; } auto ZvlssegInfo = TII -> isRVVSpillForZvlsseg ( MI . getOpcode ( ) ) ; if ( ZvlssegInfo ) { Register VL = MRI . createVirtualRegister ( & ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) ; uint32_t ShiftAmount = Log2_32 ( ZvlssegInfo -> second ) ; if ( ShiftAmount != ) BuildMI ( MBB , II , DL , TII -> get ( ) , VL ) . addReg ( VL ) . addImm ( ShiftAmount ) ; MI . getOperand ( FIOperandNum + ) . ChangeToRegister ( VL , false ) ; }" LLVM,RISCV,3688,"Predict the next statement of this code snippet: } if ( ! isInt < > ( Offset . getFixed ( ) ) ) { unsigned Opc ; unsigned ImmOpc ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; if ( ( STI . getTargetABI ( ) ) ) { Opc = ; ImmOpc = ; } else { Opc = ; ImmOpc = ; } TII -> movImm ( MBB , II , DL , ScratchReg , Offset . getFixed ( ) ) ; if ( MI . getOpcode ( ) == ImmOpc && ! Offset . getScalable ( ) ) { BuildMI ( MBB , II , DL , TII -> get ( Opc ) , MI . getOperand ( ) . getReg ( ) ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; MI . eraseFromParent ( ) ; return ; } Register DestReg = ScratchReg ; if ( ( STI . getTargetABI ( ) ) ) { DestReg = MRI . createVirtualRegister ( & ) ; } BuildMI ( MBB , II , DL , TII -> get ( Opc ) , DestReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = StackOffset :: get ( , Offset . getScalable ( ) ) ; FrameReg = DestReg ; FrameRegIsKill = true ; } if ( ! Offset . getScalable ( ) ) { MI . getOperand ( FIOperandNum ) . ChangeToRegister ( FrameReg , false , false , FrameRegIsKill ) ; if ( ! IsRVVSpill ) MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset . getFixed ( ) ) ; else { if ( Offset . getFixed ( ) ) {" LLVM,RISCV,3689,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtD ( ) ) return Subtarget . hasCheri ( ) ? CSR_XLEN_CLEN_F64_Interrupt_SaveList : CSR_XLEN_F64_Interrupt_SaveList ; if ( Subtarget . hasStdExtF ( ) ) return Subtarget . hasCheri ( ) ? CSR_XLEN_CLEN_F32_Interrupt_SaveList : CSR_XLEN_F32_Interrupt_SaveList ; return Subtarget . hasCheri ( ) ? CSR_XLEN_CLEN_Interrupt_SaveList : CSR_Interrupt_SaveList ; } switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_SaveList ; case : case :" LLVM,RISCV,3690,"Predict the next statement of this code snippet: default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_RegMask ; case : case : return CSR_IL32PC64_L64PC128_RegMask ; case : case : return CSR_ILP32F_LP64F_RegMask ; case : case : return CSR_IL32PC64F_L64PC128F_RegMask ; case : case : return CSR_ILP32D_LP64D_RegMask ; case :" LLVM,RISCV,3691,"Predict the next statement of this code snippet: return TFI -> hasFP ( MF ) ? TFI -> getFPReg ( ) : TFI -> getSPReg ( ) ;" LLVM,RISCV,3692,"Predict the next statement of this code snippet: BitVector Reserved ( getNumRegs ( ) ) ; for ( size_t Reg = ; Reg < getNumRegs ( ) ; Reg ++ ) { if ( STI . isRegisterReservedByUser ( Reg ) ) markSuperRegs ( Reserved , Reg ) ; } markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; if ( TFI -> hasBP ( MF ) ) markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ;" LLVM,RISCV,3693,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & STI ) : GenRegisterInfo ( ( STI . getTargetABI ( ) ) ? : , , , , STI . getHwMode ( ) ) {" LLVM,RISCV,3694,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & STI ) : GenRegisterInfo ( ( STI . getTargetABI ( ) ) ? : , , , , STI . getHwMode ( ) ) {" LLVM,RISCV,3695,"Predict the next statement of this code snippet: if ( ! RVFI -> useSaveRestoreLibCalls ( ) ) return false ; auto FII = FixedCSRFIMap . find ( Reg ) ; if ( FII == FixedCSRFIMap . end ( ) ) return false ; FrameIdx = FII -> second ;" LLVM,RISCV,3696,"Predict the next statement of this code snippet: const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ;" LLVM,RISCV,3697,"Predict the next statement of this code snippet: if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MachineBasicBlock & MBB = * MI . getParent ( ) ; bool FrameRegIsKill = false ; if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ;" LLVM,RISCV,3698,"Predict the next statement of this code snippet: assert ( SPAdj == && ) ; MachineInstr & MI = * II ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; Register FrameReg ; int Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MachineBasicBlock & MBB = * MI . getParent ( ) ; bool FrameRegIsKill = false ; if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ; FrameReg = ScratchReg ;" LLVM,RISCV,3699,"Predict the next statement of this code snippet: if ( ! RVFI -> useSaveRestoreLibCalls ( ) ) return false ; auto FII = FixedCSRFIMap . find ( Reg ) ; if ( FII == FixedCSRFIMap . end ( ) ) return false ; FrameIdx = FII -> second ; return true ;" LLVM,RISCV,3700,"Predict the next statement of this code snippet: const auto * RVFI = MF . getInfo < MachineFunctionInfo > ( ) ; if ( ! RVFI -> useSaveRestoreLibCalls ( ) ) return false ; auto FII = FixedCSRFIMap . find ( Reg ) ; if ( FII == FixedCSRFIMap . end ( ) ) return false ; FrameIdx = FII -> second ; return true ;" LLVM,RISCV,3701,"Predict the next statement of this code snippet: MachineBasicBlock & MBB = * MI . getParent ( ) ; bool FrameRegIsKill = false ; if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ; FrameReg = ScratchReg ; FrameRegIsKill = true ; }" LLVM,RISCV,3702,"Predict the next statement of this code snippet: MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; Register FrameReg ; int Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) . getFixed ( ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MachineBasicBlock & MBB = * MI . getParent ( ) ; bool FrameRegIsKill = false ; if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ; FrameReg = ScratchReg ; FrameRegIsKill = true ; }" LLVM,RISCV,3703,"Predict the next statement of this code snippet: const uint32_t * RegisterInfo :: getCallPreservedMask ( const MachineFunction & MF , CallingConv :: ID CC ) const { auto & Subtarget = MF . getSubtarget < Subtarget > ( ) ; if ( CC == CallingConv :: GHC ) return CSR_NoRegs_RegMask ; switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ;" LLVM,RISCV,3704,"Predict the next statement of this code snippet: Register RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const { const TargetFrameLowering * TFI = getFrameLowering ( MF ) ; return TFI -> hasFP ( MF ) ? : ;" LLVM,RISCV,3705,"Predict the next statement of this code snippet: if ( TFI -> hasBP ( MF ) ) markSuperRegs ( Reserved , ( ) ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3706,"Predict the next statement of this code snippet: if ( ! RVFI -> useSaveRestoreLibCalls ( MF ) ) return false ; auto FII = FixedCSRFIMap . find ( Reg ) ; if ( FII == FixedCSRFIMap . end ( ) ) return false ;" LLVM,RISCV,3707,"Predict the next statement of this code snippet: auto FII = FixedCSRFIMap . find ( Reg ) ; if ( FII == FixedCSRFIMap . end ( ) ) return false ;" LLVM,RISCV,3708,"Predict the next statement of this code snippet: bool RegisterInfo :: isAsmClobberable ( const MachineFunction & MF , MCRegister PhysReg ) const {" LLVM,RISCV,3709,"Predict the next statement of this code snippet: bool RegisterInfo :: isConstantPhysReg ( MCRegister PhysReg ) const {" LLVM,RISCV,3710,"Predict the next statement of this code snippet: bool RegisterInfo :: isConstantPhysReg ( MCRegister PhysReg ) const { return PhysReg == ;" LLVM,RISCV,3711,"Predict the next statement of this code snippet: MachineInstr & MI = * II ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; unsigned FrameReg ; int Offset ; if ( MI . getOpcode ( ) == || MI . getOpcode ( ) == ) { Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) ; } else Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MachineBasicBlock & MBB = * MI . getParent ( ) ; bool FrameRegIsKill = false ; if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; Register ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ; FrameReg = ScratchReg ;" LLVM,RISCV,3712,"Predict the next statement of this code snippet: if ( Subtarget . hasStdExtV ( ) ) return CSR_XLEN_F32_VEC_Interrupt_SaveList ; return CSR_Interrupt_SaveList ; } if ( MF -> getSubtarget < Subtarget > ( ) . hasStdExtV ( ) ) return CSR_ILP32F_LP64F_VEC_SaveList ; switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_SaveList ; case : case : return CSR_ILP32F_LP64F_SaveList ; case : case : return CSR_ILP32D_LP64D_SaveList ;" LLVM,RISCV,3713,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const { auto & Subtarget = MF -> getSubtarget < Subtarget > ( ) ; if ( MF -> getFunction ( ) . hasFnAttribute ( ) ) { if ( Subtarget . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_SaveList ; if ( Subtarget . hasStdExtF ( ) ) return CSR_XLEN_F32_Interrupt_SaveList ; return CSR_Interrupt_SaveList ; if ( Subtarget . hasStdExtV ( ) ) return CSR_XLEN_F32_VEC_Interrupt_SaveList ; return CSR_Interrupt_SaveList ; } if ( MF -> getSubtarget < Subtarget > ( ) . hasStdExtV ( ) ) return CSR_ILP32F_LP64F_VEC_SaveList ; switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case : return CSR_ILP32_LP64_SaveList ; case : case : return CSR_ILP32F_LP64F_SaveList ; case : case :" LLVM,RISCV,3714,"Predict the next statement of this code snippet: } if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtV ( ) ) return CSR_ILP32F_LP64F_VEC_RegMask ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) return CSR_ILP32F_LP64F_RegMask ; switch ( Subtarget . getTargetABI ( ) ) { default : llvm_unreachable ( ) ; case : case :" LLVM,RISCV,3715,"Predict the next statement of this code snippet: assert ( SPAdj == && ) ; MachineInstr & MI = * II ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const TargetFrameLowering * TFI = MF . getSubtarget ( ) . getFrameLowering ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; unsigned FrameReg = getFrameRegister ( MF ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ;" LLVM,RISCV,3716,"Predict the next statement of this code snippet: assert ( SPAdj == && ) ; MachineInstr & MI = * II ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const TargetFrameLowering * TFI = MF . getSubtarget ( ) . getFrameLowering ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; unsigned FrameReg = getFrameRegister ( MF ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; int Offset = TFI -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) ; Offset += MI . getOperand ( FIOperandNum + ) . getImm ( ) ; assert ( TFI -> hasFP ( MF ) && ) ; if ( ! isInt < > ( Offset ) ) { report_fatal_error ( ) ; } MI . getOperand ( FIOperandNum ) . ChangeToRegister ( FrameReg , false ) ;" LLVM,RISCV,3717,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const {" LLVM,RISCV,3718,"Predict the next statement of this code snippet: markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; if ( TFI -> hasBP ( MF ) ) markSuperRegs ( Reserved , ( ) ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ;" LLVM,RISCV,3719,"Predict the next statement of this code snippet: BitVector RegisterInfo :: getReservedRegs ( const MachineFunction & MF ) const { const FrameLowering * TFI = getFrameLowering ( MF ) ; BitVector Reserved ( getNumRegs ( ) ) ; for ( size_t Reg = ; Reg < getNumRegs ( ) ; Reg ++ ) { if ( MF . getSubtarget < Subtarget > ( ) . isRegisterReservedByUser ( Reg ) ) markSuperRegs ( Reserved , Reg ) ; } markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; if ( TFI -> hasBP ( MF ) ) markSuperRegs ( Reserved , ( ) ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3720,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const { auto & Subtarget = MF -> getSubtarget < Subtarget > ( ) ; if ( MF -> getFunction ( ) . hasFnAttribute ( ) ) { if ( Subtarget . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_SaveList ;" LLVM,RISCV,3721,"Predict the next statement of this code snippet: auto & Subtarget = MF . getSubtarget < Subtarget > ( ) ; if ( MF . getFunction ( ) . hasFnAttribute ( ) ) { if ( Subtarget . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_RegMask ; if ( Subtarget . hasStdExtF ( ) ) return CSR_XLEN_F32_Interrupt_RegMask ; return CSR_Interrupt_RegMask ;" LLVM,RISCV,3722,"Predict the next statement of this code snippet: MachineFrameInfo * MFI = MF . getFrameInfo ( ) ; FunctionInfo * FI = MF . getInfo < FunctionInfo > ( ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI -> getCalleeSavedInfo ( ) ; int MinCSFI = ; int MaxCSFI = - ; if ( CSI . size ( ) ) { MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } bool EhDataRegFI = FI -> isEhDataRegFI ( FrameIndex ) ; unsigned FrameReg ; if ( ( FrameIndex >= MinCSFI && FrameIndex <= MaxCSFI ) || EhDataRegFI ) FrameReg = Subtarget . isRV64 ( ) ? : ; else FrameReg = getFrameRegister ( MF ) ; bool IsKill = false ; int64_t Offset ; Offset = SPOffset + ( int64_t ) StackSize ; if ( MI . mayLoadOrStore ( ) ) Offset += MI . getOperand ( OpNo - ) . getImm ( ) ; else Offset += MI . getOperand ( OpNo + ) . getImm ( ) ; DEBUG ( errs ( ) << << Offset << << ) ; if ( ! MI . isDebugValue ( ) && ! isInt < > ( Offset ) ) { MachineBasicBlock & MBB = * MI . getParent ( ) ; DebugLoc DL = II -> getDebugLoc ( ) ; unsigned ADD = Subtarget . isRV64 ( ) ? : ; unsigned Reg ; const InstrInfo & TII = * static_cast < const InstrInfo * > ( MBB . getParent ( ) -> getSubtarget ( ) . getInstrInfo ( ) ) ; TII . loadImmediate ( MBB , II , & Reg , Offset ) ; BuildMI ( MBB , II , DL , TII . get ( ADD ) , Reg ) . addReg ( FrameReg ) . addReg ( Reg , RegState :: Kill ) ; FrameReg = Reg ; Offset = SignExtend64 < > ( ) ; IsKill = true ;" LLVM,RISCV,3723,"Predict the next statement of this code snippet: MachineInstr & MI = * II ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; MachineFrameInfo * MFI = MF . getFrameInfo ( ) ; FunctionInfo * FI = MF . getInfo < FunctionInfo > ( ) ; const std :: vector < CalleeSavedInfo > & CSI = MFI -> getCalleeSavedInfo ( ) ; int MinCSFI = ; int MaxCSFI = - ; if ( CSI . size ( ) ) { MinCSFI = CSI [ ] . getFrameIdx ( ) ; MaxCSFI = CSI [ CSI . size ( ) - ] . getFrameIdx ( ) ; } bool EhDataRegFI = FI -> isEhDataRegFI ( FrameIndex ) ; unsigned FrameReg ; if ( ( FrameIndex >= MinCSFI && FrameIndex <= MaxCSFI ) || EhDataRegFI ) FrameReg = Subtarget . isRV64 ( ) ? : ; else FrameReg = getFrameRegister ( MF ) ; bool IsKill = false ;" LLVM,RISCV,3724,"Predict the next statement of this code snippet: DEBUG ( errs ( ) << << MF . getName ( ) << ; errs ( ) << << MI ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ;" LLVM,RISCV,3725,"Predict the next statement of this code snippet: if ( Subtarget . isRV64 ( ) ) if ( Subtarget . hasD ( ) ) return CSR_RV64D_SaveList ; else if ( Subtarget . hasF ( ) ) return CSR_RV64F_SaveList ; else return CSR_RV64_SaveList ;" LLVM,RISCV,3726,"Predict the next statement of this code snippet: if ( Subtarget . isRV64 ( ) ) if ( Subtarget . hasD ( ) ) return CSR_RV64D_SaveList ;" LLVM,RISCV,3727,"Predict the next statement of this code snippet: else return CSR_RV64_RegMask ; else if ( Subtarget . hasD ( ) ) return CSR_RV32D_RegMask ; else if ( Subtarget . hasF ( ) ) return CSR_RV32F_RegMask ; else return CSR_RV32_RegMask ;" LLVM,RISCV,3728,"Predict the next statement of this code snippet: unsigned RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const { const TargetFrameLowering * TFI = MF . getSubtarget ( ) . getFrameLowering ( ) ; return TFI -> hasFP ( MF ) ? ( Subtarget . isRV64 ( ) ? : ) : ( Subtarget . isRV64 ( ) ? : ) ;" LLVM,RISCV,3729,"Predict the next statement of this code snippet: BitVector RegisterInfo :: getReservedRegs ( const MachineFunction & MF ) const { BitVector Reserved ( getNumRegs ( ) ) ; const TargetFrameLowering * TFI = MF . getSubtarget ( ) . getFrameLowering ( ) ; Reserved . set ( ) ; Reserved . set ( ) ;" LLVM,RISCV,3730,"Predict the next statement of this code snippet: Reserved . set ( ) ; Reserved . set ( ) ; if ( TFI -> hasFP ( MF ) ) { Reserved . set ( ) ; Reserved . set ( ) ; Reserved . set ( ) ; Reserved . set ( ) ; } Reserved . set ( ) ;" LLVM,RISCV,3731,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & STI ) : GenRegisterInfo ( ) , Subtarget ( STI ) {" LLVM,RISCV,3732,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & STI ) : GenRegisterInfo ( ) , Subtarget ( STI ) {" LLVM,RISCV,3733,"Predict the next statement of this code snippet: const TargetRegisterClass * RegisterInfo :: getPointerRegClass ( const MachineFunction & MF , unsigned Kind ) const {" LLVM,RISCV,3734,"Predict the next statement of this code snippet: markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3735,"Predict the next statement of this code snippet: markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; if ( TFI -> hasFP ( MF ) ) markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3736,"Predict the next statement of this code snippet: MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; DebugLoc DL = MI . getDebugLoc ( ) ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; unsigned FrameReg ; int Offset = getFrameLowering ( MF ) -> getFrameIndexReference ( MF , FrameIndex , FrameReg ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ;" LLVM,RISCV,3737,"Predict the next statement of this code snippet: if ( ! isInt < > ( Offset ) ) { assert ( isInt < > ( Offset ) && ) ; unsigned ScratchReg = MRI . createVirtualRegister ( & ) ; TII -> movImm32 ( MBB , II , DL , ScratchReg , Offset ) ; BuildMI ( MBB , II , DL , TII -> get ( ) , ScratchReg ) . addReg ( FrameReg ) . addReg ( ScratchReg , RegState :: Kill ) ; Offset = ; FrameReg = ScratchReg ; FrameRegIsKill = true ;" LLVM,RISCV,3738,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const { if ( MF -> getFunction ( ) . hasFnAttribute ( ) ) {" LLVM,RISCV,3739,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const { if ( MF -> getFunction ( ) . hasFnAttribute ( ) ) { if ( MF -> getSubtarget < Subtarget > ( ) . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_SaveList ; if ( MF -> getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) return CSR_XLEN_F32_Interrupt_SaveList ; return CSR_Interrupt_SaveList ;" LLVM,RISCV,3740,"Predict the next statement of this code snippet: const uint32_t * RegisterInfo :: getCallPreservedMask ( const MachineFunction & MF , CallingConv :: ID ) const { if ( MF . getFunction ( ) . hasFnAttribute ( ) ) { if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_RegMask ;" LLVM,RISCV,3741,"Predict the next statement of this code snippet: if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtD ( ) ) return CSR_XLEN_F64_Interrupt_RegMask ; if ( MF . getSubtarget < Subtarget > ( ) . hasStdExtF ( ) ) return CSR_XLEN_F32_Interrupt_RegMask ; return CSR_Interrupt_RegMask ;" LLVM,RISCV,3742,"Predict the next statement of this code snippet: const uint32_t * RegisterInfo :: getNoPreservedMask ( ) const {" LLVM,RISCV,3743,"Predict the next statement of this code snippet: markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; markSuperRegs ( Reserved , ) ; assert ( checkAllSuperRegsMarked ( Reserved ) ) ; return Reserved ;" LLVM,RISCV,3744,"Predict the next statement of this code snippet: bool RegisterInfo :: isConstantPhysReg ( unsigned PhysReg ) const { return PhysReg == ;" LLVM,RISCV,3745,"Predict the next statement of this code snippet: return PhysReg == ;" LLVM,RISCV,3746,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( unsigned HwMode ) : GenRegisterInfo ( , , , , HwMode ) {" LLVM,RISCV,3747,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( unsigned HwMode ) : GenRegisterInfo ( , , , , HwMode ) {" LLVM,RISCV,3748,"Predict the next statement of this code snippet: bool trackLivenessAfterRegAlloc ( const MachineFunction & ) const override { return true ;" LLVM,RISCV,3749,"Predict the next statement of this code snippet: bool trackLivenessAfterRegAlloc ( const MachineFunction & ) const override { return true ;" LLVM,RISCV,3750,"Predict the next statement of this code snippet: begin != MBB -> pred_end ( ) ; begin ++ ) { MachineInstr * predIterate = lastVSETVLIOfMBB . count ( * begin ) == ? tailVSETVLI [ * begin ] : lastVSETVLIOfMBB [ * begin ] ; if ( predBlockVSETVLI == nullptr ) { predBlockVSETVLI = predIterate ; continue ; } if ( predIterate == nullptr || ( predIterate != nullptr && ! isSameVsetvli ( * predBlockVSETVLI , * predIterate ) ) ) break ; } if ( predBlockVSETVLI != nullptr ) { if ( headVSETVLI [ MBB ] != nullptr ) { if ( isSameVsetvli ( * predBlockVSETVLI , * headVSETVLI [ MBB ] , true ) ) redundancyVSETVLI . push_back ( headVSETVLI [ MBB ] ) ; lastVSETVLIOfMBB [ MBB ] = tailVSETVLI [ MBB ] ; } else { lastVSETVLIOfMBB [ MBB ] = predBlockVSETVLI ; } } else { lastVSETVLIOfMBB [ MBB ] = tailVSETVLI [ MBB ] ; } }" LLVM,RISCV,3751,"Predict the next statement of this code snippet: for ( llvm :: MachineBasicBlock :: iterator instr : MBB ) { if ( isVsetvli ( * instr ) ) { if ( firstEffectiveVSETVLI == nullptr ) firstEffectiveVSETVLI = & ( * instr ) ;" LLVM,RISCV,3752,"Predict the next statement of this code snippet: for ( llvm :: MachineBasicBlock :: iterator instr : MBB ) { if ( isVsetvli ( * instr ) ) { if ( firstEffectiveVSETVLI == nullptr ) firstEffectiveVSETVLI = & ( * instr ) ; else if ( ( lastEffectiveVSETVLI == nullptr && ! isSameVsetvli ( * firstEffectiveVSETVLI , * instr , true ) ) || ( lastEffectiveVSETVLI && ! isSameVsetvli ( * instr , * lastEffectiveVSETVLI ) ) ) lastEffectiveVSETVLI = & ( * instr ) ; else redundancyVSETVLI . push_back ( & ( * instr ) ) ; } }" LLVM,RISCV,3753,"Predict the next statement of this code snippet: collectRedundancyVSETVLIInMF ( MachineFunction & MF ) {" LLVM,RISCV,3754,"Predict the next statement of this code snippet: collectRedundancyVSETVLIInMF ( MachineFunction & MF ) { for ( auto & MBB : MF ) {" LLVM,RISCV,3755,"Predict the next statement of this code snippet: FunctionPass * createRemoveRedundancyVSETVLPass ( ) {" LLVM,RISCV,3756,"Predict the next statement of this code snippet: FunctionPass * createRemoveRedundancyVSETVLPass ( ) { return new RemoveRedundancyVSETVL ( ) ;" LLVM,RISCV,3757,"Predict the next statement of this code snippet: return _VECTOR_REMOVE_REDUNDANCY_VSETVL ;" LLVM,RISCV,3758,"Predict the next statement of this code snippet: return _VECTOR_REMOVE_REDUNDANCY_VSETVL ;" LLVM,RISCV,3759,"Predict the next statement of this code snippet: assert ( ( ( frontOperand . isReg ( ) && backOperand . isReg ( ) ) || ( frontOperand . isImm ( ) && backOperand . isImm ( ) ) ) && ) ; if ( order ) { if ( frontOperand . isReg ( ) && backOperand . isReg ( ) && backOperand . getReg ( ) != && frontOperand . getReg ( ) != backOperand . getReg ( ) ) return false ; } else { if ( frontOperand . isReg ( ) && backOperand . isReg ( ) && frontOperand . getReg ( ) != backOperand . getReg ( ) ) return false ; } if ( frontOperand . isImm ( ) && backOperand . isImm ( ) && ! ( frontOperand . getImm ( ) == backOperand . getImm ( ) ) ) return false ; }" LLVM,RISCV,3760,"Predict the next statement of this code snippet: static bool isVsetvli ( MachineInstr & instr ) {" LLVM,RISCV,3761,"Predict the next statement of this code snippet: static bool isVsetvli ( MachineInstr & instr ) { return instr . getOpcode ( ) == ;" LLVM,RISCV,3762,"Predict the next statement of this code snippet: bool RemoveRedundancyVSETVL :: removeRedundancy ( ) { if ( ! redundancyVSETVLI . size ( ) ) return false ;" LLVM,RISCV,3763,"Predict the next statement of this code snippet: collectRedundancyVSETVLIInMF ( MF ) ;" LLVM,RISCV,3764,"Predict the next statement of this code snippet: bool RemoveRedundancyVSETVL :: runOnMachineFunction ( MachineFunction & MF ) {" LLVM,RISCV,3765,"Predict the next statement of this code snippet: immediates [ pos ] = value ;" LLVM,RISCV,3766,"Predict the next statement of this code snippet: FunctionPass * llvm :: createRI5CYIRPass ( ) {" LLVM,RISCV,3767,"Predict the next statement of this code snippet: FunctionPass * llvm :: createRI5CYIRPass ( ) { return new RI5CYIR ( ) ;" LLVM,RISCV,3768,"Predict the next statement of this code snippet: return ;" LLVM,RISCV,3769,"Predict the next statement of this code snippet: status = AFTER ; l_limit = i - ; } } else { if ( status == BEFORE ) { status = IN ; r_limit = i ; } else if ( status == AFTER ) { status = INVALID ; return false ; } else { l_limit = i ; } } } if ( status == BEFORE ) { return false ;" LLVM,RISCV,3770,"Predict the next statement of this code snippet: } } else { return false ; } auto setcc_inner = Dest . getOperand ( select ) . getOperand ( ) ; auto reg_xxx = & Dest . getOperand ( select ) . getOperand ( ) ; const SDValue * reg_out ; int inner_pos_constant_low_cc ; if ( setcc_inner . getOperand ( ) . getOpcode ( ) == ) { inner_pos_constant_low_cc = ; reg_out = & setcc_inner . getOperand ( ) ; } else if ( setcc_outer . getOperand ( ) . getOpcode ( ) == ) { reg_out = & setcc_inner . getOperand ( ) ; inner_pos_constant_low_cc = ; } else { return false ; } MemSDNode * mem_in = cast < MemSDNode > ( * reg_in ) ; MemSDNode * mem_out = cast < MemSDNode > ( * reg_out ) ; MemSDNode * mem_xxx = cast < MemSDNode > ( * reg_xxx ) ; if ( * ( mem_in -> getMemOperand ( ) ) != * ( mem_out -> getMemOperand ( ) ) || * ( mem_in -> getMemOperand ( ) ) != * ( mem_xxx -> getMemOperand ( ) ) ) { return false ; } int32_t inner_low_constant_cc = setcc_inner . getConstantOperandVal ( inner_pos_constant_low_cc ) ; if ( setcc_inner . getOperand ( ) . getOpcode ( ) == && cast < CondCodeSDNode > ( * setcc_inner . getOperand ( ) . getNode ( ) ) . get ( ) == ) { if ( ! unsign && inner_low_constant_cc != - low_constant_cc ) { return false ; }" LLVM,RISCV,3771,"Predict the next statement of this code snippet: Metadata ( _metadata_type_t t ) : Metadata ( Metadata_ID , Uniqued ) , type ( t ) {" LLVM,RISCV,3772,"Predict the next statement of this code snippet: Metadata ( _metadata_type_t t ) : Metadata ( Metadata_ID , Uniqued ) , type ( t ) {" LLVM,RISCV,3773,"Predict the next statement of this code snippet: RI5CYIR ( ) : FunctionPass ( ID ) {" LLVM,RISCV,3774,"Predict the next statement of this code snippet: bool RI5CYIR :: runOnFunction ( Function & F ) {" LLVM,RISCV,3775,"Predict the next statement of this code snippet: bool RI5CYIR :: runOnFunction ( Function & F ) { errs ( ) << << F . getName ( ) . str ( ) << ; this -> transformBitManipulation ( F ) ; return false ;" LLVM,RISCV,3776,"Predict the next statement of this code snippet: bool RI5CYIR :: transformBitManipulation ( Function & F ) { for ( auto & BB : F ) { for ( auto & I : BB ) { if ( I . getOpcode ( ) == Instruction :: And ) { Value * op1 = I . getOperand ( ) ; Value * op2 = I . getOperand ( ) ; unsigned size = op2 -> getType ( ) -> getPrimitiveSizeInBits ( ) ; unsigned int immediate = ; if ( isa < ConstantInt > ( op1 ) && size >= && size <= ) { immediate = cast < ConstantInt > ( op1 ) -> getLimitedValue ( ~ ( uint32_t ) ) ; } else if ( isa < ConstantInt > ( op2 ) && size >= && size <= ) { immediate = cast < ConstantInt > ( op2 ) -> getLimitedValue ( ~ ( uint32_t ) ) ; } if ( immediate == ) { errs ( ) << ; continue ; } unsigned int limit_l ; unsigned int limit_r ;" LLVM,RISCV,3777,"Predict the next statement of this code snippet: immediate = cast < ConstantInt > ( op1 ) -> getLimitedValue ( ~ ( uint32_t ) ) ; } else if ( isa < ConstantInt > ( op2 ) && size >= && size <= ) { immediate = cast < ConstantInt > ( op2 ) -> getLimitedValue ( ~ ( uint32_t ) ) ; } if ( immediate == ) { errs ( ) << ; continue ; } unsigned int limit_l ; unsigned int limit_r ; } }" LLVM,RISCV,3778,"Predict the next statement of this code snippet: virtual ~ RI5CYIR ( ) { if ( dag != NULL ) { delete dag ;" LLVM,RISCV,3779,"Predict the next statement of this code snippet: if ( dag != NULL ) { delete dag ;" LLVM,RISCV,3780,"Predict the next statement of this code snippet: SDValue callFunction ( SelectionDAG & DAG , SDLoc dl , SDValue Chain , const char * fnName , SDValue Dst , SDValue Src , SDValue Size ) { auto & Ctx = * DAG . getContext ( ) ; auto & STI = getSubtarget ( DAG ) ; TargetLowering :: ArgListTy Args ; auto pushArg = [ & ] ( SDValue & Op ) { TargetLowering :: ArgListEntry Entry ; Entry . Node = Op ; Entry . Ty = Op . getValueType ( ) . getTypeForEVT ( Ctx ) ;" LLVM,RISCV,3781,"Predict the next statement of this code snippet: return EmitTargetCodeForMemOp ( DAG , dl , Chain , Dst , Src , Size , Alignment , isVolatile , false , MustPreserveCheriCapabilities , DstPtrInfo , SrcPtrInfo , false ) ;" LLVM,RISCV,3782,"Predict the next statement of this code snippet: if ( ( DstAS == ) && ( SrcAS == ) ) return SDValue ( ) ; auto & STI = getSubtarget ( DAG ) ; MVT CapType = STI . typeForCapabilities ( ) ; if ( DstAS == ) Dst = DAG . getAddrSpaceCast ( dl , CapType , Dst , , ) ; if ( SrcAS == ) Src = DAG . getAddrSpaceCast ( dl , CapType , Src , , ) ; const char * memFnName = isMemCpy ? ( ( STI . getTargetABI ( ) ) ? : ) : ( ( STI . getTargetABI ( ) ) ? : ) ; return callFunction ( DAG , dl , Chain , memFnName , Dst , Src , Size ) ;" LLVM,RISCV,3783,"Predict the next statement of this code snippet: if ( DstAS == ) Dst = DAG . getAddrSpaceCast ( dl , CapType , Dst , , ) ; if ( SrcAS == ) Src = DAG . getAddrSpaceCast ( dl , CapType , Src , , ) ;" LLVM,RISCV,3784,"Predict the next statement of this code snippet: const Subtarget & getSubtarget ( SelectionDAG & DAG ) { return reinterpret_cast < const Subtarget & > ( DAG . getSubtarget ( ) ) ;" LLVM,RISCV,3785,"Predict the next statement of this code snippet: const Subtarget & getSubtarget ( SelectionDAG & DAG ) {" LLVM,RISCV,3786,"Predict the next statement of this code snippet: SelectionDAGInfo :: ~ SelectionDAGInfo ( ) {" LLVM,RISCV,3787,"Predict the next statement of this code snippet: SelectionDAGInfo :: ~ SelectionDAGInfo ( ) {" LLVM,RISCV,3788,"Predict the next statement of this code snippet: static void addUses ( const MachineInstr & MI , SmallVectorImpl < const MachineInstr * > & Worklist , MachineRegisterInfo & MRI ) { for ( auto & UserOp : MRI . reg_operands ( MI . getOperand ( ) . getReg ( ) ) ) {" LLVM,RISCV,3789,"Predict the next statement of this code snippet: case : return ; case : case : return ; case : return ; case : return ; case : return ; default : llvm_unreachable ( ) ; }" LLVM,RISCV,3790,"Predict the next statement of this code snippet: case : return ; case : return ; case : case : return ; case : return ; case :" LLVM,RISCV,3791,"Predict the next statement of this code snippet: case : if ( MI -> getOperand ( ) . getImm ( ) >= ) return false ; LLVM_FALLTHROUGH ; case : case : case : case : { Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; break ; } case : case : case : case : case : case : case : case : case : case : case : case : { unsigned E = , D = ; if ( MI -> getOpcode ( ) == ) { E = MI -> getNumOperands ( ) ; D = ; } for ( unsigned I = ; I != E ; I += D ) { if ( ! MI -> getOperand ( I ) . isReg ( ) ) return false ; Register SrcReg = MI -> getOperand ( I ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ;" LLVM,RISCV,3792,"Predict the next statement of this code snippet: Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; break ; } case : case : case : case : { Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; break ; } case : case : case : case : case : case : case : case : case : case : case : case : { unsigned E = , D = ; if ( MI -> getOpcode ( ) == ) { E = MI -> getNumOperands ( ) ; D = ; } for ( unsigned I = ; I != E ; I += D ) { if ( ! MI -> getOperand ( I ) . isReg ( ) ) return false ; Register SrcReg = MI -> getOperand ( I ) . getReg ( ) ;" LLVM,RISCV,3793,"Predict the next statement of this code snippet: const MachineInstr * MI = Worklist . pop_back_val ( ) ; if ( ! Visited . insert ( MI ) . second ) continue ; if ( isSignExtendingOpW ( * MI ) ) continue ; switch ( MI -> getOpcode ( ) ) { default : return false ; case : { Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; break ; } case : case : case : case : { Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; break ; } case : case : case : case :" LLVM,RISCV,3794,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : return true ; case : return MI . getOperand ( ) . getImm ( ) >= ; case : return MI . getOperand ( ) . getImm ( ) > ; case : return MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ; case : return isUInt < > ( MI . getOperand ( ) . getImm ( ) ) ; case :" LLVM,RISCV,3795,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : return true ; case : return MI . getOperand ( ) . getImm ( ) >= ; case : return MI . getOperand ( ) . getImm ( ) > ; case : return MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ; case : return isUInt < > ( MI . getOperand ( ) . getImm ( ) ) ;" LLVM,RISCV,3796,"Predict the next statement of this code snippet: return new SExtWRemoval ( ) ;" LLVM,RISCV,3797,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,RISCV,3798,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,RISCV,3799,"Predict the next statement of this code snippet: if ( MI -> getOperand ( ) . getImm ( ) >= ) return false ; LLVM_FALLTHROUGH ; case : case : case : case : { Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; break ; } case : case : case : case : case : case : case : case : case : case : case : case : { unsigned E = , D = ; if ( MI -> getOpcode ( ) == ) { E = MI -> getNumOperands ( ) ; D = ; } for ( unsigned I = ; I != E ; I += D ) { if ( ! MI -> getOperand ( I ) . isReg ( ) ) return false ; Register SrcReg = MI -> getOperand ( I ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; } break ; } } }" LLVM,RISCV,3800,"Predict the next statement of this code snippet: break ; } case : case : case : if ( MI -> getOperand ( ) . getImm ( ) >= ) return false ; LLVM_FALLTHROUGH ; case : case : case : case : { Register SrcReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ; break ; } case : case : case : case : case : case : case : case : case : case : case : case : { unsigned E = , D = ; if ( MI -> getOpcode ( ) == ) { E = MI -> getNumOperands ( ) ; D = ; } for ( unsigned I = ; I != E ; I += D ) { if ( ! MI -> getOperand ( I ) . isReg ( ) ) return false ; Register SrcReg = MI -> getOperand ( I ) . getReg ( ) ; if ( ! SrcReg . isVirtual ( ) ) return false ; const MachineInstr * SrcMI = MRI . getVRegDef ( SrcReg ) ; if ( ! SrcMI ) return false ; Worklist . push_back ( SrcMI ) ;" LLVM,RISCV,3801,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : return true ; case : return MI . getOperand ( ) . getImm ( ) >= ; case : return MI . getOperand ( ) . getImm ( ) > ; case : return MI . getOperand ( ) . isReg ( ) && MI . getOperand ( ) . getReg ( ) == ; case : return isUInt < > ( MI . getOperand ( ) . getImm ( ) ) ; case : return ! isUInt < > ( MI . getOperand ( ) . getImm ( ) ) ;" LLVM,RISCV,3802,"Predict the next statement of this code snippet: SExtWRemoval ( ) : MachineFunctionPass ( ID ) {" LLVM,RISCV,3803,"Predict the next statement of this code snippet: SExtWRemoval ( ) : MachineFunctionPass ( ID ) { initializeSExtWRemovalPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,RISCV,3804,"Predict the next statement of this code snippet: const MachineInstr & SrcMI = * MRI . getVRegDef ( SrcReg ) ; if ( ! isSignExtendedW ( SrcMI , MRI ) ) continue ; Register DstReg = MI -> getOperand ( ) . getReg ( ) ; if ( ! MRI . constrainRegClass ( SrcReg , MRI . getRegClass ( DstReg ) ) ) continue ; LLVM_DEBUG ( dbgs ( ) << ) ; MRI . replaceRegWith ( DstReg , SrcReg ) ; MRI . clearKillFlags ( SrcReg ) ; MI -> eraseFromParent ( ) ; ++ NumRemovedSExtW ; MadeChange = true ; }" LLVM,RISCV,3805,"Predict the next statement of this code snippet: static bool bindsLocally ( const GlobalValue * GV , Reloc :: Model RM ) {" LLVM,RISCV,3806,"Predict the next statement of this code snippet: return & FrameLowering ;" LLVM,RISCV,3807,"Predict the next statement of this code snippet: const TargetFrameLowering * getFrameLowering ( ) const {" LLVM,RISCV,3808,"Predict the next statement of this code snippet: return & InstrInfo ;" LLVM,RISCV,3809,"Predict the next statement of this code snippet: const RegisterInfo * getRegisterInfo ( ) const {" LLVM,RISCV,3810,"Predict the next statement of this code snippet: const TargetSelectionDAGInfo * getSelectionDAGInfo ( ) const {" LLVM,RISCV,3811,"Predict the next statement of this code snippet: std :: string CPUName = CPU ; if ( CPUName . empty ( ) ) { CPUName = ; } ParseSubtargetFeatures ( CPUName , FS ) ; return * this ;" LLVM,RISCV,3812,"Predict the next statement of this code snippet: if ( CPUName . empty ( ) ) { CPUName = ; } ParseSubtargetFeatures ( CPUName , FS ) ;" LLVM,RISCV,3813,"Predict the next statement of this code snippet: bool Subtarget :: isPC32DBLSymbol ( const GlobalValue * GV , Reloc :: Model RM , CodeModel :: Model CM ) const { if ( GV -> getAlignment ( ) == ) return false ; if ( CM == CodeModel :: Small ) return bindsLocally ( GV , RM ) ;" LLVM,RISCV,3814,"Predict the next statement of this code snippet: bool isTargetELF ( ) const { return TargetTriple . isOSBinFormatELF ( ) ;" LLVM,RISCV,3815,"Predict the next statement of this code snippet: return TargetTriple . isOSBinFormatELF ( ) ;" LLVM,RISCV,3816,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , ArchVersion ( RV32 ) , HasM ( false ) , HasA ( false ) , HasX ( false ) , HasF ( false ) , HasD ( false ) , TargetTriple ( TT ) , InstrInfo ( initializeSubtargetDependencies ( CPU , FS ) ) , TLInfo ( TM , * this ) , TSInfo ( ) , FrameLowering ( ) {" LLVM,RISCV,3817,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , ArchVersion ( RV32 ) , HasM ( false ) , HasA ( false ) , HasX ( false ) , HasF ( false ) , HasD ( false ) , TargetTriple ( TT ) , InstrInfo ( initializeSubtargetDependencies ( CPU , FS ) ) , TLInfo ( TM , * this ) , TSInfo ( ) , FrameLowering ( ) {" LLVM,RISCV,3818,"Predict the next statement of this code snippet: bool useSoftFloat ( ) const { return UseSoftFloat ;" LLVM,RISCV,3819,"Predict the next statement of this code snippet: return EnableLinkerRelax ;" LLVM,RISCV,3820,"Predict the next statement of this code snippet: return true ;" LLVM,RISCV,3821,"Predict the next statement of this code snippet: return EnableRVCHintInstrs ;" LLVM,RISCV,3822,"Predict the next statement of this code snippet: return EnableRVCHintInstrs ;" LLVM,RISCV,3823,"Predict the next statement of this code snippet: return EnableSaveRestore ;" LLVM,RISCV,3824,"Predict the next statement of this code snippet: return EnableUnalignedScalarMem ;" LLVM,RISCV,3825,"Predict the next statement of this code snippet: bool enableUnalignedScalarMem ( ) const {" LLVM,RISCV,3826,"Predict the next statement of this code snippet: return hasVInstructionsI64 ( ) ? : ;" LLVM,RISCV,3827,"Predict the next statement of this code snippet: return & InstrInfo ;" LLVM,RISCV,3828,"Predict the next statement of this code snippet: return & InstrInfo ;" LLVM,RISCV,3829,"Predict the next statement of this code snippet: unsigned getMaxInterleaveFactor ( ) const {" LLVM,RISCV,3830,"Predict the next statement of this code snippet: unsigned getMaxVLen ( ) const { return ;" LLVM,RISCV,3831,"Predict the next statement of this code snippet: unsigned getMaxVLen ( ) const {" LLVM,RISCV,3832,"Predict the next statement of this code snippet: unsigned getMinVLen ( ) const { return ZvlLen ;" LLVM,RISCV,3833,"Predict the next statement of this code snippet: return ProcFamily ;" LLVM,RISCV,3834,"Predict the next statement of this code snippet: return ProcFamily ;" LLVM,RISCV,3835,"Predict the next statement of this code snippet: unsigned getRealMaxVLen ( ) const { unsigned VLen = getMaxRVVVectorSizeInBits ( ) ;" LLVM,RISCV,3836,"Predict the next statement of this code snippet: return & TSInfo ;" LLVM,RISCV,3837,"Predict the next statement of this code snippet: return & TSInfo ;" LLVM,RISCV,3838,"Predict the next statement of this code snippet: const TargetLowering * getTargetLowering ( ) const override { return & TLInfo ;" LLVM,RISCV,3839,"Predict the next statement of this code snippet: const TargetLowering * getTargetLowering ( ) const override { return & TLInfo ;" LLVM,RISCV,3840,"Predict the next statement of this code snippet: unsigned getXLen ( ) const { return XLen ;" LLVM,RISCV,3841,"Predict the next statement of this code snippet: MVT getXLenVT ( ) const {" LLVM,RISCV,3842,"Predict the next statement of this code snippet: return XLenVT ;" LLVM,RISCV,3843,"Predict the next statement of this code snippet: bool hasStdExtA ( ) const { return HasStdExtA ;" LLVM,RISCV,3844,"Predict the next statement of this code snippet: return HasStdExtC ;" LLVM,RISCV,3845,"Predict the next statement of this code snippet: return HasStdExtC ;" LLVM,RISCV,3846,"Predict the next statement of this code snippet: bool hasStdExtF ( ) const {" LLVM,RISCV,3847,"Predict the next statement of this code snippet: bool hasStdExtF ( ) const {" LLVM,RISCV,3848,"Predict the next statement of this code snippet: bool hasStdExtM ( ) const {" LLVM,RISCV,3849,"Predict the next statement of this code snippet: return HasStdExtV ;" LLVM,RISCV,3850,"Predict the next statement of this code snippet: return HasStdExtZba ;" LLVM,RISCV,3851,"Predict the next statement of this code snippet: bool hasStdExtZba ( ) const {" LLVM,RISCV,3852,"Predict the next statement of this code snippet: bool hasStdExtZbb ( ) const { return HasStdExtZbb ;" LLVM,RISCV,3853,"Predict the next statement of this code snippet: return HasStdExtZbb ;" LLVM,RISCV,3854,"Predict the next statement of this code snippet: return HasStdExtZbc ;" LLVM,RISCV,3855,"Predict the next statement of this code snippet: bool hasStdExtZbe ( ) const {" LLVM,RISCV,3856,"Predict the next statement of this code snippet: bool hasStdExtZbf ( ) const {" LLVM,RISCV,3857,"Predict the next statement of this code snippet: return HasStdExtZbkb ;" LLVM,RISCV,3858,"Predict the next statement of this code snippet: return HasStdExtZbkc ;" LLVM,RISCV,3859,"Predict the next statement of this code snippet: bool hasStdExtZbkx ( ) const { return HasStdExtZbkx ;" LLVM,RISCV,3860,"Predict the next statement of this code snippet: return HasStdExtZbkx ;" LLVM,RISCV,3861,"Predict the next statement of this code snippet: return HasStdExtZbm ;" LLVM,RISCV,3862,"Predict the next statement of this code snippet: bool hasStdExtZbm ( ) const { return HasStdExtZbm ;" LLVM,RISCV,3863,"Predict the next statement of this code snippet: bool hasStdExtZbp ( ) const {" LLVM,RISCV,3864,"Predict the next statement of this code snippet: return HasStdExtZbp ;" LLVM,RISCV,3865,"Predict the next statement of this code snippet: bool hasStdExtZbr ( ) const { return HasStdExtZbr ;" LLVM,RISCV,3866,"Predict the next statement of this code snippet: bool hasStdExtZbr ( ) const {" LLVM,RISCV,3867,"Predict the next statement of this code snippet: return HasStdExtZbt ;" LLVM,RISCV,3868,"Predict the next statement of this code snippet: return HasStdExtZdinx ;" LLVM,RISCV,3869,"Predict the next statement of this code snippet: return HasStdExtZfh ;" LLVM,RISCV,3870,"Predict the next statement of this code snippet: bool hasStdExtZfh ( ) const { return HasStdExtZfh ;" LLVM,RISCV,3871,"Predict the next statement of this code snippet: return HasStdExtZfhmin ;" LLVM,RISCV,3872,"Predict the next statement of this code snippet: bool hasStdExtZfhmin ( ) const { return HasStdExtZfhmin ;" LLVM,RISCV,3873,"Predict the next statement of this code snippet: bool hasStdExtZfinx ( ) const {" LLVM,RISCV,3874,"Predict the next statement of this code snippet: bool hasStdExtZhinx ( ) const {" LLVM,RISCV,3875,"Predict the next statement of this code snippet: bool hasStdExtZhinx ( ) const { return HasStdExtZhinx ;" LLVM,RISCV,3876,"Predict the next statement of this code snippet: bool hasStdExtZihintpause ( ) const {" LLVM,RISCV,3877,"Predict the next statement of this code snippet: bool hasStdExtZknd ( ) const {" LLVM,RISCV,3878,"Predict the next statement of this code snippet: return HasStdExtZknd ;" LLVM,RISCV,3879,"Predict the next statement of this code snippet: bool hasStdExtZkne ( ) const {" LLVM,RISCV,3880,"Predict the next statement of this code snippet: bool hasStdExtZkr ( ) const {" LLVM,RISCV,3881,"Predict the next statement of this code snippet: return HasStdExtZksed ;" LLVM,RISCV,3882,"Predict the next statement of this code snippet: bool hasStdExtZksed ( ) const {" LLVM,RISCV,3883,"Predict the next statement of this code snippet: bool hasStdExtZksh ( ) const {" LLVM,RISCV,3884,"Predict the next statement of this code snippet: return HasStdExtZksh ;" LLVM,RISCV,3885,"Predict the next statement of this code snippet: bool hasStdExtZvfh ( ) const { return HasStdExtZvfh ;" LLVM,RISCV,3886,"Predict the next statement of this code snippet: bool hasStdExtZvfh ( ) const {" LLVM,RISCV,3887,"Predict the next statement of this code snippet: bool hasVInstructions ( ) const {" LLVM,RISCV,3888,"Predict the next statement of this code snippet: return HasStdExtZve32x ;" LLVM,RISCV,3889,"Predict the next statement of this code snippet: bool hasVInstructionsAnyF ( ) const {" LLVM,RISCV,3890,"Predict the next statement of this code snippet: bool hasVInstructionsF32 ( ) const { return HasStdExtZve32f && HasStdExtF ;" LLVM,RISCV,3891,"Predict the next statement of this code snippet: return HasStdExtZve64d && HasStdExtD ;" LLVM,RISCV,3892,"Predict the next statement of this code snippet: bool hasVInstructionsI64 ( ) const {" LLVM,RISCV,3893,"Predict the next statement of this code snippet: return HasStdExtZve64x ;" LLVM,RISCV,3894,"Predict the next statement of this code snippet: bool is64Bit ( ) const {" LLVM,RISCV,3895,"Predict the next statement of this code snippet: bool is64Bit ( ) const { return HasRV64 ;" LLVM,RISCV,3896,"Predict the next statement of this code snippet: assert ( i < && ) ;" LLVM,RISCV,3897,"Predict the next statement of this code snippet: assert ( i < && ) ; return UserReservedRegister [ i ] ;" LLVM,RISCV,3898,"Predict the next statement of this code snippet: return IsRV32E ;" LLVM,RISCV,3899,"Predict the next statement of this code snippet: bool isRV32E ( ) const {" LLVM,RISCV,3900,"Predict the next statement of this code snippet: assert ( hasVInstructions ( ) && ) ; assert ( RVVVectorLMULMax <= && isPowerOf2_32 ( RVVVectorLMULMax ) && ) ;" LLVM,RISCV,3901,"Predict the next statement of this code snippet: assert ( RVVVectorBitsMax >= RVVVectorBitsMin && ) ; unsigned Max = std :: max ( RVVVectorBitsMin , RVVVectorBitsMax ) ; return PowerOf2Floor ( ( Max < || Max > ) ? : Max ) ;" LLVM,RISCV,3902,"Predict the next statement of this code snippet: assert ( ( RVVVectorBitsMin == || ( RVVVectorBitsMin >= && RVVVectorBitsMin <= && isPowerOf2_32 ( RVVVectorBitsMin ) ) ) && ) ;" LLVM,RISCV,3903,"Predict the next statement of this code snippet: bool hasStdExtB ( ) const {" LLVM,RISCV,3904,"Predict the next statement of this code snippet: bool hasStdExtZbproposedc ( ) const { return HasStdExtZbproposedc ;" LLVM,RISCV,3905,"Predict the next statement of this code snippet: bool hasStdExtZbproposedc ( ) const { return HasStdExtZbproposedc ;" LLVM,RISCV,3906,"Predict the next statement of this code snippet: Subtarget & Subtarget :: initializeSubtargetDependencies ( const Triple & TT , StringRef CPU , StringRef TuneCPU , StringRef FS , StringRef ABIName ) { bool Is64Bit = TT . isArch64Bit ( ) ; if ( CPU . empty ( ) || CPU == ) CPU = Is64Bit ? : ;" LLVM,RISCV,3907,"Predict the next statement of this code snippet: bool Is64Bit = TT . isArch64Bit ( ) ; if ( CPU . empty ( ) || CPU == ) CPU = Is64Bit ? : ; if ( TuneCPU . empty ( ) ) TuneCPU = CPU ; ParseSubtargetFeatures ( CPU , TuneCPU , FS ) ; if ( Is64Bit ) { XLenVT = ; XLen = ;" LLVM,RISCV,3908,"Predict the next statement of this code snippet: return ! DisableUsingConstantPoolForLargeInts ;" LLVM,RISCV,3909,"Predict the next statement of this code snippet: bool Subtarget :: useConstantPoolForLargeInts ( ) const { return ! DisableUsingConstantPoolForLargeInts ;" LLVM,RISCV,3910,"Predict the next statement of this code snippet: return hasVInstructions ( ) && getMinRVVVectorSizeInBits ( ) != ;" LLVM,RISCV,3911,"Predict the next statement of this code snippet: bool Subtarget :: enableSubRegLiveness ( ) const { return EnableSubRegLiveness ;" LLVM,RISCV,3912,"Predict the next statement of this code snippet: if ( RVVVectorBitsMax == ) return ; if ( RVVVectorBitsMax < ( int ) ZvlLen ) report_fatal_error ( ) ; assert ( RVVVectorBitsMax >= && RVVVectorBitsMax <= && isPowerOf2_32 ( RVVVectorBitsMax ) && ) ;" LLVM,RISCV,3913,"Predict the next statement of this code snippet: if ( RVVVectorBitsMax < ( int ) ZvlLen ) report_fatal_error ( ) ; assert ( RVVVectorBitsMax >= && RVVVectorBitsMax <= && isPowerOf2_32 ( RVVVectorBitsMax ) && ) ; assert ( RVVVectorBitsMax >= RVVVectorBitsMin && ) ;" LLVM,RISCV,3914,"Predict the next statement of this code snippet: assert ( ( RVVVectorBitsMin == || ( RVVVectorBitsMin >= && RVVVectorBitsMin <= && isPowerOf2_32 ( RVVVectorBitsMin ) ) ) && ) ; assert ( ( RVVVectorBitsMax >= RVVVectorBitsMin || RVVVectorBitsMax == ) && ) ; unsigned Min = RVVVectorBitsMin ;" LLVM,RISCV,3915,"Predict the next statement of this code snippet: unsigned Subtarget :: getMaxLMULForFixedLengthVectors ( ) const { assert ( hasStdExtV ( ) && ) ;" LLVM,RISCV,3916,"Predict the next statement of this code snippet: assert ( hasStdExtV ( ) && ) ;" LLVM,RISCV,3917,"Predict the next statement of this code snippet: Subtarget & Subtarget :: initializeSubtargetDependencies ( StringRef CPU , StringRef FS , bool Is64Bit ) { std :: string CPUName = CPU ; if ( CPUName . empty ( ) ) CPUName = Is64Bit ? : ; ParseSubtargetFeatures ( CPUName , FS ) ; if ( Is64Bit ) { XLenVT = ; XLen = ; }" LLVM,RISCV,3918,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , StringRef CPU , StringRef FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( CPU , FS , TT . isArch64Bit ( ) ) ) , InstrInfo ( ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3919,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , StringRef CPU , StringRef FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( CPU , FS , TT . isArch64Bit ( ) ) ) , InstrInfo ( ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3920,"Predict the next statement of this code snippet: Subtarget & Subtarget :: initializeSubtargetDependencies ( const Triple & TT , StringRef CPU , StringRef FS , StringRef ABIName ) { bool Is64Bit = TT . isArch64Bit ( ) ; std :: string CPUName = CPU ; if ( CPUName . empty ( ) ) CPUName = Is64Bit ? : ; ParseSubtargetFeatures ( CPUName , FS ) ; if ( Is64Bit ) { XLenVT = ; XLen = ; }" LLVM,RISCV,3921,"Predict the next statement of this code snippet: Subtarget & Subtarget :: initializeSubtargetDependencies ( const Triple & TT , StringRef CPU , StringRef FS , StringRef ABIName ) { bool Is64Bit = TT . isArch64Bit ( ) ; std :: string CPUName = CPU ; if ( CPUName . empty ( ) ) CPUName = Is64Bit ? : ; ParseSubtargetFeatures ( CPUName , FS ) ; if ( Is64Bit ) { XLenVT = ; XLen = ; } TargetABI = ( TT , getFeatureBits ( ) , ABIName ) ; ( TT , getFeatureBits ( ) ) ; return * this ;" LLVM,RISCV,3922,"Predict the next statement of this code snippet: CallLoweringInfo . reset ( new CallLowering ( * getTargetLowering ( ) ) ) ; Legalizer . reset ( new LegalizerInfo ( * this ) ) ; auto * RBI = new RegisterBankInfo ( * getRegisterInfo ( ) ) ;" LLVM,RISCV,3923,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( CPU , FS , TT . isArch64Bit ( ) ) ) , InstrInfo ( ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3924,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( CPU , FS , TT . isArch64Bit ( ) ) ) , InstrInfo ( ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3925,"Predict the next statement of this code snippet: std :: string CPUName = std :: string ( CPU ) ; if ( CPUName . empty ( ) ) CPUName = Is64Bit ? : ; ParseSubtargetFeatures ( CPUName , FS ) ; if ( Is64Bit ) { XLenVT = ; XLen = ; }" LLVM,RISCV,3926,"Predict the next statement of this code snippet: assert ( hasVInstructions ( ) && ) ; assert ( RVVVectorELENMax <= && RVVVectorELENMax >= && isPowerOf2_32 ( RVVVectorELENMax ) && ) ; unsigned ELEN = hasVInstructionsI64 ( ) ? : ; return PowerOf2Floor ( std :: max < unsigned > ( std :: min < unsigned > ( RVVVectorELENMax , ELEN ) , ) ) ;" LLVM,RISCV,3927,"Predict the next statement of this code snippet: unsigned Subtarget :: getMaxELENForFixedLengthVectors ( ) const { assert ( hasVInstructions ( ) && ) ; assert ( RVVVectorELENMax <= && RVVVectorELENMax >= && isPowerOf2_32 ( RVVVectorELENMax ) && ) ; unsigned ELEN = hasVInstructionsI64 ( ) ? : ;" LLVM,RISCV,3928,"Predict the next statement of this code snippet: bool hasC910 ( ) const { return HasC910 ;" LLVM,RISCV,3929,"Predict the next statement of this code snippet: bool hasC910 ( ) const {" LLVM,RISCV,3930,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , ArchVersion ( RV32 ) , HasM ( false ) , HasA ( false ) , HasF ( false ) , HasD ( false ) , TargetTriple ( TT ) , InstrInfo ( initializeSubtargetDependencies ( CPU , FS ) ) , TLInfo ( TM , * this ) , TSInfo ( ) , FrameLowering ( ) {" LLVM,RISCV,3931,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , ArchVersion ( RV32 ) , HasM ( false ) , HasA ( false ) , HasF ( false ) , HasD ( false ) , TargetTriple ( TT ) , InstrInfo ( initializeSubtargetDependencies ( CPU , FS ) ) , TLInfo ( TM , * this ) , TSInfo ( ) , FrameLowering ( ) {" LLVM,RISCV,3932,"Predict the next statement of this code snippet: bool hasStdExtZvqmac ( ) const {" LLVM,RISCV,3933,"Predict the next statement of this code snippet: CallLoweringInfo . reset ( new CallLowering ( * getTargetLowering ( ) ) ) ; Legalizer . reset ( new LegalizerInfo ( * this ) ) ; auto * RBI = new RegisterBankInfo ( * getRegisterInfo ( ) ) ; RegBankInfo . reset ( RBI ) ;" LLVM,RISCV,3934,"Predict the next statement of this code snippet: return EnableCheriRVCInstrs ;" LLVM,RISCV,3935,"Predict the next statement of this code snippet: bool enableCheriRVCInstrs ( ) const {" LLVM,RISCV,3936,"Predict the next statement of this code snippet: return IsCapMode ;" LLVM,RISCV,3937,"Predict the next statement of this code snippet: bool isCapMode ( ) const {" LLVM,RISCV,3938,"Predict the next statement of this code snippet: CallLoweringInfo . reset ( new CallLowering ( * getTargetLowering ( ) ) ) ; Legalizer . reset ( new LegalizerInfo ( * this ) ) ; auto * RBI = new RegisterBankInfo ( * getRegisterInfo ( ) ) ; RegBankInfo . reset ( RBI ) ;" LLVM,RISCV,3939,"Predict the next statement of this code snippet: Legalizer . reset ( new LegalizerInfo ( * this ) ) ; auto * RBI = new RegisterBankInfo ( * getRegisterInfo ( ) ) ; RegBankInfo . reset ( RBI ) ; InstSelector . reset ( createInstructionSelector ( * static_cast < const TargetMachine * > ( & TM ) , * this , * RBI ) ) ;" LLVM,RISCV,3940,"Predict the next statement of this code snippet: return is64Bit ( ) ? : ;" LLVM,RISCV,3941,"Predict the next statement of this code snippet: return is64Bit ( ) ? : ;" LLVM,RISCV,3942,"Predict the next statement of this code snippet: bool Is64Bit = TT . isArch64Bit ( ) ; std :: string CPUName = std :: string ( CPU ) ; std :: string TuneCPUName = std :: string ( TuneCPU ) ; if ( CPUName . empty ( ) ) CPUName = Is64Bit ? : ; if ( TuneCPUName . empty ( ) ) TuneCPUName = CPUName ; ParseSubtargetFeatures ( CPUName , TuneCPUName , FS ) ; if ( Is64Bit ) {" LLVM,RISCV,3943,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , ArchVersion ( RV32 ) , HasM ( false ) , HasA ( false ) , HasF ( false ) , HasD ( false ) , IsR5CY ( false ) , TargetTriple ( TT ) , InstrInfo ( initializeSubtargetDependencies ( CPU , FS ) ) , TLInfo ( TM , * this ) , TSInfo ( ) , FrameLowering ( ) {" LLVM,RISCV,3944,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , ArchVersion ( RV32 ) , HasM ( false ) , HasA ( false ) , HasF ( false ) , HasD ( false ) , IsR5CY ( false ) , TargetTriple ( TT ) , InstrInfo ( initializeSubtargetDependencies ( CPU , FS ) ) , TLInfo ( TM , * this ) , TSInfo ( ) , FrameLowering ( ) {" LLVM,RISCV,3945,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( CPU , FS , TT . isArch64Bit ( ) ) ) , InstrInfo ( * this ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3946,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( CPU , FS , TT . isArch64Bit ( ) ) ) , InstrInfo ( * this ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3947,"Predict the next statement of this code snippet: assert ( hasVInstructions ( ) && ) ;" LLVM,RISCV,3948,"Predict the next statement of this code snippet: assert ( hasVInstructions ( ) && ) ; assert ( RVVVectorELENMax <= && RVVVectorELENMax >= && isPowerOf2_32 ( RVVVectorELENMax ) && ) ; return PowerOf2Floor ( std :: max < unsigned > ( std :: min < unsigned > ( RVVVectorELENMax , ) , ) ) ;" LLVM,RISCV,3949,"Predict the next statement of this code snippet: if ( RVVVectorBitsMax == ) return ; assert ( RVVVectorBitsMax >= && RVVVectorBitsMax <= && isPowerOf2_32 ( RVVVectorBitsMax ) && ) ; assert ( RVVVectorBitsMax >= RVVVectorBitsMin && ) ;" LLVM,RISCV,3950,"Predict the next statement of this code snippet: assert ( hasVInstructions ( ) && ) ; assert ( ( RVVVectorBitsMin == || ( RVVVectorBitsMin >= && RVVVectorBitsMax <= && isPowerOf2_32 ( RVVVectorBitsMin ) ) ) && ) ;" LLVM,RISCV,3951,"Predict the next statement of this code snippet: assert ( ( RVVVectorBitsMax >= RVVVectorBitsMin || RVVVectorBitsMax == ) && ) ; unsigned Min = RVVVectorBitsMin ;" LLVM,RISCV,3952,"Predict the next statement of this code snippet: return HasStdExtP ;" LLVM,RISCV,3953,"Predict the next statement of this code snippet: return Zvl65536b ;" LLVM,RISCV,3954,"Predict the next statement of this code snippet: bool hasVInstructions ( ) const { return HasStdExtV || HasStdExtZve32x ;" LLVM,RISCV,3955,"Predict the next statement of this code snippet: return HasStdExtV || HasStdExtZve32x ;" LLVM,RISCV,3956,"Predict the next statement of this code snippet: bool hasVInstructionsF32 ( ) const { return HasStdExtV || ( HasStdExtZve32f && HasStdExtF ) ;" LLVM,RISCV,3957,"Predict the next statement of this code snippet: bool hasVInstructionsF32 ( ) const { return HasStdExtV || ( HasStdExtZve32f && HasStdExtF ) ;" LLVM,RISCV,3958,"Predict the next statement of this code snippet: return HasStdExtV || ( HasStdExtZve64d && HasStdExtD ) ;" LLVM,RISCV,3959,"Predict the next statement of this code snippet: bool hasVInstructionsF64 ( ) const {" LLVM,RISCV,3960,"Predict the next statement of this code snippet: bool hasVInstructionsI64 ( ) const { return HasStdExtV || HasStdExtZve64x ;" LLVM,RISCV,3961,"Predict the next statement of this code snippet: bool hasVInstructionsI64 ( ) const {" LLVM,RISCV,3962,"Predict the next statement of this code snippet: bool hasNonStdExtPulp ( ) const {" LLVM,RISCV,3963,"Predict the next statement of this code snippet: return HasExtXCoreV ;" LLVM,RISCV,3964,"Predict the next statement of this code snippet: bool hasExtXCoreVMac ( ) const { return HasExtXCoreVMac ;" LLVM,RISCV,3965,"Predict the next statement of this code snippet: return HasExtXCoreVMem ;" LLVM,RISCV,3966,"Predict the next statement of this code snippet: bool hasVInstructions ( ) const { return HasStdExtV ;" LLVM,RISCV,3967,"Predict the next statement of this code snippet: bool hasVInstructions ( ) const { return HasStdExtV ;" LLVM,RISCV,3968,"Predict the next statement of this code snippet: bool hasVInstructionsF16 ( ) const { return HasStdExtV && hasStdExtZfh ( ) ;" LLVM,RISCV,3969,"Predict the next statement of this code snippet: bool hasVInstructionsF32 ( ) const {" LLVM,RISCV,3970,"Predict the next statement of this code snippet: bool hasVInstructionsF64 ( ) const { return HasStdExtV && hasStdExtD ( ) ;" LLVM,RISCV,3971,"Predict the next statement of this code snippet: bool hasVInstructionsF64 ( ) const {" LLVM,RISCV,3972,"Predict the next statement of this code snippet: return HasStdExtV ;" LLVM,RISCV,3973,"Predict the next statement of this code snippet: bool hasVInstructionsI64 ( ) const {" LLVM,RISCV,3974,"Predict the next statement of this code snippet: auto * RBI = new RegisterBankInfo ( * getRegisterInfo ( ) ) ; RegBankInfo . reset ( RBI ) ;" LLVM,RISCV,3975,"Predict the next statement of this code snippet: if ( RVVVectorBitsMax == ) return ; assert ( RVVVectorBitsMax >= && isPowerOf2_32 ( RVVVectorBitsMax ) && ) ; assert ( RVVVectorBitsMax >= RVVVectorBitsMin && ) ;" LLVM,RISCV,3976,"Predict the next statement of this code snippet: if ( RVVVectorBitsMax != ) Min = std :: min ( RVVVectorBitsMin , RVVVectorBitsMax ) ;" LLVM,RISCV,3977,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , StringRef CPU , StringRef FS , StringRef ABIName , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( TT , CPU , FS , ABIName ) ) , InstrInfo ( ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3978,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , StringRef CPU , StringRef FS , StringRef ABIName , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , FrameLowering ( initializeSubtargetDependencies ( TT , CPU , FS , ABIName ) ) , InstrInfo ( ) , RegInfo ( getHwMode ( ) ) , TLInfo ( TM , * this ) {" LLVM,RISCV,3979,"Predict the next statement of this code snippet: void Subtarget :: anchor ( ) {" LLVM,RISCV,3980,"Predict the next statement of this code snippet: void Subtarget :: anchor ( ) {" LLVM,RISCV,3981,"Predict the next statement of this code snippet: const CallLowering * Subtarget :: getCallLowering ( ) const {" LLVM,RISCV,3982,"Predict the next statement of this code snippet: return InstSelector . get ( ) ;" LLVM,RISCV,3983,"Predict the next statement of this code snippet: return Legalizer . get ( ) ;" LLVM,RISCV,3984,"Predict the next statement of this code snippet: unsigned Subtarget :: getMaxELENForFixedLengthVectors ( ) const { assert ( hasStdExtV ( ) && ) ; assert ( RVVVectorELENMax <= && RVVVectorELENMax >= && isPowerOf2_32 ( RVVVectorELENMax ) && ) ;" LLVM,RISCV,3985,"Predict the next statement of this code snippet: return PowerOf2Floor ( std :: max < unsigned > ( std :: min < unsigned > ( RVVVectorELENMax , ) , ) ) ;" LLVM,RISCV,3986,"Predict the next statement of this code snippet: return hasStdExtV ( ) ? MaxInterleaveFactor : ;" LLVM,RISCV,3987,"Predict the next statement of this code snippet: assert ( hasStdExtV ( ) && ) ;" LLVM,RISCV,3988,"Predict the next statement of this code snippet: assert ( RVVVectorBitsMax >= && RVVVectorBitsMax <= && isPowerOf2_32 ( RVVVectorBitsMax ) && ) ; assert ( RVVVectorBitsMax >= RVVVectorBitsMin && ) ; unsigned Max = std :: max ( RVVVectorBitsMin , RVVVectorBitsMax ) ; return PowerOf2Floor ( ( Max < || Max > ) ? : Max ) ;" LLVM,RISCV,3989,"Predict the next statement of this code snippet: assert ( ( RVVVectorBitsMax >= RVVVectorBitsMin || RVVVectorBitsMax == ) && ) ; unsigned Min = RVVVectorBitsMin ; if ( RVVVectorBitsMax != ) Min = std :: min ( RVVVectorBitsMin , RVVVectorBitsMax ) ; return PowerOf2Floor ( ( Min < || Min > ) ? : Min ) ;" LLVM,RISCV,3990,"Predict the next statement of this code snippet: return HasStdExtZvamo ;" LLVM,RISCV,3991,"Predict the next statement of this code snippet: bool hasStdExtZvlsseg ( ) const {" LLVM,RISCV,3992,"Predict the next statement of this code snippet: if ( CPU == ) report_fatal_error ( Twine ( ) + ( Is64Bit ? : ) ) ; if ( TuneCPU . empty ( ) ) TuneCPU = CPU ; ParseSubtargetFeatures ( CPU , TuneCPU , FS ) ; if ( Is64Bit ) {" LLVM,RISCV,3993,"Predict the next statement of this code snippet: if ( CPU == ) report_fatal_error ( Twine ( ) + ( Is64Bit ? : ) ) ; if ( TuneCPU . empty ( ) ) TuneCPU = CPU ;" LLVM,RISCV,3994,"Predict the next statement of this code snippet: Legalizer . reset ( new LegalizerInfo ( * this ) ) ; auto * RBI = new RegisterBankInfo ( * getRegisterInfo ( ) ) ; RegBankInfo . reset ( RBI ) ; InstSelector . reset ( createInstructionSelector ( * static_cast < const TargetMachine * > ( & TM ) , * this , * RBI ) ) ;" LLVM,RISCV,3995,"Predict the next statement of this code snippet: RegisterTarget < Triple :: riscv32 > X ( getThe32Target ( ) , , ) ;" LLVM,RISCV,3996,"Predict the next statement of this code snippet: Target & getThe32Target ( ) { static Target The32Target ;" LLVM,RISCV,3997,"Predict the next statement of this code snippet: static Target The32Target ;" LLVM,RISCV,3998,"Predict the next statement of this code snippet: Target & getThe64Target ( ) { static Target The64Target ;" LLVM,RISCV,3999,"Predict the next statement of this code snippet: RegisterTarget < Triple :: riscv32 > X ( getThe32Target ( ) , , , ) ;" LLVM,RISCV,4000,"Predict the next statement of this code snippet: static Target The32Target ;" LLVM,RISCV,4001,"Predict the next statement of this code snippet: Target & llvm :: getThe32Target ( ) { static Target The32Target ;" LLVM,RISCV,4002,"Predict the next statement of this code snippet: static Target The64Target ;" LLVM,RISCV,4003,"Predict the next statement of this code snippet: RegisterTarget < Triple :: riscv64 > Y ( getThe64Target ( ) , , , ) ;" LLVM,RISCV,4004,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeTargetInfo ( ) { RegisterTarget < Triple :: riscv32 > X ( getThe32Target ( ) , , , ) ;" LLVM,RISCV,4005,"Predict the next statement of this code snippet: void LLVMInitializeTargetInfo ( ) {" LLVM,RISCV,4006,"Predict the next statement of this code snippet: static std :: string computeDataLayout ( const Triple & TT ) { std :: string Ret = TT . isArch64Bit ( ) ? : ;" LLVM,RISCV,4007,"Predict the next statement of this code snippet: return new PassConfig ( this , PM ) ;" LLVM,RISCV,4008,"Predict the next statement of this code snippet: return getTM < TargetMachine > ( ) ;" LLVM,RISCV,4009,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine > A ( TheTarget ) ; RegisterTargetMachine < 64TargetMachine > B ( The64Target ) ;" LLVM,RISCV,4010,"Predict the next statement of this code snippet: 64TargetMachine :: 64TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) {" LLVM,RISCV,4011,"Predict the next statement of this code snippet: 64TargetMachine :: 64TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) {" LLVM,RISCV,4012,"Predict the next statement of this code snippet: PassConfig ( TargetMachine * TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,RISCV,4013,"Predict the next statement of this code snippet: PassConfig ( TargetMachine * TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,RISCV,4014,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , RM , CM , OL ) , TLOF ( make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) {" LLVM,RISCV,4015,"Predict the next statement of this code snippet: return TLOF . get ( ) ;" LLVM,RISCV,4016,"Predict the next statement of this code snippet: const auto * MFI = MF . getInfo < MachineFunctionInfo > ( ) ; return new yaml :: MachineFunctionInfo ( * MFI ) ;" LLVM,RISCV,4017,"Predict the next statement of this code snippet: const auto * MFI = MF . getInfo < MachineFunctionInfo > ( ) ;" LLVM,RISCV,4018,"Predict the next statement of this code snippet: TargetTransformInfo TargetMachine :: getTargetTransformInfo ( const Function & F ) {" LLVM,RISCV,4019,"Predict the next statement of this code snippet: bool IsRV64 ( ) const { return getTargetTriple ( ) . isArch64Bit ( ) ;" LLVM,RISCV,4020,"Predict the next statement of this code snippet: PFS . MF . getInfo < MachineFunctionInfo > ( ) -> initializeBaseYamlFields ( YamlMFI ) ;" LLVM,RISCV,4021,"Predict the next statement of this code snippet: if ( TT . isArch64Bit ( ) ) { return ; } else { assert ( TT . isArch32Bit ( ) && ) ;" LLVM,RISCV,4022,"Predict the next statement of this code snippet: assert ( TT . isArch32Bit ( ) && ) ;" LLVM,RISCV,4023,"Predict the next statement of this code snippet: TargetPassConfig * TargetMachine :: createPassConfig ( PassManagerBase & PM ) {" LLVM,RISCV,4024,"Predict the next statement of this code snippet: TargetPassConfig * TargetMachine :: createPassConfig ( PassManagerBase & PM ) { return new TargetPassConfig ( * this , PM ) ;" LLVM,RISCV,4025,"Predict the next statement of this code snippet: if ( CM ) return * CM ; return CodeModel :: Small ;" LLVM,RISCV,4026,"Predict the next statement of this code snippet: if ( CM ) return * CM ;" LLVM,RISCV,4027,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine > X ( getThe32Target ( ) ) ; RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ;" LLVM,RISCV,4028,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM ) , OL ) , TLOF ( make_unique < TargetLoweringObjectFileELF > ( ) ) {" LLVM,RISCV,4029,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM ) , OL ) , TLOF ( make_unique < ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) {" LLVM,RISCV,4030,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM ) , OL ) , TLOF ( make_unique < ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) {" LLVM,RISCV,4031,"Predict the next statement of this code snippet: if ( TT . isArch64Bit ( ) ) { return ; } else {" LLVM,RISCV,4032,"Predict the next statement of this code snippet: static std :: string computeDataLayout ( const Triple & TT ) { if ( TT . isArch64Bit ( ) ) { return ; } else {" LLVM,RISCV,4033,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , CM , OL ) , TLOF ( make_unique < TargetLoweringObjectFileELF > ( ) ) {" LLVM,RISCV,4034,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , CM , OL ) , TLOF ( make_unique < TargetLoweringObjectFileELF > ( ) ) {" LLVM,RISCV,4035,"Predict the next statement of this code snippet: bool PassConfig :: addGlobalInstructionSelect ( ) { addPass ( new InstructionSelect ( ) ) ; return false ;" LLVM,RISCV,4036,"Predict the next statement of this code snippet: bool PassConfig :: addGlobalInstructionSelect ( ) {" LLVM,RISCV,4037,"Predict the next statement of this code snippet: void PassConfig :: addPreRegAlloc ( ) { if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) {" LLVM,RISCV,4038,"Predict the next statement of this code snippet: if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) { addPass ( createMergeBaseOffsetOptPass ( ) ) ;" LLVM,RISCV,4039,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine > X ( getThe32Target ( ) ) ; RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ;" LLVM,RISCV,4040,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ; auto * PR = PassRegistry :: getPassRegistry ( ) ; initializeGlobalISel ( * PR ) ; initializeMergeBaseOffsetOptPass ( * PR ) ;" LLVM,RISCV,4041,"Predict the next statement of this code snippet: bool PassConfig :: addIRTranslator ( ) { addPass ( new IRTranslator ( ) ) ;" LLVM,RISCV,4042,"Predict the next statement of this code snippet: return ; } else {" LLVM,RISCV,4043,"Predict the next statement of this code snippet: assert ( TT . isArch32Bit ( ) && ) ; return ;" LLVM,RISCV,4044,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine > X ( getThe32Target ( ) ) ; RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ;" LLVM,RISCV,4045,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( std :: make_unique < ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , Options . MCOptions . getABIName ( ) , * this ) {" LLVM,RISCV,4046,"Predict the next statement of this code snippet: initializeGlobalISel ( * PR ) ; initializeMergeBaseOffsetOptPass ( * PR ) ; initializeExpandPseudoPass ( * PR ) ; initializeCleanupVSETVLIPass ( * PR ) ;" LLVM,RISCV,4047,"Predict the next statement of this code snippet: addPass ( new InstructionSelect ( getOptLevel ( ) ) ) ; return false ;" LLVM,RISCV,4048,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) { addPass ( createAtomicExpandPass ( ) ) ; addPass ( createGatherScatterLoweringPass ( ) ) ;" LLVM,RISCV,4049,"Predict the next statement of this code snippet: bool PassConfig :: addIRTranslator ( ) { addPass ( new IRTranslator ( getOptLevel ( ) ) ) ; return false ;" LLVM,RISCV,4050,"Predict the next statement of this code snippet: bool PassConfig :: addLegalizeMachineIR ( ) {" LLVM,RISCV,4051,"Predict the next statement of this code snippet: bool PassConfig :: addLegalizeMachineIR ( ) { addPass ( new Legalizer ( ) ) ; return false ;" LLVM,RISCV,4052,"Predict the next statement of this code snippet: if ( TM -> getTargetTriple ( ) . getArch ( ) == Triple :: riscv64 ) addPass ( createSExtWRemovalPass ( ) ) ;" LLVM,RISCV,4053,"Predict the next statement of this code snippet: void PassConfig :: addPostRegAlloc ( ) {" LLVM,RISCV,4054,"Predict the next statement of this code snippet: void PassConfig :: addPostRegAlloc ( ) { if ( TM -> getOptLevel ( ) != CodeGenOpt :: None && EnableRedundantCopyElimination ) addPass ( createRedundantCopyEliminationPass ( ) ) ;" LLVM,RISCV,4055,"Predict the next statement of this code snippet: addPass ( createExpandAtomicPseudoPass ( ) ) ;" LLVM,RISCV,4056,"Predict the next statement of this code snippet: addPass ( createExpandAtomicPseudoPass ( ) ) ;" LLVM,RISCV,4057,"Predict the next statement of this code snippet: void PassConfig :: addPreRegAlloc ( ) { if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createMergeBaseOffsetOptPass ( ) ) ;" LLVM,RISCV,4058,"Predict the next statement of this code snippet: void PassConfig :: addPreRegAlloc ( ) { if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createMergeBaseOffsetOptPass ( ) ) ;" LLVM,RISCV,4059,"Predict the next statement of this code snippet: void PassConfig :: addPreSched2 ( ) {" LLVM,RISCV,4060,"Predict the next statement of this code snippet: void PassConfig :: addPreSched2 ( ) {" LLVM,RISCV,4061,"Predict the next statement of this code snippet: bool PassConfig :: addRegBankSelect ( ) { addPass ( new RegBankSelect ( ) ) ;" LLVM,RISCV,4062,"Predict the next statement of this code snippet: addPass ( new RegBankSelect ( ) ) ;" LLVM,RISCV,4063,"Predict the next statement of this code snippet: static StringRef computeDataLayout ( const Triple & TT ) { if ( TT . isArch64Bit ( ) ) return ; assert ( TT . isArch32Bit ( ) && ) ; return ;" LLVM,RISCV,4064,"Predict the next statement of this code snippet: assert ( TT . isArch32Bit ( ) && ) ; return ;" LLVM,RISCV,4065,"Predict the next statement of this code snippet: std :: string TuneCPU = TuneAttr . isValid ( ) ? TuneAttr . getValueAsString ( ) . str ( ) : CPU ; std :: string FS = FSAttr . isValid ( ) ? FSAttr . getValueAsString ( ) . str ( ) : TargetFS ; std :: string Key = CPU + TuneCPU + FS ; auto & I = SubtargetMap [ Key ] ; if ( ! I ) {" LLVM,RISCV,4066,"Predict the next statement of this code snippet: Attribute CPUAttr = F . getFnAttribute ( ) ; Attribute TuneAttr = F . getFnAttribute ( ) ; Attribute FSAttr = F . getFnAttribute ( ) ; std :: string CPU = CPUAttr . isValid ( ) ? CPUAttr . getValueAsString ( ) . str ( ) : TargetCPU ; std :: string TuneCPU = TuneAttr . isValid ( ) ? TuneAttr . getValueAsString ( ) . str ( ) : CPU ; std :: string FS = FSAttr . isValid ( ) ? FSAttr . getValueAsString ( ) . str ( ) : TargetFS ; std :: string Key = CPU + TuneCPU + FS ; auto & I = SubtargetMap [ Key ] ; if ( ! I ) { resetTargetOptions ( F ) ; auto ABIName = Options . MCOptions . getABIName ( ) ; if ( const MDString * ModuleTargetABI = dyn_cast_or_null < MDString > ( F . getParent ( ) -> getModuleFlag ( ) ) ) { auto TargetABI = ( ABIName ) ; if ( TargetABI != && ModuleTargetABI -> getString ( ) != ABIName ) {" LLVM,RISCV,4067,"Predict the next statement of this code snippet: bool TargetMachine :: isNoopAddrSpaceCast ( unsigned SrcAS , unsigned DstAS ) const {" LLVM,RISCV,4068,"Predict the next statement of this code snippet: bool TargetMachine :: isNoopAddrSpaceCast ( unsigned SrcAS , unsigned DstAS ) const {" LLVM,RISCV,4069,"Predict the next statement of this code snippet: initializeGlobalISel ( * PR ) ; initializeGatherScatterLoweringPass ( * PR ) ; initializeMergeBaseOffsetOptPass ( * PR ) ;" LLVM,RISCV,4070,"Predict the next statement of this code snippet: addPass ( & BranchRelaxationPassID ) ; addPass ( createMakeCompressibleOptPass ( ) ) ;" LLVM,RISCV,4071,"Predict the next statement of this code snippet: void PassConfig :: addPreEmitPass ( ) {" LLVM,RISCV,4072,"Predict the next statement of this code snippet: if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) { addPass ( createBarrierNoopPass ( ) ) ;" LLVM,RISCV,4073,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ; auto * PR = PassRegistry :: getPassRegistry ( ) ; initializeGlobalISel ( * PR ) ; initializeMakeCompressibleOptPass ( * PR ) ;" LLVM,RISCV,4074,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( std :: make_unique < ELFTargetObjectFile > ( ) ) { initAsmInfo ( ) ; setMachineOutliner ( true ) ;" LLVM,RISCV,4075,"Predict the next statement of this code snippet: if ( getOptLevel ( ) > CodeGenOpt :: None ) addPass ( createRemoveRedundancyVSETVLPass ( ) ) ;" LLVM,RISCV,4076,"Predict the next statement of this code snippet: if ( getOptLevel ( ) > CodeGenOpt :: None ) addPass ( createRemoveRedundancyVSETVLPass ( ) ) ;" LLVM,RISCV,4077,"Predict the next statement of this code snippet: Attribute FSAttr = F . getFnAttribute ( ) ; std :: string CPU = ! CPUAttr . hasAttribute ( Attribute :: None ) ? CPUAttr . getValueAsString ( ) . str ( ) : TargetCPU ; std :: string FS = ! FSAttr . hasAttribute ( Attribute :: None ) ? FSAttr . getValueAsString ( ) . str ( ) : TargetFS ; std :: string Key = CPU + FS ; auto & I = SubtargetMap [ Key ] ; if ( ! I ) { resetTargetOptions ( F ) ; auto ABIName = Options . MCOptions . getABIName ( ) ; if ( const MDString * ModuleTargetABI = dyn_cast_or_null < MDString > ( F . getParent ( ) -> getModuleFlag ( ) ) ) {" LLVM,RISCV,4078,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ; auto PR = PassRegistry :: getPassRegistry ( ) ; initializeGlobalISel ( * PR ) ; initializeExpandPseudoPass ( * PR ) ;" LLVM,RISCV,4079,"Predict the next statement of this code snippet: addPass ( createCheriBoundAllocasPass ( ) ) ; TargetPassConfig :: addIRPasses ( ) ;" LLVM,RISCV,4080,"Predict the next statement of this code snippet: addPass ( createCheriBoundAllocasPass ( ) ) ; TargetPassConfig :: addIRPasses ( ) ;" LLVM,RISCV,4081,"Predict the next statement of this code snippet: IntegerTypes = ; } else { IntegerTypes = ; } StringRef CapTypes = ; StringRef PurecapOptions = ; if ( FS . contains ( ) ) { if ( TT . isArch64Bit ( ) ) CapTypes = ; else CapTypes = ; ABI = ( Options . MCOptions . getABIName ( ) ) ; if ( ABI != && ( ABI ) ) PurecapOptions = ; }" LLVM,RISCV,4082,"Predict the next statement of this code snippet: } else { IntegerTypes = ; } StringRef CapTypes = ; StringRef PurecapOptions = ; if ( FS . contains ( ) ) { if ( TT . isArch64Bit ( ) ) CapTypes = ; else CapTypes = ; ABI = ( Options . MCOptions . getABIName ( ) ) ; if ( ABI != && ( ABI ) ) PurecapOptions = ; } return ( + CapTypes + IntegerTypes + + PurecapOptions ) . str ( ) ;" LLVM,RISCV,4083,"Predict the next statement of this code snippet: bool TargetMachine :: isNoopAddrSpaceCast ( unsigned SrcAS , unsigned DstAS ) const {" LLVM,RISCV,4084,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT , FS , Options ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( std :: make_unique < ELFTargetObjectFile > ( ) ) {" LLVM,RISCV,4085,"Predict the next statement of this code snippet: std :: string Key = CPU + FS ; auto & I = SubtargetMap [ Key ] ; if ( ! I ) { resetTargetOptions ( F ) ;" LLVM,RISCV,4086,"Predict the next statement of this code snippet: initializeGlobalISel ( * PR ) ; initializeGatherScatterLoweringPass ( * PR ) ; initializeMergeBaseOffsetOptPass ( * PR ) ; initializeExpandPseudoPass ( * PR ) ; initializeInsertVSETVLIPass ( * PR ) ;" LLVM,RISCV,4087,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , CM , OL ) , TLOF ( make_unique < TargetLoweringObjectFileELF > ( ) ) { initAsmInfo ( ) ;" LLVM,RISCV,4088,"Predict the next statement of this code snippet: addPass ( createExpandAtomicPseudoPass ( ) ) ; if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) { addPass ( createExpandCoreVHwlpPseudoPass ( ) ) ;" LLVM,RISCV,4089,"Predict the next statement of this code snippet: addPass ( createExpandPseudoPass ( ) ) ;" LLVM,RISCV,4090,"Predict the next statement of this code snippet: bool PassConfig :: addPreISel ( ) { if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) {" LLVM,RISCV,4091,"Predict the next statement of this code snippet: if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) { addPass ( createHardwareLoopsPass ( ) ) ; }" LLVM,RISCV,4092,"Predict the next statement of this code snippet: addPass ( createMergeBaseOffsetOptPass ( ) ) ;" LLVM,RISCV,4093,"Predict the next statement of this code snippet: void PassConfig :: addPreRegAlloc ( ) { addPass ( createMergeBaseOffsetOptPass ( ) ) ; addPass ( createCoreVHwlpBlocksPass ( ) ) ;" LLVM,RISCV,4094,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( make_unique < ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , Options . MCOptions . getABIName ( ) , * this ) { initAsmInfo ( ) ;" LLVM,RISCV,4095,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( make_unique < ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , Options . MCOptions . getABIName ( ) , * this ) { initAsmInfo ( ) ;" LLVM,RISCV,4096,"Predict the next statement of this code snippet: std :: string FS = FSAttr . isValid ( ) ? FSAttr . getValueAsString ( ) . str ( ) : TargetFS ; std :: string Key = CPU + FS ; auto & I = SubtargetMap [ Key ] ; if ( ! I ) { resetTargetOptions ( F ) ; auto ABIName = Options . MCOptions . getABIName ( ) ; if ( const MDString * ModuleTargetABI = dyn_cast_or_null < MDString > ( F . getParent ( ) -> getModuleFlag ( ) ) ) { auto TargetABI = ( ABIName ) ;" LLVM,RISCV,4097,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine > X ( getThe32Target ( ) ) ; RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ; auto PR = PassRegistry :: getPassRegistry ( ) ;" LLVM,RISCV,4098,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine > X ( getThe32Target ( ) ) ; RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ; auto PR = PassRegistry :: getPassRegistry ( ) ; initializeGlobalISel ( * PR ) ;" LLVM,RISCV,4099,"Predict the next statement of this code snippet: if ( TM -> getOptLevel ( ) != CodeGenOpt :: None ) { addPass ( createPulpHWLoopsPass ( ) ) ;" LLVM,RISCV,4100,"Predict the next statement of this code snippet: LLVM_EXTERNAL_VISIBILITY void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine > X ( getThe32Target ( ) ) ;" LLVM,RISCV,4101,"Predict the next statement of this code snippet: void PassConfig :: addISelPrepare ( ) { TargetPassConfig :: addISelPrepare ( ) ;" LLVM,RISCV,4102,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) { addPass ( createAtomicExpandPass ( ) ) ; if ( TM -> getOptLevel ( ) == CodeGenOpt :: Aggressive && EnableGEPOpt ) { addPass ( createSeparateConstOffsetFromGEPPass ( true ) ) ; addPass ( createEarlyCSEPass ( ) ) ; addPass ( createLICMPass ( ) ) ;" LLVM,RISCV,4103,"Predict the next statement of this code snippet: TargetPassConfig :: addMachineSSAOptimization ( ) ; addPass ( createOptimizeVSETVLUsesPass ( ) ) ;" LLVM,RISCV,4104,"Predict the next statement of this code snippet: if ( ! RM . hasValue ( ) ) return Reloc :: Static ; return * RM ;" LLVM,RISCV,4105,"Predict the next statement of this code snippet: static Reloc :: Model getEffectiveRelocModel ( Optional < Reloc :: Model > RM ) { if ( ! RM . hasValue ( ) ) return Reloc :: Static ;" LLVM,RISCV,4106,"Predict the next statement of this code snippet: 64TargetMachine :: 64TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) {" LLVM,RISCV,4107,"Predict the next statement of this code snippet: 64TargetMachine :: 64TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) {" LLVM,RISCV,4108,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( RM ) , CM , OL ) , TLOF ( make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { initAsmInfo ( ) ;" LLVM,RISCV,4109,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( RM ) , CM , OL ) , TLOF ( make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) {" LLVM,RISCV,4110,"Predict the next statement of this code snippet: bool PassConfig :: addInstSelector ( ) {" LLVM,RISCV,4111,"Predict the next statement of this code snippet: addPass ( createISelDag ( getTargetMachine ( ) ) ) ;" LLVM,RISCV,4112,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) { addPass ( createAtomicExpandPass ( ) ) ;" LLVM,RISCV,4113,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) {" LLVM,RISCV,4114,"Predict the next statement of this code snippet: void PassConfig :: addPreEmitPass ( ) { addPass ( & BranchRelaxationPassID ) ;" LLVM,RISCV,4115,"Predict the next statement of this code snippet: addPass ( createExpandPseudoPass ( ) ) ;" LLVM,RISCV,4116,"Predict the next statement of this code snippet: void PassConfig :: addPreRegAlloc ( ) {" LLVM,RISCV,4117,"Predict the next statement of this code snippet: assert ( TT . isArch32Bit ( ) && ) ; return ;" LLVM,RISCV,4118,"Predict the next statement of this code snippet: TargetPassConfig * TargetMachine :: createPassConfig ( PassManagerBase & PM ) { return new PassConfig ( * this , PM ) ;" LLVM,RISCV,4119,"Predict the next statement of this code snippet: TargetPassConfig * TargetMachine :: createPassConfig ( PassManagerBase & PM ) { return new PassConfig ( * this , PM ) ;" LLVM,RISCV,4120,"Predict the next statement of this code snippet: auto PR = PassRegistry :: getPassRegistry ( ) ; initializeExpandPseudoPass ( * PR ) ;" LLVM,RISCV,4121,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine > X ( getThe32Target ( ) ) ; RegisterTargetMachine < TargetMachine > Y ( getThe64Target ( ) ) ; auto PR = PassRegistry :: getPassRegistry ( ) ; initializeExpandPseudoPass ( * PR ) ;" LLVM,RISCV,4122,"Predict the next statement of this code snippet: PassConfig ( TargetMachine & TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,RISCV,4123,"Predict the next statement of this code snippet: PassConfig ( TargetMachine & TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,RISCV,4124,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( make_unique < ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { initAsmInfo ( ) ;" LLVM,RISCV,4125,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , TLOF ( make_unique < ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { initAsmInfo ( ) ;" LLVM,RISCV,4126,"Predict the next statement of this code snippet: StringRef Key = MFE . Key -> getString ( ) ; if ( Key == ) { SSThreshold = mdconst :: extract < ConstantInt > ( MFE . Val ) -> getZExtValue ( ) ; break ;" LLVM,RISCV,4127,"Predict the next statement of this code snippet: for ( const auto & MFE : ModuleFlags ) { StringRef Key = MFE . Key -> getString ( ) ; if ( Key == ) {" LLVM,RISCV,4128,"Predict the next statement of this code snippet: SmallBSSSection = getContext ( ) . getELFSection ( , ELF :: SHT_NOBITS , ELF :: SHF_WRITE | ELF :: SHF_ALLOC ) ;" LLVM,RISCV,4129,"Predict the next statement of this code snippet: TargetLoweringObjectFileELF :: Initialize ( Ctx , TM ) ;" LLVM,RISCV,4130,"Predict the next statement of this code snippet: const GlobalVariable * GVA = dyn_cast < GlobalVariable > ( GO ) ; if ( ! GVA ) return false ; if ( GVA -> hasSection ( ) ) { StringRef Section = GVA -> getSection ( ) ; if ( Section == || Section == ) return true ; return false ; } if ( ( ( GVA -> hasExternalLinkage ( ) && GVA -> isDeclaration ( ) ) || GVA -> hasCommonLinkage ( ) ) ) return false ; Type * Ty = GVA -> getValueType ( ) ; if ( ! Ty -> isSized ( ) ) return false ;" LLVM,RISCV,4131,"Predict the next statement of this code snippet: return Size > && Size <= SSThreshold ;" LLVM,RISCV,4132,"Predict the next statement of this code snippet: if ( Kind . isData ( ) && isGlobalInSmallSection ( GO , TM ) ) return SmallDataSection ;" LLVM,RISCV,4133,"Predict the next statement of this code snippet: Align ELFTargetObjectFile :: getAlignmentForPreciseBounds ( uint64_t Size , const TargetMachine & TM ) const { if ( ! getContext ( ) . getAsmInfo ( ) -> isCheriPurecapABI ( ) ) return Align ( ) ; const TargetMachine & RTM = static_cast < const TargetMachine & > ( TM ) ;" LLVM,RISCV,4134,"Predict the next statement of this code snippet: MCSection * ELFTargetObjectFile :: getSectionForConstant ( const DataLayout & DL , SectionKind Kind , const Constant * C , unsigned & Align ) const {" LLVM,RISCV,4135,"Predict the next statement of this code snippet: MCSection * ELFTargetObjectFile :: getSectionForConstant ( const DataLayout & DL , SectionKind Kind , const Constant * C , unsigned & Align ) const { if ( isConstantInSmallSection ( DL , C ) ) return SmallDataSection ; return TargetLoweringObjectFileELF :: getSectionForConstant ( DL , Kind , C , Align ) ;" LLVM,RISCV,4136,"Predict the next statement of this code snippet: SmallDataSection = getContext ( ) . getELFSection ( , ELF :: SHT_PROGBITS , ELF :: SHF_WRITE | ELF :: SHF_ALLOC ) ;" LLVM,RISCV,4137,"Predict the next statement of this code snippet: void ELFTargetObjectFile :: Initialize ( MCContext & Ctx , const TargetMachine & TM ) {" LLVM,RISCV,4138,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitAttribute ( unsigned Attribute , unsigned Value ) { OS << << Attribute << << Twine ( Value ) << ;" LLVM,RISCV,4139,"Predict the next statement of this code snippet: OS << << Attribute << << Twine ( Value ) << ;" LLVM,RISCV,4140,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4141,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitDirectiveOptionNoPIC ( ) { OS << ;" LLVM,RISCV,4142,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4143,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4144,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4145,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitDirectiveOptionPIC ( ) { OS << ;" LLVM,RISCV,4146,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4147,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4148,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4149,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitDirectiveOptionRVC ( ) { OS << ;" LLVM,RISCV,4150,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitIntTextAttribute ( unsigned Attribute , unsigned IntValue , StringRef StringValue ) {" LLVM,RISCV,4151,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitIntTextAttribute ( unsigned Attribute , unsigned IntValue , StringRef StringValue ) {" LLVM,RISCV,4152,"Predict the next statement of this code snippet: void TargetStreamer :: emitTargetAttributes ( const MCSubtargetInfo & STI ) { if ( STI . hasFeature ( ) ) emitAttribute ( , ) ; else emitAttribute ( , ) ; auto ParseResult = ( STI . hasFeature ( ) , STI . getFeatureBits ( ) ) ; if ( ! ParseResult ) { report_fatal_error ( ParseResult . takeError ( ) ) ; } else { auto & ISAInfo = * ParseResult ;" LLVM,RISCV,4153,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitTextAttribute ( unsigned Attribute , StringRef String ) { OS << << Attribute << << String << ;" LLVM,RISCV,4154,"Predict the next statement of this code snippet: void TargetStreamer :: finish ( ) { finishAttributeSection ( ) ;" LLVM,RISCV,4155,"Predict the next statement of this code snippet: finishAttributeSection ( ) ;" LLVM,RISCV,4156,"Predict the next statement of this code snippet: void TargetAsmStreamer :: finishAttributeSection ( ) {" LLVM,RISCV,4157,"Predict the next statement of this code snippet: void TargetAsmStreamer :: finishAttributeSection ( ) {" LLVM,RISCV,4158,"Predict the next statement of this code snippet: void TargetStreamer :: reset ( ) {" LLVM,RISCV,4159,"Predict the next statement of this code snippet: void TargetStreamer :: reset ( ) {" LLVM,RISCV,4160,"Predict the next statement of this code snippet: TargetAsmStreamer :: TargetAsmStreamer ( MCStreamer & S , formatted_raw_ostream & OS ) : TargetStreamer ( S ) , OS ( OS ) {" LLVM,RISCV,4161,"Predict the next statement of this code snippet: TargetAsmStreamer :: TargetAsmStreamer ( MCStreamer & S , formatted_raw_ostream & OS ) : TargetStreamer ( S ) , OS ( OS ) {" LLVM,RISCV,4162,"Predict the next statement of this code snippet: TargetStreamer :: TargetStreamer ( MCStreamer & S ) : MCTargetStreamer ( S ) {" LLVM,RISCV,4163,"Predict the next statement of this code snippet: TargetStreamer :: TargetStreamer ( MCStreamer & S ) : MCTargetStreamer ( S ) {" LLVM,RISCV,4164,"Predict the next statement of this code snippet: assert ( ABI != && ) ;" LLVM,RISCV,4165,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitDirectiveOptionCapMode ( ) { OS << ;" LLVM,RISCV,4166,"Predict the next statement of this code snippet: OS << ;" LLVM,RISCV,4167,"Predict the next statement of this code snippet: void TargetAsmStreamer :: emitDirectiveOptionNoCapMode ( ) { OS << ;" LLVM,RISCV,4168,"Predict the next statement of this code snippet: if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ;" LLVM,RISCV,4169,"Predict the next statement of this code snippet: if ( STI . hasFeature ( ) ) Arch = ; if ( STI . hasFeature ( ) ) Arch += ; else Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ;" LLVM,RISCV,4170,"Predict the next statement of this code snippet: else emitAttribute ( , ) ; std :: string Arch = ; if ( STI . hasFeature ( ) ) Arch = ; if ( STI . hasFeature ( ) ) Arch += ; else Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ;" LLVM,RISCV,4171,"Predict the next statement of this code snippet: else emitAttribute ( , ) ; unsigned XLen = STI . hasFeature ( ) ? : ; std :: vector < std :: string > FeatureVector ; ( FeatureVector , STI . getFeatureBits ( ) ) ; auto ParseResult = llvm :: ( XLen , FeatureVector ) ; if ( ! ParseResult ) { consumeError ( ParseResult . takeError ( ) ) ; llvm_unreachable ( ) ; } else { auto & ISAInfo = * ParseResult ; emitTextAttribute ( , ISAInfo -> toString ( ) ) ;" LLVM,RISCV,4172,"Predict the next statement of this code snippet: std :: vector < std :: string > FeatureVector ; ( FeatureVector , STI . getFeatureBits ( ) ) ; auto ParseResult = llvm :: ( XLen , FeatureVector ) ; if ( ! ParseResult ) { consumeError ( ParseResult . takeError ( ) ) ; llvm_unreachable ( ) ; } else {" LLVM,RISCV,4173,"Predict the next statement of this code snippet: if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ;" LLVM,RISCV,4174,"Predict the next statement of this code snippet: if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; emitTextAttribute ( , Arch ) ;" LLVM,RISCV,4175,"Predict the next statement of this code snippet: if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ;" LLVM,RISCV,4176,"Predict the next statement of this code snippet: else Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ;" LLVM,RISCV,4177,"Predict the next statement of this code snippet: if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ; if ( STI . hasFeature ( ) ) Arch += ;" LLVM,RISCV,4178,"Predict the next statement of this code snippet: assert ( ISD && ) ; if ( ISD != && ISD != && ISD != && ISD != && ISD != ) return BaseT :: getArithmeticReductionCost ( Opcode , VTy , FMF , CostKind ) ; InstructionCost BaseCost = ; unsigned VL = cast < FixedVectorType > ( VTy ) -> getNumElements ( ) ; std :: pair < InstructionCost , MVT > LT = TLI -> getTypeLegalizationCost ( DL , VTy ) ;" LLVM,RISCV,4179,"Predict the next statement of this code snippet: if ( ! isTypeLegal ( Src ) || ! isTypeLegal ( Dst ) ) return BaseT :: getCastInstrCost ( Opcode , Dst , Src , CCH , CostKind , I ) ; if ( Src -> getScalarSizeInBits ( ) > ST -> getELEN ( ) || Dst -> getScalarSizeInBits ( ) > ST -> getELEN ( ) ) return BaseT :: getCastInstrCost ( Opcode , Dst , Src , CCH , CostKind , I ) ; int ISD = TLI -> InstructionOpcodeToISD ( Opcode ) ; assert ( ISD && ) ; int PowDiff = ( int ) Log2_32 ( Dst -> getScalarSizeInBits ( ) ) - ( int ) Log2_32 ( Src -> getScalarSizeInBits ( ) ) ; switch ( ISD ) { case : case : return ; case : case :" LLVM,RISCV,4180,"Predict the next statement of this code snippet: auto * RetTy = ICA . getReturnType ( ) ; switch ( ICA . getID ( ) ) { case : { unsigned Cost = ; auto LT = TLI -> getTypeLegalizationCost ( DL , RetTy ) ; return Cost + ( LT . first - ) ; } default :" LLVM,RISCV,4181,"Predict the next statement of this code snippet: if ( ! isa < ScalableVectorType > ( Src ) ) return BaseT :: getMaskedMemoryOpCost ( Opcode , Src , Alignment , AddressSpace , CostKind ) ; return getMemoryOpCost ( Opcode , Src , Alignment , AddressSpace , CostKind ) ;" LLVM,RISCV,4182,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getMaskedMemoryOpCost ( unsigned Opcode , Type * Src , Align Alignment , unsigned AddressSpace , TTI :: TargetCostKind CostKind ) { if ( ! isa < ScalableVectorType > ( Src ) ) return BaseT :: getMaskedMemoryOpCost ( Opcode , Src , Alignment , AddressSpace , CostKind ) ; return getMemoryOpCost ( Opcode , Src , Alignment , AddressSpace , CostKind ) ;" LLVM,RISCV,4183,"Predict the next statement of this code snippet: unsigned getMaxInterleaveFactor ( unsigned VF ) { return ST -> getMaxInterleaveFactor ( ) ;" LLVM,RISCV,4184,"Predict the next statement of this code snippet: if ( ST -> hasVInstructions ( ) && MaxVectorSizeInBits != ) return MaxVectorSizeInBits / ;" LLVM,RISCV,4185,"Predict the next statement of this code snippet: if ( ! ST -> useRVVForFixedLengthVectors ( ) ) return BaseT :: getMinMaxReductionCost ( Ty , CondTy , IsUnsigned , CostKind ) ; if ( Ty -> getScalarSizeInBits ( ) > ST -> getELEN ( ) ) return BaseT :: getMinMaxReductionCost ( Ty , CondTy , IsUnsigned , CostKind ) ; InstructionCost BaseCost = ; unsigned VL = cast < FixedVectorType > ( Ty ) -> getNumElements ( ) ; std :: pair < InstructionCost , MVT > LT = TLI -> getTypeLegalizationCost ( DL , Ty ) ;" LLVM,RISCV,4186,"Predict the next statement of this code snippet: case TargetTransformInfo :: RGK_FixedWidthVector : return TypeSize :: getFixed ( ST -> hasStdExtV ( ) ? ST -> getMinRVVVectorSizeInBits ( ) : ) ; case TargetTransformInfo :: RGK_ScalableVector : return TypeSize :: getScalable ( ST -> hasStdExtV ( ) ? : ) ;" LLVM,RISCV,4187,"Predict the next statement of this code snippet: return TypeSize :: getFixed ( ST -> getXLen ( ) ) ; case TargetTransformInfo :: RGK_FixedWidthVector :" LLVM,RISCV,4188,"Predict the next statement of this code snippet: unsigned TTIImpl :: getRegUsageForType ( Type * Ty ) { TypeSize Size = Ty -> getPrimitiveSizeInBits ( ) ; if ( Ty -> isVectorTy ( ) ) { if ( Size . isScalable ( ) && ST -> hasVInstructions ( ) ) return divideCeil ( Size . getKnownMinValue ( ) , ) ;" LLVM,RISCV,4189,"Predict the next statement of this code snippet: if ( Kind == TTI :: SK_Splice && isa < ScalableVectorType > ( Tp ) ) return getSpliceCost ( Tp , Index ) ; std :: pair < InstructionCost , MVT > LT = TLI -> getTypeLegalizationCost ( DL , Tp ) ; if ( Kind == TTI :: SK_Broadcast && isa < ScalableVectorType > ( Tp ) ) return LT . first * ;" LLVM,RISCV,4190,"Predict the next statement of this code snippet: if ( Kind == TTI :: SK_Splice && isa < ScalableVectorType > ( Tp ) ) return getSpliceCost ( Tp , Index ) ; std :: pair < InstructionCost , MVT > LT = TLI -> getTypeLegalizationCost ( DL , Tp ) ; if ( Kind == TTI :: SK_Broadcast && isa < ScalableVectorType > ( Tp ) ) return LT . first * ; return BaseT :: getShuffleCost ( Kind , Tp , Mask , Index , SubTp ) ;" LLVM,RISCV,4191,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getSpliceCost ( VectorType * Tp , int Index ) {" LLVM,RISCV,4192,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getSpliceCost ( VectorType * Tp , int Index ) { std :: pair < InstructionCost , MVT > LT = TLI -> getTypeLegalizationCost ( DL , Tp ) ; unsigned Cost = ;" LLVM,RISCV,4193,"Predict the next statement of this code snippet: LLVM_DEBUG ( dbgs ( ) << << << L -> getNumBlocks ( ) << << << ExitingBlocks . size ( ) << ) ; if ( ExitingBlocks . size ( ) > ) return ; if ( L -> getNumBlocks ( ) > ) return ; if ( getBooleanLoopAttribute ( L , ) ) return ; InstructionCost Cost = ; for ( auto * BB : L -> getBlocks ( ) ) { for ( auto & I : * BB ) { if ( I . getType ( ) -> isVectorTy ( ) ) return ; if ( isa < CallInst > ( I ) || isa < InvokeInst > ( I ) ) { if ( const Function * F = cast < CallBase > ( I ) . getCalledFunction ( ) ) { if ( ! isLoweredToCall ( F ) ) continue ; } return ; } SmallVector < const Value * > Operands ( I . operand_values ( ) ) ; Cost += getUserCost ( & I , Operands , TargetTransformInfo :: TCK_SizeAndLatency ) ; } } LLVM_DEBUG ( dbgs ( ) << << Cost << ) ; UP . Partial = true ;" LLVM,RISCV,4194,"Predict the next statement of this code snippet: bool isLegalMaskedGather ( Type * DataType , Align Alignment ) {" LLVM,RISCV,4195,"Predict the next statement of this code snippet: bool isLegalMaskedGather ( Type * DataType , Align Alignment ) { return isLegalMaskedGatherScatter ( DataType , Alignment ) ;" LLVM,RISCV,4196,"Predict the next statement of this code snippet: if ( ! ST -> hasStdExtV ( ) ) return false ; if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ; if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ; return isLegalElementTypeForRVV ( DataType -> getScalarType ( ) ) ;" LLVM,RISCV,4197,"Predict the next statement of this code snippet: return isLegalMaskedLoadStore ( DataType , Alignment ) ;" LLVM,RISCV,4198,"Predict the next statement of this code snippet: return isLegalMaskedLoadStore ( DataType , Alignment ) ;" LLVM,RISCV,4199,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ; if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ; return isLegalElementTypeForRVV ( DataType -> getScalarType ( ) ) ;" LLVM,RISCV,4200,"Predict the next statement of this code snippet: if ( ! ST -> hasStdExtV ( ) ) return false ; if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ;" LLVM,RISCV,4201,"Predict the next statement of this code snippet: return isLegalMaskedGatherScatter ( DataType , Alignment ) ;" LLVM,RISCV,4202,"Predict the next statement of this code snippet: bool isLegalMaskedStore ( Type * DataType , Align Alignment ) {" LLVM,RISCV,4203,"Predict the next statement of this code snippet: bool isLegalToVectorizeReduction ( const RecurrenceDescriptor & RdxDesc , ElementCount VF ) const { if ( ! ST -> hasStdExtV ( ) ) return false ; if ( ! VF . isScalable ( ) ) return true ; Type * Ty = RdxDesc . getRecurrenceType ( ) ; if ( ! isLegalElementTypeForRVV ( Ty ) ) return false ; switch ( RdxDesc . getRecurrenceKind ( ) ) { case RecurKind :: Add : case RecurKind :: FAdd : case RecurKind :: And : case RecurKind :: Or :" LLVM,RISCV,4204,"Predict the next statement of this code snippet: bool supportsScalableVectors ( ) const {" LLVM,RISCV,4205,"Predict the next statement of this code snippet: bool supportsScalableVectors ( ) const {" LLVM,RISCV,4206,"Predict the next statement of this code snippet: case Instruction :: Mul : Takes12BitImm = true ; break ; case Instruction :: Sub : case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : Takes12BitImm = true ; ImmArgIdx = ; break ; default : break ; } if ( Takes12BitImm ) { if ( Instruction :: isCommutative ( Opcode ) || Idx == ImmArgIdx ) { if ( Imm . getMinSignedBits ( ) <= && getTLI ( ) -> isLegalAddImmediate ( Imm . getSExtValue ( ) ) ) { return TTI :: TCC_Free ; } } return getIntImmCost ( Imm , Ty , CostKind ) ; } return TTI :: TCC_Free ;" LLVM,RISCV,4207,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ;" LLVM,RISCV,4208,"Predict the next statement of this code snippet: bool isLegalMaskedLoadStore ( Type * DataType , Align Alignment ) { if ( ! ST -> hasStdExtV ( ) ) return false ; if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ; if ( isa < FixedVectorType > ( DataType ) && DataType -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return false ;" LLVM,RISCV,4209,"Predict the next statement of this code snippet: if ( ! ST -> hasStdExtV ( ) ) return false ; if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ; if ( isa < FixedVectorType > ( DataType ) && DataType -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return false ; if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ;" LLVM,RISCV,4210,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getIntImmCost ( const APInt & Imm , Type * Ty , TTI :: TargetCostKind CostKind ) { assert ( Ty -> isIntegerTy ( ) && ) ; if ( Imm == ) return TTI :: TCC_Free ; const DataLayout & DL = getDataLayout ( ) ; return ( Imm , DL . getTypeSizeInBits ( Ty ) , getST ( ) -> is64Bit ( ) ) ;" LLVM,RISCV,4211,"Predict the next statement of this code snippet: const DataLayout & DL = getDataLayout ( ) ;" LLVM,RISCV,4212,"Predict the next statement of this code snippet: return ST -> useRVVForFixedLengthVectors ( ) ? : ;" LLVM,RISCV,4213,"Predict the next statement of this code snippet: if ( ST -> hasVInstructions ( ) ) return ;" LLVM,RISCV,4214,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && DataType -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return false ; if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ;" LLVM,RISCV,4215,"Predict the next statement of this code snippet: if ( ! ST -> hasVInstructions ( ) ) return false ; if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ;" LLVM,RISCV,4216,"Predict the next statement of this code snippet: if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ;" LLVM,RISCV,4217,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ; if ( isa < FixedVectorType > ( DataType ) && DataType -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return false ; if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ;" LLVM,RISCV,4218,"Predict the next statement of this code snippet: switch ( RdxDesc . getRecurrenceKind ( ) ) { case RecurKind :: Add : case RecurKind :: FAdd : case RecurKind :: And : case RecurKind :: Or : case RecurKind :: Xor : case RecurKind :: SMin : case RecurKind :: SMax : case RecurKind :: UMin : case RecurKind :: UMax : case RecurKind :: FMin : case RecurKind :: FMax : return true ; default : return false ; }" LLVM,RISCV,4219,"Predict the next statement of this code snippet: if ( ! VF . isScalable ( ) ) return true ; Type * Ty = RdxDesc . getRecurrenceType ( ) ; if ( ! TLI -> isLegalElementTypeForRVV ( Ty ) ) return false ; switch ( RdxDesc . getRecurrenceKind ( ) ) { case RecurKind :: Add : case RecurKind :: FAdd : case RecurKind :: And : case RecurKind :: Or : case RecurKind :: Xor : case RecurKind :: SMin : case RecurKind :: SMax : case RecurKind :: UMin : case RecurKind :: UMax : case RecurKind :: FMin : case RecurKind :: FMax : return true ; default :" LLVM,RISCV,4220,"Predict the next statement of this code snippet: return ST -> hasVInstructions ( ) ;" LLVM,RISCV,4221,"Predict the next statement of this code snippet: bool supportsScalableVectors ( ) const {" LLVM,RISCV,4222,"Predict the next statement of this code snippet: int TTIImpl :: getIntImmCost ( IID , unsigned Idx , const APInt & Imm , Type * Ty ) {" LLVM,RISCV,4223,"Predict the next statement of this code snippet: return ST -> hasStdExtV ( ) ? ST -> getMinRVVVectorSizeInBits ( ) : ;" LLVM,RISCV,4224,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && DataType -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return false ;" LLVM,RISCV,4225,"Predict the next statement of this code snippet: } if ( VT . isFloatingPoint ( ) && ! TLI -> isOperationLegalOrCustom ( ISD , VT ) ) return true ; return false ; } ; auto IsHardwareLoopIntrinsic = [ ] ( Instruction & I ) { if ( auto * Call = dyn_cast < IntrinsicInst > ( & I ) ) { switch ( Call -> getIntrinsicID ( ) ) { default : break ; case : case : case : case : return true ; } } return false ; } ; bool hasInnerHardwareLoop = false ; auto ScanLoop = [ & ] ( Loop * L ) { for ( auto * BB : L -> getBlocks ( ) ) { for ( auto & I : BB -> instructionsWithoutDebug ( ) ) { hasInnerHardwareLoop |= IsHardwareLoopIntrinsic ( I ) ; if ( MaybeCall ( I ) ) { return false ; } } } return true ; } ; for ( auto Inner : * L ) if ( ! ScanLoop ( Inner ) ) return false ; if ( ! ScanLoop ( L ) ) return false ;" LLVM,RISCV,4226,"Predict the next statement of this code snippet: L -> getExitingBlocks ( ExitingBlocks ) ; LLVM_DEBUG ( dbgs ( ) << << << L -> getNumBlocks ( ) << << << ExitingBlocks . size ( ) << ) ; if ( ExitingBlocks . size ( ) > ) return ; if ( L -> getNumBlocks ( ) > ) return ; if ( getBooleanLoopAttribute ( L , ) ) return ; InstructionCost Cost = ; for ( auto * BB : L -> getBlocks ( ) ) { for ( auto & I : * BB ) { if ( I . getType ( ) -> isVectorTy ( ) ) return ; if ( isa < CallInst > ( I ) || isa < InvokeInst > ( I ) ) { if ( const Function * F = cast < CallBase > ( I ) . getCalledFunction ( ) ) { if ( ! isLoweredToCall ( F ) ) continue ; }" LLVM,RISCV,4227,"Predict the next statement of this code snippet: bool UseDefaultPreferences = true ; if ( ST -> getTuneCPU ( ) . contains ( ) || ST -> getTuneCPU ( ) . contains ( ) || ST -> getTuneCPU ( ) . contains ( ) || ST -> getTuneCPU ( ) . contains ( ) ) UseDefaultPreferences = false ; if ( UseDefaultPreferences ) return BasicTTIImplBase :: getUnrollingPreferences ( L , SE , UP , ORE ) ; UP . UpperBound = true ; UP . OptSizeThreshold = ; UP . PartialOptSizeThreshold = ; if ( L -> getHeader ( ) -> getParent ( ) -> hasOptSize ( ) ) return ; SmallVector < BasicBlock * , > ExitingBlocks ; L -> getExitingBlocks ( ExitingBlocks ) ; LLVM_DEBUG ( dbgs ( ) << << << L -> getNumBlocks ( ) << << << ExitingBlocks . size ( ) << ) ; if ( ExitingBlocks . size ( ) > ) return ; if ( L -> getNumBlocks ( ) > ) return ; if ( getBooleanLoopAttribute ( L , ) ) return ; InstructionCost Cost = ;" LLVM,RISCV,4228,"Predict the next statement of this code snippet: unsigned getMinVectorRegisterBitWidth ( ) const { return ST -> hasVInstructions ( ) ? ST -> getMinRVVVectorSizeInBits ( ) : ;" LLVM,RISCV,4229,"Predict the next statement of this code snippet: return TypeSize :: getFixed ( ST -> getXLen ( ) ) ; case TargetTransformInfo :: RGK_FixedWidthVector : return TypeSize :: getFixed ( ST -> hasVInstructions ( ) ? ST -> getMinRVVVectorSizeInBits ( ) : ) ; case TargetTransformInfo :: RGK_ScalableVector : return TypeSize :: getScalable ( ST -> hasVInstructions ( ) ? : ) ; } llvm_unreachable ( ) ;" LLVM,RISCV,4230,"Predict the next statement of this code snippet: case TargetTransformInfo :: RGK_ScalableVector : return TypeSize :: getScalable ( ST -> hasVInstructions ( ) ? : ) ; } llvm_unreachable ( ) ;" LLVM,RISCV,4231,"Predict the next statement of this code snippet: int TTIImpl :: getIntImmCost ( const APInt & Imm , Type * Ty , TTI :: TargetCostKind CostKind ) { assert ( Ty -> isIntegerTy ( ) && ) ; if ( Imm == ) return TTI :: TCC_Free ; const DataLayout & DL = getDataLayout ( ) ;" LLVM,RISCV,4232,"Predict the next statement of this code snippet: case Instruction :: Or : case Instruction :: Xor : case Instruction :: Mul : Takes12BitImm = true ; break ; case Instruction :: Sub : case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : Takes12BitImm = true ; ImmArgIdx = ; break ; default : break ; } if ( Takes12BitImm ) {" LLVM,RISCV,4233,"Predict the next statement of this code snippet: int TTIImpl :: getIntImmCostInst ( unsigned Opcode , unsigned Idx , const APInt & Imm , Type * Ty , TTI :: TargetCostKind CostKind , Instruction * Inst ) { assert ( Ty -> isIntegerTy ( ) && ) ; if ( Imm == ) return TTI :: TCC_Free ; bool Takes12BitImm = false ; unsigned ImmArgIdx = ~ ; switch ( Opcode ) { case Instruction :: GetElementPtr : return TTI :: TCC_Free ; case Instruction :: Add :" LLVM,RISCV,4234,"Predict the next statement of this code snippet: int TTIImpl :: getIntImmCostIntrin ( IID , unsigned Idx , const APInt & Imm , Type * Ty , TTI :: TargetCostKind CostKind ) { return TTI :: TCC_Free ;" LLVM,RISCV,4235,"Predict the next statement of this code snippet: BasicBlock * BB = L -> getHeader ( ) ; while ( BB ) { BasicBlock * Next = BB -> getSingleSuccessor ( ) ; for ( auto & I : BB -> instructionsWithoutDebug ( ) ) { InstrCount ++ ; const TargetLowering * TLI = getTLI ( ) ; unsigned ISD = TLI -> InstructionOpcodeToISD ( I . getOpcode ( ) ) ; EVT VT = TLI -> getValueType ( DL , I . getType ( ) , true ) ; if ( TLI -> getOperationAction ( ISD , VT ) == TargetLowering :: LibCall ) { return false ; } if ( auto * Call = dyn_cast < CallInst > ( & I ) ) { if ( isa < IntrinsicInst > ( Call ) ) { if ( ! isLoweredToCall ( Call -> getCalledFunction ( ) ) ) { continue ; } } return false ; } if ( auto * Branch = dyn_cast < BranchInst > ( & I ) ) { if ( Branch -> isUnconditional ( ) || L -> isLoopLatch ( BB ) ) { InstrCount -- ; continue ; }" LLVM,RISCV,4236,"Predict the next statement of this code snippet: if ( ! isLoweredToCall ( Call -> getCalledFunction ( ) ) ) { continue ; } } return false ; } if ( auto * Branch = dyn_cast < BranchInst > ( & I ) ) { if ( Branch -> isUnconditional ( ) || L -> isLoopLatch ( BB ) ) { InstrCount -- ; continue ; } else if ( auto * Cond = dyn_cast < IntrinsicInst > ( Branch -> getCondition ( ) ) ) { if ( Cond -> getIntrinsicID ( ) == ) { HasInnerHardwareLoop = true ; Next = Branch -> getSuccessor ( ) ; InstrCount = ; continue ; } } } if ( I . isTerminator ( ) ) return false ; if ( VT . isFloatingPoint ( ) && ! TLI -> isOperationLegalOrCustom ( ISD , VT ) ) return false ;" LLVM,RISCV,4237,"Predict the next statement of this code snippet: bool TTIImpl :: shouldFavorPostInc ( ) const { return ST -> hasExtXCoreVMem ( ) ;" LLVM,RISCV,4238,"Predict the next statement of this code snippet: bool TTIImpl :: shouldFavorPostInc ( ) const { return ST -> hasExtXCoreVMem ( ) ;" LLVM,RISCV,4239,"Predict the next statement of this code snippet: unsigned ImmArgIdx = ~ ; switch ( Opcode ) { case Instruction :: GetElementPtr : return TTI :: TCC_Free ; case Instruction :: Add : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : case Instruction :: Mul : Takes12BitImm = true ; break ; case Instruction :: Sub : case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : Takes12BitImm = true ; ImmArgIdx = ; break ; default : break ; } if ( Takes12BitImm ) { if ( Instruction :: isCommutative ( Opcode ) || Idx == ImmArgIdx ) { if ( Imm . getMinSignedBits ( ) <= && getTLI ( ) -> isLegalAddImmediate ( Imm . getSExtValue ( ) ) ) { return TTI :: TCC_Free ; } } return getIntImmCost ( Imm , Ty ) ; }" LLVM,RISCV,4240,"Predict the next statement of this code snippet: int TTIImpl :: getIntImmCostIntrin ( IID , unsigned Idx , const APInt & Imm , Type * Ty ) { return TTI :: TCC_Free ;" LLVM,RISCV,4241,"Predict the next statement of this code snippet: if ( Size . isScalable ( ) && ST -> hasVInstructions ( ) ) return divideCeil ( Size . getKnownMinValue ( ) , ) ; if ( ST -> useRVVForFixedLengthVectors ( ) ) return divideCeil ( Size , ST -> getMinRVVVectorSizeInBits ( ) ) ;" LLVM,RISCV,4242,"Predict the next statement of this code snippet: TypeSize Size = Ty -> getPrimitiveSizeInBits ( ) ; if ( Ty -> isVectorTy ( ) ) {" LLVM,RISCV,4243,"Predict the next statement of this code snippet: if ( L -> getNumBlocks ( ) > ) return ; if ( getBooleanLoopAttribute ( L , ) ) return ; InstructionCost Cost = ; for ( auto * BB : L -> getBlocks ( ) ) { for ( auto & I : * BB ) { if ( I . getType ( ) -> isVectorTy ( ) ) return ; if ( isa < CallInst > ( I ) || isa < InvokeInst > ( I ) ) { if ( const Function * F = cast < CallBase > ( I ) . getCalledFunction ( ) ) { if ( ! isLoweredToCall ( F ) ) continue ; } return ; } SmallVector < const Value * > Operands ( I . operand_values ( ) ) ; Cost += getUserCost ( & I , Operands , TargetTransformInfo :: TCK_SizeAndLatency ) ; } } LLVM_DEBUG ( dbgs ( ) << << Cost << ) ; UP . Partial = true ;" LLVM,RISCV,4244,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getArithmeticReductionCost ( unsigned Opcode , VectorType * VTy , Optional < FastMathFlags > FMF , TTI :: TargetCostKind CostKind ) { if ( ! isa < FixedVectorType > ( VTy ) ) return BaseT :: getArithmeticReductionCost ( Opcode , VTy , FMF , CostKind ) ; if ( VTy -> getElementType ( ) -> isIntegerTy ( ) ) return BaseT :: getArithmeticReductionCost ( Opcode , VTy , FMF , CostKind ) ; if ( ! ST -> useRVVForFixedLengthVectors ( ) ) return BaseT :: getArithmeticReductionCost ( Opcode , VTy , FMF , CostKind ) ; if ( VTy -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return BaseT :: getArithmeticReductionCost ( Opcode , VTy , FMF , CostKind ) ;" LLVM,RISCV,4245,"Predict the next statement of this code snippet: if ( VTy -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return BaseT :: getArithmeticReductionCost ( Opcode , VTy , FMF , CostKind ) ; int ISD = TLI -> InstructionOpcodeToISD ( Opcode ) ; assert ( ISD && ) ; if ( ISD != && ISD != && ISD != && ISD != && ISD != ) return BaseT :: getArithmeticReductionCost ( Opcode , VTy , FMF , CostKind ) ;" LLVM,RISCV,4246,"Predict the next statement of this code snippet: case : case : return ; case : case : case : return std :: abs ( PowDiff ) ; case : case : case : case : if ( std :: abs ( PowDiff ) <= ) return ; if ( Src -> isIntOrIntVectorTy ( ) ) return ; return std :: abs ( PowDiff ) ; } }" LLVM,RISCV,4247,"Predict the next statement of this code snippet: if ( ! isa < FixedVectorType > ( Ty ) ) return BaseT :: getMinMaxReductionCost ( Ty , CondTy , IsUnsigned , CostKind ) ; if ( ! ST -> useRVVForFixedLengthVectors ( ) ) return BaseT :: getMinMaxReductionCost ( Ty , CondTy , IsUnsigned , CostKind ) ; if ( Ty -> getScalarSizeInBits ( ) > ST -> getMaxELENForFixedLengthVectors ( ) ) return BaseT :: getMinMaxReductionCost ( Ty , CondTy , IsUnsigned , CostKind ) ; InstructionCost BaseCost = ;" LLVM,RISCV,4248,"Predict the next statement of this code snippet: if ( Kind == TTI :: SK_Splice && isa < ScalableVectorType > ( Tp ) ) return getSpliceCost ( Tp , Index ) ; return BaseT :: getShuffleCost ( Kind , Tp , Mask , Index , SubTp ) ;" LLVM,RISCV,4249,"Predict the next statement of this code snippet: case TargetTransformInfo :: RGK_FixedWidthVector : return TypeSize :: getFixed ( ST -> hasStdExtV ( ) ? ST -> getMinRVVVectorSizeInBits ( ) : ) ; case TargetTransformInfo :: RGK_ScalableVector : return TypeSize :: getScalable ( ST -> hasStdExtV ( ) ? ST -> getMinRVVVectorSizeInBits ( ) : ) ;" LLVM,RISCV,4250,"Predict the next statement of this code snippet: case TargetTransformInfo :: RGK_Scalar : return TypeSize :: getFixed ( ST -> getXLen ( ) ) ; case TargetTransformInfo :: RGK_FixedWidthVector :" LLVM,RISCV,4251,"Predict the next statement of this code snippet: if ( ! ST -> hasStdExtV ( ) ) return false ; if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ;" LLVM,RISCV,4252,"Predict the next statement of this code snippet: if ( ! ST -> hasStdExtV ( ) ) return false ; if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ;" LLVM,RISCV,4253,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ;" LLVM,RISCV,4254,"Predict the next statement of this code snippet: if ( ! VF . isScalable ( ) ) return true ; Type * Ty = RdxDesc . getRecurrenceType ( ) ; if ( ! isLegalElementTypeForRVV ( Ty ) ) return false ; switch ( RdxDesc . getRecurrenceKind ( ) ) { case RecurKind :: Add :" LLVM,RISCV,4255,"Predict the next statement of this code snippet: case Instruction :: Mul : Takes12BitImm = true ; break ; case Instruction :: Sub : case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : Takes12BitImm = true ; ImmArgIdx = ; break ; default : break ; } if ( Takes12BitImm ) { if ( Instruction :: isCommutative ( Opcode ) || Idx == ImmArgIdx ) { if ( getTLI ( ) -> isLegalAddImmediate ( Imm . getSExtValue ( ) ) ) return TTI :: TCC_Free ; }" LLVM,RISCV,4256,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && DataType -> getScalarSizeInBits ( ) > ST -> getELEN ( ) ) return false ; if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ; return TLI -> isLegalElementTypeForRVV ( DataType -> getScalarType ( ) ) ;" LLVM,RISCV,4257,"Predict the next statement of this code snippet: if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ;" LLVM,RISCV,4258,"Predict the next statement of this code snippet: if ( isa < FixedVectorType > ( DataType ) && ST -> getMinRVVVectorSizeInBits ( ) == ) return false ; if ( isa < FixedVectorType > ( DataType ) && DataType -> getScalarSizeInBits ( ) > ST -> getELEN ( ) ) return false ; if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ;" LLVM,RISCV,4259,"Predict the next statement of this code snippet: if ( Alignment < DL . getTypeStoreSize ( DataType -> getScalarType ( ) ) . getFixedSize ( ) ) return false ;" LLVM,RISCV,4260,"Predict the next statement of this code snippet: bool isLegalToVectorizeReduction ( const RecurrenceDescriptor & RdxDesc , ElementCount VF ) const { if ( ! VF . isScalable ( ) ) return true ; Type * Ty = RdxDesc . getRecurrenceType ( ) ; if ( ! TLI -> isLegalElementTypeForRVV ( Ty ) ) return false ; switch ( RdxDesc . getRecurrenceKind ( ) ) { case RecurKind :: Add : case RecurKind :: FAdd : case RecurKind :: And : case RecurKind :: Or : case RecurKind :: Xor : case RecurKind :: SMin : case RecurKind :: SMax : case RecurKind :: UMin : case RecurKind :: UMax : case RecurKind :: FMin : case RecurKind :: FMax : return true ; default :" LLVM,RISCV,4261,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getGatherScatterOpCost ( unsigned Opcode , Type * DataTy , const Value * Ptr , bool VariableMask , Align Alignment , TTI :: TargetCostKind CostKind , const Instruction * I ) { if ( CostKind != TTI :: TCK_RecipThroughput ) return BaseT :: getGatherScatterOpCost ( Opcode , DataTy , Ptr , VariableMask , Alignment , CostKind , I ) ;" LLVM,RISCV,4262,"Predict the next statement of this code snippet: if ( CostKind != TTI :: TCK_RecipThroughput ) return BaseT :: getGatherScatterOpCost ( Opcode , DataTy , Ptr , VariableMask , Alignment , CostKind , I ) ; if ( ( Opcode == Instruction :: Load && ! isLegalMaskedGather ( DataTy , Align ( Alignment ) ) ) || ( Opcode == Instruction :: Store && ! isLegalMaskedScatter ( DataTy , Align ( Alignment ) ) ) ) return BaseT :: getGatherScatterOpCost ( Opcode , DataTy , Ptr , VariableMask , Alignment , CostKind , I ) ; if ( ! isa < FixedVectorType > ( DataTy ) ) return BaseT :: getGatherScatterOpCost ( Opcode , DataTy , Ptr , VariableMask , Alignment , CostKind , I ) ; auto * VTy = cast < FixedVectorType > ( DataTy ) ; unsigned NumLoads = VTy -> getNumElements ( ) ;" LLVM,RISCV,4263,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getIntImmCost ( const APInt & Imm , Type * Ty , TTI :: TargetCostKind CostKind ) { assert ( Ty -> isIntegerTy ( ) && ) ; if ( Imm == ) return TTI :: TCC_Free ;" LLVM,RISCV,4264,"Predict the next statement of this code snippet: case Instruction :: Add : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : case Instruction :: Mul : Takes12BitImm = true ; break ; case Instruction :: Sub : case Instruction :: Shl : case Instruction :: LShr : case Instruction :: AShr : Takes12BitImm = true ; ImmArgIdx = ; break ; default : break ; } if ( Takes12BitImm ) { if ( Instruction :: isCommutative ( Opcode ) || Idx == ImmArgIdx ) { if ( Imm . getMinSignedBits ( ) <= && getTLI ( ) -> isLegalAddImmediate ( Imm . getSExtValue ( ) ) ) { return TTI :: TCC_Free ; } }" LLVM,RISCV,4265,"Predict the next statement of this code snippet: unsigned MaxVectorSizeInBits = ST -> getMaxRVVVectorSizeInBits ( ) ; if ( ST -> hasStdExtV ( ) && MaxVectorSizeInBits != ) return MaxVectorSizeInBits / ; return BaseT :: getMaxVScale ( ) ;" LLVM,RISCV,4266,"Predict the next statement of this code snippet: assert ( isPowerOf2_32 ( TyWidth ) && ) ;" LLVM,RISCV,4267,"Predict the next statement of this code snippet: TargetTransformInfo :: PopcntSupportKind TTIImpl :: getPopcntSupport ( unsigned TyWidth ) {" LLVM,RISCV,4268,"Predict the next statement of this code snippet: const Subtarget * getST ( ) const {" LLVM,RISCV,4269,"Predict the next statement of this code snippet: const Subtarget * getST ( ) const { return ST ;" LLVM,RISCV,4270,"Predict the next statement of this code snippet: return TLI ;" LLVM,RISCV,4271,"Predict the next statement of this code snippet: explicit TTIImpl ( const TargetMachine * TM , const Function & F ) : BaseT ( TM , F . getParent ( ) -> getDataLayout ( ) ) , ST ( TM -> getSubtargetImpl ( F ) ) , TLI ( ST -> getTargetLowering ( ) ) {" LLVM,RISCV,4272,"Predict the next statement of this code snippet: explicit TTIImpl ( const TargetMachine * TM , const Function & F ) : BaseT ( TM , F . getParent ( ) -> getDataLayout ( ) ) , ST ( TM -> getSubtargetImpl ( F ) ) , TLI ( ST -> getTargetLowering ( ) ) {" LLVM,RISCV,4273,"Predict the next statement of this code snippet: default : return false ; case : case :" LLVM,NVPTX,0,"Predict the next statement of this code snippet: std :: tie ( NewFunc , ImplicitOffset ) = addOffsetArgumentToFunction ( M , Caller ) ; } if ( ! CalleeWithImplicitParam ) { CallToOld -> replaceAllUsesWith ( ImplicitOffset ) ; } else { llvm :: SmallVector < Value * , > ImplicitOffsets ; for ( Use & U : CallToOld -> args ( ) ) { ImplicitOffsets . push_back ( U ) ; } ImplicitOffsets . push_back ( ImplicitOffset ) ; auto NewCaller = CallInst :: Create ( CalleeWithImplicitParam -> getFunctionType ( ) , CalleeWithImplicitParam , ImplicitOffsets , Twine ( ) , CallToOld ) ; NewCaller -> setTailCallKind ( CallToOld -> getTailCallKind ( ) ) ; NewCaller -> copyMetadata ( * CallToOld ) ; CallToOld -> replaceAllUsesWith ( NewCaller ) ; if ( CallToOld -> hasName ( ) ) { NewCaller -> takeName ( CallToOld ) ; } } CallToOld -> eraseFromParent ( ) ; if ( ! AlreadyProcessed ) { addImplicitParameterToCallers ( M , Caller , NewFunc ) ; Caller -> dropAllReferences ( ) ; Caller -> eraseFromParent ( ) ;" LLVM,NVPTX,1,"Predict the next statement of this code snippet: assert ( ! FuncTy -> isVarArg ( ) && ) ; FunctionType * NewFuncTy = FunctionType :: get ( FuncTy -> getReturnType ( ) , Arguments , FuncTy -> isVarArg ( ) ) ; Function * NewFunc = Function :: Create ( NewFuncTy , Func -> getLinkage ( ) , Func -> getAddressSpace ( ) ) ; M . getFunctionList ( ) . insertAfter ( Func -> getIterator ( ) , NewFunc ) ; if ( KeepOriginal ) { NewFunc -> setName ( Func -> getName ( ) + ) ; ValueToValueMapTy VMap ; for ( Function :: arg_iterator FuncArg = Func -> arg_begin ( ) , FuncEnd = Func -> arg_end ( ) , NewFuncArg = NewFunc -> arg_begin ( ) ; FuncArg != FuncEnd ; ++ FuncArg , ++ NewFuncArg ) { VMap [ FuncArg ] = NewFuncArg ; } SmallVector < ReturnInst * , > Returns ; CloneFunctionInto ( NewFunc , Func , VMap , CloneFunctionChangeType :: GlobalChanges , Returns ) ; } else { NewFunc -> copyAttributesFrom ( Func ) ; NewFunc -> setComdat ( Func -> getComdat ( ) ) ; NewFunc -> setAttributes ( NAttrs ) ; NewFunc -> takeName ( Func ) ; NewFunc -> getBasicBlockList ( ) . splice ( NewFunc -> begin ( ) , Func -> getBasicBlockList ( ) ) ; for ( Function :: arg_iterator FuncArg = Func -> arg_begin ( ) , FuncEnd = Func -> arg_end ( ) , NewFuncArg = NewFunc -> arg_begin ( ) ; FuncArg != FuncEnd ; ++ FuncArg , ++ NewFuncArg ) { FuncArg -> replaceAllUsesWith ( NewFuncArg ) ; } SmallVector < std :: pair < unsigned , MDNode * > , > MDs ; Func -> getAllMetadata ( MDs ) ; for ( auto MD : MDs ) NewFunc -> addMetadata ( MD . first , * MD . second ) ; }" LLVM,NVPTX,2,"Predict the next statement of this code snippet: auto HasUseOtherThanLLVMUsed = [ & Used ] ( GlobalValue * GV ) { if ( GV -> use_empty ( ) ) return false ; return ! GV -> hasOneUse ( ) || ! Used . count ( GV ) ; } ; llvm :: DenseMap < Function * , MDNode * > NvvmEntryPointMetadata ; for ( auto MetadataNode : NvvmMetadata -> operands ( ) ) { if ( MetadataNode -> getNumOperands ( ) != ) continue ; auto Type = dyn_cast < MDString > ( MetadataNode -> getOperand ( ) ) ; if ( ! Type || Type -> getString ( ) != ) continue ; const auto & FuncOperand = MetadataNode -> getOperand ( ) ; if ( ! FuncOperand ) continue ; auto FuncConstant = dyn_cast < ConstantAsMetadata > ( FuncOperand ) ; if ( ! FuncConstant ) continue ; auto Func = dyn_cast < Function > ( FuncConstant -> getValue ( ) ) ; if ( ! Func ) continue ; assert ( ! HasUseOtherThanLLVMUsed ( Func ) && ) ; NvvmEntryPointMetadata [ Func ] = MetadataNode ; } return NvvmEntryPointMetadata ;" LLVM,NVPTX,3,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,4,"Predict the next statement of this code snippet: GlobalOffset ( ) : ModulePass ( ID ) {" LLVM,NVPTX,5,"Predict the next statement of this code snippet: GlobalOffset ( ) : ModulePass ( ID ) {" LLVM,NVPTX,6,"Predict the next statement of this code snippet: IRBuilder < > Builder ( EntryBlock , EntryBlock -> getFirstInsertionPt ( ) ) ; Type * ImplicitOffsetType = ArrayType :: get ( Type :: getInt32Ty ( M . getContext ( ) ) , ) ; AllocaInst * ImplicitOffset = Builder . CreateAlloca ( ImplicitOffsetType ) ; uint64_t AllocByteSize = ImplicitOffset -> getAllocationSizeInBits ( M . getDataLayout ( ) ) . getValue ( ) / ; CallInst * MemsetCall = Builder . CreateMemSet ( ImplicitOffset , Builder . getInt8 ( ) , AllocByteSize , ImplicitOffset -> getAlign ( ) ) ; MemsetCall -> addParamAttr ( , Attribute :: NonNull ) ; MemsetCall -> addDereferenceableParamAttr ( , AllocByteSize ) ;" LLVM,NVPTX,7,"Predict the next statement of this code snippet: assert ( ( ! ImplicitOffsetIntrinsic || ImplicitOffsetIntrinsic -> getReturnType ( ) == ImplicitOffsetPtrType ) && ) ; EntryPointMetadata = getEntryPointMetadata ( M ) ; addImplicitParameterToCallers ( M , ImplicitOffsetIntrinsic , nullptr ) ; assert ( ImplicitOffsetIntrinsic -> use_empty ( ) && ) ;" LLVM,NVPTX,8,"Predict the next statement of this code snippet: if ( Type -> getString ( ) != ) continue ; const MDOperand & FuncOperand = MetadataNode -> getOperand ( ) ; auto FuncConstant = dyn_cast < ConstantAsMetadata > ( FuncOperand ) ; if ( ! FuncConstant ) continue ; auto Func = dyn_cast < Function > ( FuncConstant -> getValue ( ) ) ; if ( ! Func ) continue ; auto NewFunc = this -> ProcessFunction ( M , Func ) ; if ( NewFunc ) { Changed = true ; MetadataNode -> replaceOperandWith ( , llvm :: ConstantAsMetadata :: get ( NewFunc ) ) ; } } return Changed ;" LLVM,NVPTX,9,"Predict the next statement of this code snippet: virtual llvm :: StringRef getPassName ( ) const { return ;" LLVM,NVPTX,10,"Predict the next statement of this code snippet: LocalAccessorToSharedMemory ( ) : ModulePass ( ID ) {" LLVM,NVPTX,11,"Predict the next statement of this code snippet: LocalAccessorToSharedMemory ( ) : ModulePass ( ID ) {" LLVM,NVPTX,12,"Predict the next statement of this code snippet: if ( ! FuncConstant ) continue ; auto Func = dyn_cast < Function > ( FuncConstant -> getValue ( ) ) ; if ( ! Func ) continue ; auto NewFunc = this -> ProcessFunction ( M , Func ) ; if ( NewFunc ) { Changed = true ; MetadataNode -> replaceOperandWith ( , llvm :: ConstantAsMetadata :: get ( NewFunc ) ) ; } }" LLVM,NVPTX,13,"Predict the next statement of this code snippet: const MDOperand & FuncOperand = MetadataNode -> getOperand ( ) ; if ( ! FuncOperand ) continue ; auto FuncConstant = dyn_cast < ConstantAsMetadata > ( FuncOperand ) ; if ( ! FuncConstant ) continue ; auto Func = dyn_cast < Function > ( FuncConstant -> getValue ( ) ) ; if ( ! Func ) continue ; auto NewFunc = this -> ProcessFunction ( M , Func ) ; if ( NewFunc ) { Changed = true ; MetadataNode -> replaceOperandWith ( , llvm :: ConstantAsMetadata :: get ( NewFunc ) ) ; } }" LLVM,NVPTX,14,"Predict the next statement of this code snippet: SmallVector < std :: string * , > :: iterator Current = Pool . begin ( ) ; while ( Current != Pool . end ( ) ) {" LLVM,NVPTX,15,"Predict the next statement of this code snippet: while ( Current != Pool . end ( ) ) { delete * Current ; ++ Current ; }" LLVM,NVPTX,16,"Predict the next statement of this code snippet: std :: string * Str = new std :: string ( S ) ;" LLVM,NVPTX,17,"Predict the next statement of this code snippet: ManagedStringPool ( ) {" LLVM,NVPTX,18,"Predict the next statement of this code snippet: ManagedStringPool ( ) {" LLVM,NVPTX,19,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; } llvm_unreachable ( ) ;" LLVM,NVPTX,20,"Predict the next statement of this code snippet: NVVMIntrRangePass ( unsigned SmVersion ) : SmVersion ( SmVersion ) {" LLVM,NVPTX,21,"Predict the next statement of this code snippet: NVVMIntrRangePass ( unsigned SmVersion ) : SmVersion ( SmVersion ) {" LLVM,NVPTX,22,"Predict the next statement of this code snippet: NVVMReflectPass ( unsigned SmVersion ) : SmVersion ( SmVersion ) {" LLVM,NVPTX,23,"Predict the next statement of this code snippet: NVVMReflectPass ( unsigned SmVersion ) : SmVersion ( SmVersion ) {" LLVM,NVPTX,24,"Predict the next statement of this code snippet: return new AllocaHoisting ;" LLVM,NVPTX,25,"Predict the next statement of this code snippet: AU . addPreserved < StackProtector > ( ) ;" LLVM,NVPTX,26,"Predict the next statement of this code snippet: AU . addPreserved < StackProtector > ( ) ;" LLVM,NVPTX,27,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,28,"Predict the next statement of this code snippet: AU . addRequired < DataLayout > ( ) ; AU . addPreserved < MachineFunctionAnalysis > ( ) ;" LLVM,NVPTX,29,"Predict the next statement of this code snippet: virtual const char * getPassName ( ) const {" LLVM,NVPTX,30,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,31,"Predict the next statement of this code snippet: for ( Function :: iterator E = function . end ( ) ; I != E ; ++ I ) { for ( BasicBlock :: iterator BI = I -> begin ( ) , BE = I -> end ( ) ; BI != BE ; ) { AllocaInst * allocaInst = dyn_cast < AllocaInst > ( BI ++ ) ; if ( allocaInst && isa < ConstantInt > ( allocaInst -> getArraySize ( ) ) ) { allocaInst -> moveBefore ( firstTerminatorInst ) ; functionModified = true ; }" LLVM,NVPTX,32,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const { AU . addRequired < DataLayoutPass > ( ) ;" LLVM,NVPTX,33,"Predict the next statement of this code snippet: bool functionModified = false ; Function :: iterator I = function . begin ( ) ; TerminatorInst * firstTerminatorInst = ( I ++ ) -> getTerminator ( ) ; for ( Function :: iterator E = function . end ( ) ; I != E ; ++ I ) { for ( BasicBlock :: iterator BI = I -> begin ( ) , BE = I -> end ( ) ; BI != BE ; ) { AllocaInst * allocaInst = dyn_cast < AllocaInst > ( BI ++ ) ; if ( allocaInst && isa < ConstantInt > ( allocaInst -> getArraySize ( ) ) ) {" LLVM,NVPTX,34,"Predict the next statement of this code snippet: AU . addPreserved < MachineFunctionAnalysis > ( ) ;" LLVM,NVPTX,35,"Predict the next statement of this code snippet: AU . addRequired < DataLayoutPass > ( ) ; AU . addPreserved < MachineFunctionAnalysis > ( ) ;" LLVM,NVPTX,36,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const { AU . addRequired < TargetData > ( ) ;" LLVM,NVPTX,37,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,NVPTX,38,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override { AU . addRequired < DataLayoutPass > ( ) ; AU . addPreserved ( ) ; AU . addPreserved < MachineFunctionAnalysis > ( ) ;" LLVM,NVPTX,39,"Predict the next statement of this code snippet: AllocaHoisting ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,40,"Predict the next statement of this code snippet: AllocaHoisting ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,41,"Predict the next statement of this code snippet: break ; } if ( Cexpr -> getOpcode ( ) == Instruction :: PtrToInt ) { Value * v = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v ) ; aggBuffer -> addZeros ( ) ; break ; } } llvm_unreachable ( ) ; } else if ( ETy == Type :: getInt64Ty ( CPV -> getContext ( ) ) ) { if ( const ConstantInt * constInt = dyn_cast < ConstantInt > ( CPV ) ) { long long int64 = ( long long ) ( constInt -> getZExtValue ( ) ) ; ptr = ( unsigned char * ) & int64 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { if ( const ConstantInt * constInt = dyn_cast < ConstantInt > ( ConstantFoldConstantExpression ( Cexpr , TD ) ) ) { long long int64 = ( long long ) ( constInt -> getZExtValue ( ) ) ; ptr = ( unsigned char * ) & int64 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } if ( Cexpr -> getOpcode ( ) == Instruction :: PtrToInt ) { Value * v = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v ) ; aggBuffer -> addZeros ( ) ; break ; } } llvm_unreachable ( ) ; } else llvm_unreachable ( ) ; break ; } case Type :: FloatTyID : case Type :: DoubleTyID : { const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ; const Type * Ty = CFP -> getType ( ) ; if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ptr = ( unsigned char * ) & float32 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) {" LLVM,NVPTX,42,"Predict the next statement of this code snippet: if ( Pty -> getAddressSpace ( ) != llvm :: ADDRESS_SPACE_SHARED ) return false ; const Function * oneFunc = ; bool flag = usedInOneFunc ( gv , oneFunc ) ; if ( flag == false ) return false ; if ( ! oneFunc ) return false ; f = oneFunc ;" LLVM,NVPTX,43,"Predict the next statement of this code snippet: i = ; for ( Module :: global_iterator I = global_list . begin ( ) , E = global_list . end ( ) ; I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; delete [ ] gv_array ; return ret ;" LLVM,NVPTX,44,"Predict the next statement of this code snippet: emitGlobals ( M ) ; GlobalsEmitted = true ; } Module :: GlobalListType & global_list = M . getGlobalList ( ) ; int i , n = global_list . size ( ) ; GlobalVariable * * gv_array = new GlobalVariable * [ n ] ; i = ; for ( Module :: global_iterator I = global_list . begin ( ) , E = global_list . end ( ) ; I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ;" LLVM,NVPTX,45,"Predict the next statement of this code snippet: OutStreamer . AddBlankLine ( ) ; OutStreamer . EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; } if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; GlobalsEmitted = false ;" LLVM,NVPTX,46,"Predict the next statement of this code snippet: printReturnValStr ( F , O ) ; O << * Mang -> getSymbol ( F ) << ; emitFunctionParamList ( F , O ) ;" LLVM,NVPTX,47,"Predict the next statement of this code snippet: printReturnValStr ( F , O ) ; O << * Mang -> getSymbol ( F ) << ;" LLVM,NVPTX,48,"Predict the next statement of this code snippet: if ( F -> getIntrinsicID ( ) ) continue ; emitDeclaration ( F , O ) ; continue ; } for ( Value :: const_use_iterator iter = F -> use_begin ( ) , iterEnd = F -> use_end ( ) ; iter != iterEnd ; ++ iter ) { if ( const Constant * C = dyn_cast < Constant > ( * iter ) ) { if ( usedInGlobalVarDef ( C ) ) { emitDeclaration ( F , O ) ; break ; } if ( useFuncSeen ( C , seenMap ) ) { emitDeclaration ( F , O ) ; break ; } } if ( ! isa < Instruction > ( * iter ) ) continue ; const Instruction * instr = cast < Instruction > ( * iter ) ; const BasicBlock * bb = instr -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ; if ( seenMap . find ( caller ) != seenMap . end ( ) ) { emitDeclaration ( F , O ) ;" LLVM,NVPTX,49,"Predict the next statement of this code snippet: bool first = true ; bool isKernelFunc = llvm :: isKernelFunction ( * F ) ; bool isABI = ( nvptxSubtarget . getSmVersion ( ) >= ) ; MVT thePointerTy = TLI -> getPointerTy ( ) ; O << ; for ( I = F -> arg_begin ( ) , E = F -> arg_end ( ) ; I != E ; ++ I , paramIndex ++ ) { Type * Ty = I -> getType ( ) ; if ( ! first ) O << ; first = false ; if ( llvm :: isSampler ( * I ) || llvm :: isImage ( * I ) ) { if ( llvm :: isImage ( * I ) ) { std :: string sname = I -> getName ( ) ; if ( llvm :: isImageWriteOnly ( * I ) ) O << << * Mang -> getSymbol ( F ) << << paramIndex ; else O << << * Mang -> getSymbol ( F ) << << paramIndex ; } else O << << * Mang -> getSymbol ( F ) << << paramIndex ; continue ; } if ( PAL . hasAttribute ( paramIndex + , Attribute :: ByVal ) == false ) { if ( Ty -> isVectorTy ( ) ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST :" LLVM,NVPTX,50,"Predict the next statement of this code snippet: void AsmPrinter :: EmitInstruction ( const MachineInstr * MI ) { SmallString < > Str ; raw_svector_ostream OS ( Str ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) emitLineNumberAsDotLoc ( * MI ) ; MCInst Inst ; lowerToMCInst ( MI , Inst ) ;" LLVM,NVPTX,51,"Predict the next statement of this code snippet: assert ( ( ! Scope || Scope . isScope ( ) ) && ) ; if ( ! Scope ) return ; StringRef fileName ( Scope . getFilename ( ) ) ; StringRef dirName ( Scope . getDirectory ( ) ) ; SmallString < > FullPathName = dirName ; if ( ! dirName . empty ( ) && ! sys :: path :: is_absolute ( fileName ) ) { sys :: path :: append ( FullPathName , fileName ) ; fileName = FullPathName . str ( ) ; } if ( filenameMap . find ( fileName . str ( ) ) == filenameMap . end ( ) ) return ; if ( llvm :: InterleaveSrcInPtx ) this -> emitSrcInText ( fileName . str ( ) , curLoc . getLine ( ) ) ; std :: stringstream temp ; temp << << filenameMap [ fileName . str ( ) ] << << curLoc . getLine ( ) << << curLoc . getCol ( ) ;" LLVM,NVPTX,52,"Predict the next statement of this code snippet: if ( curLoc . isUnknown ( ) ) return ; const MachineFunction * MF = MI . getParent ( ) -> getParent ( ) ; const LLVMContext & ctx = MF -> getFunction ( ) -> getContext ( ) ; DIScope Scope ( curLoc . getScope ( ctx ) ) ; assert ( ( ! Scope || Scope . isScope ( ) ) && ) ; if ( ! Scope ) return ; StringRef fileName ( Scope . getFilename ( ) ) ; StringRef dirName ( Scope . getDirectory ( ) ) ; SmallString < > FullPathName = dirName ; if ( ! dirName . empty ( ) && ! sys :: path :: is_absolute ( fileName ) ) {" LLVM,NVPTX,53,"Predict the next statement of this code snippet: msg . append ( ) ; msg . append ( ) ; if ( V -> hasName ( ) ) msg . append ( V -> getName ( ) . str ( ) ) ; msg . append ( ) ; llvm_unreachable ( msg . c_str ( ) ) ; }" LLVM,NVPTX,54,"Predict the next statement of this code snippet: O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * Mang -> getSymbol ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << * Mang -> getSymbol ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ; } O << ;" LLVM,NVPTX,55,"Predict the next statement of this code snippet: getVirtualRegisterName ( vr , isVec , O ) ;" LLVM,NVPTX,56,"Predict the next statement of this code snippet: void AsmPrinter :: emitVirtualRegister ( unsigned int vr , bool isVec , raw_ostream & O ) {" LLVM,NVPTX,57,"Predict the next statement of this code snippet: unsigned int numE = VTy -> getNumElements ( ) ; unsigned int alignE = TD -> getPrefTypeAlignment ( ETy ) ; if ( numE == ) return * alignE ; else return numE * alignE ; } const StructType * STy = dyn_cast < StructType > ( Ty ) ; if ( STy ) { unsigned int alignStruct = ; for ( unsigned i = , e = STy -> getNumElements ( ) ; i != e ; i ++ ) { Type * ETy = STy -> getElementType ( i ) ; unsigned int align = getOpenCLAlignment ( TD , ETy ) ; if ( align > alignStruct ) alignStruct = align ; } return alignStruct ; } const FunctionType * FTy = dyn_cast < FunctionType > ( Ty ) ; if ( FTy ) return TD -> getPointerPrefAlignment ( ) ; return TD -> getPrefTypeAlignment ( Ty ) ;" LLVM,NVPTX,58,"Predict the next statement of this code snippet: case Type :: IntegerTyID : { unsigned NumBits = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( NumBits == ) return ; else if ( NumBits <= ) { std :: string name = ; return name + utostr ( NumBits ) ; } else { llvm_unreachable ( ) ; break ; } break ; } case Type :: FloatTyID : return ; case Type :: DoubleTyID : return ;" LLVM,NVPTX,59,"Predict the next statement of this code snippet: reader = new LineReader ( filename ) ; } if ( reader -> fileName ( ) != filename ) { delete reader ; reader = new LineReader ( filename ) ; } return reader ;" LLVM,NVPTX,60,"Predict the next statement of this code snippet: } if ( reader -> fileName ( ) != filename ) { delete reader ; reader = new LineReader ( filename ) ; } return reader ;" LLVM,NVPTX,61,"Predict the next statement of this code snippet: Expr = MCSymbolRefExpr :: Create ( Symbol , MCSymbolRefExpr :: VK_None , OutContext ) ; return MCOperand :: CreateExpr ( Expr ) ;" LLVM,NVPTX,62,"Predict the next statement of this code snippet: Expr = MCSymbolRefExpr :: Create ( Symbol , MCSymbolRefExpr :: VK_None , OutContext ) ;" LLVM,NVPTX,63,"Predict the next statement of this code snippet: DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; unsigned mapped_vr = regmap [ vr ] ; if ( ! isVec ) { O << getRegClassStr ( RC ) << mapped_vr ; return ; } report_fatal_error ( ) ;" LLVM,NVPTX,64,"Predict the next statement of this code snippet: break ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: CreateImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = MCOperand :: CreateExpr ( MCSymbolRefExpr :: Create ( MO . getMBB ( ) -> getSymbol ( ) , OutContext ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = GetSymbolRef ( MO , GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = GetSymbolRef ( MO , Mang -> getSymbol ( MO . getGlobal ( ) ) ) ; break ; case MachineOperand :: MO_FPImmediate : { const ConstantFP * Cnt = MO . getFPImm ( ) ; APFloat Val = Cnt -> getValueAPF ( ) ; switch ( Cnt -> getType ( ) -> getTypeID ( ) ) { default : report_fatal_error ( ) ; break ; case Type :: FloatTyID : MCOp = MCOperand :: CreateExpr ( FloatMCExpr :: CreateConstantFPSingle ( Val , OutContext ) ) ; break ; case Type :: DoubleTyID : MCOp = MCOperand :: CreateExpr ( FloatMCExpr :: CreateConstantFPDouble ( Val , OutContext ) ) ; break ; }" LLVM,NVPTX,65,"Predict the next statement of this code snippet: for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) {" LLVM,NVPTX,66,"Predict the next statement of this code snippet: for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { const MachineOperand & MO = MI -> getOperand ( i ) ; MCOperand MCOp ;" LLVM,NVPTX,67,"Predict the next statement of this code snippet: return ; } if ( llvm :: isSurface ( * GVar ) ) { O << << llvm :: getSurfaceName ( * GVar ) << ; return ; } if ( GVar -> isDeclaration ( ) ) { emitPTXGlobalVariable ( GVar , O ) ; O << ; return ; } if ( llvm :: isSampler ( * GVar ) ) { O << << llvm :: getSamplerName ( * GVar ) ; const Constant * Initializer = NULL ; if ( GVar -> hasInitializer ( ) ) Initializer = GVar -> getInitializer ( ) ; const ConstantInt * CI = NULL ; if ( Initializer ) CI = dyn_cast < ConstantInt > ( Initializer ) ; if ( CI ) { unsigned sample = CI -> getZExtValue ( ) ; O << ; for ( int i = , addr = ( ( sample & __CLK_ADDRESS_MASK ) >> __CLK_ADDRESS_BASE ) ; i < ; i ++ ) { O << << i << ; switch ( addr ) { case : O << ; break ; case : O << ; break ; case : O << ; break ; case : O << ; break ; case : O << ; break ; } O << ; } O << ; switch ( ( sample & __CLK_FILTER_MASK ) >> __CLK_FILTER_BASE ) { case : O << ; break ; case : O << ; break ; case : assert ( && ) ; default : O << ; break ; } if ( ! ( ( sample & __CLK_NORMALIZED_MASK ) >> __CLK_NORMALIZED_BASE ) ) { O << ; } O << ; } O << ; return ; } if ( GVar -> hasPrivateLinkage ( ) ) { if ( ! strncmp ( GVar -> getName ( ) . data ( ) , , ) ) return ; if ( ! strncmp ( GVar -> getName ( ) . data ( ) , , ) ) return ; if ( GVar -> use_empty ( ) ) return ; } const Function * demotedFunc = ; if ( ! processDemoted && canDemoteGlobalVar ( GVar , demotedFunc ) ) { O << << GVar -> getName ( ) . str ( ) << ; if ( localDecls . find ( demotedFunc ) != localDecls . end ( ) ) localDecls [ demotedFunc ] . push_back ( GVar ) ; else { std :: vector < const GlobalVariable * > temp ;" LLVM,NVPTX,68,"Predict the next statement of this code snippet: const char * p = argName . c_str ( ) ; while ( * p ) { if ( * p == '.' ) O << ; else O << * p ; p ++ ; }" LLVM,NVPTX,69,"Predict the next statement of this code snippet: void AsmPrinter :: printScalarConstant ( const Constant * CPV , raw_ostream & O ) { if ( const ConstantInt * CI = dyn_cast < ConstantInt > ( CPV ) ) { O << CI -> getValue ( ) ; return ; } if ( const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ) { printFPConstant ( CFP , O ) ; return ; } if ( isa < ConstantPointerNull > ( CPV ) ) { O << ; return ;" LLVM,NVPTX,70,"Predict the next statement of this code snippet: if ( const ConstantInt * CI = dyn_cast < ConstantInt > ( CPV ) ) { O << CI -> getValue ( ) ; return ; } if ( const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ) { printFPConstant ( CFP , O ) ; return ; } if ( isa < ConstantPointerNull > ( CPV ) ) { O << ; return ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { O << * Mang -> getSymbol ( GVar ) ; return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { O << * Mang -> getSymbol ( GVar ) ; return ; } else { O << * LowerConstant ( CPV , * this ) ; return ;" LLVM,NVPTX,71,"Predict the next statement of this code snippet: for ( DebugInfoFinder :: iterator I = DbgFinder . compile_unit_begin ( ) , E = DbgFinder . compile_unit_end ( ) ; I != E ; ++ I ) { DICompileUnit DIUnit ( * I ) ; StringRef Filename ( DIUnit . getFilename ( ) ) ; StringRef Dirname ( DIUnit . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName . str ( ) ; } if ( filenameMap . find ( Filename . str ( ) ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename . str ( ) ] = i ; OutStreamer . EmitDwarfFileDirective ( i , , Filename . str ( ) ) ; ++ i ; } for ( DebugInfoFinder :: iterator I = DbgFinder . subprogram_begin ( ) , E = DbgFinder . subprogram_end ( ) ; I != E ; ++ I ) { DISubprogram SP ( * I ) ; StringRef Filename ( SP . getFilename ( ) ) ; StringRef Dirname ( SP . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ;" LLVM,NVPTX,72,"Predict the next statement of this code snippet: for ( Value :: const_use_iterator ui = C -> use_begin ( ) , ue = C -> use_end ( ) ; ui != ue ; ++ ui ) { const Constant * C = dyn_cast < Constant > ( * ui ) ; if ( usedInGlobalVarDef ( C ) ) return true ; } return false ;" LLVM,NVPTX,73,"Predict the next statement of this code snippet: if ( oneFunc && ( curFunc != oneFunc ) ) return false ; oneFunc = curFunc ; return true ; } else return false ; } if ( const MDNode * md = dyn_cast < MDNode > ( U ) ) if ( md -> hasName ( ) && ( ( md -> getName ( ) . str ( ) == ) || ( md -> getName ( ) . str ( ) == ) ) ) return true ; for ( User :: const_use_iterator ui = U -> use_begin ( ) , ue = U -> use_end ( ) ; ui != ue ; ++ ui ) { if ( usedInOneFunc ( * ui , oneFunc ) == false ) return false ;" LLVM,NVPTX,74,"Predict the next statement of this code snippet: if ( useFuncSeen ( cu , seenMap ) ) return true ; } else if ( const Instruction * I = dyn_cast < Instruction > ( * ui ) ) { const BasicBlock * bb = I -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ;" LLVM,NVPTX,75,"Predict the next statement of this code snippet: delete reader ;" LLVM,NVPTX,76,"Predict the next statement of this code snippet: ~ AsmPrinter ( ) override { delete reader ;" LLVM,NVPTX,77,"Predict the next statement of this code snippet: unsigned int nSym = ; unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( AP . nvptxSubtarget . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . getSymbol ( GVar ) ; PointerType * PTy = dyn_cast < PointerType > ( GVar -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; O << * Name ; O << ; } else { O << * Name ; } } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( v ) ) { O << * AP . lowerConstant ( Cexpr ) ; } else llvm_unreachable ( ) ; nSym ++ ; if ( nSym >= numSymbols ) nextSymbolPos = size + ; else nextSymbolPos = symbolPosInBuffer [ nSym ] ; } else if ( nBytes == ) O << * ( unsigned int * ) ( & buffer [ pos ] ) ; else O << * ( unsigned long long * ) ( & buffer [ pos ] ) ; } }" LLVM,NVPTX,78,"Predict the next statement of this code snippet: if ( numSymbols == ) { for ( unsigned i = ; i < size ; i ++ ) { if ( i ) O << ; O << ( unsigned int ) buffer [ i ] ; } } else { unsigned int pos = ; unsigned int nSym = ; unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( AP . nvptxSubtarget . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . getSymbol ( GVar ) ; PointerType * PTy = dyn_cast < PointerType > ( GVar -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; }" LLVM,NVPTX,79,"Predict the next statement of this code snippet: const Instruction * instr = cast < Instruction > ( U ) ; const BasicBlock * bb = instr -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ; if ( seenMap . find ( caller ) != seenMap . end ( ) ) { emitDeclaration ( F , O ) ; break ; } }" LLVM,NVPTX,80,"Predict the next statement of this code snippet: assert ( GVVisiting . size ( ) == && ) ; for ( unsigned i = , e = Globals . size ( ) ; i != e ; ++ i ) printModuleLevelGV ( Globals [ i ] , OS2 ) ; OS2 << '\n' ;" LLVM,NVPTX,81,"Predict the next statement of this code snippet: case MachineOperand :: MO_Register : if ( TargetRegisterInfo :: isPhysicalRegister ( MO . getReg ( ) ) ) { if ( MO . getReg ( ) == ) O << DEPOTNAME << getFunctionNumber ( ) ; else O << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; } else { emitVirtualRegister ( MO . getReg ( ) , false , O ) ; } return ; case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : O << * Mang -> getSymbol ( MO . getGlobal ( ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : { const char * symbname = MO . getSymbolName ( ) ; if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; printParamName ( index , O ) ; } else if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; O << * CurrentFnSym << << index << ; } else O << symbname ; break ; }" LLVM,NVPTX,82,"Predict the next statement of this code snippet: if ( CPV -> getNumOperands ( ) ) for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , , aggBuffer ) ; return ; } if ( const ConstantDataSequential * CDS = dyn_cast < ConstantDataSequential > ( CPV ) ) { if ( CDS -> getNumElements ( ) ) for ( unsigned i = ; i < CDS -> getNumElements ( ) ; ++ i ) bufferLEByte ( cast < Constant > ( CDS -> getElementAsConstant ( i ) ) , , aggBuffer ) ; return ;" LLVM,NVPTX,83,"Predict the next statement of this code snippet: const DataLayout * TD = TM . getDataLayout ( ) ; int Bytes ; if ( isa < ConstantArray > ( CPV ) || isa < ConstantVector > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , , aggBuffer ) ; return ; } if ( const ConstantDataSequential * CDS = dyn_cast < ConstantDataSequential > ( CPV ) ) { if ( CDS -> getNumElements ( ) ) for ( unsigned i = ; i < CDS -> getNumElements ( ) ; ++ i ) bufferLEByte ( cast < Constant > ( CDS -> getElementAsConstant ( i ) ) , , aggBuffer ) ; return ; } if ( isa < ConstantStruct > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) { StructType * ST = cast < StructType > ( CPV -> getType ( ) ) ;" LLVM,NVPTX,84,"Predict the next statement of this code snippet: const Type * Ty = CFP -> getType ( ) ; if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ptr = ( unsigned char * ) & float32 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) { double float64 = CFP -> getValueAPF ( ) . convertToDouble ( ) ; ptr = ( unsigned char * ) & float64 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else { llvm_unreachable ( ) ; } break ; } case Type :: PointerTyID : { if ( GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { aggBuffer -> addSymbol ( GVar ) ; } else if ( ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { Value * v = Cexpr -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v ) ; } unsigned int s = TD -> getTypeAllocSize ( CPV -> getType ( ) ) ; aggBuffer -> addZeros ( s ) ; break ; } case Type :: ArrayTyID : case Type :: VectorTyID : case Type :: StructTyID : { if ( isa < ConstantArray > ( CPV ) || isa < ConstantVector > ( CPV ) || isa < ConstantStruct > ( CPV ) ) { int ElementSize = TD -> getTypeAllocSize ( CPV -> getType ( ) ) ; bufferAggregateConstant ( CPV , aggBuffer ) ; if ( Bytes > ElementSize ) aggBuffer -> addZeros ( Bytes - ElementSize ) ; } else if ( isa < ConstantAggregateZero > ( CPV ) ) aggBuffer -> addZeros ( Bytes ) ; else llvm_unreachable ( ) ; break ; } default :" LLVM,NVPTX,85,"Predict the next statement of this code snippet: I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ;" LLVM,NVPTX,86,"Predict the next statement of this code snippet: raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( OutContext , * TM . getDataLayout ( ) ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; SmallString < > Str2 ; raw_svector_ostream OS2 ( Str2 ) ;" LLVM,NVPTX,87,"Predict the next statement of this code snippet: if ( llvm :: isKernelFunction ( * F ) ) O << ; else O << ; printReturnValStr ( F , O ) ; O << * CurrentFnSym << ;" LLVM,NVPTX,88,"Predict the next statement of this code snippet: emitLinkageDirective ( F , O ) ;" LLVM,NVPTX,89,"Predict the next statement of this code snippet: } for ( Value :: const_use_iterator iter = F -> use_begin ( ) , iterEnd = F -> use_end ( ) ; iter != iterEnd ; ++ iter ) { if ( const Constant * C = dyn_cast < Constant > ( * iter ) ) { if ( usedInGlobalVarDef ( C ) ) { CurrentFnSym = Mang -> getSymbol ( F ) ; emitDeclaration ( F , O ) ; break ; } if ( useFuncSeen ( C , seenMap ) ) { CurrentFnSym = Mang -> getSymbol ( F ) ;" LLVM,NVPTX,90,"Predict the next statement of this code snippet: if ( localDecls . find ( f ) == localDecls . end ( ) ) return ; std :: vector < GlobalVariable * > & gvars = localDecls [ f ] ; for ( unsigned i = , e = gvars . size ( ) ; i != e ; ++ i ) { O << ; printModuleLevelGV ( gvars [ i ] , O , true ) ; }" LLVM,NVPTX,91,"Predict the next statement of this code snippet: std :: vector < GlobalVariable * > & gvars = localDecls [ f ] ;" LLVM,NVPTX,92,"Predict the next statement of this code snippet: void AsmPrinter :: EmitFunctionBodyEnd ( ) { OutStreamer . EmitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,93,"Predict the next statement of this code snippet: OutStreamer . EmitRawText ( StringRef ( ) ) ; setAndEmitFunctionVirtualRegisters ( * MF ) ; SmallString < > Str ; raw_svector_ostream O ( Str ) ;" LLVM,NVPTX,94,"Predict the next statement of this code snippet: F = MF -> getFunction ( ) ; emitLinkageDirective ( F , O ) ; if ( llvm :: isKernelFunction ( * F ) ) O << ; else { O << ; printReturnValStr ( * MF , O ) ; }" LLVM,NVPTX,95,"Predict the next statement of this code snippet: if ( nvptxSubtarget . getDrvInterface ( ) == ) { if ( ! nvptxSubtarget . hasDouble ( ) ) O << ; } if ( MAI -> doesSupportDebugInformation ( ) ) O << ; O << ; O << ; if ( nvptxSubtarget . is64Bit ( ) ) O << ; else O << ; O << ; O << ;" LLVM,NVPTX,96,"Predict the next statement of this code snippet: O << ; O << ; O << ; O << ; O << nvptxSubtarget . getTargetName ( ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) O << ; if ( nvptxSubtarget . getDrvInterface ( ) == ) { if ( ! nvptxSubtarget . hasDouble ( ) ) O << ; }" LLVM,NVPTX,97,"Predict the next statement of this code snippet: printInstruction ( MI , OS ) ; OutStreamer . EmitRawText ( OS . str ( ) ) ;" LLVM,NVPTX,98,"Predict the next statement of this code snippet: void AsmPrinter :: EmitInstruction ( const MachineInstr * MI ) { SmallString < > Str ; raw_svector_ostream OS ( Str ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) emitLineNumberAsDotLoc ( * MI ) ; printInstruction ( MI , OS ) ;" LLVM,NVPTX,99,"Predict the next statement of this code snippet: unsigned reqntidx , reqntidy , reqntidz ; bool specified = false ; if ( llvm :: getReqNTIDx ( F , reqntidx ) == false ) reqntidx = ; else specified = true ; if ( llvm :: getReqNTIDy ( F , reqntidy ) == false ) reqntidy = ; else specified = true ;" LLVM,NVPTX,100,"Predict the next statement of this code snippet: sys :: path :: append ( FullPathName , fileName ) ; fileName = FullPathName . str ( ) ; } if ( filenameMap . find ( fileName . str ( ) ) == filenameMap . end ( ) ) return ; if ( llvm :: InterleaveSrcInPtx ) this -> emitSrcInText ( fileName . str ( ) , curLoc . getLine ( ) ) ; std :: stringstream temp ; temp << << filenameMap [ fileName . str ( ) ] << << curLoc . getLine ( ) << << curLoc . getCol ( ) ; OutStreamer . EmitRawText ( Twine ( temp . str ( ) . c_str ( ) ) ) ;" LLVM,NVPTX,101,"Predict the next statement of this code snippet: std :: string msg ; msg . append ( ) ; msg . append ( ) ; if ( V -> hasName ( ) ) msg . append ( V -> getName ( ) . str ( ) ) ; msg . append ( ) ;" LLVM,NVPTX,102,"Predict the next statement of this code snippet: int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << * Mang -> getSymbol ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ; } O << ; break ; default :" LLVM,NVPTX,103,"Predict the next statement of this code snippet: const DataLayout * TD = TM . getDataLayout ( ) ; const PointerType * PTy = GVar -> getType ( ) ; Type * ETy = PTy -> getElementType ( ) ; O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isPrimitiveType ( ) || ETy -> isIntegerTy ( ) || isa < PointerType > ( ETy ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * Mang -> getSymbol ( GVar ) ; return ; } int64_t ElementSize = ;" LLVM,NVPTX,104,"Predict the next statement of this code snippet: void AsmPrinter :: emitSrcInText ( StringRef filename , unsigned line ) { std :: stringstream temp ; LineReader * reader = this -> getReader ( filename . str ( ) ) ; temp << ; temp << filename . str ( ) ; temp << ; temp << line ;" LLVM,NVPTX,105,"Predict the next statement of this code snippet: } const StructType * STy = dyn_cast < StructType > ( Ty ) ; if ( STy ) { unsigned int alignStruct = ; for ( unsigned i = , e = STy -> getNumElements ( ) ; i != e ; i ++ ) { Type * ETy = STy -> getElementType ( i ) ; unsigned int align = getOpenCLAlignment ( TD , ETy ) ; if ( align > alignStruct ) alignStruct = align ; }" LLVM,NVPTX,106,"Predict the next statement of this code snippet: LineReader * AsmPrinter :: getReader ( std :: string filename ) { if ( reader == NULL ) { reader = new LineReader ( filename ) ; }" LLVM,NVPTX,107,"Predict the next statement of this code snippet: O << getRegClassStr ( RC ) << mapped_vr ; return ; } if ( getVectorSize ( RC ) == ) O << << getRegClassStr ( RC ) << mapped_vr << << getRegClassStr ( RC ) << mapped_vr << << getRegClassStr ( RC ) << mapped_vr << << getRegClassStr ( RC ) << mapped_vr << << ; else if ( getVectorSize ( RC ) == ) O << << getRegClassStr ( RC ) << mapped_vr << << getRegClassStr ( RC ) << mapped_vr << << ; else llvm_unreachable ( ) ;" LLVM,NVPTX,108,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,109,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,110,"Predict the next statement of this code snippet: const MCExpr * Base = LowerConstant ( CE -> getOperand ( ) , AP ) ; if ( Offset == ) return Base ; unsigned PtrSize = TD . getPointerTypeSizeInBits ( PtrVal -> getType ( ) ) ; if ( PtrSize != ) { int SExtAmount = - PtrSize ; Offset = ( Offset << SExtAmount ) >> SExtAmount ; } return MCBinaryExpr :: CreateAdd ( Base , MCConstantExpr :: Create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return LowerConstant ( CE -> getOperand ( ) , AP ) ; case Instruction :: IntToPtr : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , TD . getIntPtrType ( CE -> getType ( ) ) , false ) ; return LowerConstant ( Op , AP ) ; } case Instruction :: PtrToInt : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = LowerConstant ( Op , AP ) ; if ( TD . getTypeAllocSize ( Ty ) == TD . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = TD . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: Create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: CreateAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : case Instruction :: Sub : case Instruction :: Mul : case Instruction :: SDiv : case Instruction :: SRem : case Instruction :: Shl : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : { const MCExpr * LHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; const MCExpr * RHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; switch ( CE -> getOpcode ( ) ) { default : llvm_unreachable ( ) ; case Instruction :: Add : return MCBinaryExpr :: CreateAdd ( LHS , RHS , Ctx ) ; case Instruction :: Sub : return MCBinaryExpr :: CreateSub ( LHS , RHS , Ctx ) ; case Instruction :: Mul : return MCBinaryExpr :: CreateMul ( LHS , RHS , Ctx ) ;" LLVM,NVPTX,111,"Predict the next statement of this code snippet: bool AsmPrinter :: PrintAsmMemoryOperand ( const MachineInstr * MI , unsigned OpNo , unsigned AsmVariant , const char * ExtraCode , raw_ostream & O ) { if ( ExtraCode && ExtraCode [ ] ) return true ; O << '[' ; printMemOperand ( MI , OpNo , O ) ;" LLVM,NVPTX,112,"Predict the next statement of this code snippet: bool AsmPrinter :: PrintAsmMemoryOperand ( const MachineInstr * MI , unsigned OpNo , unsigned AsmVariant , const char * ExtraCode , raw_ostream & O ) { if ( ExtraCode && ExtraCode [ ] ) return true ; O << '[' ; printMemOperand ( MI , OpNo , O ) ;" LLVM,NVPTX,113,"Predict the next statement of this code snippet: void AsmPrinter :: printFPConstant ( const ConstantFP * Fp , raw_ostream & O ) { APFloat APF = APFloat ( Fp -> getValueAPF ( ) ) ; bool ignored ; unsigned int numHex ; const char * lead ; if ( Fp -> getType ( ) -> getTypeID ( ) == Type :: FloatTyID ) { numHex = ; lead = ; APF . convert ( APFloat :: IEEEsingle , APFloat :: rmNearestTiesToEven , & ignored ) ; } else if ( Fp -> getType ( ) -> getTypeID ( ) == Type :: DoubleTyID ) { numHex = ; lead = ; APF . convert ( APFloat :: IEEEdouble , APFloat :: rmNearestTiesToEven , & ignored ) ; } else llvm_unreachable ( ) ;" LLVM,NVPTX,114,"Predict the next statement of this code snippet: printImplicitDef ( const MachineInstr * MI , raw_ostream & O ) const { O << ;" LLVM,NVPTX,115,"Predict the next statement of this code snippet: void AsmPrinter :: printLdStCode ( const MachineInstr * MI , int opNum , raw_ostream & O , const char * Modifier ) { if ( Modifier ) { const MachineOperand & MO = MI -> getOperand ( opNum ) ; int Imm = ( int ) MO . getImm ( ) ; if ( ! strcmp ( Modifier , ) ) { if ( Imm ) O << ; } else if ( ! strcmp ( Modifier , ) ) { switch ( Imm ) { case :: GLOBAL : O << ; break ; case :: SHARED : O << ; break ; case :: LOCAL : O << ; break ; case :: PARAM : O << ; break ; case :: CONSTANT : O << ; break ; case :: GENERIC : if ( ! nvptxSubtarget . hasGenericLdSt ( ) ) O << ; break ; default : assert ( ) ; } } else if ( ! strcmp ( Modifier , ) ) { if ( Imm == :: Signed ) O << ; else if ( Imm == :: Unsigned ) O << ; else O << ;" LLVM,NVPTX,116,"Predict the next statement of this code snippet: printOperand ( MI , opNum , O ) ; if ( Modifier && ! strcmp ( Modifier , ) ) { O << ; printOperand ( MI , opNum + , O ) ; } else { if ( MI -> getOperand ( opNum + ) . isImm ( ) && MI -> getOperand ( opNum + ) . getImm ( ) == ) return ; O << ; printOperand ( MI , opNum + , O ) ;" LLVM,NVPTX,117,"Predict the next statement of this code snippet: if ( strcmp ( Modifier , ) == ) emitVirtualRegister ( MO . getReg ( ) , true , O ) ; else llvm_unreachable ( ) ; } } return ; case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : O << * Mang -> getSymbol ( MO . getGlobal ( ) ) ; break ;" LLVM,NVPTX,118,"Predict the next statement of this code snippet: void AsmPrinter :: printOperand ( const MachineInstr * MI , int opNum , raw_ostream & O , const char * Modifier ) { const MachineOperand & MO = MI -> getOperand ( opNum ) ; switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : if ( TargetRegisterInfo :: isPhysicalRegister ( MO . getReg ( ) ) ) { if ( MO . getReg ( ) == ) O << DEPOTNAME << getFunctionNumber ( ) ; else O << getRegisterName ( MO . getReg ( ) ) ; } else { if ( ! Modifier ) emitVirtualRegister ( MO . getReg ( ) , false , O ) ; else { if ( strcmp ( Modifier , ) == ) emitVirtualRegister ( MO . getReg ( ) , true , O ) ; else llvm_unreachable ( ) ; } } return ; case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : O << * Mang -> getSymbol ( MO . getGlobal ( ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : { const char * symbname = MO . getSymbolName ( ) ; if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; printParamName ( index , O ) ; } else if ( strstr ( symbname , ) == symbname ) { unsigned index ;" LLVM,NVPTX,119,"Predict the next statement of this code snippet: O << * CurrentFnSym << << paramIndex ; return ; } for ( I = F -> arg_begin ( ) , E = F -> arg_end ( ) ; I != E ; ++ I , i ++ ) { if ( i == paramIndex ) { printParamName ( I , paramIndex , O ) ; return ; } } llvm_unreachable ( ) ;" LLVM,NVPTX,120,"Predict the next statement of this code snippet: } for ( I = F -> arg_begin ( ) , E = F -> arg_end ( ) ; I != E ; ++ I , i ++ ) {" LLVM,NVPTX,121,"Predict the next statement of this code snippet: elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; totalsz += sz / ; } } unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else assert ( false && ) ; } } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) {" LLVM,NVPTX,122,"Predict the next statement of this code snippet: return ; } if ( ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ) { printFPConstant ( CFP , O ) ; return ; } if ( isa < ConstantPointerNull > ( CPV ) ) { O << ; return ; } if ( GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { O << * Mang -> getSymbol ( GVar ) ; return ; } if ( ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { Value * v = Cexpr -> stripPointerCasts ( ) ; if ( GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { O << * Mang -> getSymbol ( GVar ) ;" LLVM,NVPTX,123,"Predict the next statement of this code snippet: O << << vecelem [ Imm % ] ; } else if ( == strcmp ( Modifier , ) ) { if ( ( Imm < ) || ( Imm > ) ) O << ; } else if ( == strcmp ( Modifier , ) ) { if ( ( Imm < ) || ( Imm > ) ) O << ; } else if ( == strcmp ( Modifier , ) ) { if ( Imm < ) Imm = ;" LLVM,NVPTX,124,"Predict the next statement of this code snippet: } while ( theCurLine < lineNum ) { fstr . getline ( buff , ) ; theCurLine ++ ; }" LLVM,NVPTX,125,"Predict the next statement of this code snippet: while ( theCurLine < lineNum ) { fstr . getline ( buff , ) ;" LLVM,NVPTX,126,"Predict the next statement of this code snippet: ++ i ; } for ( DebugInfoFinder :: iterator I = DbgFinder . subprogram_begin ( ) , E = DbgFinder . subprogram_end ( ) ; I != E ; ++ I ) { DISubprogram SP ( * I ) ; StringRef Filename ( SP . getFilename ( ) ) ; StringRef Dirname ( SP . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName . str ( ) ;" LLVM,NVPTX,127,"Predict the next statement of this code snippet: StringRef Dirname ( DIUnit . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName . str ( ) ; } if ( filenameMap . find ( Filename . str ( ) ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename . str ( ) ] = i ; OutStreamer . EmitDwarfFileDirective ( i , , Filename . str ( ) ) ; ++ i ; } for ( DebugInfoFinder :: iterator I = DbgFinder . subprogram_begin ( ) , E = DbgFinder . subprogram_end ( ) ; I != E ; ++ I ) { DISubprogram SP ( * I ) ;" LLVM,NVPTX,128,"Predict the next statement of this code snippet: } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = TRI -> index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; std :: map < unsigned , unsigned > & regmap = VRidGlobal2LocalMap [ RC -> getID ( ) ] ; int n = regmap . size ( ) ; regmap . insert ( std :: make_pair ( vr , n + ) ) ; } O << << NumRegisters << ; O << << NumRegisters << ; O << << NumRegisters << ; O << << NumRegisters << ;" LLVM,NVPTX,129,"Predict the next statement of this code snippet: } else return false ; } if ( const MDNode * md = dyn_cast < MDNode > ( U ) ) if ( md -> hasName ( ) && ( ( md -> getName ( ) . str ( ) == ) || ( md -> getName ( ) . str ( ) == ) ) ) return true ; for ( User :: const_use_iterator ui = U -> use_begin ( ) , ue = U -> use_end ( ) ;" LLVM,NVPTX,130,"Predict the next statement of this code snippet: } else if ( const Instruction * I = dyn_cast < Instruction > ( * ui ) ) { const BasicBlock * bb = I -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ;" LLVM,NVPTX,131,"Predict the next statement of this code snippet: static bool useFuncSeen ( const Constant * C , llvm :: DenseMap < const Function * , bool > & seenMap ) { for ( Value :: const_use_iterator ui = C -> use_begin ( ) , ue = C -> use_end ( ) ; ui != ue ; ++ ui ) {" LLVM,NVPTX,132,"Predict the next statement of this code snippet: int Bytes ; if ( const ConstantInt * CI = dyn_cast < ConstantInt > ( CPV ) ) { APInt Val = CI -> getValue ( ) ; for ( unsigned I = , E = DL . getTypeAllocSize ( CPV -> getType ( ) ) ; I < E ; ++ I ) { uint8_t Byte = Val . getLoBits ( ) . getZExtValue ( ) ; aggBuffer -> addBytes ( & Byte , , ) ; Val . lshrInPlace ( ) ; } return ; } if ( isa < ConstantArray > ( CPV ) || isa < ConstantVector > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , , aggBuffer ) ; return ; }" LLVM,NVPTX,133,"Predict the next statement of this code snippet: size_t NumBytes = ( Val . getBitWidth ( ) + ) / ; SmallVector < unsigned char , > Buf ( NumBytes ) ; for ( unsigned I = ; I < NumBytes ; ++ I ) { Buf [ I ] = Val . extractBitsAsZExtValue ( , I * ) ; } AggBuffer -> addBytes ( Buf . data ( ) , NumBytes , Bytes ) ; } ; switch ( CPV -> getType ( ) -> getTypeID ( ) ) { case Type :: IntegerTyID : if ( const auto CI = dyn_cast < ConstantInt > ( CPV ) ) { AddIntToBuffer ( CI -> getValue ( ) ) ; break ; } if ( const auto * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { if ( const auto * CI = dyn_cast < ConstantInt > ( ConstantFoldConstant ( Cexpr , DL ) ) ) { AddIntToBuffer ( CI -> getValue ( ) ) ; break ; } if ( Cexpr -> getOpcode ( ) == Instruction :: PtrToInt ) { Value * V = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; AggBuffer -> addSymbol ( V , Cexpr -> getOperand ( ) ) ; AggBuffer -> addZeros ( AllocSize ) ; break ;" LLVM,NVPTX,134,"Predict the next statement of this code snippet: static bool canDemoteGlobalVar ( const GlobalVariable * gv , Function const * & f ) { if ( ! gv -> hasInternalLinkage ( ) ) return false ; PointerType * Pty = gv -> getType ( ) ;" LLVM,NVPTX,135,"Predict the next statement of this code snippet: if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( V ) ) Globals . insert ( GV ) ; else { if ( const User * U = dyn_cast < User > ( V ) ) { for ( unsigned i = , e = U -> getNumOperands ( ) ; i != e ; ++ i ) { DiscoverDependentGlobals ( U -> getOperand ( i ) , Globals ) ; } } }" LLVM,NVPTX,136,"Predict the next statement of this code snippet: static void DiscoverDependentGlobals ( const Value * V , DenseSet < const GlobalVariable * > & Globals ) { if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( V ) ) Globals . insert ( GV ) ; else { if ( const User * U = dyn_cast < User > ( V ) ) { for ( unsigned i = , e = U -> getNumOperands ( ) ; i != e ; ++ i ) { DiscoverDependentGlobals ( U -> getOperand ( i ) , Globals ) ;" LLVM,NVPTX,137,"Predict the next statement of this code snippet: I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ; if ( HasDebugInfo ) { static_cast < TargetStreamer * > ( OutStreamer -> getTargetStreamer ( ) ) -> closeLastSection ( ) ; OutStreamer -> emitRawText ( ) ; }" LLVM,NVPTX,138,"Predict the next statement of this code snippet: if ( ! isEmptyXXStructor ( M . getNamedGlobal ( ) ) ) { report_fatal_error ( ) ; return true ; } bool Result = AsmPrinter :: doInitialization ( M ) ; GlobalsEmitted = false ;" LLVM,NVPTX,139,"Predict the next statement of this code snippet: void AsmPrinter :: emitBasicBlockStart ( const MachineBasicBlock & MBB ) { AsmPrinter :: emitBasicBlockStart ( MBB ) ; if ( isLoopHeaderOfNoUnroll ( MBB ) ) OutStreamer -> emitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,140,"Predict the next statement of this code snippet: getSymbol ( F ) -> print ( O , MAI ) ; O << ; emitFunctionParamList ( F , O ) ; O << ;" LLVM,NVPTX,141,"Predict the next statement of this code snippet: printReturnValStr ( F , O ) ; getSymbol ( F ) -> print ( O , MAI ) ; O << ;" LLVM,NVPTX,142,"Predict the next statement of this code snippet: for ( const User * U : F -> users ( ) ) { if ( const Constant * C = dyn_cast < Constant > ( U ) ) { if ( usedInGlobalVarDef ( C ) ) { emitDeclaration ( F , O ) ; break ; } if ( useFuncSeen ( C , seenMap ) ) { emitDeclaration ( F , O ) ; break ; } } if ( ! isa < Instruction > ( U ) ) continue ; const Instruction * instr = cast < Instruction > ( U ) ; const BasicBlock * bb = instr -> getParent ( ) ;" LLVM,NVPTX,143,"Predict the next statement of this code snippet: } if ( ! isa < Instruction > ( U ) ) continue ; const Instruction * instr = cast < Instruction > ( U ) ; const BasicBlock * bb = instr -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ; if ( seenMap . find ( caller ) != seenMap . end ( ) ) { emitDeclaration ( F , O ) ; break ;" LLVM,NVPTX,144,"Predict the next statement of this code snippet: void AsmPrinter :: emitFunctionBodyEnd ( ) {" LLVM,NVPTX,145,"Predict the next statement of this code snippet: SmallString < > Str ; raw_svector_ostream O ( Str ) ;" LLVM,NVPTX,146,"Predict the next statement of this code snippet: raw_svector_ostream O ( Str ) ;" LLVM,NVPTX,147,"Predict the next statement of this code snippet: void AsmPrinter :: emitFunctionParamList ( const MachineFunction & MF , raw_ostream & O ) { const Function & F = MF . getFunction ( ) ;" LLVM,NVPTX,148,"Predict the next statement of this code snippet: for ( const GlobalVariable & I : M . globals ( ) ) VisitGlobalVariableForEmission ( & I , Globals , GVVisited , GVVisiting ) ; assert ( GVVisited . size ( ) == M . getGlobalList ( ) . size ( ) && ) ; assert ( GVVisiting . size ( ) == && ) ; for ( unsigned i = , e = Globals . size ( ) ; i != e ; ++ i ) printModuleLevelGV ( Globals [ i ] , OS2 ) ;" LLVM,NVPTX,149,"Predict the next statement of this code snippet: O << ; O << ; O << ; unsigned PTXVersion = STI . getPTXVersion ( ) ; O << << ( PTXVersion / ) << << ( PTXVersion % ) << ; O << ; O << STI . getTargetName ( ) ; const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ; if ( NTM . getDrvInterface ( ) == ) O << ; bool HasFullDebugInfo = false ; for ( DICompileUnit * CU : M . debug_compile_units ( ) ) { switch ( CU -> getEmissionKind ( ) ) { case DICompileUnit :: NoDebug : case DICompileUnit :: DebugDirectivesOnly : break ; case DICompileUnit :: LineTablesOnly : case DICompileUnit :: FullDebug : HasFullDebugInfo = true ; break ; } if ( HasFullDebugInfo ) break ; }" LLVM,NVPTX,150,"Predict the next statement of this code snippet: } else { const Subtarget & STI = MI -> getMF ( ) -> getSubtarget < Subtarget > ( ) ;" LLVM,NVPTX,151,"Predict the next statement of this code snippet: const Subtarget & STI = MI -> getMF ( ) -> getSubtarget < Subtarget > ( ) ; OutStreamer -> AddComment ( Twine ( ) + STI . getRegisterInfo ( ) -> getName ( RegNo ) ) ; }" LLVM,NVPTX,152,"Predict the next statement of this code snippet: MCInst Inst ; lowerToMCInst ( MI , Inst ) ; EmitToStreamer ( * OutStreamer , Inst ) ;" LLVM,NVPTX,153,"Predict the next statement of this code snippet: if ( ! getReqNTIDx ( F , reqntidx ) ) reqntidx = ; else specified = true ; if ( ! getReqNTIDy ( F , reqntidy ) ) reqntidy = ; else specified = true ; if ( ! getReqNTIDz ( F , reqntidz ) ) reqntidz = ; else specified = true ; if ( specified ) O << << reqntidx << << reqntidy << << reqntidz << ; unsigned maxntidx , maxntidy , maxntidz ; specified = false ; if ( ! getMaxNTIDx ( F , maxntidx ) ) maxntidx = ; else specified = true ; if ( ! getMaxNTIDy ( F , maxntidy ) ) maxntidy = ; else specified = true ; if ( ! getMaxNTIDz ( F , maxntidz ) ) maxntidz = ; else specified = true ; if ( specified ) O << << maxntidx << << maxntidy << << maxntidz << ; unsigned mincta ; if ( getMinCTASm ( F , mincta ) ) O << << mincta << ; unsigned maxnreg ; if ( getMaxNReg ( F , maxnreg ) ) O << << maxnreg << ;" LLVM,NVPTX,154,"Predict the next statement of this code snippet: std :: string msg ; msg . append ( ) ; msg . append ( ) ; if ( V -> hasName ( ) ) msg . append ( std :: string ( V -> getName ( ) ) ) ; msg . append ( ) ; llvm_unreachable ( msg . c_str ( ) ) ; } else if ( ! V -> hasInternalLinkage ( ) && ! V -> hasPrivateLinkage ( ) ) { O << ; }" LLVM,NVPTX,155,"Predict the next statement of this code snippet: break ; case ADDRESS_SPACE_SHARED : O << ; break ; default : report_fatal_error ( + llvm :: Twine ( AddressSpace ) ) ; break ; }" LLVM,NVPTX,156,"Predict the next statement of this code snippet: O << ; break ; case ADDRESS_SPACE_SHARED : O << ; break ; default : report_fatal_error ( + llvm :: Twine ( AddressSpace ) ) ;" LLVM,NVPTX,157,"Predict the next statement of this code snippet: getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: FixedVectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ; } O << ; break ;" LLVM,NVPTX,158,"Predict the next statement of this code snippet: const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ; const auto * STI = static_cast < const Subtarget * > ( NTM . getSubtargetImpl ( ) ) ; SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; emitHeader ( M , OS1 , * STI ) ; OutStreamer -> emitRawText ( OS1 . str ( ) ) ;" LLVM,NVPTX,159,"Predict the next statement of this code snippet: if ( Register :: isVirtualRegister ( Reg ) ) { const TargetRegisterClass * RC = MRI -> getRegClass ( Reg ) ; DenseMap < unsigned , unsigned > & RegMap = VRegMapping [ RC ] ; unsigned RegNum = RegMap [ Reg ] ; unsigned Ret = ; if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else { report_fatal_error ( ) ;" LLVM,NVPTX,160,"Predict the next statement of this code snippet: Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else { report_fatal_error ( ) ; } Ret |= ( RegNum & ) ; return Ret ; } else { return Reg & ; }" LLVM,NVPTX,161,"Predict the next statement of this code snippet: const MCSymbol * AsmPrinter :: getFunctionFrameSymbol ( ) const { SmallString < > Str ; raw_svector_ostream ( Str ) << DEPOTNAME << getFunctionNumber ( ) ; return OutContext . getOrCreateSymbol ( Str ) ;" LLVM,NVPTX,162,"Predict the next statement of this code snippet: raw_svector_ostream ( Str ) << DEPOTNAME << getFunctionNumber ( ) ;" LLVM,NVPTX,163,"Predict the next statement of this code snippet: switch ( Ty -> getTypeID ( ) ) { case Type :: IntegerTyID : { unsigned NumBits = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( NumBits == ) return ; else if ( NumBits <= ) { std :: string name = ; return name + utostr ( NumBits ) ; } else { llvm_unreachable ( ) ; break ; } break ; } case Type :: HalfTyID : return ; case Type :: FloatTyID :" LLVM,NVPTX,164,"Predict the next statement of this code snippet: case Type :: HalfTyID : return ; case Type :: FloatTyID : return ; case Type :: DoubleTyID : return ; case Type :: PointerTyID :" LLVM,NVPTX,165,"Predict the next statement of this code snippet: const ConstantArray * InitList = dyn_cast < ConstantArray > ( GV -> getInitializer ( ) ) ;" LLVM,NVPTX,166,"Predict the next statement of this code snippet: static bool isEmptyXXStructor ( GlobalVariable * GV ) { if ( ! GV ) return true ; const ConstantArray * InitList = dyn_cast < ConstantArray > ( GV -> getInitializer ( ) ) ; if ( ! InitList ) return true ;" LLVM,NVPTX,167,"Predict the next statement of this code snippet: MachineLoopInfo & LI = getAnalysis < MachineLoopInfo > ( ) ; if ( ! LI . isLoopHeader ( & MBB ) ) return false ; for ( const MachineBasicBlock * PMBB : MBB . predecessors ( ) ) {" LLVM,NVPTX,168,"Predict the next statement of this code snippet: RegisterAsmPrinter < AsmPrinter > X ( getTheTarget32 ( ) ) ;" LLVM,NVPTX,169,"Predict the next statement of this code snippet: LLVMTargetMachine & TM = const_cast < LLVMTargetMachine & > ( MF -> getTarget ( ) ) ; TargetMachine & nvTM = static_cast < TargetMachine & > ( TM ) ; const MachineFunctionInfo * MFI = MF -> getInfo < MachineFunctionInfo > ( ) ; const char * Sym = MFI -> getImageHandleSymbol ( Index ) ; std :: string * SymNamePtr = nvTM . getManagedStrPool ( ) -> getManagedString ( Sym ) ;" LLVM,NVPTX,170,"Predict the next statement of this code snippet: std :: string * SymNamePtr = nvTM . getManagedStrPool ( ) -> getManagedString ( Sym ) ;" LLVM,NVPTX,171,"Predict the next statement of this code snippet: const ConstantFP * Cnt = MO . getFPImm ( ) ; const APFloat & Val = Cnt -> getValueAPF ( ) ; switch ( Cnt -> getType ( ) -> getTypeID ( ) ) { default : report_fatal_error ( ) ; break ; case Type :: HalfTyID : MCOp = MCOperand :: createExpr ( FloatMCExpr :: createConstantFPHalf ( Val , OutContext ) ) ; break ; case Type :: FloatTyID : MCOp = MCOperand :: createExpr ( FloatMCExpr :: createConstantFPSingle ( Val , OutContext ) ) ;" LLVM,NVPTX,172,"Predict the next statement of this code snippet: OutMI . addOperand ( GetSymbolRef ( OutContext . getOrCreateSymbol ( Twine ( MO . getSymbolName ( ) ) ) ) ) ; return ; } const Subtarget & STI = MI -> getMF ( ) -> getSubtarget < Subtarget > ( ) ; for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { const MachineOperand & MO = MI -> getOperand ( i ) ; MCOperand MCOp ; if ( ! STI . hasImageHandles ( ) ) { if ( lowerImageHandleOperand ( MI , i , MCOp ) ) { OutMI . addOperand ( MCOp ) ; continue ; } } if ( lowerOperand ( MO , MCOp ) ) OutMI . addOperand ( MCOp ) ; }" LLVM,NVPTX,173,"Predict the next statement of this code snippet: O << '[' ; printMemOperand ( MI , OpNo , O ) ; O << ']' ; return false ;" LLVM,NVPTX,174,"Predict the next statement of this code snippet: if ( ExtraCode && ExtraCode [ ] ) return true ; O << '[' ;" LLVM,NVPTX,175,"Predict the next statement of this code snippet: bool AsmPrinter :: PrintAsmOperand ( const MachineInstr * MI , unsigned OpNo , const char * ExtraCode , raw_ostream & O ) { if ( ExtraCode && ExtraCode [ ] ) { if ( ExtraCode [ ] != ) return true ; switch ( ExtraCode [ ] ) { default : return AsmPrinter :: PrintAsmOperand ( MI , OpNo , ExtraCode , O ) ; case 'r' : break ; }" LLVM,NVPTX,176,"Predict the next statement of this code snippet: if ( Fp -> getType ( ) -> getTypeID ( ) == Type :: FloatTyID ) { numHex = ; lead = ; APF . convert ( APFloat :: IEEEsingle ( ) , APFloat :: rmNearestTiesToEven , & ignored ) ; } else if ( Fp -> getType ( ) -> getTypeID ( ) == Type :: DoubleTyID ) { numHex = ; lead = ; APF . convert ( APFloat :: IEEEdouble ( ) , APFloat :: rmNearestTiesToEven , & ignored ) ; } else llvm_unreachable ( ) ; APInt API = APF . bitcastToAPInt ( ) ; O << lead << format_hex_no_prefix ( API . getZExtValue ( ) , numHex , true ) ;" LLVM,NVPTX,177,"Predict the next statement of this code snippet: printOperand ( MI , opNum , O ) ; if ( Modifier && strcmp ( Modifier , ) == ) { O << ; printOperand ( MI , opNum + , O ) ; } else { if ( MI -> getOperand ( opNum + ) . isImm ( ) && MI -> getOperand ( opNum + ) . getImm ( ) == ) return ;" LLVM,NVPTX,178,"Predict the next statement of this code snippet: O << ; return ; } if ( isSampler ( * GVar ) ) { O << << getSamplerName ( * GVar ) ; const Constant * Initializer = nullptr ; if ( GVar -> hasInitializer ( ) ) Initializer = GVar -> getInitializer ( ) ; const ConstantInt * CI = nullptr ; if ( Initializer ) CI = dyn_cast < ConstantInt > ( Initializer ) ; if ( CI ) { unsigned sample = CI -> getZExtValue ( ) ; O << ; for ( int i = , addr = ( ( sample & __CLK_ADDRESS_MASK ) >> __CLK_ADDRESS_BASE ) ; i < ; i ++ ) { O << << i << ; switch ( addr ) { case : O << ; break ; case : O << ; break ; case : O << ; break ; case : O << ; break ; case : O << ; break ; } O << ; } O << ; switch ( ( sample & __CLK_FILTER_MASK ) >> __CLK_FILTER_BASE ) { case : O << ; break ; case : O << ; break ; case : llvm_unreachable ( ) ; default : O << ; break ; } if ( ! ( ( sample & __CLK_NORMALIZED_MASK ) >> __CLK_NORMALIZED_BASE ) ) { O << ; } O << ; } O << ; return ; } if ( GVar -> hasPrivateLinkage ( ) ) { if ( strncmp ( GVar -> getName ( ) . data ( ) , , ) == ) return ; if ( strncmp ( GVar -> getName ( ) . data ( ) , , ) == ) return ; if ( GVar -> use_empty ( ) ) return ; } const Function * demotedFunc = nullptr ; if ( ! processDemoted && canDemoteGlobalVar ( GVar , demotedFunc ) ) { O << << GVar -> getName ( ) << ; if ( localDecls . find ( demotedFunc ) != localDecls . end ( ) ) localDecls [ demotedFunc ] . push_back ( GVar ) ; else { std :: vector < const GlobalVariable * > temp ; temp . push_back ( GVar ) ; localDecls [ demotedFunc ] = temp ; } return ; } O << ;" LLVM,NVPTX,179,"Predict the next statement of this code snippet: emitVirtualRegister ( MO . getReg ( ) , O ) ; } break ; case MachineOperand :: MO_Immediate : O << MO . getImm ( ) ; break ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : PrintSymbolOperand ( MO , O ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MO . getMBB ( ) -> getSymbol ( ) -> print ( O , MAI ) ; break ; default : llvm_unreachable ( ) ; }" LLVM,NVPTX,180,"Predict the next statement of this code snippet: void AsmPrinter :: printReturnValStr ( const MachineFunction & MF , raw_ostream & O ) { const Function & F = MF . getFunction ( ) ;" LLVM,NVPTX,181,"Predict the next statement of this code snippet: const Function & F = MF . getFunction ( ) ;" LLVM,NVPTX,182,"Predict the next statement of this code snippet: } if ( EmitGeneric && ! isa < Function > ( CPV ) && ! IsNonGenericPointer ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; } else { getSymbol ( GVar ) -> print ( O , MAI ) ; } return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; PointerType * PTy = dyn_cast < PointerType > ( Cexpr -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ;" LLVM,NVPTX,183,"Predict the next statement of this code snippet: bool Result = AsmPrinter :: runOnMachineFunction ( F ) ; OutStreamer -> emitRawText ( StringRef ( ) ) ; return Result ;" LLVM,NVPTX,184,"Predict the next statement of this code snippet: bool Result = AsmPrinter :: runOnMachineFunction ( F ) ;" LLVM,NVPTX,185,"Predict the next statement of this code snippet: void AsmPrinter :: setAndEmitFunctionVirtualRegisters ( const MachineFunction & MF ) { SmallString < > Str ; raw_svector_ostream O ( Str ) ; const TargetRegisterInfo * TRI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; int NumBytes = ( int ) MFI . getStackSize ( ) ; if ( NumBytes ) { O << << MFI . getMaxAlign ( ) . value ( ) << << DEPOTNAME << getFunctionNumber ( ) << << NumBytes << ; if ( static_cast < const TargetMachine & > ( MF . getTarget ( ) ) . is64Bit ( ) ) { O << ; O << ; } else {" LLVM,NVPTX,186,"Predict the next statement of this code snippet: if ( const Constant * cu = dyn_cast < Constant > ( U ) ) { if ( useFuncSeen ( cu , seenMap ) ) return true ;" LLVM,NVPTX,187,"Predict the next statement of this code snippet: for ( DenseSet < const GlobalVariable * > :: iterator I = Others . begin ( ) , E = Others . end ( ) ; I != E ; ++ I ) VisitGlobalVariableForEmission ( * I , Order , Visited , Visiting ) ; Order . push_back ( GV ) ;" LLVM,NVPTX,188,"Predict the next statement of this code snippet: assert ( ( curpos + Num ) <= size ) ; assert ( ( curpos + Bytes ) <= size ) ; for ( int i = ; i < Num ; ++ i ) { buffer [ curpos ] = Ptr [ i ] ; curpos ++ ; } for ( int i = Num ; i < Bytes ; ++ i ) { buffer [ curpos ] = ; curpos ++ ; } return curpos ;" LLVM,NVPTX,189,"Predict the next statement of this code snippet: for ( int i = Num ; i < Bytes ; ++ i ) { buffer [ curpos ] = ; curpos ++ ; }" LLVM,NVPTX,190,"Predict the next statement of this code snippet: Symbols . push_back ( GVar ) ; numSymbols ++ ;" LLVM,NVPTX,191,"Predict the next statement of this code snippet: Symbols . push_back ( GVar ) ;" LLVM,NVPTX,192,"Predict the next statement of this code snippet: assert ( ( curpos + Num ) <= size ) ; for ( int i = ; i < Num ; ++ i ) {" LLVM,NVPTX,193,"Predict the next statement of this code snippet: AggBuffer ( unsigned _size , raw_ostream & _O , AsmPrinter & _AP ) : O ( _O ) , AP ( _AP ) {" LLVM,NVPTX,194,"Predict the next statement of this code snippet: if ( HasDebugInfo ) { static_cast < TargetStreamer * > ( OutStreamer -> getTargetStreamer ( ) ) -> closeLastSection ( ) ; OutStreamer -> emitRawText ( ) ; }" LLVM,NVPTX,195,"Predict the next statement of this code snippet: void EmitAlignment ( unsigned NumBits , const GlobalValue * GV = ) const {" LLVM,NVPTX,196,"Predict the next statement of this code snippet: void EmitAlignment ( unsigned NumBits , const GlobalValue * GV = ) const {" LLVM,NVPTX,197,"Predict the next statement of this code snippet: } if ( ! isa < Instruction > ( U ) ) continue ; const Instruction * instr = cast < Instruction > ( U ) ; const BasicBlock * bb = instr -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ; if ( seenMap . find ( caller ) != seenMap . end ( ) ) { emitDeclaration ( & F , O ) ; break ; } } seenMap [ & F ] = true ;" LLVM,NVPTX,198,"Predict the next statement of this code snippet: void AsmPrinter :: emitDemotedVars ( const Function * f , raw_ostream & O ) { if ( localDecls . find ( f ) == localDecls . end ( ) ) return ; std :: vector < const GlobalVariable * > & gvars = localDecls [ f ] ; for ( const GlobalVariable * GV : gvars ) { O << ; printModuleLevelGV ( GV , O , true ) ; }" LLVM,NVPTX,199,"Predict the next statement of this code snippet: for ( const GlobalVariable * GV : gvars ) { O << ;" LLVM,NVPTX,200,"Predict the next statement of this code snippet: O << ; break ; } O << << ( int ) getOpenCLAlignment ( DL , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getPointerElementType ( ) ; if ( isABI || isKernelFunc ) { Align align = DL . getValueOrABITypeAlignment ( PAL . getParamAlignment ( paramIndex ) , ETy ) ; if ( ! isKernelFunc && align < Align ( ) ) align = Align ( ) ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align . value ( ) << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , ETy , vtparts ) ;" LLVM,NVPTX,201,"Predict the next statement of this code snippet: O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; return ; } if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntOrPtrTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: FixedVectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ; }" LLVM,NVPTX,202,"Predict the next statement of this code snippet: MCSymbol * Name = AP . Mang -> getSymbol ( GVar ) ; O << * Name ; } else if ( ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( v ) ) { O << * ( Cexpr , AP ) ; } else llvm_unreachable ( ) ; nSym ++ ; if ( nSym >= numSymbols ) nextSymbolPos = size + ; else nextSymbolPos = symbolPosInBuffer [ nSym ] ; } else if ( nBytes == ) O << * ( unsigned int * ) ( buffer + pos ) ;" LLVM,NVPTX,203,"Predict the next statement of this code snippet: if ( ETy -> isFloatingPointTy ( ) || ETy -> isPointerTy ( ) || ( ETy -> isIntegerTy ( ) && ETy -> getScalarSizeInBits ( ) <= ) ) { O << ; if ( ETy -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( ETy , false ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; if ( GVar -> hasInitializer ( ) ) { if ( ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_GLOBAL ) || ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_CONST ) ) { const Constant * Initializer = GVar -> getInitializer ( ) ; if ( ! Initializer -> isNullValue ( ) && ! isa < UndefValue > ( Initializer ) ) { O << ; printScalarConstant ( Initializer , O ) ; } } else { if ( ! GVar -> getInitializer ( ) -> isNullValue ( ) && ! isa < UndefValue > ( GVar -> getInitializer ( ) ) ) { report_fatal_error ( + GVar -> getName ( ) + + Twine ( PTy -> getAddressSpace ( ) ) + ) ; } } } } else { unsigned int ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: IntegerTyID : case Type :: StructTyID : case Type :: ArrayTyID : case Type :: FixedVectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; if ( ( ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_GLOBAL ) || ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_CONST ) ) && GVar -> hasInitializer ( ) ) { const Constant * Initializer = GVar -> getInitializer ( ) ; if ( ! isa < UndefValue > ( Initializer ) && ! Initializer -> isNullValue ( ) ) { AggBuffer aggBuffer ( ElementSize , O , * this ) ; bufferAggregateConstant ( Initializer , & aggBuffer ) ; if ( aggBuffer . numSymbols ) { if ( static_cast < const TargetMachine & > ( TM ) . is64Bit ( ) ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; O << ElementSize / ; } else { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; O << ElementSize / ; } O << ; } else { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; O << ElementSize ; O << ;" LLVM,NVPTX,204,"Predict the next statement of this code snippet: DenseSet < const GlobalVariable * > Others ; for ( unsigned i = , e = GV -> getNumOperands ( ) ; i != e ; ++ i ) DiscoverDependentGlobals ( GV -> getOperand ( i ) , Others ) ; for ( const GlobalVariable * GV : Others ) VisitGlobalVariableForEmission ( GV , Order , Visited , Visiting ) ; Order . push_back ( GV ) ; Visited . insert ( GV ) ; Visiting . erase ( GV ) ;" LLVM,NVPTX,205,"Predict the next statement of this code snippet: delete [ ] buffer ;" LLVM,NVPTX,206,"Predict the next statement of this code snippet: ~ AggBuffer ( ) { delete [ ] buffer ;" LLVM,NVPTX,207,"Predict the next statement of this code snippet: const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ; Type * Ty = CFP -> getType ( ) ; if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ConvertFloatToBytes ( ptr , float32 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) { double float64 = CFP -> getValueAPF ( ) . convertToDouble ( ) ; ConvertDoubleToBytes ( ptr , float64 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else { llvm_unreachable ( ) ; } break ; } case Type :: PointerTyID : { if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { aggBuffer -> addSymbol ( GVar , GVar ) ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr ) ; } unsigned int s = DL . getTypeAllocSize ( CPV -> getType ( ) ) ; aggBuffer -> addZeros ( s ) ; break ; } case Type :: ArrayTyID : case Type :: VectorTyID : case Type :: StructTyID : { if ( isa < ConstantAggregate > ( CPV ) || isa < ConstantDataSequential > ( CPV ) ) { int ElementSize = DL . getTypeAllocSize ( CPV -> getType ( ) ) ; bufferAggregateConstant ( CPV , aggBuffer ) ; if ( Bytes > ElementSize ) aggBuffer -> addZeros ( Bytes - ElementSize ) ; } else if ( isa < ConstantAggregateZero > ( CPV ) ) aggBuffer -> addZeros ( Bytes ) ; else llvm_unreachable ( ) ; break ; } default : llvm_unreachable ( ) ;" LLVM,NVPTX,208,"Predict the next statement of this code snippet: report_fatal_error ( ) ; return true ; } if ( ! isEmptyXXStructor ( M . getNamedGlobal ( ) ) ) { report_fatal_error ( ) ; return true ; } SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; emitHeader ( M , OS1 , STI ) ; OutStreamer -> EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer -> AddComment ( ) ;" LLVM,NVPTX,209,"Predict the next statement of this code snippet: const Function * F = & * FI ; if ( F -> isDeclaration ( ) ) { if ( F -> use_empty ( ) ) continue ; if ( F -> getIntrinsicID ( ) ) continue ; emitDeclaration ( F , O ) ; continue ; } for ( const User * U : F -> users ( ) ) { if ( const Constant * C = dyn_cast < Constant > ( U ) ) { if ( usedInGlobalVarDef ( C ) ) { emitDeclaration ( F , O ) ; break ; } if ( useFuncSeen ( C , seenMap ) ) {" LLVM,NVPTX,210,"Predict the next statement of this code snippet: for ( const User * U : F -> users ( ) ) { if ( const Constant * C = dyn_cast < Constant > ( U ) ) { if ( usedInGlobalVarDef ( C ) ) { emitDeclaration ( F , O ) ; break ; } if ( useFuncSeen ( C , seenMap ) ) { emitDeclaration ( F , O ) ; break ; } } if ( ! isa < Instruction > ( U ) ) continue ;" LLVM,NVPTX,211,"Predict the next statement of this code snippet: void AsmPrinter :: EmitFunctionEntryLabel ( ) { SmallString < > Str ; raw_svector_ostream O ( Str ) ; if ( ! GlobalsEmitted ) { emitGlobals ( * MF -> getFunction ( ) -> getParent ( ) ) ; GlobalsEmitted = true ; } MRI = & MF -> getRegInfo ( ) ; F = MF -> getFunction ( ) ; emitLinkageDirective ( F , O ) ; if ( isKernelFunction ( * F ) ) O << ;" LLVM,NVPTX,212,"Predict the next statement of this code snippet: MRI = & MF -> getRegInfo ( ) ; F = MF -> getFunction ( ) ; emitLinkageDirective ( F , O ) ; if ( isKernelFunction ( * F ) ) O << ; else { O << ;" LLVM,NVPTX,213,"Predict the next statement of this code snippet: void emitGlobalVariable ( const GlobalVariable * GV ) override {" LLVM,NVPTX,214,"Predict the next statement of this code snippet: void emitGlobalVariable ( const GlobalVariable * GV ) override {" LLVM,NVPTX,215,"Predict the next statement of this code snippet: if ( ! Scope ) return ; StringRef fileName ( Scope -> getFilename ( ) ) ; StringRef dirName ( Scope -> getDirectory ( ) ) ; SmallString < > FullPathName = dirName ; if ( ! dirName . empty ( ) && ! sys :: path :: is_absolute ( fileName ) ) { sys :: path :: append ( FullPathName , fileName ) ; fileName = FullPathName ; } if ( filenameMap . find ( fileName ) == filenameMap . end ( ) ) return ;" LLVM,NVPTX,216,"Predict the next statement of this code snippet: if ( ! Scope ) return ; StringRef fileName ( Scope -> getFilename ( ) ) ; StringRef dirName ( Scope -> getDirectory ( ) ) ; SmallString < > FullPathName = dirName ; if ( ! dirName . empty ( ) && ! sys :: path :: is_absolute ( fileName ) ) { sys :: path :: append ( FullPathName , fileName ) ; fileName = FullPathName ; } if ( filenameMap . find ( fileName ) == filenameMap . end ( ) ) return ; if ( InterleaveSrc ) this -> emitSrcInText ( fileName , curLoc . getLine ( ) ) ; std :: stringstream temp ; temp << << filenameMap [ fileName ] << << curLoc . getLine ( ) << << curLoc . getCol ( ) ;" LLVM,NVPTX,217,"Predict the next statement of this code snippet: break ; case ADDRESS_SPACE_GLOBAL : O << ; break ; case ADDRESS_SPACE_CONST : O << ; break ; case ADDRESS_SPACE_SHARED : O << ;" LLVM,NVPTX,218,"Predict the next statement of this code snippet: void AsmPrinter :: emitPTXAddressSpace ( unsigned int AddressSpace , raw_ostream & O ) const { switch ( AddressSpace ) { case ADDRESS_SPACE_LOCAL : O << ; break ; case ADDRESS_SPACE_GLOBAL : O << ; break ; case ADDRESS_SPACE_CONST : O << ; break ; case ADDRESS_SPACE_SHARED : O << ; break ; default : report_fatal_error ( ) ; break ;" LLVM,NVPTX,219,"Predict the next statement of this code snippet: const DataLayout & DL = getDataLayout ( ) ; Type * ETy = GVar -> getValueType ( ) ; O << ; emitPTXAddressSpace ( GVar -> getType ( ) -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) DL . getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ;" LLVM,NVPTX,220,"Predict the next statement of this code snippet: if ( reader -> fileName ( ) != filename ) { delete reader ; reader = new LineReader ( filename ) ; }" LLVM,NVPTX,221,"Predict the next statement of this code snippet: if ( ! reader ) { reader = new LineReader ( filename ) ; } if ( reader -> fileName ( ) != filename ) { delete reader ;" LLVM,NVPTX,222,"Predict the next statement of this code snippet: if ( LI . getLoopFor ( PMBB ) != LI . getLoopFor ( & MBB ) ) { continue ; } if ( const BasicBlock * PBB = PMBB -> getBasicBlock ( ) ) { if ( MDNode * LoopID = PBB -> getTerminator ( ) -> getMetadata ( LLVMContext :: MD_loop ) ) { if ( GetUnrollMetadata ( LoopID , ) ) return true ; }" LLVM,NVPTX,223,"Predict the next statement of this code snippet: RegisterAsmPrinter < AsmPrinter > X ( getTheTarget32 ( ) ) ; RegisterAsmPrinter < AsmPrinter > Y ( getTheTarget64 ( ) ) ;" LLVM,NVPTX,224,"Predict the next statement of this code snippet: const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , DL . getIntPtrType ( CV -> getType ( ) ) , false ) ; return lowerConstantForGV ( Op , ProcessingGeneric ) ; } case Instruction :: PtrToInt : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = lowerConstantForGV ( Op , ProcessingGeneric ) ; if ( DL . getTypeAllocSize ( Ty ) == DL . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = DL . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: createAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : { const MCExpr * LHS = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; const MCExpr * RHS = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; switch ( CE -> getOpcode ( ) ) { default : llvm_unreachable ( ) ; case Instruction :: Add : return MCBinaryExpr :: createAdd ( LHS , RHS , Ctx ) ; }" LLVM,NVPTX,225,"Predict the next statement of this code snippet: const char * Sym = MFI -> getImageHandleSymbol ( Index ) ; std :: string * SymNamePtr = nvTM . getManagedStrPool ( ) -> getManagedString ( Sym ) ; MCOp = GetSymbolRef ( OutContext . getOrCreateSymbol ( StringRef ( * SymNamePtr ) ) ) ;" LLVM,NVPTX,226,"Predict the next statement of this code snippet: void AsmPrinter :: lowerImageHandleSymbol ( unsigned Index , MCOperand & MCOp ) { TargetMachine & TM = const_cast < TargetMachine & > ( MF -> getTarget ( ) ) ; TargetMachine & nvTM = static_cast < TargetMachine & > ( TM ) ; const MachineFunctionInfo * MFI = MF -> getInfo < MachineFunctionInfo > ( ) ;" LLVM,NVPTX,227,"Predict the next statement of this code snippet: MCOp = GetSymbolRef ( GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = GetSymbolRef ( getSymbol ( MO . getGlobal ( ) ) ) ; break ; case MachineOperand :: MO_FPImmediate : { const ConstantFP * Cnt = MO . getFPImm ( ) ; const APFloat & Val = Cnt -> getValueAPF ( ) ; switch ( Cnt -> getType ( ) -> getTypeID ( ) ) { default : report_fatal_error ( ) ; break ; case Type :: FloatTyID : MCOp = MCOperand :: createExpr ( FloatMCExpr :: createConstantFPSingle ( Val , OutContext ) ) ; break ; case Type :: DoubleTyID :" LLVM,NVPTX,228,"Predict the next statement of this code snippet: void AsmPrinter :: printFPConstant ( const ConstantFP * Fp , raw_ostream & O ) { APFloat APF = APFloat ( Fp -> getValueAPF ( ) ) ; bool ignored ; unsigned int numHex ; const char * lead ; if ( Fp -> getType ( ) -> getTypeID ( ) == Type :: FloatTyID ) { numHex = ; lead = ; APF . convert ( APFloat :: IEEEsingle ( ) , APFloat :: rmNearestTiesToEven , & ignored ) ; } else if ( Fp -> getType ( ) -> getTypeID ( ) == Type :: DoubleTyID ) { numHex = ; lead = ; APF . convert ( APFloat :: IEEEdouble ( ) , APFloat :: rmNearestTiesToEven , & ignored ) ; } else llvm_unreachable ( ) ; APInt API = APF . bitcastToAPInt ( ) ; std :: string hexstr ( utohexstr ( API . getZExtValue ( ) ) ) ; O << lead ; if ( hexstr . length ( ) < numHex ) O << std :: string ( numHex - hexstr . length ( ) , '0' ) ; O << utohexstr ( API . getZExtValue ( ) ) ;" LLVM,NVPTX,229,"Predict the next statement of this code snippet: if ( isManaged ( * GVar ) ) { O << ; } if ( GVar -> getAlignment ( ) == ) O << << ( int ) DL . getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; if ( ETy -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( ETy , false ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; if ( GVar -> hasInitializer ( ) ) { if ( ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_GLOBAL ) || ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_CONST ) ) { const Constant * Initializer = GVar -> getInitializer ( ) ; if ( ! Initializer -> isNullValue ( ) && ! isa < UndefValue > ( Initializer ) ) { O << ; printScalarConstant ( Initializer , O ) ; } } else { if ( ! GVar -> getInitializer ( ) -> isNullValue ( ) && ! isa < UndefValue > ( GVar -> getInitializer ( ) ) ) { report_fatal_error ( + GVar -> getName ( ) + + Twine ( PTy -> getAddressSpace ( ) ) + ) ; } } } } else { unsigned int ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; if ( ( ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_GLOBAL ) || ( PTy -> getAddressSpace ( ) == ADDRESS_SPACE_CONST ) ) && GVar -> hasInitializer ( ) ) { const Constant * Initializer = GVar -> getInitializer ( ) ; if ( ! isa < UndefValue > ( Initializer ) && ! Initializer -> isNullValue ( ) ) { AggBuffer aggBuffer ( ElementSize , O , * this ) ; bufferAggregateConstant ( Initializer , & aggBuffer ) ; if ( aggBuffer . numSymbols ) { if ( static_cast < const TargetMachine & > ( TM ) . is64Bit ( ) ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; O << ElementSize / ; } else {" LLVM,NVPTX,230,"Predict the next statement of this code snippet: if ( Ty -> isFloatingPointTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( Ty ) ) { size = ITy -> getBitWidth ( ) ; if ( size < ) size = ; } else { assert ( Ty -> isFloatingPointTy ( ) && ) ; size = Ty -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( DL ) . getSizeInBits ( ) << ; } else if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned totalsz = DL . getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! getAlign ( * F , , retAlignment ) ) retAlignment = DL . getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ;" LLVM,NVPTX,231,"Predict the next statement of this code snippet: O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << << idx ; if ( j < je - ) O << ; ++ idx ; }" LLVM,NVPTX,232,"Predict the next statement of this code snippet: filenameMap [ Filename ] = i ; OutStreamer -> EmitDwarfFileDirective ( i , , Filename ) ; ++ i ; } for ( DISubprogram * SP : DbgFinder . subprograms ( ) ) { StringRef Filename = SP -> getFilename ( ) ; StringRef Dirname = SP -> getDirectory ( ) ; SmallString < > FullPathName = Dirname ;" LLVM,NVPTX,233,"Predict the next statement of this code snippet: ++ i ; } for ( DISubprogram * SP : DbgFinder . subprograms ( ) ) { StringRef Filename = SP -> getFilename ( ) ; StringRef Dirname = SP -> getDirectory ( ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename ] = i ; OutStreamer -> EmitDwarfFileDirective ( i , , Filename ) ; ++ i ;" LLVM,NVPTX,234,"Predict the next statement of this code snippet: case :: GT : O << ; break ; case :: GE : O << ; break ; case :: LO : O << ; break ; case :: LS : O << ; break ; case :: HI : O << ; break ; case :: HS : O << ; break ; case :: EQU : O << ; break ; case :: NEU : O << ; break ; case :: LTU : O << ; break ; case :: LEU : O << ; break ; case :: GTU : O << ; break ; case :: GEU : O << ; break ; case :: NUM :" LLVM,NVPTX,235,"Predict the next statement of this code snippet: O << ; O << ;" LLVM,NVPTX,236,"Predict the next statement of this code snippet: void AsmPrinter :: printImplicitDef ( const MachineInstr * MI , raw_ostream & O ) const { O << ; O << ;" LLVM,NVPTX,237,"Predict the next statement of this code snippet: if ( ! strcmp ( Modifier , ) ) { if ( Imm ) O << ; } else if ( ! strcmp ( Modifier , ) ) { switch ( Imm ) { case :: GLOBAL : O << ; break ; case :: SHARED : O << ; break ; case :: LOCAL : O << ; break ; case :: PARAM : O << ; break ; case :: CONSTANT : O << ; break ; case :: GENERIC : if ( ! nvptxSubtarget . hasGenericLdSt ( ) ) O << ;" LLVM,NVPTX,238,"Predict the next statement of this code snippet: switch ( Imm ) { case :: GLOBAL : O << ; break ; case :: SHARED : O << ; break ; case :: LOCAL : O << ; break ; case :: PARAM : O << ; break ; case :: CONSTANT : O << ; break ; case :: GENERIC : if ( ! nvptxSubtarget . hasGenericLdSt ( ) ) O << ; break ; default : llvm_unreachable ( ) ; } } else if ( ! strcmp ( Modifier , ) ) { if ( Imm == :: Signed ) O << ; else if ( Imm == :: Unsigned ) O << ;" LLVM,NVPTX,239,"Predict the next statement of this code snippet: case MachineOperand :: MO_ExternalSymbol : { const char * symbname = MO . getSymbolName ( ) ; if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; printParamName ( index , O ) ; } else if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; O << * CurrentFnSym << << index << ; } else O << symbname ; break ; } case MachineOperand :: MO_MachineBasicBlock : O << * MO . getMBB ( ) -> getSymbol ( ) ; return ; default :" LLVM,NVPTX,240,"Predict the next statement of this code snippet: Symbols . push_back ( GVar ) ;" LLVM,NVPTX,241,"Predict the next statement of this code snippet: Symbols . push_back ( GVar ) ;" LLVM,NVPTX,242,"Predict the next statement of this code snippet: AggBuffer ( unsigned _size , raw_ostream & _O , AsmPrinter & _AP ) : O ( _O ) , AP ( _AP ) { buffer = new unsigned char [ _size ] ; size = _size ;" LLVM,NVPTX,243,"Predict the next statement of this code snippet: if ( CPV -> getNumOperands ( ) ) { StructType * ST = cast < StructType > ( CPV -> getType ( ) ) ; for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) { if ( i == ( e - ) ) Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( ) + TD -> getTypeAllocSize ( ST ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; else Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( i + ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , Bytes , aggBuffer ) ; } } return ; }" LLVM,NVPTX,244,"Predict the next statement of this code snippet: for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) { if ( i == ( e - ) ) Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( ) + TD -> getTypeAllocSize ( ST ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; else Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( i + ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , Bytes , aggBuffer ) ;" LLVM,NVPTX,245,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; } else if ( ETy == Type :: getInt64Ty ( CPV -> getContext ( ) ) ) { if ( const ConstantInt * constInt = dyn_cast < ConstantInt > ( CPV ) ) { long long int64 = ( long long ) ( constInt -> getZExtValue ( ) ) ; ptr = ( unsigned char * ) & int64 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { if ( const ConstantInt * constInt = dyn_cast < ConstantInt > ( ConstantFoldConstantExpression ( Cexpr , TD ) ) ) { long long int64 = ( long long ) ( constInt -> getZExtValue ( ) ) ; ptr = ( unsigned char * ) & int64 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } if ( Cexpr -> getOpcode ( ) == Instruction :: PtrToInt ) { Value * v = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v ) ; aggBuffer -> addZeros ( ) ; break ; } } llvm_unreachable ( ) ; } else llvm_unreachable ( ) ; break ; } case Type :: FloatTyID : case Type :: DoubleTyID : { const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ; const Type * Ty = CFP -> getType ( ) ; if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ptr = ( unsigned char * ) & float32 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) { double float64 = CFP -> getValueAPF ( ) . convertToDouble ( ) ; ptr = ( unsigned char * ) & float64 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else { llvm_unreachable ( ) ; } break ; } case Type :: PointerTyID : { if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { aggBuffer -> addSymbol ( GVar ) ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v ) ; } unsigned int s = TD -> getTypeAllocSize ( CPV -> getType ( ) ) ;" LLVM,NVPTX,246,"Predict the next statement of this code snippet: static bool canDemoteGlobalVar ( const GlobalVariable * gv , Function const * & f ) { if ( gv -> hasInternalLinkage ( ) == false ) return false ; const PointerType * Pty = gv -> getType ( ) ; if ( Pty -> getAddressSpace ( ) != llvm :: ADDRESS_SPACE_SHARED ) return false ; const Function * oneFunc = nullptr ; bool flag = usedInOneFunc ( gv , oneFunc ) ; if ( flag == false ) return false ; if ( ! oneFunc ) return false ; f = oneFunc ; return true ;" LLVM,NVPTX,247,"Predict the next statement of this code snippet: static bool canDemoteGlobalVar ( const GlobalVariable * gv , Function const * & f ) { if ( gv -> hasInternalLinkage ( ) == false ) return false ; const PointerType * Pty = gv -> getType ( ) ; if ( Pty -> getAddressSpace ( ) != llvm :: ADDRESS_SPACE_SHARED ) return false ; const Function * oneFunc = nullptr ;" LLVM,NVPTX,248,"Predict the next statement of this code snippet: SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( TM . getDataLayout ( ) ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ;" LLVM,NVPTX,249,"Predict the next statement of this code snippet: MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( TM . getDataLayout ( ) ) ;" LLVM,NVPTX,250,"Predict the next statement of this code snippet: void AsmPrinter :: emitDeclaration ( const Function * F , raw_ostream & O ) { emitLinkageDirective ( F , O ) ; if ( llvm :: isKernelFunction ( * F ) ) O << ; else O << ; printReturnValStr ( F , O ) ; O << * getSymbol ( F ) << ; emitFunctionParamList ( F , O ) ; O << ;" LLVM,NVPTX,251,"Predict the next statement of this code snippet: OutStreamer . EmitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,252,"Predict the next statement of this code snippet: OutStreamer . EmitRawText ( StringRef ( ) ) ; VRegMapping . clear ( ) ;" LLVM,NVPTX,253,"Predict the next statement of this code snippet: emitDemotedVars ( MF -> getFunction ( ) , O ) ; OutStreamer . EmitRawText ( O . str ( ) ) ;" LLVM,NVPTX,254,"Predict the next statement of this code snippet: setAndEmitFunctionVirtualRegisters ( * MF ) ; SmallString < > Str ; raw_svector_ostream O ( Str ) ;" LLVM,NVPTX,255,"Predict the next statement of this code snippet: } MRI = & MF -> getRegInfo ( ) ; F = MF -> getFunction ( ) ; emitLinkageDirective ( F , O ) ; if ( llvm :: isKernelFunction ( * F ) ) O << ; else { O << ; printReturnValStr ( * MF , O ) ; }" LLVM,NVPTX,256,"Predict the next statement of this code snippet: void AsmPrinter :: EmitFunctionEntryLabel ( ) { SmallString < > Str ; raw_svector_ostream O ( Str ) ; if ( ! GlobalsEmitted ) { emitGlobals ( * MF -> getFunction ( ) -> getParent ( ) ) ; GlobalsEmitted = true ; } MRI = & MF -> getRegInfo ( ) ; F = MF -> getFunction ( ) ; emitLinkageDirective ( F , O ) ; if ( llvm :: isKernelFunction ( * F ) ) O << ; else { O << ; printReturnValStr ( * MF , O ) ; } O << * CurrentFnSym ; emitFunctionParamList ( * MF , O ) ; if ( llvm :: isKernelFunction ( * F ) ) emitKernelFunctionDirectives ( * F , O ) ;" LLVM,NVPTX,257,"Predict the next statement of this code snippet: bool isKernelFunc = llvm :: isKernelFunction ( * F ) ; bool isABI = ( nvptxSubtarget . getSmVersion ( ) >= ) ; MVT thePointerTy = TLI -> getPointerTy ( ) ; O << ; for ( I = F -> arg_begin ( ) , E = F -> arg_end ( ) ; I != E ; ++ I , paramIndex ++ ) { Type * Ty = I -> getType ( ) ; if ( ! first ) O << ; first = false ; if ( isKernelFunction ( * F ) ) { if ( isSampler ( * I ) || isImage ( * I ) ) { if ( isImage ( * I ) ) { std :: string sname = I -> getName ( ) ; if ( isImageWriteOnly ( * I ) || isImageReadWrite ( * I ) ) { if ( nvptxSubtarget . hasImageHandles ( ) ) O << ; else O << ; O << * CurrentFnSym << << paramIndex ; } else { if ( nvptxSubtarget . hasImageHandles ( ) ) O << ; else O << ; O << * CurrentFnSym << << paramIndex ; } } else { if ( nvptxSubtarget . hasImageHandles ( ) ) O << ; else O << ; O << * CurrentFnSym << << paramIndex ; } continue ; } } if ( PAL . hasAttribute ( paramIndex + , Attribute :: ByVal ) == false ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ;" LLVM,NVPTX,258,"Predict the next statement of this code snippet: raw_svector_ostream OS2 ( Str2 ) ; emitDeclarations ( M , OS2 ) ; SmallVector < const GlobalVariable * , > Globals ; DenseSet < const GlobalVariable * > GVVisited ; DenseSet < const GlobalVariable * > GVVisiting ; for ( Module :: const_global_iterator I = M . global_begin ( ) , E = M . global_end ( ) ; I != E ; ++ I ) VisitGlobalVariableForEmission ( I , Globals , GVVisited , GVVisiting ) ; assert ( GVVisited . size ( ) == M . getGlobalList ( ) . size ( ) && ) ; assert ( GVVisiting . size ( ) == && ) ; for ( unsigned i = , e = Globals . size ( ) ; i != e ; ++ i ) printModuleLevelGV ( Globals [ i ] , OS2 ) ; OS2 << '\n' ;" LLVM,NVPTX,259,"Predict the next statement of this code snippet: SmallString < > Str2 ; raw_svector_ostream OS2 ( Str2 ) ; emitDeclarations ( M , OS2 ) ; SmallVector < const GlobalVariable * , > Globals ; DenseSet < const GlobalVariable * > GVVisited ; DenseSet < const GlobalVariable * > GVVisiting ;" LLVM,NVPTX,260,"Predict the next statement of this code snippet: O << nvptxSubtarget . getTargetName ( ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) O << ; if ( nvptxSubtarget . getDrvInterface ( ) == ) { if ( ! nvptxSubtarget . hasDouble ( ) ) O << ; } if ( MAI -> doesSupportDebugInformation ( ) ) O << ; O << ; O << ; if ( nvptxSubtarget . is64Bit ( ) ) O << ; else O << ; O << ;" LLVM,NVPTX,261,"Predict the next statement of this code snippet: if ( nvptxSubtarget . getDrvInterface ( ) == ) O << ; if ( nvptxSubtarget . getDrvInterface ( ) == ) { if ( ! nvptxSubtarget . hasDouble ( ) ) O << ; } if ( MAI -> doesSupportDebugInformation ( ) ) O << ; O << ; O << ; if ( nvptxSubtarget . is64Bit ( ) ) O << ;" LLVM,NVPTX,262,"Predict the next statement of this code snippet: void AsmPrinter :: emitImplicitDef ( const MachineInstr * MI ) const { unsigned RegNo = MI -> getOperand ( ) . getReg ( ) ; const TargetRegisterInfo * TRI = TM . getRegisterInfo ( ) ; if ( TRI -> isVirtualRegister ( RegNo ) ) { OutStreamer . AddComment ( Twine ( ) + getVirtualRegisterName ( RegNo ) ) ; } else { OutStreamer . AddComment ( Twine ( ) + TM . getRegisterInfo ( ) -> getName ( RegNo ) ) ; } OutStreamer . AddBlankLine ( ) ;" LLVM,NVPTX,263,"Predict the next statement of this code snippet: SmallString < > Str ; raw_svector_ostream OS ( Str ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) emitLineNumberAsDotLoc ( * MI ) ; MCInst Inst ; lowerToMCInst ( MI , Inst ) ; EmitToStreamer ( OutStreamer , Inst ) ;" LLVM,NVPTX,264,"Predict the next statement of this code snippet: SmallString < > Str ; raw_svector_ostream OS ( Str ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) emitLineNumberAsDotLoc ( * MI ) ; MCInst Inst ; lowerToMCInst ( MI , Inst ) ;" LLVM,NVPTX,265,"Predict the next statement of this code snippet: else specified = true ; if ( specified ) O << << reqntidx << << reqntidy << << reqntidz << ; unsigned maxntidx , maxntidy , maxntidz ; specified = false ; if ( llvm :: getMaxNTIDx ( F , maxntidx ) == false ) maxntidx = ; else specified = true ;" LLVM,NVPTX,266,"Predict the next statement of this code snippet: DebugLoc curLoc = MI . getDebugLoc ( ) ; if ( prevDebugLoc . isUnknown ( ) && curLoc . isUnknown ( ) ) return ; if ( prevDebugLoc == curLoc ) return ; prevDebugLoc = curLoc ; if ( curLoc . isUnknown ( ) ) return ; const MachineFunction * MF = MI . getParent ( ) -> getParent ( ) ; const LLVMContext & ctx = MF -> getFunction ( ) -> getContext ( ) ; DIScope Scope ( curLoc . getScope ( ctx ) ) ; assert ( ( ! Scope || Scope . isScope ( ) ) && ) ; if ( ! Scope ) return ; StringRef fileName ( Scope . getFilename ( ) ) ; StringRef dirName ( Scope . getDirectory ( ) ) ; SmallString < > FullPathName = dirName ; if ( ! dirName . empty ( ) && ! sys :: path :: is_absolute ( fileName ) ) { sys :: path :: append ( FullPathName , fileName ) ;" LLVM,NVPTX,267,"Predict the next statement of this code snippet: void AsmPrinter :: emitLinkageDirective ( const GlobalValue * V , raw_ostream & O ) { if ( nvptxSubtarget . getDrvInterface ( ) == ) { if ( V -> hasExternalLinkage ( ) ) { if ( isa < GlobalVariable > ( V ) ) { const GlobalVariable * GVar = cast < GlobalVariable > ( V ) ; if ( GVar ) { if ( GVar -> hasInitializer ( ) ) O << ; else O << ; }" LLVM,NVPTX,268,"Predict the next statement of this code snippet: } } else if ( V -> isDeclaration ( ) ) O << ; else O << ; } else if ( V -> hasAppendingLinkage ( ) ) { std :: string msg ; msg . append ( ) ; msg . append ( ) ; if ( V -> hasName ( ) ) msg . append ( V -> getName ( ) . str ( ) ) ; msg . append ( ) ; llvm_unreachable ( msg . c_str ( ) ) ; } else if ( ! V -> hasInternalLinkage ( ) && ! V -> hasPrivateLinkage ( ) ) { O << ;" LLVM,NVPTX,269,"Predict the next statement of this code snippet: else O << << GVar -> getAlignment ( ) ; if ( ETy -> isSingleValueType ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID :" LLVM,NVPTX,270,"Predict the next statement of this code snippet: int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << * getSymbol ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ; } O << ;" LLVM,NVPTX,271,"Predict the next statement of this code snippet: temp << reader -> readLine ( line ) ; temp << ;" LLVM,NVPTX,272,"Predict the next statement of this code snippet: if ( numE == ) return * alignE ; else return numE * alignE ; } const StructType * STy = dyn_cast < StructType > ( Ty ) ; if ( STy ) { unsigned int alignStruct = ; for ( unsigned i = , e = STy -> getNumElements ( ) ; i != e ; i ++ ) {" LLVM,NVPTX,273,"Predict the next statement of this code snippet: case Type :: FloatTyID : return ; case Type :: DoubleTyID : return ; case Type :: PointerTyID : if ( nvptxSubtarget . is64Bit ( ) ) if ( useB4PTR ) return ; else return ; else if ( useB4PTR ) return ; else return ; } llvm_unreachable ( ) ; return nullptr ;" LLVM,NVPTX,274,"Predict the next statement of this code snippet: Expr = MCSymbolRefExpr :: Create ( Symbol , MCSymbolRefExpr :: VK_None , OutContext ) ; return MCOperand :: CreateExpr ( Expr ) ;" LLVM,NVPTX,275,"Predict the next statement of this code snippet: const MCExpr * Expr ; Expr = MCSymbolRefExpr :: Create ( Symbol , MCSymbolRefExpr :: VK_None , OutContext ) ; return MCOperand :: CreateExpr ( Expr ) ;" LLVM,NVPTX,276,"Predict the next statement of this code snippet: if ( PI != TypeNameMap . end ( ) && ( ! PI -> second . compare ( ) || ! PI -> second . compare ( ) || ! PI -> second . compare ( ) ) ) return true ;" LLVM,NVPTX,277,"Predict the next statement of this code snippet: bool AsmPrinter :: isImageType ( const Type * Ty ) {" LLVM,NVPTX,278,"Predict the next statement of this code snippet: RegisterAsmPrinter < AsmPrinter > Y ( TheTarget64 ) ;" LLVM,NVPTX,279,"Predict the next statement of this code snippet: if ( CV -> isNullValue ( ) || isa < UndefValue > ( CV ) ) return MCConstantExpr :: Create ( , Ctx ) ; if ( const ConstantInt * CI = dyn_cast < ConstantInt > ( CV ) ) return MCConstantExpr :: Create ( CI -> getZExtValue ( ) , Ctx ) ; if ( const GlobalValue * GV = dyn_cast < GlobalValue > ( CV ) ) return MCSymbolRefExpr :: Create ( AP . getSymbol ( GV ) , Ctx ) ; if ( const BlockAddress * BA = dyn_cast < BlockAddress > ( CV ) ) return MCSymbolRefExpr :: Create ( AP . GetBlockAddressSymbol ( BA ) , Ctx ) ; const ConstantExpr * CE = dyn_cast < ConstantExpr > ( CV ) ; if ( ! CE ) llvm_unreachable ( ) ; switch ( CE -> getOpcode ( ) ) { default : if ( Constant * C = ConstantFoldConstantExpression ( CE , AP . TM . getDataLayout ( ) ) ) if ( C != CE ) return LowerConstant ( C , AP ) ; { std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! AP . MF ? nullptr : AP . MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; PointerType * SrcTy = cast < PointerType > ( CE -> getOperand ( ) -> getType ( ) ) ; if ( SrcTy -> getAddressSpace ( ) == && DstTy -> getAddressSpace ( ) == ) { return LowerConstant ( cast < const Constant > ( CE -> getOperand ( ) ) , AP ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! AP . MF ? nullptr : AP . MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; }" LLVM,NVPTX,280,"Predict the next statement of this code snippet: if ( OpNo == ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ; return true ; } return false ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { if ( OpNo == ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ; return true ; } return false ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { if ( OpNo == ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ; return true ; } return false ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : { if ( OpNo == ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ;" LLVM,NVPTX,281,"Predict the next statement of this code snippet: std :: string * SymNamePtr = nvTM . getManagedStrPool ( ) -> getManagedString ( Sym ) ; MCOp = GetSymbolRef ( OutContext . GetOrCreateSymbol ( StringRef ( SymNamePtr -> c_str ( ) ) ) ) ;" LLVM,NVPTX,282,"Predict the next statement of this code snippet: case MachineOperand :: MO_Immediate : MCOp = MCOperand :: CreateImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = MCOperand :: CreateExpr ( MCSymbolRefExpr :: Create ( MO . getMBB ( ) -> getSymbol ( ) , OutContext ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = GetSymbolRef ( GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = GetSymbolRef ( getSymbol ( MO . getGlobal ( ) ) ) ; break ; case MachineOperand :: MO_FPImmediate : { const ConstantFP * Cnt = MO . getFPImm ( ) ; APFloat Val = Cnt -> getValueAPF ( ) ; switch ( Cnt -> getType ( ) -> getTypeID ( ) ) { default : report_fatal_error ( ) ; break ; case Type :: FloatTyID : MCOp = MCOperand :: CreateExpr ( FloatMCExpr :: CreateConstantFPSingle ( Val , OutContext ) ) ; break ; case Type :: DoubleTyID : MCOp = MCOperand :: CreateExpr ( FloatMCExpr :: CreateConstantFPDouble ( Val , OutContext ) ) ; break ; } break ; }" LLVM,NVPTX,283,"Predict the next statement of this code snippet: unsigned int pos = ; unsigned int nSym = ; unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( AP . nvptxSubtarget . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . getSymbol ( GVar ) ; PointerType * PTy = dyn_cast < PointerType > ( GVar -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; O << * Name ; O << ; } else { O << * Name ; } } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( v ) ) {" LLVM,NVPTX,284,"Predict the next statement of this code snippet: case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress :" LLVM,NVPTX,285,"Predict the next statement of this code snippet: int i = ; if ( ( nvptxSubtarget . getDrvInterface ( ) == ) || ( nvptxSubtarget . getDrvInterface ( ) == ) ) { O << * CurrentFnSym << << paramIndex ; return ; } for ( I = F -> arg_begin ( ) , E = F -> arg_end ( ) ; I != E ; ++ I , i ++ ) {" LLVM,NVPTX,286,"Predict the next statement of this code snippet: } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( ) . getSizeInBits ( ) << ; } else { if ( ( Ty -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( Ty ) ) { unsigned totalsz = TD -> getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else assert ( false && ) ; } } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ;" LLVM,NVPTX,287,"Predict the next statement of this code snippet: } if ( const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ) { printFPConstant ( CFP , O ) ; return ; } if ( isa < ConstantPointerNull > ( CPV ) ) { O << ; return ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { PointerType * PTy = dyn_cast < PointerType > ( GVar -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( CPV ) && ! IsNonGenericPointer ) { O << ; O << * getSymbol ( GVar ) ; O << ; } else { O << * getSymbol ( GVar ) ; } return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; PointerType * PTy = dyn_cast < PointerType > ( Cexpr -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ;" LLVM,NVPTX,288,"Predict the next statement of this code snippet: O << * getSymbol ( GVar ) ; O << ; } else { O << * getSymbol ( GVar ) ; } return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; PointerType * PTy = dyn_cast < PointerType > ( Cexpr -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; O << * getSymbol ( GVar ) ; O << ; } else { O << * getSymbol ( GVar ) ; }" LLVM,NVPTX,289,"Predict the next statement of this code snippet: void AsmPrinter :: recordAndEmitFilenames ( Module & M ) { DebugInfoFinder DbgFinder ; DbgFinder . processModule ( M ) ; unsigned i = ; for ( DICompileUnit DIUnit : DbgFinder . compile_units ( ) ) { StringRef Filename ( DIUnit . getFilename ( ) ) ; StringRef Dirname ( DIUnit . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName . str ( ) ; } if ( filenameMap . find ( Filename . str ( ) ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename . str ( ) ] = i ; OutStreamer . EmitDwarfFileDirective ( i , , Filename . str ( ) ) ; ++ i ; } for ( DISubprogram SP : DbgFinder . subprograms ( ) ) { StringRef Filename ( SP . getFilename ( ) ) ; StringRef Dirname ( SP . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) {" LLVM,NVPTX,290,"Predict the next statement of this code snippet: void AsmPrinter :: setAndEmitFunctionVirtualRegisters ( const MachineFunction & MF ) { SmallString < > Str ; raw_svector_ostream O ( Str ) ; const TargetRegisterInfo * TRI = MF . getTarget ( ) . getRegisterInfo ( ) ; const MachineFrameInfo * MFI = MF . getFrameInfo ( ) ; int NumBytes = ( int ) MFI -> getStackSize ( ) ; if ( NumBytes ) { O << << MFI -> getMaxAlignment ( ) << << DEPOTNAME << getFunctionNumber ( ) << << NumBytes << ; if ( nvptxSubtarget . is64Bit ( ) ) { O << ; O << ; } else { O << ; O << ; } } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = TRI -> index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ;" LLVM,NVPTX,291,"Predict the next statement of this code snippet: raw_svector_ostream O ( Str ) ; const TargetRegisterInfo * TRI = MF . getTarget ( ) . getRegisterInfo ( ) ; const MachineFrameInfo * MFI = MF . getFrameInfo ( ) ; int NumBytes = ( int ) MFI -> getStackSize ( ) ; if ( NumBytes ) { O << << MFI -> getMaxAlignment ( ) << << DEPOTNAME << getFunctionNumber ( ) << << NumBytes << ; if ( nvptxSubtarget . is64Bit ( ) ) { O << ; O << ; } else { O << ; O << ; } } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = TRI -> index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; int n = regmap . size ( ) ;" LLVM,NVPTX,292,"Predict the next statement of this code snippet: if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( C ) ) { if ( GV -> getName ( ) . str ( ) == ) return false ;" LLVM,NVPTX,293,"Predict the next statement of this code snippet: if ( const Instruction * instr = dyn_cast < Instruction > ( U ) ) { if ( instr -> getParent ( ) && instr -> getParent ( ) -> getParent ( ) ) { const Function * curFunc = instr -> getParent ( ) -> getParent ( ) ; if ( oneFunc && ( curFunc != oneFunc ) ) return false ; oneFunc = curFunc ; return true ; } else return false ; } if ( const MDNode * md = dyn_cast < MDNode > ( U ) ) if ( md -> hasName ( ) && ( ( md -> getName ( ) . str ( ) == ) || ( md -> getName ( ) . str ( ) == ) ) ) return true ; for ( const User * UU : U -> users ( ) ) if ( usedInOneFunc ( UU , oneFunc ) == false ) return false ; return true ;" LLVM,NVPTX,294,"Predict the next statement of this code snippet: if ( const Instruction * instr = dyn_cast < Instruction > ( U ) ) { if ( instr -> getParent ( ) && instr -> getParent ( ) -> getParent ( ) ) { const Function * curFunc = instr -> getParent ( ) -> getParent ( ) ; if ( oneFunc && ( curFunc != oneFunc ) ) return false ;" LLVM,NVPTX,295,"Predict the next statement of this code snippet: void VisitGlobalVariableForEmission ( const GlobalVariable * GV , SmallVectorImpl < const GlobalVariable * > & Order , DenseSet < const GlobalVariable * > & Visited , DenseSet < const GlobalVariable * > & Visiting ) { if ( Visited . count ( GV ) ) return ; if ( Visiting . count ( GV ) ) report_fatal_error ( ) ; Visiting . insert ( GV ) ;" LLVM,NVPTX,296,"Predict the next statement of this code snippet: if ( Visited . count ( GV ) ) return ; if ( Visiting . count ( GV ) ) report_fatal_error ( ) ; Visiting . insert ( GV ) ; DenseSet < const GlobalVariable * > Others ; for ( unsigned i = , e = GV -> getNumOperands ( ) ; i != e ; ++ i ) DiscoverDependentGlobals ( GV -> getOperand ( i ) , Others ) ;" LLVM,NVPTX,297,"Predict the next statement of this code snippet: ~ AggBuffer ( ) { delete [ ] buffer ;" LLVM,NVPTX,298,"Predict the next statement of this code snippet: printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { unsigned align = PAL . getParamAlignment ( paramIndex ) ; if ( align == ) align = DL . getABITypeAlignment ( ETy ) ; if ( ! isKernelFunc && align < ) align = ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; printParamName ( I , paramIndex , O ) ; if ( j < je - ) O << ; ++ paramIndex ; } if ( i < e - ) O << ; } -- paramIndex ; continue ; } } O << ;" LLVM,NVPTX,299,"Predict the next statement of this code snippet: const DataLayout & DL = getDataLayout ( ) ; Type * ETy = GVar -> getValueType ( ) ; O << ; emitPTXAddressSpace ( GVar -> getType ( ) -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) DL . getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isIntegerTy ( ) ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; return ;" LLVM,NVPTX,300,"Predict the next statement of this code snippet: O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ;" LLVM,NVPTX,301,"Predict the next statement of this code snippet: if ( ! getAlign ( * F , , retAlignment ) ) retAlignment = DL . getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ;" LLVM,NVPTX,302,"Predict the next statement of this code snippet: emitGlobals ( M ) ; GlobalsEmitted = true ; } Module :: GlobalListType & global_list = M . getGlobalList ( ) ; int i , n = global_list . size ( ) ; GlobalVariable * * gv_array = new GlobalVariable * [ n ] ; i = ; for ( Module :: global_iterator I = global_list . begin ( ) , E = global_list . end ( ) ; I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ;" LLVM,NVPTX,303,"Predict the next statement of this code snippet: while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ;" LLVM,NVPTX,304,"Predict the next statement of this code snippet: O << ; O << ; O << ; unsigned PTXVersion = STI . getPTXVersion ( ) ; O << << ( PTXVersion / ) << << ( PTXVersion % ) << ; O << ;" LLVM,NVPTX,305,"Predict the next statement of this code snippet: bool Result = AsmPrinter :: runOnMachineFunction ( F ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ; return Result ;" LLVM,NVPTX,306,"Predict the next statement of this code snippet: OutStreamer . AddComment ( Twine ( ) + getVirtualRegisterName ( RegNo ) ) ; } else { OutStreamer . AddComment ( Twine ( ) + TM . getSubtargetImpl ( ) -> getRegisterInfo ( ) -> getName ( RegNo ) ) ; }" LLVM,NVPTX,307,"Predict the next statement of this code snippet: Type * ETy = PTy -> getElementType ( ) ; O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << * getSymbol ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ; } O << ; break ;" LLVM,NVPTX,308,"Predict the next statement of this code snippet: static unsigned int getOpenCLAlignment ( const DataLayout * TD , Type * Ty ) { if ( Ty -> isSingleValueType ( ) ) return TD -> getPrefTypeAlignment ( Ty ) ; const ArrayType * ATy = dyn_cast < ArrayType > ( Ty ) ; if ( ATy ) return getOpenCLAlignment ( TD , ATy -> getElementType ( ) ) ; const StructType * STy = dyn_cast < StructType > ( Ty ) ; if ( STy ) { unsigned int alignStruct = ; for ( unsigned i = , e = STy -> getNumElements ( ) ; i != e ; i ++ ) { Type * ETy = STy -> getElementType ( i ) ;" LLVM,NVPTX,309,"Predict the next statement of this code snippet: bool AsmPrinter :: isLoopHeaderOfNoUnroll ( const MachineBasicBlock & MBB ) const { MachineLoopInfo & LI = getAnalysis < MachineLoopInfo > ( ) ; if ( ! LI . isLoopHeader ( const_cast < MachineBasicBlock * > ( & MBB ) ) ) return false ; for ( auto I = MBB . pred_begin ( ) ; I != MBB . pred_end ( ) ; ++ I ) { const MachineBasicBlock * PMBB = * I ; if ( LI . getLoopFor ( PMBB ) != LI . getLoopFor ( & MBB ) ) { continue ;" LLVM,NVPTX,310,"Predict the next statement of this code snippet: } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ;" LLVM,NVPTX,311,"Predict the next statement of this code snippet: size = Ty -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( ) . getSizeInBits ( ) << ; } else if ( ( Ty -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( Ty ) ) { unsigned totalsz = TD -> getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ;" LLVM,NVPTX,312,"Predict the next statement of this code snippet: if ( const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ) { printFPConstant ( CFP , O ) ; return ; } if ( isa < ConstantPointerNull > ( CPV ) ) { O << ; return ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { PointerType * PTy = dyn_cast < PointerType > ( GVar -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( CPV ) && ! IsNonGenericPointer ) { O << ; O << * getSymbol ( GVar ) ; O << ; } else { O << * getSymbol ( GVar ) ; } return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; PointerType * PTy = dyn_cast < PointerType > ( Cexpr -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; O << * getSymbol ( GVar ) ; O << ; } else { O << * getSymbol ( GVar ) ; }" LLVM,NVPTX,313,"Predict the next statement of this code snippet: const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; int n = regmap . size ( ) ; regmap . insert ( std :: make_pair ( vr , n + ) ) ; } for ( unsigned i = ; i < TRI -> getNumRegClasses ( ) ; i ++ ) { const TargetRegisterClass * RC = TRI -> getRegClass ( i ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; std :: string rcname = getRegClassName ( RC ) ; std :: string rcStr = getRegClassStr ( RC ) ; int n = regmap . size ( ) ; if ( n ) {" LLVM,NVPTX,314,"Predict the next statement of this code snippet: } if ( const Instruction * instr = dyn_cast < Instruction > ( U ) ) { if ( instr -> getParent ( ) && instr -> getParent ( ) -> getParent ( ) ) { const Function * curFunc = instr -> getParent ( ) -> getParent ( ) ; if ( oneFunc && ( curFunc != oneFunc ) ) return false ; oneFunc = curFunc ; return true ; } else return false ; } for ( const User * UU : U -> users ( ) ) if ( usedInOneFunc ( UU , oneFunc ) == false ) return false ; return true ;" LLVM,NVPTX,315,"Predict the next statement of this code snippet: if ( instr -> getParent ( ) && instr -> getParent ( ) -> getParent ( ) ) { const Function * curFunc = instr -> getParent ( ) -> getParent ( ) ; if ( oneFunc && ( curFunc != oneFunc ) ) return false ;" LLVM,NVPTX,316,"Predict the next statement of this code snippet: else O << ; printReturnValStr ( F , O ) ; O << getSymbolName ( F ) << ; emitFunctionParamList ( F , O ) ; O << ;" LLVM,NVPTX,317,"Predict the next statement of this code snippet: continue ; } if ( PAL . hasAttribute ( paramIndex + , Attribute :: ByVal ) == false ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; }" LLVM,NVPTX,318,"Predict the next statement of this code snippet: if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( ETy ) ; unsigned sz = TD -> getTypeAllocSize ( ETy ) ; O << << align << ;" LLVM,NVPTX,319,"Predict the next statement of this code snippet: emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isSingleValueType ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << getSymbolName ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << getSymbolName ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ; } O << ; break ; default : assert ( && ) ;" LLVM,NVPTX,320,"Predict the next statement of this code snippet: switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << getSymbolName ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ; } O << ; break ; default : assert ( && ) ; } return ;" LLVM,NVPTX,321,"Predict the next statement of this code snippet: MCSymbol * Sym = getSymbol ( GV ) ; std :: string OriginalName ; raw_string_ostream OriginalNameStream ( OriginalName ) ; Sym -> print ( OriginalNameStream ) ; OriginalNameStream . flush ( ) ; std :: string CleanName ; raw_string_ostream CleanNameStream ( CleanName ) ; for ( unsigned I = , E = OriginalName . size ( ) ; I != E ; ++ I ) { char C = OriginalName [ I ] ; if ( C == '.' ) { CleanNameStream << ;" LLVM,NVPTX,322,"Predict the next statement of this code snippet: std :: string OriginalName ; raw_string_ostream OriginalNameStream ( OriginalName ) ; Sym -> print ( OriginalNameStream ) ; OriginalNameStream . flush ( ) ; std :: string CleanName ; raw_string_ostream CleanNameStream ( CleanName ) ; for ( unsigned I = , E = OriginalName . size ( ) ; I != E ; ++ I ) { char C = OriginalName [ I ] ; if ( C == '.' ) { CleanNameStream << ;" LLVM,NVPTX,323,"Predict the next statement of this code snippet: if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: CreateAdd ( Base , MCConstantExpr :: Create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return LowerConstant ( CE -> getOperand ( ) , AP ) ; case Instruction :: IntToPtr : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , TD . getIntPtrType ( CV -> getContext ( ) ) , false ) ; return LowerConstant ( Op , AP ) ; } case Instruction :: PtrToInt : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = LowerConstant ( Op , AP ) ; if ( TD . getTypeAllocSize ( Ty ) == TD . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = TD . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: Create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: CreateAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : case Instruction :: Sub : case Instruction :: Mul : case Instruction :: SDiv : case Instruction :: SRem : case Instruction :: Shl : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : { const MCExpr * LHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; const MCExpr * RHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; switch ( CE -> getOpcode ( ) ) { default : llvm_unreachable ( ) ; case Instruction :: Add :" LLVM,NVPTX,324,"Predict the next statement of this code snippet: break ; case MachineOperand :: MO_GlobalAddress : MCOp = GetSymbolRef ( MO , getSymbol ( MO . getGlobal ( ) ) ) ; break ; case MachineOperand :: MO_FPImmediate : { const ConstantFP * Cnt = MO . getFPImm ( ) ; APFloat Val = Cnt -> getValueAPF ( ) ; switch ( Cnt -> getType ( ) -> getTypeID ( ) ) { default : report_fatal_error ( ) ; break ; case Type :: FloatTyID : MCOp = MCOperand :: CreateExpr ( FloatMCExpr :: CreateConstantFPSingle ( Val , OutContext ) ) ; break ; case Type :: DoubleTyID : MCOp = MCOperand :: CreateExpr ( FloatMCExpr :: CreateConstantFPDouble ( Val , OutContext ) ) ;" LLVM,NVPTX,325,"Predict the next statement of this code snippet: case MachineOperand :: MO_Register : MCOp = MCOperand :: CreateReg ( encodeVirtualRegister ( MO . getReg ( ) ) ) ; break ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: CreateImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = MCOperand :: CreateExpr ( MCSymbolRefExpr :: Create ( MO . getMBB ( ) -> getSymbol ( ) , OutContext ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = GetSymbolRef ( MO , GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = GetSymbolRef ( MO , getSymbol ( MO . getGlobal ( ) ) ) ; break ;" LLVM,NVPTX,326,"Predict the next statement of this code snippet: for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { const MachineOperand & MO = MI -> getOperand ( i ) ; MCOperand MCOp ; if ( lowerOperand ( MO , MCOp ) ) OutMI . addOperand ( MCOp ) ;" LLVM,NVPTX,327,"Predict the next statement of this code snippet: const MachineOperand & MO = MI -> getOperand ( opNum ) ; switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : if ( TargetRegisterInfo :: isPhysicalRegister ( MO . getReg ( ) ) ) { if ( MO . getReg ( ) == ) O << DEPOTNAME << getFunctionNumber ( ) ; else O << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; } else { emitVirtualRegister ( MO . getReg ( ) , O ) ; } return ; case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : O << getSymbolName ( MO . getGlobal ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock :" LLVM,NVPTX,328,"Predict the next statement of this code snippet: } return ; case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress :" LLVM,NVPTX,329,"Predict the next statement of this code snippet: } if ( const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ) { printFPConstant ( CFP , O ) ; return ; } if ( isa < ConstantPointerNull > ( CPV ) ) { O << ; return ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { O << getSymbolName ( GVar ) ;" LLVM,NVPTX,330,"Predict the next statement of this code snippet: const Function * oneFunc = nullptr ; bool flag = usedInOneFunc ( gv , oneFunc ) ; if ( ! flag ) return false ; if ( ! oneFunc ) return false ; f = oneFunc ; return true ;" LLVM,NVPTX,331,"Predict the next statement of this code snippet: Mang = new Mangler ( TM . getDataLayout ( ) ) ; emitHeader ( M , OS1 , STI ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer . AddBlankLine ( ) ;" LLVM,NVPTX,332,"Predict the next statement of this code snippet: bool AsmPrinter :: doInitialization ( Module & M ) { StringRef TT = TM . getTargetTriple ( ) ; StringRef CPU = TM . getTargetCPU ( ) ; StringRef FS = TM . getTargetFeatureString ( ) ; const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ; const Subtarget STI ( TT , CPU , FS , NTM ) ; SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( TM . getDataLayout ( ) ) ; emitHeader ( M , OS1 , STI ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) {" LLVM,NVPTX,333,"Predict the next statement of this code snippet: case llvm :: ADDRESS_SPACE_CONST : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( ETy ) ; unsigned sz = TD -> getTypeAllocSize ( ETy ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; printParamName ( I , paramIndex , O ) ; if ( j < je - ) O << ; ++ paramIndex ; } if ( i < e - ) O << ; } -- paramIndex ; continue ; }" LLVM,NVPTX,334,"Predict the next statement of this code snippet: void AsmPrinter :: emitImplicitDef ( const MachineInstr * MI ) const { unsigned RegNo = MI -> getOperand ( ) . getReg ( ) ; if ( TargetRegisterInfo :: isVirtualRegister ( RegNo ) ) { OutStreamer . AddComment ( Twine ( ) + getVirtualRegisterName ( RegNo ) ) ; } else { OutStreamer . AddComment ( Twine ( ) + nvptxSubtarget -> getRegisterInfo ( ) -> getName ( RegNo ) ) ; }" LLVM,NVPTX,335,"Predict the next statement of this code snippet: void AsmPrinter :: EmitInstruction ( const MachineInstr * MI ) { SmallString < > Str ; raw_svector_ostream OS ( Str ) ;" LLVM,NVPTX,336,"Predict the next statement of this code snippet: } if ( filenameMap . find ( fileName ) == filenameMap . end ( ) ) return ; if ( InterleaveSrc ) this -> emitSrcInText ( fileName , curLoc . getLine ( ) ) ; std :: stringstream temp ; temp << << filenameMap [ fileName ] << << curLoc . getLine ( ) << << curLoc . getCol ( ) ; OutStreamer . EmitRawText ( temp . str ( ) ) ;" LLVM,NVPTX,337,"Predict the next statement of this code snippet: temp << filename . str ( ) ; temp << ; temp << line ; temp << ;" LLVM,NVPTX,338,"Predict the next statement of this code snippet: temp << line ; temp << ; temp << reader -> readLine ( line ) ; temp << ;" LLVM,NVPTX,339,"Predict the next statement of this code snippet: break ; } break ; } case Type :: FloatTyID : return ; case Type :: DoubleTyID : return ; case Type :: PointerTyID : if ( static_cast < const TargetMachine & > ( TM ) . is64Bit ( ) ) if ( useB4PTR ) return ; else return ; else if ( useB4PTR ) return ; else return ; } llvm_unreachable ( ) ;" LLVM,NVPTX,340,"Predict the next statement of this code snippet: OutMI . addOperand ( GetSymbolRef ( OutContext . GetOrCreateSymbol ( Twine ( MO . getSymbolName ( ) ) ) ) ) ; return ; } for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { const MachineOperand & MO = MI -> getOperand ( i ) ; MCOperand MCOp ; if ( ! nvptxSubtarget -> hasImageHandles ( ) ) { if ( lowerImageHandleOperand ( MI , i , MCOp ) ) { OutMI . addOperand ( MCOp ) ; continue ; } } if ( lowerOperand ( MO , MCOp ) ) OutMI . addOperand ( MCOp ) ; }" LLVM,NVPTX,341,"Predict the next statement of this code snippet: if ( MI -> getOpcode ( ) == ) { const MachineOperand & MO = MI -> getOperand ( ) ; OutMI . addOperand ( GetSymbolRef ( OutContext . GetOrCreateSymbol ( Twine ( MO . getSymbolName ( ) ) ) ) ) ; return ; } for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { const MachineOperand & MO = MI -> getOperand ( i ) ; MCOperand MCOp ; if ( ! nvptxSubtarget -> hasImageHandles ( ) ) { if ( lowerImageHandleOperand ( MI , i , MCOp ) ) { OutMI . addOperand ( MCOp ) ; continue ;" LLVM,NVPTX,342,"Predict the next statement of this code snippet: else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; if ( ETy -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( ETy , false ) ; O << ; O << * getSymbol ( GVar ) ; if ( GVar -> hasInitializer ( ) ) { if ( ( PTy -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_GLOBAL ) || ( PTy -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_CONST ) ) { const Constant * Initializer = GVar -> getInitializer ( ) ; if ( ! Initializer -> isNullValue ( ) && ! isa < UndefValue > ( Initializer ) ) { O << ; printScalarConstant ( Initializer , O ) ; } } else { if ( ! GVar -> getInitializer ( ) -> isNullValue ( ) ) { std :: string warnMsg = ( + GVar -> getName ( ) + + Twine ( llvm :: utostr_32 ( PTy -> getAddressSpace ( ) ) ) + ) . str ( ) ; report_fatal_error ( warnMsg . c_str ( ) ) ; } } } } else { unsigned int ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; if ( ( ( PTy -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_GLOBAL ) || ( PTy -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_CONST ) ) && GVar -> hasInitializer ( ) ) { const Constant * Initializer = GVar -> getInitializer ( ) ; if ( ! isa < UndefValue > ( Initializer ) && ! Initializer -> isNullValue ( ) ) { AggBuffer aggBuffer ( ElementSize , O , * this ) ; bufferAggregateConstant ( Initializer , & aggBuffer ) ; if ( aggBuffer . numSymbols ) { if ( static_cast < const TargetMachine & > ( TM ) . is64Bit ( ) ) { O << << * getSymbol ( GVar ) << ; O << ElementSize / ; } else { O << << * getSymbol ( GVar ) << ; O << ElementSize / ; } O << ; } else { O << << * getSymbol ( GVar ) << ; O << ElementSize ; O << ; } O << ; aggBuffer . print ( ) ; O << ; } else { O << << * getSymbol ( GVar ) ;" LLVM,NVPTX,343,"Predict the next statement of this code snippet: if ( GVar -> use_empty ( ) ) return ; } const Function * demotedFunc = nullptr ; if ( ! processDemoted && canDemoteGlobalVar ( GVar , demotedFunc ) ) { O << << GVar -> getName ( ) << ; if ( localDecls . find ( demotedFunc ) != localDecls . end ( ) ) localDecls [ demotedFunc ] . push_back ( GVar ) ; else { std :: vector < const GlobalVariable * > temp ; temp . push_back ( GVar ) ; localDecls [ demotedFunc ] = temp ; } return ; } O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( isManaged ( * GVar ) ) { O << ; } if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; if ( ETy -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( ETy , false ) ; O << ; O << * getSymbol ( GVar ) ; if ( GVar -> hasInitializer ( ) ) { if ( ( PTy -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_GLOBAL ) || ( PTy -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_CONST ) ) { const Constant * Initializer = GVar -> getInitializer ( ) ; if ( ! Initializer -> isNullValue ( ) && ! isa < UndefValue > ( Initializer ) ) { O << ; printScalarConstant ( Initializer , O ) ; } } else { if ( ! GVar -> getInitializer ( ) -> isNullValue ( ) ) { std :: string warnMsg = ( + GVar -> getName ( ) + + Twine ( llvm :: utostr_32 ( PTy -> getAddressSpace ( ) ) ) + ) . str ( ) ; report_fatal_error ( warnMsg . c_str ( ) ) ; } } } } else { unsigned int ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID :" LLVM,NVPTX,344,"Predict the next statement of this code snippet: void AsmPrinter :: printParamName ( int paramIndex , raw_ostream & O ) { O << * CurrentFnSym << << paramIndex ;" LLVM,NVPTX,345,"Predict the next statement of this code snippet: O << ; if ( isABI ) { if ( Ty -> isFloatingPointTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned size = ; if ( const IntegerType * ITy = dyn_cast < IntegerType > ( Ty ) ) { size = ITy -> getBitWidth ( ) ; if ( size < ) size = ; } else { assert ( Ty -> isFloatingPointTy ( ) && ) ; size = Ty -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( ) . getSizeInBits ( ) << ; } else if ( ( Ty -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( Ty ) ) { unsigned totalsz = TD -> getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) {" LLVM,NVPTX,346,"Predict the next statement of this code snippet: } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << << idx ; if ( j < je - ) O << ; ++ idx ; } if ( i < e - ) O << ; } } O << ;" LLVM,NVPTX,347,"Predict the next statement of this code snippet: DebugInfoFinder DbgFinder ; DbgFinder . processModule ( M ) ; unsigned i = ; for ( const MDCompileUnit * DIUnit : DbgFinder . compile_units ( ) ) { StringRef Filename = DIUnit -> getFilename ( ) ; StringRef Dirname = DIUnit -> getDirectory ( ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename ] = i ; OutStreamer . EmitDwarfFileDirective ( i , , Filename ) ; ++ i ; } for ( MDSubprogram * SP : DbgFinder . subprograms ( ) ) { StringRef Filename = SP -> getFilename ( ) ; StringRef Dirname = SP -> getDirectory ( ) ; SmallString < > FullPathName = Dirname ;" LLVM,NVPTX,348,"Predict the next statement of this code snippet: unsigned i = ; for ( const MDCompileUnit * DIUnit : DbgFinder . compile_units ( ) ) { StringRef Filename = DIUnit -> getFilename ( ) ; StringRef Dirname = DIUnit -> getDirectory ( ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ;" LLVM,NVPTX,349,"Predict the next statement of this code snippet: } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = TRI -> index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; int n = regmap . size ( ) ; regmap . insert ( std :: make_pair ( vr , n + ) ) ; } for ( unsigned i = ; i < TRI -> getNumRegClasses ( ) ; i ++ ) { const TargetRegisterClass * RC = TRI -> getRegClass ( i ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; std :: string rcname = getRegClassName ( RC ) ;" LLVM,NVPTX,350,"Predict the next statement of this code snippet: if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( C ) ) { if ( GV -> getName ( ) == ) return false ; return true ; } for ( const User * U : C -> users ( ) ) if ( const Constant * C = dyn_cast < Constant > ( U ) ) if ( usedInGlobalVarDef ( C ) ) return true ; return false ;" LLVM,NVPTX,351,"Predict the next statement of this code snippet: if ( F -> arg_empty ( ) ) { O << ; return ; } O << ; for ( I = F -> arg_begin ( ) , E = F -> arg_end ( ) ; I != E ; ++ I , paramIndex ++ ) { Type * Ty = I -> getType ( ) ; if ( ! first ) O << ; first = false ; if ( isKernelFunction ( * F ) ) { if ( isSampler ( * I ) || isImage ( * I ) ) { if ( isImage ( * I ) ) { std :: string sname = I -> getName ( ) ; if ( isImageWriteOnly ( * I ) || isImageReadWrite ( * I ) ) { if ( nvptxSubtarget -> hasImageHandles ( ) ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } else { if ( nvptxSubtarget -> hasImageHandles ( ) ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } } else { if ( nvptxSubtarget -> hasImageHandles ( ) ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } continue ; } } if ( ! PAL . hasAttribute ( paramIndex + , Attribute :: ByVal ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( static_cast < TargetMachine & > ( TM ) . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case ADDRESS_SPACE_CONST : O << ; break ; case ADDRESS_SPACE_SHARED : O << ; break ; case ADDRESS_SPACE_GLOBAL : O << ; break ; }" LLVM,NVPTX,352,"Predict the next statement of this code snippet: unsigned AsmPrinter :: encodeVirtualRegister ( unsigned Reg ) { if ( TargetRegisterInfo :: isVirtualRegister ( Reg ) ) { const TargetRegisterClass * RC = MRI -> getRegClass ( Reg ) ; DenseMap < unsigned , unsigned > & RegMap = VRegMapping [ RC ] ; unsigned RegNum = RegMap [ Reg ] ; unsigned Ret = ; if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) {" LLVM,NVPTX,353,"Predict the next statement of this code snippet: void AsmPrinter :: printReturnValStr ( const Function * F , raw_ostream & O ) { const DataLayout & DL = getDataLayout ( ) ; const TargetLowering * TLI = nvptxSubtarget -> getTargetLowering ( ) ; Type * Ty = F -> getReturnType ( ) ; bool isABI = ( nvptxSubtarget -> getSmVersion ( ) >= ) ; if ( Ty -> getTypeID ( ) == Type :: VoidTyID ) return ; O << ; if ( isABI ) { if ( Ty -> isFloatingPointTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( Ty ) ) { size = ITy -> getBitWidth ( ) ; } else { assert ( Ty -> isFloatingPointTy ( ) && ) ; size = Ty -> getPrimitiveSizeInBits ( ) ; } if ( size < ) size = ; O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( DL ) . getSizeInBits ( ) << ; } else if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned totalsz = DL . getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! getAlign ( * F , , retAlignment ) ) retAlignment = DL . getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ;" LLVM,NVPTX,354,"Predict the next statement of this code snippet: AggBuffer ( unsigned _size , raw_ostream & _O , AsmPrinter & _AP ) : O ( _O ) , AP ( _AP ) { buffer = new unsigned char [ _size ] ;" LLVM,NVPTX,355,"Predict the next statement of this code snippet: } Module :: GlobalListType & global_list = M . getGlobalList ( ) ; int i , n = global_list . size ( ) ; GlobalVariable * * gv_array = new GlobalVariable * [ n ] ; i = ; for ( Module :: global_iterator I = global_list . begin ( ) , E = global_list . end ( ) ; I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ; if ( HasDebugInfo ) OutStreamer -> EmitRawText ( ) ;" LLVM,NVPTX,356,"Predict the next statement of this code snippet: for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ; if ( HasDebugInfo ) OutStreamer -> EmitRawText ( ) ;" LLVM,NVPTX,357,"Predict the next statement of this code snippet: bool Result = AsmPrinter :: doInitialization ( M ) ; emitHeader ( M , OS1 , STI ) ; OutStreamer -> EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer -> AddComment ( ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> AddComment ( ) ; OutStreamer -> AddBlankLine ( ) ; }" LLVM,NVPTX,358,"Predict the next statement of this code snippet: void AsmPrinter :: EmitFunctionBodyEnd ( ) {" LLVM,NVPTX,359,"Predict the next statement of this code snippet: VRegMapping . clear ( ) ;" LLVM,NVPTX,360,"Predict the next statement of this code snippet: SmallString < > Str ; raw_svector_ostream O ( Str ) ;" LLVM,NVPTX,361,"Predict the next statement of this code snippet: emitDemotedVars ( & MF -> getFunction ( ) , O ) ;" LLVM,NVPTX,362,"Predict the next statement of this code snippet: else { O << ; printReturnValStr ( * MF , O ) ; } CurrentFnSym -> print ( O , MAI ) ; emitFunctionParamList ( * MF , O ) ; if ( isKernelFunction ( * F ) ) emitKernelFunctionDirectives ( * F , O ) ; OutStreamer -> EmitRawText ( O . str ( ) ) ; VRegMapping . clear ( ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,363,"Predict the next statement of this code snippet: CurrentFnSym -> print ( O , MAI ) ; emitFunctionParamList ( * MF , O ) ; if ( isKernelFunction ( * F ) ) emitKernelFunctionDirectives ( * F , O ) ; OutStreamer -> EmitRawText ( O . str ( ) ) ; VRegMapping . clear ( ) ;" LLVM,NVPTX,364,"Predict the next statement of this code snippet: unsigned RegNo = MI -> getOperand ( ) . getReg ( ) ; if ( TargetRegisterInfo :: isVirtualRegister ( RegNo ) ) { OutStreamer -> AddComment ( Twine ( ) + getVirtualRegisterName ( RegNo ) ) ; } else { const Subtarget & STI = MI -> getMF ( ) -> getSubtarget < Subtarget > ( ) ; OutStreamer -> AddComment ( Twine ( ) + STI . getRegisterInfo ( ) -> getName ( RegNo ) ) ;" LLVM,NVPTX,365,"Predict the next statement of this code snippet: unsigned RegNo = MI -> getOperand ( ) . getReg ( ) ; if ( TargetRegisterInfo :: isVirtualRegister ( RegNo ) ) { OutStreamer -> AddComment ( Twine ( ) + getVirtualRegisterName ( RegNo ) ) ; } else { const Subtarget & STI = MI -> getMF ( ) -> getSubtarget < Subtarget > ( ) ; OutStreamer -> AddComment ( Twine ( ) + STI . getRegisterInfo ( ) -> getName ( RegNo ) ) ; }" LLVM,NVPTX,366,"Predict the next statement of this code snippet: void AsmPrinter :: EmitInstruction ( const MachineInstr * MI ) { MCInst Inst ; lowerToMCInst ( MI , Inst ) ;" LLVM,NVPTX,367,"Predict the next statement of this code snippet: if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntOrPtrTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ;" LLVM,NVPTX,368,"Predict the next statement of this code snippet: } if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntOrPtrTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ; } O << ;" LLVM,NVPTX,369,"Predict the next statement of this code snippet: Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) { Ret = ( << ) ; } else if ( RC == & ) {" LLVM,NVPTX,370,"Predict the next statement of this code snippet: PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) . getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : LLVM_FALLTHROUGH ; case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; case Instruction :: IntToPtr : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , DL . getIntPtrType ( CV -> getType ( ) ) , false ) ; return lowerConstantForGV ( Op , ProcessingGeneric ) ; } case Instruction :: PtrToInt : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = lowerConstantForGV ( Op , ProcessingGeneric ) ; if ( DL . getTypeAllocSize ( Ty ) == DL . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = DL . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: createAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : { const MCExpr * LHS = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; const MCExpr * RHS = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; switch ( CE -> getOpcode ( ) ) {" LLVM,NVPTX,371,"Predict the next statement of this code snippet: } } const ConstantExpr * CE = dyn_cast < ConstantExpr > ( CV ) ; if ( ! CE ) { llvm_unreachable ( ) ; } switch ( CE -> getOpcode ( ) ) { default : if ( Constant * C = ConstantFoldConstant ( CE , getDataLayout ( ) ) ) if ( C && C != CE ) return lowerConstantForGV ( C , ProcessingGeneric ) ; { std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) . getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) . getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : LLVM_FALLTHROUGH ; case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; case Instruction :: IntToPtr : {" LLVM,NVPTX,372,"Predict the next statement of this code snippet: for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . Mang -> getSymbol ( GVar ) ; O << * Name ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( v ) ) { O << * ( Cexpr , AP ) ; } else llvm_unreachable ( ) ;" LLVM,NVPTX,373,"Predict the next statement of this code snippet: for ( unsigned i = ; i < size ; i ++ ) { if ( i ) O << ; O << ( unsigned int ) buffer [ i ] ; } } else { unsigned int pos = ; unsigned int nSym = ; unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( AP . nvptxSubtarget . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . Mang -> getSymbol ( GVar ) ; O << * Name ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( v ) ) { O << * ( Cexpr , AP ) ; } else llvm_unreachable ( ) ; nSym ++ ;" LLVM,NVPTX,374,"Predict the next statement of this code snippet: bool Result = AsmPrinter :: runOnMachineFunction ( F ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,375,"Predict the next statement of this code snippet: bool AsmPrinter :: runOnMachineFunction ( MachineFunction & F ) { bool Result = AsmPrinter :: runOnMachineFunction ( F ) ;" LLVM,NVPTX,376,"Predict the next statement of this code snippet: if ( GlobalVariable * GV = dyn_cast < GlobalVariable > ( V ) ) Globals . insert ( GV ) ; else { if ( User * U = dyn_cast < User > ( V ) ) { for ( unsigned i = , e = U -> getNumOperands ( ) ; i != e ; ++ i ) {" LLVM,NVPTX,377,"Predict the next statement of this code snippet: MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( OutContext , * TM . getDataLayout ( ) ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; SmallString < > Str2 ; raw_svector_ostream OS2 ( Str2 ) ; emitDeclarations ( M , OS2 ) ; SmallVector < GlobalVariable * , > Globals ; DenseSet < GlobalVariable * > GVVisited ; DenseSet < GlobalVariable * > GVVisiting ;" LLVM,NVPTX,378,"Predict the next statement of this code snippet: const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST_NOT_GEN : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : case llvm :: ADDRESS_SPACE_CONST : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << << getPTXFundamentalTypeStr ( Ty ) << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( ETy ) ; unsigned sz = TD -> getTypeAllocSize ( ETy ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ;" LLVM,NVPTX,379,"Predict the next statement of this code snippet: O << ; unsigned PTXVersion = nvptxSubtarget . getPTXVersion ( ) ; O << << ( PTXVersion / ) << << ( PTXVersion % ) << ; O << ; O << nvptxSubtarget . getTargetName ( ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) O << ; if ( nvptxSubtarget . getDrvInterface ( ) == ) { if ( ! nvptxSubtarget . hasDouble ( ) ) O << ; } if ( MAI -> doesSupportDebugInformation ( ) ) O << ; O << ; O << ; if ( nvptxSubtarget . is64Bit ( ) ) O << ; else O << ; O << ;" LLVM,NVPTX,380,"Predict the next statement of this code snippet: O << ; O << ; O << ; O << ; unsigned PTXVersion = nvptxSubtarget . getPTXVersion ( ) ; O << << ( PTXVersion / ) << << ( PTXVersion % ) << ; O << ; O << nvptxSubtarget . getTargetName ( ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) O << ; if ( nvptxSubtarget . getDrvInterface ( ) == ) { if ( ! nvptxSubtarget . hasDouble ( ) ) O << ; } if ( MAI -> doesSupportDebugInformation ( ) ) O << ; O << ; O << ; if ( nvptxSubtarget . is64Bit ( ) ) O << ; else O << ;" LLVM,NVPTX,381,"Predict the next statement of this code snippet: if ( STy ) { unsigned int alignStruct = ; for ( unsigned i = , e = STy -> getNumElements ( ) ; i != e ; i ++ ) { Type * ETy = STy -> getElementType ( i ) ; unsigned int align = getOpenCLAlignment ( TD , ETy ) ; if ( align > alignStruct ) alignStruct = align ; } return alignStruct ; } const FunctionType * FTy = dyn_cast < FunctionType > ( Ty ) ; if ( FTy ) return TD -> getPointerPrefAlignment ( ) ; return TD -> getPrefTypeAlignment ( Ty ) ;" LLVM,NVPTX,382,"Predict the next statement of this code snippet: if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: CreateAdd ( Base , MCConstantExpr :: Create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return LowerConstant ( CE -> getOperand ( ) , AP ) ; case Instruction :: IntToPtr : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , TD . getIntPtrType ( CV -> getContext ( ) ) , false ) ; return LowerConstant ( Op , AP ) ; } case Instruction :: PtrToInt : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = LowerConstant ( Op , AP ) ; if ( TD . getTypeAllocSize ( Ty ) == TD . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = TD . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: Create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: CreateAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : case Instruction :: Sub : case Instruction :: Mul : case Instruction :: SDiv : case Instruction :: SRem : case Instruction :: Shl : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : { const MCExpr * LHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; const MCExpr * RHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; switch ( CE -> getOpcode ( ) ) { default : llvm_unreachable ( ) ; case Instruction :: Add : return MCBinaryExpr :: CreateAdd ( LHS , RHS , Ctx ) ; case Instruction :: Sub : return MCBinaryExpr :: CreateSub ( LHS , RHS , Ctx ) ; case Instruction :: Mul : return MCBinaryExpr :: CreateMul ( LHS , RHS , Ctx ) ; case Instruction :: SDiv : return MCBinaryExpr :: CreateDiv ( LHS , RHS , Ctx ) ;" LLVM,NVPTX,383,"Predict the next statement of this code snippet: if ( ! nvptxSubtarget . hasGenericLdSt ( ) ) O << ; break ; default : llvm_unreachable ( ) ; } } else if ( ! strcmp ( Modifier , ) ) { if ( Imm == :: Signed ) O << ; else if ( Imm == :: Unsigned ) O << ; else O << ; } else if ( ! strcmp ( Modifier , ) ) { if ( Imm == :: V2 ) O << ;" LLVM,NVPTX,384,"Predict the next statement of this code snippet: Visiting . insert ( GV ) ; DenseSet < GlobalVariable * > Others ; for ( unsigned i = , e = GV -> getNumOperands ( ) ; i != e ; ++ i ) DiscoverDependentGlobals ( GV -> getOperand ( i ) , Others ) ; for ( DenseSet < GlobalVariable * > :: iterator I = Others . begin ( ) , E = Others . end ( ) ; I != E ; ++ I ) VisitGlobalVariableForEmission ( * I , Order , Visited , Visiting ) ; Order . push_back ( GV ) ;" LLVM,NVPTX,385,"Predict the next statement of this code snippet: void AsmPrinter :: EmitFunctionBodyStart ( ) { VRegMapping . clear ( ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ; setAndEmitFunctionVirtualRegisters ( * MF ) ;" LLVM,NVPTX,386,"Predict the next statement of this code snippet: void AsmPrinter :: EmitFunctionBodyStart ( ) { VRegMapping . clear ( ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ; setAndEmitFunctionVirtualRegisters ( * MF ) ;" LLVM,NVPTX,387,"Predict the next statement of this code snippet: } MRI = & MF -> getRegInfo ( ) ; F = & MF -> getFunction ( ) ; emitLinkageDirective ( F , O ) ; if ( isKernelFunction ( * F ) ) O << ; else { O << ; printReturnValStr ( * MF , O ) ; } CurrentFnSym -> print ( O , MAI ) ; emitFunctionParamList ( * MF , O ) ; if ( isKernelFunction ( * F ) ) emitKernelFunctionDirectives ( * F , O ) ; OutStreamer -> EmitRawText ( O . str ( ) ) ;" LLVM,NVPTX,388,"Predict the next statement of this code snippet: O << STI . getTargetName ( ) ; const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ; if ( NTM . getDrvInterface ( ) == ) O << ; if ( MAI -> doesSupportDebugInformation ( ) ) O << ;" LLVM,NVPTX,389,"Predict the next statement of this code snippet: if ( localDecls . find ( f ) == localDecls . end ( ) ) return ; std :: vector < const GlobalVariable * > & gvars = localDecls [ f ] ; const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ; const Subtarget & STI = * static_cast < const Subtarget * > ( NTM . getSubtargetImpl ( ) ) ; for ( const GlobalVariable * GV : gvars ) { O << ; printModuleLevelGV ( GV , O , true , STI ) ; }" LLVM,NVPTX,390,"Predict the next statement of this code snippet: const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ;" LLVM,NVPTX,391,"Predict the next statement of this code snippet: void AsmPrinter :: emitGlobals ( const Module & M ) { SmallString < > Str2 ; raw_svector_ostream OS2 ( Str2 ) ; emitDeclarations ( M , OS2 ) ; SmallVector < const GlobalVariable * , > Globals ; DenseSet < const GlobalVariable * > GVVisited ; DenseSet < const GlobalVariable * > GVVisiting ;" LLVM,NVPTX,392,"Predict the next statement of this code snippet: emitPTXAddressSpace ( GVar -> getType ( ) -> getAddressSpace ( ) , O ) ; if ( isManaged ( * GVar ) ) { if ( STI . getPTXVersion ( ) < || STI . getSmVersion ( ) < ) { report_fatal_error ( ) ; } O << ; } if ( MaybeAlign A = GVar -> getAlign ( ) ) O << << A -> value ( ) ; else O << << ( int ) DL . getPrefTypeAlignment ( ETy ) ; if ( ETy -> isIntegerTy ( ) ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; return ; } if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntOrPtrTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: FixedVectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ;" LLVM,NVPTX,393,"Predict the next statement of this code snippet: const DataLayout & DL = getDataLayout ( ) ; Type * ETy = GVar -> getValueType ( ) ; O << ; emitPTXAddressSpace ( GVar -> getType ( ) -> getAddressSpace ( ) , O ) ; if ( isManaged ( * GVar ) ) { if ( STI . getPTXVersion ( ) < || STI . getSmVersion ( ) < ) { report_fatal_error ( ) ; } O << ; } if ( MaybeAlign A = GVar -> getAlign ( ) ) O << << A -> value ( ) ; else O << << ( int ) DL . getPrefTypeAlignment ( ETy ) ; if ( ETy -> isIntegerTy ( ) ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; return ; } if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntOrPtrTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: FixedVectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ;" LLVM,NVPTX,394,"Predict the next statement of this code snippet: const MCSymbol * AsmPrinter :: getFunctionFrameSymbol ( int ) const { SmallString < > Str ; raw_svector_ostream ( Str ) << DEPOTNAME << getFunctionNumber ( ) ; return OutContext . getOrCreateSymbol ( Str ) ;" LLVM,NVPTX,395,"Predict the next statement of this code snippet: int i , n = global_list . size ( ) ; GlobalVariable * * gv_array = new GlobalVariable * [ n ] ; i = ; for ( Module :: global_iterator I = global_list . begin ( ) , E = global_list . end ( ) ; I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ; if ( HasDebugInfo ) { static_cast < TargetStreamer * > ( OutStreamer -> getTargetStreamer ( ) ) -> closeLastSection ( ) ; OutStreamer -> EmitRawText ( ) ; } static_cast < TargetStreamer * > ( OutStreamer -> getTargetStreamer ( ) ) -> outputDwarfFileDirectives ( ) ; return ret ;" LLVM,NVPTX,396,"Predict the next statement of this code snippet: for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ; if ( HasDebugInfo ) { static_cast < TargetStreamer * > ( OutStreamer -> getTargetStreamer ( ) ) -> closeLastSection ( ) ; OutStreamer -> EmitRawText ( ) ; } static_cast < TargetStreamer * > ( OutStreamer -> getTargetStreamer ( ) ) -> outputDwarfFileDirectives ( ) ;" LLVM,NVPTX,397,"Predict the next statement of this code snippet: AsmPrinter :: EmitBasicBlockStart ( MBB ) ; if ( isLoopHeaderOfNoUnroll ( MBB ) ) OutStreamer -> EmitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,398,"Predict the next statement of this code snippet: DenseMap < const Function * , bool > seenMap ; for ( Module :: const_iterator FI = M . begin ( ) , FE = M . end ( ) ; FI != FE ; ++ FI ) { const Function * F = & * FI ; if ( F -> getAttributes ( ) . hasFnAttribute ( ) ) { emitDeclaration ( F , O ) ; continue ; } if ( F -> isDeclaration ( ) ) { if ( F -> use_empty ( ) ) continue ; if ( F -> getIntrinsicID ( ) ) continue ; emitDeclaration ( F , O ) ; continue ; }" LLVM,NVPTX,399,"Predict the next statement of this code snippet: continue ; } for ( const User * U : F -> users ( ) ) { if ( const Constant * C = dyn_cast < Constant > ( U ) ) { if ( usedInGlobalVarDef ( C ) ) { emitDeclaration ( F , O ) ; break ; } if ( useFuncSeen ( C , seenMap ) ) { emitDeclaration ( F , O ) ; break ; } } if ( ! isa < Instruction > ( U ) ) continue ; const Instruction * instr = cast < Instruction > ( U ) ; const BasicBlock * bb = instr -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ; if ( seenMap . find ( caller ) != seenMap . end ( ) ) { emitDeclaration ( F , O ) ; break ; }" LLVM,NVPTX,400,"Predict the next statement of this code snippet: CurrentFnSym -> print ( O , MAI ) ; emitFunctionParamList ( * MF , O ) ; if ( isKernelFunction ( * F ) ) emitKernelFunctionDirectives ( * F , O ) ; OutStreamer -> EmitRawText ( O . str ( ) ) ; VRegMapping . clear ( ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,401,"Predict the next statement of this code snippet: O << ; printReturnValStr ( * MF , O ) ; } CurrentFnSym -> print ( O , MAI ) ; emitFunctionParamList ( * MF , O ) ; if ( isKernelFunction ( * F ) ) emitKernelFunctionDirectives ( * F , O ) ; OutStreamer -> EmitRawText ( O . str ( ) ) ; VRegMapping . clear ( ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ;" LLVM,NVPTX,402,"Predict the next statement of this code snippet: } O << << ( int ) getOpenCLAlignment ( DL , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { Align align = DL . getValueOrABITypeAlignment ( PAL . getParamAlignment ( paramIndex ) , ETy ) ; if ( ! isKernelFunc && align < Align ( ) ) align = Align ( ) ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align . value ( ) << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; printParamName ( I , paramIndex , O ) ; if ( j < je - ) O << ; ++ paramIndex ; } if ( i < e - ) O << ; }" LLVM,NVPTX,403,"Predict the next statement of this code snippet: void AsmPrinter :: setAndEmitFunctionVirtualRegisters ( const MachineFunction & MF ) { SmallString < > Str ; raw_svector_ostream O ( Str ) ; const TargetRegisterInfo * TRI = MF . getSubtarget ( ) . getRegisterInfo ( ) ; const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; int NumBytes = ( int ) MFI . getStackSize ( ) ; if ( NumBytes ) { O << << MFI . getMaxAlignment ( ) << << DEPOTNAME << getFunctionNumber ( ) << << NumBytes << ; if ( static_cast < const TargetMachine & > ( MF . getTarget ( ) ) . is64Bit ( ) ) { O << ; O << ; } else { O << ; O << ; } } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = Register :: index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; int n = regmap . size ( ) ; regmap . insert ( std :: make_pair ( vr , n + ) ) ; } for ( unsigned i = ; i < TRI -> getNumRegClasses ( ) ; i ++ ) {" LLVM,NVPTX,404,"Predict the next statement of this code snippet: O << ; } } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = Register :: index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; int n = regmap . size ( ) ; regmap . insert ( std :: make_pair ( vr , n + ) ) ; } for ( unsigned i = ; i < TRI -> getNumRegClasses ( ) ; i ++ ) { const TargetRegisterClass * RC = TRI -> getRegClass ( i ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; std :: string rcname = getRegClassName ( RC ) ;" LLVM,NVPTX,405,"Predict the next statement of this code snippet: break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; case llvm :: ADDRESS_SPACE_CONST : if ( nvptxSubtarget . hasGenericLdSt ( ) ) O << ; else O << ; break ; case llvm :: ADDRESS_SPACE_CONST_NOT_GEN :" LLVM,NVPTX,406,"Predict the next statement of this code snippet: break ; case llvm :: ADDRESS_SPACE_CONST_NOT_GEN : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; default : report_fatal_error ( ) ; break ;" LLVM,NVPTX,407,"Predict the next statement of this code snippet: unsigned id = RC -> getID ( ) ; std :: map < unsigned , unsigned > & regmap = VRidGlobal2LocalMap [ id ] ; unsigned mapped_vr = regmap [ vr ] ; if ( ! isVec ) { O << getRegClassStr ( RC ) << mapped_vr ;" LLVM,NVPTX,408,"Predict the next statement of this code snippet: switch ( MI . getOpcode ( ) ) { default : return false ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,409,"Predict the next statement of this code snippet: } else { unsigned int pos = ; unsigned int nSym = ; unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( static_cast < const TargetMachine & > ( AP . TM ) . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; const Value * v0 = SymbolsBeforeStripping [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . getSymbol ( GVar ) ; PointerType * PTy = dyn_cast < PointerType > ( v0 -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ;" LLVM,NVPTX,410,"Predict the next statement of this code snippet: } } else { unsigned int pos = ; unsigned int nSym = ; unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( static_cast < const TargetMachine & > ( AP . TM ) . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; const Value * v0 = SymbolsBeforeStripping [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . getSymbol ( GVar ) ; PointerType * PTy = dyn_cast < PointerType > ( v0 -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; O << * Name ; O << ;" LLVM,NVPTX,411,"Predict the next statement of this code snippet: GlobalsEmitted = true ; } bool ret = AsmPrinter :: doFinalization ( M ) ; clearAnnotationCache ( & M ) ; if ( auto * TS = static_cast < TargetStreamer * > ( OutStreamer -> getTargetStreamer ( ) ) ) { if ( HasDebugInfo ) { TS -> closeLastSection ( ) ; OutStreamer -> emitRawText ( ) ; }" LLVM,NVPTX,412,"Predict the next statement of this code snippet: const Subtarget & STI = TM . getSubtarget < Subtarget > ( * F ) ; const auto * TLI = cast < TargetLowering > ( STI . getTargetLowering ( ) ) ; Function :: const_arg_iterator I , E ; unsigned paramIndex = ; bool first = true ; bool isKernelFunc = isKernelFunction ( * F ) ; bool isABI = ( STI . getSmVersion ( ) >= ) ; bool hasImageHandles = STI . hasImageHandles ( ) ; MVT thePointerTy = TLI -> getPointerTy ( DL ) ; if ( F -> arg_empty ( ) ) { O << ; return ; } O << ; for ( I = F -> arg_begin ( ) , E = F -> arg_end ( ) ; I != E ; ++ I , paramIndex ++ ) { Type * Ty = I -> getType ( ) ; if ( ! first ) O << ; first = false ; if ( isKernelFunction ( * F ) ) { if ( isSampler ( * I ) || isImage ( * I ) ) { if ( isImage ( * I ) ) { std :: string sname = std :: string ( I -> getName ( ) ) ; if ( isImageWriteOnly ( * I ) || isImageReadWrite ( * I ) ) { if ( hasImageHandles ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } else { if ( hasImageHandles ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } } else { if ( hasImageHandles ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } continue ; } } auto getOptimalAlignForParam = [ TLI , & DL , & PAL , F , paramIndex ] ( Type * Ty ) -> Align { Align TypeAlign = TLI -> getFunctionParamOptimizedAlign ( F , Ty , DL ) ; MaybeAlign ParamAlign = PAL . getParamAlignment ( paramIndex ) ; return max ( TypeAlign , ParamAlign ) ; } ; if ( ! PAL . hasParamAttr ( paramIndex , Attribute :: ByVal ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) {" LLVM,NVPTX,413,"Predict the next statement of this code snippet: getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; return ; } if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntOrPtrTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: FixedVectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ; } O << ; break ; default : llvm_unreachable ( ) ; }" LLVM,NVPTX,414,"Predict the next statement of this code snippet: } else { unsigned int pos = ; unsigned int nSym = ; unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( AP . nvptxSubtarget . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . getSymbol ( GVar ) ; O << * Name ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( v ) ) { O << * ( Cexpr , AP ) ;" LLVM,NVPTX,415,"Predict the next statement of this code snippet: bool isABI = ( STI . getSmVersion ( ) >= ) ; if ( Ty -> getTypeID ( ) == Type :: VoidTyID ) return ; O << ; if ( isABI ) { if ( Ty -> isFloatingPointTy ( ) || ( Ty -> isIntegerTy ( ) && ! Ty -> isIntegerTy ( ) ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( Ty ) ) { size = ITy -> getBitWidth ( ) ; } else { assert ( Ty -> isFloatingPointTy ( ) && ) ; size = Ty -> getPrimitiveSizeInBits ( ) ; } if ( size < ) size = ; O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( DL ) . getSizeInBits ( ) << ; } else if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned totalsz = DL . getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! getAlign ( * F , , retAlignment ) ) retAlignment = TLI -> getFunctionParamOptimizedAlign ( F , Ty , DL ) . value ( ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ;" LLVM,NVPTX,416,"Predict the next statement of this code snippet: } else if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned totalsz = DL . getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! getAlign ( * F , , retAlignment ) ) retAlignment = TLI -> getFunctionParamOptimizedAlign ( F , Ty , DL ) . value ( ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << << idx ; if ( j < je - ) O << ;" LLVM,NVPTX,417,"Predict the next statement of this code snippet: getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; } else { getSymbol ( GVar ) -> print ( O , MAI ) ; } return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( true ) ; PointerType * PTy = dyn_cast < PointerType > ( Cexpr -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; } else { getSymbol ( GVar ) -> print ( O , MAI ) ;" LLVM,NVPTX,418,"Predict the next statement of this code snippet: O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isSingleValueType ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << * getSymbol ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ;" LLVM,NVPTX,419,"Predict the next statement of this code snippet: if ( Cexpr -> getOpcode ( ) == Instruction :: PtrToInt ) { Value * v = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr -> getOperand ( ) ) ; aggBuffer -> addZeros ( ) ; break ; } } llvm_unreachable ( ) ; } else llvm_unreachable ( ) ; break ; } case Type :: HalfTyID : case Type :: FloatTyID : case Type :: DoubleTyID : { const auto * CFP = cast < ConstantFP > ( CPV ) ; Type * Ty = CFP -> getType ( ) ; if ( Ty == Type :: getHalfTy ( CPV -> getContext ( ) ) ) { APInt API = CFP -> getValueAPF ( ) . bitcastToAPInt ( ) ; uint16_t float16 = API . getLoBits ( ) . getZExtValue ( ) ; ConvertIntToBytes < > ( ptr , float16 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ConvertFloatToBytes ( ptr , float32 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) { double float64 = CFP -> getValueAPF ( ) . convertToDouble ( ) ; ConvertDoubleToBytes ( ptr , float64 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else { llvm_unreachable ( ) ; } break ; } case Type :: PointerTyID : { if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { aggBuffer -> addSymbol ( GVar , GVar ) ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr ) ;" LLVM,NVPTX,420,"Predict the next statement of this code snippet: if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { Align align = DL . getValueOrABITypeAlignment ( PAL . getParamAlignment ( paramIndex ) , ETy ) ; if ( ! isKernelFunc && align < Align ( ) ) align = Align ( ) ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align . value ( ) << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; printParamName ( I , paramIndex , O ) ;" LLVM,NVPTX,421,"Predict the next statement of this code snippet: auto * STy = dyn_cast < StructType > ( Ty ) ; if ( STy ) { unsigned int alignStruct = ; for ( unsigned i = , e = STy -> getNumElements ( ) ; i != e ; i ++ ) { Type * ETy = STy -> getElementType ( i ) ; unsigned int align = getOpenCLAlignment ( DL , ETy ) ; if ( align > alignStruct ) alignStruct = align ; } return alignStruct ; } auto * FTy = dyn_cast < FunctionType > ( Ty ) ;" LLVM,NVPTX,422,"Predict the next statement of this code snippet: const MCSymbolRefExpr * Expr = MCSymbolRefExpr :: create ( getSymbol ( GV ) , Ctx ) ; if ( ProcessingGeneric ) { return GenericMCSymbolRefExpr :: create ( Expr , Ctx ) ; } else { return Expr ; } } const ConstantExpr * CE = dyn_cast < ConstantExpr > ( CV ) ; if ( ! CE ) { llvm_unreachable ( ) ; } switch ( CE -> getOpcode ( ) ) { default : { Constant * C = ConstantFoldConstant ( CE , getDataLayout ( ) ) ; if ( C != CE ) return lowerConstantForGV ( C , ProcessingGeneric ) ; std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) . getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) . getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : LLVM_FALLTHROUGH ; case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; case Instruction :: IntToPtr : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , DL . getIntPtrType ( CV -> getType ( ) ) , false ) ; return lowerConstantForGV ( Op , ProcessingGeneric ) ; } case Instruction :: PtrToInt : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ;" LLVM,NVPTX,423,"Predict the next statement of this code snippet: std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) . getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) . getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; }" LLVM,NVPTX,424,"Predict the next statement of this code snippet: report_fatal_error ( ) ; return true ; } if ( ! isEmptyXXStructor ( M . getNamedGlobal ( ) ) ) { report_fatal_error ( ) ; return true ; } SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; bool Result = AsmPrinter :: doInitialization ( M ) ; emitHeader ( M , OS1 , * STI ) ;" LLVM,NVPTX,425,"Predict the next statement of this code snippet: if ( ! curLoc ) return ; DIScope Scope ( curLoc . getScope ( ) ) ; assert ( ( ! Scope || Scope . isScope ( ) ) && ) ; if ( ! Scope ) return ; StringRef fileName ( Scope . getFilename ( ) ) ; StringRef dirName ( Scope . getDirectory ( ) ) ; SmallString < > FullPathName = dirName ; if ( ! dirName . empty ( ) && ! sys :: path :: is_absolute ( fileName ) ) { sys :: path :: append ( FullPathName , fileName ) ; fileName = FullPathName ; }" LLVM,NVPTX,426,"Predict the next statement of this code snippet: IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; O << * Name ; O << ; } else { O << * Name ; } } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( v ) ) { O << * ( Cexpr , AP ) ; } else llvm_unreachable ( ) ; nSym ++ ; if ( nSym >= numSymbols ) nextSymbolPos = size + ; else nextSymbolPos = symbolPosInBuffer [ nSym ] ; } else if ( nBytes == ) O << * ( unsigned int * ) ( & buffer [ pos ] ) ; else O << * ( unsigned long long * ) ( & buffer [ pos ] ) ; } }" LLVM,NVPTX,427,"Predict the next statement of this code snippet: Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename ] = i ; OutStreamer . EmitDwarfFileDirective ( i , , Filename ) ; ++ i ; } for ( DISubprogram SP : DbgFinder . subprograms ( ) ) { StringRef Filename ( SP . getFilename ( ) ) ; StringRef Dirname ( SP . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename ] = i ;" LLVM,NVPTX,428,"Predict the next statement of this code snippet: StringRef Dirname ( DIUnit . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename ] = i ; OutStreamer . EmitDwarfFileDirective ( i , , Filename ) ; ++ i ; } for ( DISubprogram SP : DbgFinder . subprograms ( ) ) { StringRef Filename ( SP . getFilename ( ) ) ; StringRef Dirname ( SP . getDirectory ( ) ) ; SmallString < > FullPathName = Dirname ;" LLVM,NVPTX,429,"Predict the next statement of this code snippet: continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( ETy ) ; unsigned sz = TD -> getTypeAllocSize ( ETy ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; printParamName ( I , paramIndex , O ) ; if ( j < je - ) O << ; ++ paramIndex ; } if ( i < e - ) O << ; } -- paramIndex ;" LLVM,NVPTX,430,"Predict the next statement of this code snippet: switch ( CE -> getOpcode ( ) ) { default : if ( Constant * C = ConstantFoldConstantExpression ( CE , AP . TM . getDataLayout ( ) ) ) if ( C != CE ) return LowerConstant ( C , AP ) ; { std :: string S ; raw_string_ostream OS ( S ) ; OS << ; WriteAsOperand ( OS , CE , false , ! AP . MF ? : AP . MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; const Constant * PtrVal = CE -> getOperand ( ) ; SmallVector < Value * , > IdxVec ( CE -> op_begin ( ) + , CE -> op_end ( ) ) ; int64_t Offset = TD . getIndexedOffset ( PtrVal -> getType ( ) , IdxVec ) ; const MCExpr * Base = LowerConstant ( CE -> getOperand ( ) , AP ) ; if ( Offset == ) return Base ; if ( TD . getPointerSizeInBits ( ) != ) { int SExtAmount = - TD . getPointerSizeInBits ( ) ; Offset = ( Offset << SExtAmount ) >> SExtAmount ; } return MCBinaryExpr :: CreateAdd ( Base , MCConstantExpr :: Create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return LowerConstant ( CE -> getOperand ( ) , AP ) ; case Instruction :: IntToPtr : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , TD . getIntPtrType ( CV -> getContext ( ) ) , false ) ; return LowerConstant ( Op , AP ) ; } case Instruction :: PtrToInt : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ;" LLVM,NVPTX,431,"Predict the next statement of this code snippet: default : O << ; break ; case ADDRESS_SPACE_CONST : O << ; break ; case ADDRESS_SPACE_SHARED : O << ; break ; case ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( DL , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { unsigned align = PAL . getParamAlignment ( paramIndex ) ; if ( align == ) align = DL . getABITypeAlignment ( ETy ) ; if ( ! isKernelFunc && align < ) align = ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ;" LLVM,NVPTX,432,"Predict the next statement of this code snippet: const MachineOperand & MO = MI -> getOperand ( opNum ) ; switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : if ( TargetRegisterInfo :: isPhysicalRegister ( MO . getReg ( ) ) ) { if ( MO . getReg ( ) == ) O << DEPOTNAME << getFunctionNumber ( ) ; else O << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; } else { emitVirtualRegister ( MO . getReg ( ) , O ) ; } break ; case MachineOperand :: MO_Immediate : O << MO . getImm ( ) ; break ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : PrintSymbolOperand ( MO , O ) ; break ;" LLVM,NVPTX,433,"Predict the next statement of this code snippet: aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { if ( const ConstantInt * constInt = dyn_cast < ConstantInt > ( ConstantFoldConstantExpression ( Cexpr , DL ) ) ) { int int32 = ( int ) ( constInt -> getZExtValue ( ) ) ; ConvertIntToBytes < > ( ptr , int32 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } if ( Cexpr -> getOpcode ( ) == Instruction :: PtrToInt ) { Value * v = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr -> getOperand ( ) ) ; aggBuffer -> addZeros ( ) ; break ; } } llvm_unreachable ( ) ; } else if ( ETy == Type :: getInt64Ty ( CPV -> getContext ( ) ) ) { if ( const ConstantInt * constInt = dyn_cast < ConstantInt > ( CPV ) ) { long long int64 = ( long long ) ( constInt -> getZExtValue ( ) ) ; ConvertIntToBytes < > ( ptr , int64 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { if ( const ConstantInt * constInt = dyn_cast < ConstantInt > ( ConstantFoldConstantExpression ( Cexpr , DL ) ) ) { long long int64 = ( long long ) ( constInt -> getZExtValue ( ) ) ; ConvertIntToBytes < > ( ptr , int64 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; break ; } if ( Cexpr -> getOpcode ( ) == Instruction :: PtrToInt ) { Value * v = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr -> getOperand ( ) ) ; aggBuffer -> addZeros ( ) ; break ; } } llvm_unreachable ( ) ; } else llvm_unreachable ( ) ; break ; } case Type :: FloatTyID : case Type :: DoubleTyID : { const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ; Type * Ty = CFP -> getType ( ) ; if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ConvertFloatToBytes ( ptr , float32 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) { double float64 = CFP -> getValueAPF ( ) . convertToDouble ( ) ;" LLVM,NVPTX,434,"Predict the next statement of this code snippet: if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer -> AddComment ( ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> AddComment ( ) ; OutStreamer -> AddBlankLine ( ) ; } if ( TM . getTargetTriple ( ) . getOS ( ) != Triple :: NVCL ) recordAndEmitFilenames ( M ) ; GlobalsEmitted = false ; return false ;" LLVM,NVPTX,435,"Predict the next statement of this code snippet: OutStreamer . AddBlankLine ( ) ; OutStreamer . EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; } if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; GlobalsEmitted = false ;" LLVM,NVPTX,436,"Predict the next statement of this code snippet: MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( & TM ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ;" LLVM,NVPTX,437,"Predict the next statement of this code snippet: if ( ETy -> isPrimitiveType ( ) || ETy -> isIntegerTy ( ) || isa < PointerType > ( ETy ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID :" LLVM,NVPTX,438,"Predict the next statement of this code snippet: const MCExpr * Base = LowerConstant ( CE -> getOperand ( ) , AP ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: CreateAdd ( Base , MCConstantExpr :: Create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return LowerConstant ( CE -> getOperand ( ) , AP ) ; case Instruction :: IntToPtr : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , TD . getIntPtrType ( CV -> getContext ( ) ) , false ) ; return LowerConstant ( Op , AP ) ; } case Instruction :: PtrToInt : { const DataLayout & TD = * AP . TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = LowerConstant ( Op , AP ) ; if ( TD . getTypeAllocSize ( Ty ) == TD . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = TD . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: Create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: CreateAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : case Instruction :: Sub : case Instruction :: Mul : case Instruction :: SDiv : case Instruction :: SRem : case Instruction :: Shl : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : { const MCExpr * LHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; const MCExpr * RHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; switch ( CE -> getOpcode ( ) ) { default : llvm_unreachable ( ) ; case Instruction :: Add : return MCBinaryExpr :: CreateAdd ( LHS , RHS , Ctx ) ; case Instruction :: Sub : return MCBinaryExpr :: CreateSub ( LHS , RHS , Ctx ) ; case Instruction :: Mul : return MCBinaryExpr :: CreateMul ( LHS , RHS , Ctx ) ; case Instruction :: SDiv : return MCBinaryExpr :: CreateDiv ( LHS , RHS , Ctx ) ; case Instruction :: SRem : return MCBinaryExpr :: CreateMod ( LHS , RHS , Ctx ) ; case Instruction :: Shl : return MCBinaryExpr :: CreateShl ( LHS , RHS , Ctx ) ; case Instruction :: And : return MCBinaryExpr :: CreateAnd ( LHS , RHS , Ctx ) ;" LLVM,NVPTX,439,"Predict the next statement of this code snippet: void AsmPrinter :: printOperand ( const MachineInstr * MI , int opNum , raw_ostream & O , const char * Modifier ) { const MachineOperand & MO = MI -> getOperand ( opNum ) ; switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : if ( TargetRegisterInfo :: isPhysicalRegister ( MO . getReg ( ) ) ) { if ( MO . getReg ( ) == ) O << DEPOTNAME << getFunctionNumber ( ) ; else O << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ; } else { emitVirtualRegister ( MO . getReg ( ) , O ) ; } return ; case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : O << * getSymbol ( MO . getGlobal ( ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : { const char * symbname = MO . getSymbolName ( ) ; if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; printParamName ( index , O ) ; } else if ( strstr ( symbname , ) == symbname ) { unsigned index ;" LLVM,NVPTX,440,"Predict the next statement of this code snippet: if ( const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ) { printFPConstant ( CFP , O ) ; return ; } if ( isa < ConstantPointerNull > ( CPV ) ) { O << ; return ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { O << * getSymbol ( GVar ) ; return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { O << * getSymbol ( GVar ) ; return ; } else { O << * LowerConstant ( CPV , * this ) ; return ; } } llvm_unreachable ( ) ;" LLVM,NVPTX,441,"Predict the next statement of this code snippet: } if ( ! isEmptyXXStructor ( M . getNamedGlobal ( ) ) ) { report_fatal_error ( ) ; return true ; } if ( ! isEmptyXXStructor ( M . getNamedGlobal ( ) ) ) { report_fatal_error ( ) ; return true ; } SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( ) ; emitHeader ( M , OS1 , STI ) ;" LLVM,NVPTX,442,"Predict the next statement of this code snippet: O << << paramIndex ; } continue ; } } if ( ! PAL . hasAttribute ( paramIndex + , Attribute :: ByVal ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( static_cast < TargetMachine & > ( TM ) . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( DL , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ;" LLVM,NVPTX,443,"Predict the next statement of this code snippet: break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( DL , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; printParamName ( I , paramIndex , O ) ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI || isKernelFunc ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = DL . getABITypeAlignment ( ETy ) ; if ( ! isKernelFunc && align < ) align = ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; printParamName ( I , paramIndex , O ) ; if ( j < je - ) O << ; ++ paramIndex ; } if ( i < e - ) O << ; } -- paramIndex ;" LLVM,NVPTX,444,"Predict the next statement of this code snippet: return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ; } O << ; break ; default : llvm_unreachable ( ) ; } return ;" LLVM,NVPTX,445,"Predict the next statement of this code snippet: if ( GVar -> getAlignment ( ) == ) O << << ( int ) DL . getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ; } O << ; break ; default : llvm_unreachable ( ) ; } return ;" LLVM,NVPTX,446,"Predict the next statement of this code snippet: } case Instruction :: Trunc : case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; case Instruction :: IntToPtr : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , DL . getIntPtrType ( CV -> getType ( ) ) , false ) ; return lowerConstantForGV ( Op , ProcessingGeneric ) ; } case Instruction :: PtrToInt : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = lowerConstantForGV ( Op , ProcessingGeneric ) ; if ( DL . getTypeAllocSize ( Ty ) == DL . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = DL . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: createAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : { const MCExpr * LHS = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; const MCExpr * RHS = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; switch ( CE -> getOpcode ( ) ) { default : llvm_unreachable ( ) ; case Instruction :: Add : return MCBinaryExpr :: createAdd ( LHS , RHS , Ctx ) ; }" LLVM,NVPTX,447,"Predict the next statement of this code snippet: } switch ( CE -> getOpcode ( ) ) { default : if ( Constant * C = ConstantFoldConstant ( CE , getDataLayout ( ) ) ) if ( C && C != CE ) return lowerConstantForGV ( C , ProcessingGeneric ) ; { std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; case Instruction :: IntToPtr : { const DataLayout & DL = getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , DL . getIntPtrType ( CV -> getType ( ) ) , false ) ;" LLVM,NVPTX,448,"Predict the next statement of this code snippet: O << ; if ( isABI ) { if ( Ty -> isFloatingPointTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( Ty ) ) { size = ITy -> getBitWidth ( ) ; if ( size < ) size = ; } else { assert ( Ty -> isFloatingPointTy ( ) && ) ; size = Ty -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( DL ) . getSizeInBits ( ) << ; } else if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned totalsz = DL . getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = DL . getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ;" LLVM,NVPTX,449,"Predict the next statement of this code snippet: O << ; if ( isABI ) { if ( Ty -> isFloatingPointTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( Ty ) ) { size = ITy -> getBitWidth ( ) ; if ( size < ) size = ; } else { assert ( Ty -> isFloatingPointTy ( ) && ) ; size = Ty -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( DL ) . getSizeInBits ( ) << ; } else if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned totalsz = DL . getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = DL . getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << << idx ;" LLVM,NVPTX,450,"Predict the next statement of this code snippet: I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ;" LLVM,NVPTX,451,"Predict the next statement of this code snippet: Module :: GlobalListType & global_list = M . getGlobalList ( ) ; int i , n = global_list . size ( ) ; GlobalVariable * * gv_array = new GlobalVariable * [ n ] ; i = ; for ( Module :: global_iterator I = global_list . begin ( ) , E = global_list . end ( ) ; I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ;" LLVM,NVPTX,452,"Predict the next statement of this code snippet: const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ; int NumBytes = ( int ) MFI . getStackSize ( ) ; if ( NumBytes ) { O << << MFI . getMaxAlignment ( ) << << DEPOTNAME << getFunctionNumber ( ) << << NumBytes << ; if ( static_cast < const TargetMachine & > ( MF . getTarget ( ) ) . is64Bit ( ) ) { O << ; O << ; } else { O << ; O << ; } } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ;" LLVM,NVPTX,453,"Predict the next statement of this code snippet: if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ptr = ( unsigned char * ) & float32 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) { double float64 = CFP -> getValueAPF ( ) . convertToDouble ( ) ; ptr = ( unsigned char * ) & float64 ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else { llvm_unreachable ( ) ; } break ; } case Type :: PointerTyID : { if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { aggBuffer -> addSymbol ( GVar , GVar ) ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr ) ; } unsigned int s = TD -> getTypeAllocSize ( CPV -> getType ( ) ) ; aggBuffer -> addZeros ( s ) ; break ; } case Type :: ArrayTyID : case Type :: VectorTyID : case Type :: StructTyID : { if ( isa < ConstantArray > ( CPV ) || isa < ConstantVector > ( CPV ) || isa < ConstantStruct > ( CPV ) || isa < ConstantDataSequential > ( CPV ) ) { int ElementSize = TD -> getTypeAllocSize ( CPV -> getType ( ) ) ; bufferAggregateConstant ( CPV , aggBuffer ) ; if ( Bytes > ElementSize ) aggBuffer -> addZeros ( Bytes - ElementSize ) ; } else if ( isa < ConstantAggregateZero > ( CPV ) ) aggBuffer -> addZeros ( Bytes ) ; else llvm_unreachable ( ) ; break ; }" LLVM,NVPTX,454,"Predict the next statement of this code snippet: MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( TM . getDataLayout ( ) ) ; emitHeader ( M , OS1 , STI ) ; OutStreamer -> EmitRawText ( OS1 . str ( ) ) ;" LLVM,NVPTX,455,"Predict the next statement of this code snippet: if ( ! GlobalsEmitted ) { emitGlobals ( * MF -> getFunction ( ) -> getParent ( ) ) ; GlobalsEmitted = true ; } MRI = & MF -> getRegInfo ( ) ; F = MF -> getFunction ( ) ; emitLinkageDirective ( F , O ) ; if ( llvm :: isKernelFunction ( * F ) ) O << ; else { O << ;" LLVM,NVPTX,456,"Predict the next statement of this code snippet: O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ;" LLVM,NVPTX,457,"Predict the next statement of this code snippet: const DataLayout * TD = TM . getDataLayout ( ) ; const PointerType * PTy = GVar -> getType ( ) ; Type * ETy = PTy -> getElementType ( ) ; O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; } int64_t ElementSize = ;" LLVM,NVPTX,458,"Predict the next statement of this code snippet: if ( CPV -> getNumOperands ( ) ) for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , , aggBuffer ) ; return ; } if ( const ConstantDataSequential * CDS = dyn_cast < ConstantDataSequential > ( CPV ) ) { if ( CDS -> getNumElements ( ) ) for ( unsigned i = ; i < CDS -> getNumElements ( ) ; ++ i ) bufferLEByte ( cast < Constant > ( CDS -> getElementAsConstant ( i ) ) , , aggBuffer ) ; return ; } if ( isa < ConstantStruct > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) { StructType * ST = cast < StructType > ( CPV -> getType ( ) ) ; for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) { if ( i == ( e - ) ) Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( ) + TD -> getTypeAllocSize ( ST ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; else Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( i + ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , Bytes , aggBuffer ) ; } } return ;" LLVM,NVPTX,459,"Predict the next statement of this code snippet: MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( OutContext , * TM . getTargetData ( ) ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; SmallString < > Str2 ; raw_svector_ostream OS2 ( Str2 ) ; emitDeclarations ( M , OS2 ) ; for ( Module :: global_iterator I = M . global_begin ( ) , E = M . global_end ( ) ; I != E ; ++ I ) printModuleLevelGV ( I , OS2 ) ; OS2 << '\n' ; OutStreamer . EmitRawText ( OS2 . str ( ) ) ; return false ;" LLVM,NVPTX,460,"Predict the next statement of this code snippet: if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; SmallString < > Str2 ; raw_svector_ostream OS2 ( Str2 ) ; emitDeclarations ( M , OS2 ) ;" LLVM,NVPTX,461,"Predict the next statement of this code snippet: std :: string sname = I -> getName ( ) ; if ( llvm :: isImageWriteOnly ( * I ) ) O << << * CurrentFnSym << << paramIndex ; else O << << * CurrentFnSym << << paramIndex ; } else O << << * CurrentFnSym << << paramIndex ; continue ; } if ( PAL . paramHasAttr ( paramIndex + , Attribute :: ByVal ) == false ) { const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST_NOT_GEN : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : case llvm :: ADDRESS_SPACE_CONST : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << << getPTXFundamentalTypeStr ( Ty ) << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ;" LLVM,NVPTX,462,"Predict the next statement of this code snippet: std :: string sname = I -> getName ( ) ; if ( llvm :: isImageWriteOnly ( * I ) ) O << << * CurrentFnSym << << paramIndex ; else O << << * CurrentFnSym << << paramIndex ; } else O << << * CurrentFnSym << << paramIndex ; continue ; } if ( PAL . paramHasAttr ( paramIndex + , Attribute :: ByVal ) == false ) { const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST_NOT_GEN : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : case llvm :: ADDRESS_SPACE_CONST : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << << getPTXFundamentalTypeStr ( Ty ) << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ;" LLVM,NVPTX,463,"Predict the next statement of this code snippet: const TargetData * TD = TM . getTargetData ( ) ; const PointerType * PTy = GVar -> getType ( ) ; Type * ETy = PTy -> getElementType ( ) ; O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isPrimitiveType ( ) || ETy -> isIntegerTy ( ) || isa < PointerType > ( ETy ) ) {" LLVM,NVPTX,464,"Predict the next statement of this code snippet: const VectorType * VTy = dyn_cast < VectorType > ( Ty ) ; if ( VTy ) { Type * ETy = VTy -> getElementType ( ) ; unsigned int numE = VTy -> getNumElements ( ) ; unsigned int alignE = TD -> getPrefTypeAlignment ( ETy ) ; if ( numE == ) return * alignE ; else return numE * alignE ; } const StructType * STy = dyn_cast < StructType > ( Ty ) ; if ( STy ) { unsigned int alignStruct = ; for ( unsigned i = , e = STy -> getNumElements ( ) ; i != e ; i ++ ) { Type * ETy = STy -> getElementType ( i ) ; unsigned int align = getOpenCLAlignment ( TD , ETy ) ; if ( align > alignStruct ) alignStruct = align ; } return alignStruct ; } const FunctionType * FTy = dyn_cast < FunctionType > ( Ty ) ; if ( FTy ) return TD -> getPointerPrefAlignment ( ) ; return TD -> getPrefTypeAlignment ( Ty ) ;" LLVM,NVPTX,465,"Predict the next statement of this code snippet: else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( ) . getSizeInBits ( ) << ; } else { if ( ( Ty -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( Ty ) ) { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned totalsz = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; totalsz += sz / ; } } unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else assert ( false && ) ; } } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ;" LLVM,NVPTX,466,"Predict the next statement of this code snippet: EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; totalsz += sz / ; } } unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else assert ( false && ) ; } } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ;" LLVM,NVPTX,467,"Predict the next statement of this code snippet: Value * v = Cexpr -> getOperand ( ) -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr -> getOperand ( ) ) ; aggBuffer -> addZeros ( ) ; break ; } } llvm_unreachable ( ) ; } else llvm_unreachable ( ) ; break ; } case Type :: FloatTyID : case Type :: DoubleTyID : { const ConstantFP * CFP = dyn_cast < ConstantFP > ( CPV ) ; const Type * Ty = CFP -> getType ( ) ; if ( Ty == Type :: getFloatTy ( CPV -> getContext ( ) ) ) { float float32 = ( float ) CFP -> getValueAPF ( ) . convertToFloat ( ) ; ConvertFloatToBytes ( ptr , float32 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else if ( Ty == Type :: getDoubleTy ( CPV -> getContext ( ) ) ) { double float64 = CFP -> getValueAPF ( ) . convertToDouble ( ) ; ConvertDoubleToBytes ( ptr , float64 ) ; aggBuffer -> addBytes ( ptr , , Bytes ) ; } else { llvm_unreachable ( ) ; } break ; } case Type :: PointerTyID : { if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { aggBuffer -> addSymbol ( GVar , GVar ) ; } else if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; aggBuffer -> addSymbol ( v , Cexpr ) ; } unsigned int s = TD -> getTypeAllocSize ( CPV -> getType ( ) ) ; aggBuffer -> addZeros ( s ) ; break ; } case Type :: ArrayTyID : case Type :: VectorTyID : case Type :: StructTyID : { if ( isa < ConstantArray > ( CPV ) || isa < ConstantVector > ( CPV ) || isa < ConstantStruct > ( CPV ) || isa < ConstantDataSequential > ( CPV ) ) { int ElementSize = TD -> getTypeAllocSize ( CPV -> getType ( ) ) ; bufferAggregateConstant ( CPV , aggBuffer ) ; if ( Bytes > ElementSize ) aggBuffer -> addZeros ( Bytes - ElementSize ) ; } else if ( isa < ConstantAggregateZero > ( CPV ) ) aggBuffer -> addZeros ( Bytes ) ; else llvm_unreachable ( ) ; break ; }" LLVM,NVPTX,468,"Predict the next statement of this code snippet: if ( isImageWriteOnly ( * I ) || isImageReadWrite ( * I ) ) { if ( nvptxSubtarget -> hasImageHandles ( ) ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } else { if ( nvptxSubtarget -> hasImageHandles ( ) ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } } else { if ( nvptxSubtarget -> hasImageHandles ( ) ) O << ; else O << ; CurrentFnSym -> print ( O , MAI ) ; O << << paramIndex ; } continue ; } } if ( ! PAL . hasAttribute ( paramIndex + , Attribute :: ByVal ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( static_cast < TargetMachine & > ( TM ) . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ;" LLVM,NVPTX,469,"Predict the next statement of this code snippet: O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ;" LLVM,NVPTX,470,"Predict the next statement of this code snippet: return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; case Instruction :: IntToPtr : { const DataLayout & DL = * TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , DL . getIntPtrType ( CV -> getType ( ) ) , false ) ; return lowerConstantForGV ( Op , ProcessingGeneric ) ; } case Instruction :: PtrToInt : { const DataLayout & DL = * TM . getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = lowerConstantForGV ( Op , ProcessingGeneric ) ; if ( DL . getTypeAllocSize ( Ty ) == DL . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = DL . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: createAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : { const MCExpr * LHS = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ;" LLVM,NVPTX,471,"Predict the next statement of this code snippet: SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , DL , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << << idx ; if ( j < je - ) O << ;" LLVM,NVPTX,472,"Predict the next statement of this code snippet: const ConstantExpr * CE = dyn_cast < ConstantExpr > ( CV ) ; if ( ! CE ) { llvm_unreachable ( ) ; } switch ( CE -> getOpcode ( ) ) { default : if ( Constant * C = ConstantFoldConstant ( CE , getDataLayout ( ) ) ) if ( C && C != CE ) return lowerConstantForGV ( C , ProcessingGeneric ) ; { std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : LLVM_FALLTHROUGH ; case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; case Instruction :: IntToPtr : { const DataLayout & DL = getDataLayout ( ) ;" LLVM,NVPTX,473,"Predict the next statement of this code snippet: std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: createAdd ( Base , MCConstantExpr :: create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : LLVM_FALLTHROUGH ; case Instruction :: BitCast : return lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ;" LLVM,NVPTX,474,"Predict the next statement of this code snippet: return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : O << * Mang -> getSymbol ( MO . getGlobal ( ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : { const char * symbname = MO . getSymbolName ( ) ; if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; printParamName ( index , O ) ; } else if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; O << * CurrentFnSym << << index << ; } else O << symbname ; break ; }" LLVM,NVPTX,475,"Predict the next statement of this code snippet: emitVirtualRegister ( MO . getReg ( ) , O ) ; } return ; case MachineOperand :: MO_Immediate : if ( ! Modifier ) O << MO . getImm ( ) ; else if ( strstr ( Modifier , ) == Modifier ) printVecModifiedImmediate ( MO , Modifier , O ) ; else llvm_unreachable ( ) ; return ; case MachineOperand :: MO_FPImmediate : printFPConstant ( MO . getFPImm ( ) , O ) ; break ; case MachineOperand :: MO_GlobalAddress : O << * Mang -> getSymbol ( MO . getGlobal ( ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : { const char * symbname = MO . getSymbolName ( ) ; if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; printParamName ( index , O ) ; } else if ( strstr ( symbname , ) == symbname ) { unsigned index ; sscanf ( symbname + , , & index ) ; O << * CurrentFnSym << << index << ; } else O << symbname ;" LLVM,NVPTX,476,"Predict the next statement of this code snippet: return ; } if ( isa < ConstantStruct > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) { StructType * ST = cast < StructType > ( CPV -> getType ( ) ) ; for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) { if ( i == ( e - ) ) Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( ) + TD -> getTypeAllocSize ( ST ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ;" LLVM,NVPTX,477,"Predict the next statement of this code snippet: } if ( isa < ConstantStruct > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) { StructType * ST = cast < StructType > ( CPV -> getType ( ) ) ; for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) { if ( i == ( e - ) ) Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( ) + TD -> getTypeAllocSize ( ST ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; else Bytes = TD -> getStructLayout ( ST ) -> getElementOffset ( i + ) - TD -> getStructLayout ( ST ) -> getElementOffset ( i ) ; bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , Bytes , aggBuffer ) ; } } return ;" LLVM,NVPTX,478,"Predict the next statement of this code snippet: bool AsmPrinter :: doInitialization ( Module & M ) { SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( TM . getSubtargetImpl ( ) -> getDataLayout ( ) ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; } if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; GlobalsEmitted = false ; return false ;" LLVM,NVPTX,479,"Predict the next statement of this code snippet: emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer . AddBlankLine ( ) ; OutStreamer . AddComment ( ) ; OutStreamer . AddBlankLine ( ) ; }" LLVM,NVPTX,480,"Predict the next statement of this code snippet: if ( isKernelFunction ( * F ) ) { if ( isSampler ( * I ) || isImage ( * I ) ) { if ( isImage ( * I ) ) { std :: string sname = I -> getName ( ) ; if ( isImageWriteOnly ( * I ) || isImageReadWrite ( * I ) ) { if ( nvptxSubtarget . hasImageHandles ( ) ) O << ; else O << ; O << * CurrentFnSym << << paramIndex ; } else { if ( nvptxSubtarget . hasImageHandles ( ) ) O << ; else O << ; O << * CurrentFnSym << << paramIndex ; } } else { if ( nvptxSubtarget . hasImageHandles ( ) ) O << ; else O << ; O << * CurrentFnSym << << paramIndex ; } continue ; } } if ( PAL . hasAttribute ( paramIndex + , Attribute :: ByVal ) == false ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = PAL . getParamAlignment ( paramIndex + ) ; if ( align == ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; printParamName ( I , paramIndex , O ) ; O << << sz << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( isKernelFunc ) { if ( PTy ) { O << << thePointerTy . getSizeInBits ( ) << ; if ( nvptxSubtarget . getDrvInterface ( ) != ) { Type * ETy = PTy -> getElementType ( ) ; int addrSpace = PTy -> getAddressSpace ( ) ; switch ( addrSpace ) { default : O << ; break ; case llvm :: ADDRESS_SPACE_CONST : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED : O << ; break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; } O << << ( int ) getOpenCLAlignment ( TD , ETy ) << ; } printParamName ( I , paramIndex , O ) ; continue ; } O << ; if ( Ty -> isIntegerTy ( ) ) O << ; else O << getPTXFundamentalTypeStr ( Ty ) ; O << ; printParamName ( I , paramIndex , O ) ; continue ; } unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ;" LLVM,NVPTX,481,"Predict the next statement of this code snippet: const DataLayout * TD = TM . getSubtargetImpl ( ) -> getDataLayout ( ) ; const PointerType * PTy = GVar -> getType ( ) ; Type * ETy = PTy -> getElementType ( ) ; O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isFloatingPointTy ( ) || ETy -> isIntegerTy ( ) || ETy -> isPointerTy ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; }" LLVM,NVPTX,482,"Predict the next statement of this code snippet: O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = TD -> getTypeStoreSize ( ETy ) ; O << << * getSymbol ( GVar ) << ; if ( ElementSize ) { O << itostr ( ElementSize ) ; } O << ; break ; default : llvm_unreachable ( ) ; }" LLVM,NVPTX,483,"Predict the next statement of this code snippet: O << ; if ( isABI ) { if ( Ty -> isFloatingPointTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned size = ; if ( const IntegerType * ITy = dyn_cast < IntegerType > ( Ty ) ) { size = ITy -> getBitWidth ( ) ; if ( size < ) size = ; } else { assert ( Ty -> isFloatingPointTy ( ) && ) ; size = Ty -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( Ty ) ) { O << << TLI -> getPointerTy ( ) . getSizeInBits ( ) << ; } else if ( ( Ty -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( Ty ) ) { unsigned totalsz = TD -> getTypeAllocSize ( Ty ) ; unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << << idx ; if ( j < je - ) O << ; ++ idx ; } if ( i < e - ) O << ; } }" LLVM,NVPTX,484,"Predict the next statement of this code snippet: unsigned retAlignment = ; if ( ! llvm :: getAlign ( * F , , retAlignment ) ) retAlignment = TD -> getABITypeAlignment ( Ty ) ; O << << retAlignment << << totalsz << ; } else llvm_unreachable ( ) ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * TLI , Ty , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ;" LLVM,NVPTX,485,"Predict the next statement of this code snippet: const DataLayout * TD = TM . getSubtargetImpl ( ) -> getDataLayout ( ) ; const PointerType * PTy = GVar -> getType ( ) ; Type * ETy = PTy -> getElementType ( ) ; O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ; else O << << GVar -> getAlignment ( ) ; if ( ETy -> isSingleValueType ( ) ) { O << ; O << getPTXFundamentalTypeStr ( ETy ) ; O << ; O << * getSymbol ( GVar ) ; return ; } int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID :" LLVM,NVPTX,486,"Predict the next statement of this code snippet: void AsmPrinter :: emitPTXGlobalVariable ( const GlobalVariable * GVar , raw_ostream & O ) { const DataLayout * TD = TM . getSubtargetImpl ( ) -> getDataLayout ( ) ; const PointerType * PTy = GVar -> getType ( ) ; Type * ETy = PTy -> getElementType ( ) ; O << ; emitPTXAddressSpace ( PTy -> getAddressSpace ( ) , O ) ; if ( GVar -> getAlignment ( ) == ) O << << ( int ) TD -> getPrefTypeAlignment ( ETy ) ;" LLVM,NVPTX,487,"Predict the next statement of this code snippet: case Instruction :: GetElementPtr : { const DataLayout & TD = * AP . TM . getSubtargetImpl ( ) -> getDataLayout ( ) ; APInt OffsetAI ( TD . getPointerSizeInBits ( ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( TD , OffsetAI ) ; const MCExpr * Base = LowerConstant ( CE -> getOperand ( ) , AP ) ; if ( ! OffsetAI ) return Base ; int64_t Offset = OffsetAI . getSExtValue ( ) ; return MCBinaryExpr :: CreateAdd ( Base , MCConstantExpr :: Create ( Offset , Ctx ) , Ctx ) ; } case Instruction :: Trunc : case Instruction :: BitCast : return LowerConstant ( CE -> getOperand ( ) , AP ) ; case Instruction :: IntToPtr : { const DataLayout & TD = * AP . TM . getSubtargetImpl ( ) -> getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Op = ConstantExpr :: getIntegerCast ( Op , TD . getIntPtrType ( CV -> getContext ( ) ) , false ) ; return LowerConstant ( Op , AP ) ; } case Instruction :: PtrToInt : { const DataLayout & TD = * AP . TM . getSubtargetImpl ( ) -> getDataLayout ( ) ; Constant * Op = CE -> getOperand ( ) ; Type * Ty = CE -> getType ( ) ; const MCExpr * OpExpr = LowerConstant ( Op , AP ) ; if ( TD . getTypeAllocSize ( Ty ) == TD . getTypeAllocSize ( Op -> getType ( ) ) ) return OpExpr ; unsigned InBits = TD . getTypeAllocSizeInBits ( Op -> getType ( ) ) ; const MCExpr * MaskExpr = MCConstantExpr :: Create ( ~ >> ( - InBits ) , Ctx ) ; return MCBinaryExpr :: CreateAnd ( OpExpr , MaskExpr , Ctx ) ; } case Instruction :: Add : case Instruction :: Sub : case Instruction :: Mul : case Instruction :: SDiv : case Instruction :: SRem : case Instruction :: Shl : case Instruction :: And : case Instruction :: Or : case Instruction :: Xor : { const MCExpr * LHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; const MCExpr * RHS = LowerConstant ( CE -> getOperand ( ) , AP ) ; switch ( CE -> getOpcode ( ) ) { default :" LLVM,NVPTX,488,"Predict the next statement of this code snippet: Mang = new Mangler ( OutContext , & TM ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ; if ( nvptxSubtarget . getDrvInterface ( ) == ) recordAndEmitFilenames ( M ) ; GlobalsEmitted = false ; return false ;" LLVM,NVPTX,489,"Predict the next statement of this code snippet: bool AsmPrinter :: doInitialization ( Module & M ) { SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; MMI -> AnalyzeModule ( M ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( OutContext , & TM ) ; emitHeader ( M , OS1 ) ; OutStreamer . EmitRawText ( OS1 . str ( ) ) ;" LLVM,NVPTX,490,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,491,"Predict the next statement of this code snippet: assert ( ( curpos + Bytes ) <= size ) ; for ( int i = ; i < Num ; ++ i ) { buffer [ curpos ] = Ptr [ i ] ; curpos ++ ; } for ( int i = Num ; i < Bytes ; ++ i ) { buffer [ curpos ] = ; curpos ++ ; } return curpos ;" LLVM,NVPTX,492,"Predict the next statement of this code snippet: symbolPosInBuffer . push_back ( curpos ) ; Symbols . push_back ( GVar ) ; SymbolsBeforeStripping . push_back ( GVarBeforeStripping ) ; numSymbols ++ ;" LLVM,NVPTX,493,"Predict the next statement of this code snippet: for ( int i = ; i < Num ; ++ i ) { buffer [ curpos ] = ; curpos ++ ;" LLVM,NVPTX,494,"Predict the next statement of this code snippet: int Bytes ; if ( isa < ConstantArray > ( CPV ) || isa < ConstantVector > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) for ( unsigned i = , e = CPV -> getNumOperands ( ) ; i != e ; ++ i ) bufferLEByte ( cast < Constant > ( CPV -> getOperand ( i ) ) , , aggBuffer ) ; return ; } if ( const ConstantDataSequential * CDS = dyn_cast < ConstantDataSequential > ( CPV ) ) { if ( CDS -> getNumElements ( ) ) for ( unsigned i = ; i < CDS -> getNumElements ( ) ; ++ i ) bufferLEByte ( cast < Constant > ( CDS -> getElementAsConstant ( i ) ) , , aggBuffer ) ; return ; } if ( isa < ConstantStruct > ( CPV ) ) { if ( CPV -> getNumOperands ( ) ) {" LLVM,NVPTX,495,"Predict the next statement of this code snippet: if ( ! gv -> hasInternalLinkage ( ) ) return false ; PointerType * Pty = gv -> getType ( ) ; if ( Pty -> getAddressSpace ( ) != llvm :: ADDRESS_SPACE_SHARED ) return false ; const Function * oneFunc = nullptr ;" LLVM,NVPTX,496,"Predict the next statement of this code snippet: for ( unsigned i = ; i < sizeof ( int64_t ) ; ++ i ) { p [ i ] = ( unsigned char ) * vp ;" LLVM,NVPTX,497,"Predict the next statement of this code snippet: for ( unsigned i = ; i < sizeof ( int64_t ) ; ++ i ) {" LLVM,NVPTX,498,"Predict the next statement of this code snippet: int32_t * vp = ( int32_t * ) & val ; for ( unsigned i = ; i < sizeof ( int32_t ) ; ++ i ) {" LLVM,NVPTX,499,"Predict the next statement of this code snippet: for ( unsigned i = ; i < sizeof ( T ) ; ++ i ) { p [ i ] = ( unsigned char ) vp ; vp >>= ; }" LLVM,NVPTX,500,"Predict the next statement of this code snippet: p [ i ] = ( unsigned char ) vp ; vp >>= ; }" LLVM,NVPTX,501,"Predict the next statement of this code snippet: if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( V ) ) Globals . insert ( GV ) ; else { if ( const User * U = dyn_cast < User > ( V ) ) { for ( unsigned i = , e = U -> getNumOperands ( ) ; i != e ; ++ i ) {" LLVM,NVPTX,502,"Predict the next statement of this code snippet: I != E ; ++ I ) gv_array [ i ++ ] = & * I ; while ( ! global_list . empty ( ) ) global_list . remove ( global_list . begin ( ) ) ; bool ret = AsmPrinter :: doFinalization ( M ) ; for ( i = ; i < n ; i ++ ) global_list . insert ( global_list . end ( ) , gv_array [ i ] ) ; clearAnnotationCache ( & M ) ; delete [ ] gv_array ;" LLVM,NVPTX,503,"Predict the next statement of this code snippet: bool AsmPrinter :: doInitialization ( Module & M ) { const Triple & TT = TM . getTargetTriple ( ) ; StringRef CPU = TM . getTargetCPU ( ) ; StringRef FS = TM . getTargetFeatureString ( ) ; const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ; const Subtarget STI ( TT , CPU , FS , NTM ) ; SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( ) ; emitHeader ( M , OS1 , STI ) ; OutStreamer -> EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer -> AddComment ( ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> AddComment ( ) ; OutStreamer -> AddBlankLine ( ) ;" LLVM,NVPTX,504,"Predict the next statement of this code snippet: StringRef FS = TM . getTargetFeatureString ( ) ; const TargetMachine & NTM = static_cast < const TargetMachine & > ( TM ) ; const Subtarget STI ( TT , CPU , FS , NTM ) ; SmallString < > Str1 ; raw_svector_ostream OS1 ( Str1 ) ; MMI = getAnalysisIfAvailable < MachineModuleInfo > ( ) ; const_cast < TargetLoweringObjectFile & > ( getObjFileLowering ( ) ) . Initialize ( OutContext , TM ) ; Mang = new Mangler ( ) ; emitHeader ( M , OS1 , STI ) ; OutStreamer -> EmitRawText ( OS1 . str ( ) ) ; if ( ! M . getModuleInlineAsm ( ) . empty ( ) ) { OutStreamer -> AddComment ( ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> EmitRawText ( StringRef ( M . getModuleInlineAsm ( ) ) ) ; OutStreamer -> AddBlankLine ( ) ; OutStreamer -> AddComment ( ) ;" LLVM,NVPTX,505,"Predict the next statement of this code snippet: void EmitAlignment ( unsigned NumBits , const GlobalValue * GV = nullptr ) const {" LLVM,NVPTX,506,"Predict the next statement of this code snippet: void EmitAlignment ( unsigned NumBits , const GlobalValue * GV = nullptr ) const {" LLVM,NVPTX,507,"Predict the next statement of this code snippet: void AsmPrinter :: EmitBasicBlockStart ( const MachineBasicBlock & MBB ) const { AsmPrinter :: EmitBasicBlockStart ( MBB ) ;" LLVM,NVPTX,508,"Predict the next statement of this code snippet: getSymbol ( F ) -> print ( O , MAI ) ; O << ; emitFunctionParamList ( F , O ) ; O << ;" LLVM,NVPTX,509,"Predict the next statement of this code snippet: if ( ! isa < Instruction > ( U ) ) continue ; const Instruction * instr = cast < Instruction > ( U ) ; const BasicBlock * bb = instr -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ; if ( seenMap . find ( caller ) != seenMap . end ( ) ) { emitDeclaration ( F , O ) ; break ; } } seenMap [ F ] = true ;" LLVM,NVPTX,510,"Predict the next statement of this code snippet: void AsmPrinter :: emitDeclarations ( const Module & M , raw_ostream & O ) { llvm :: DenseMap < const Function * , bool > seenMap ; for ( Module :: const_iterator FI = M . begin ( ) , FE = M . end ( ) ; FI != FE ; ++ FI ) { const Function * F = FI ; if ( F -> isDeclaration ( ) ) { if ( F -> use_empty ( ) ) continue ; if ( F -> getIntrinsicID ( ) ) continue ; emitDeclaration ( F , O ) ; continue ; } for ( const User * U : F -> users ( ) ) { if ( const Constant * C = dyn_cast < Constant > ( U ) ) { if ( usedInGlobalVarDef ( C ) ) { emitDeclaration ( F , O ) ; break ; } if ( useFuncSeen ( C , seenMap ) ) { emitDeclaration ( F , O ) ; break ; } } if ( ! isa < Instruction > ( U ) ) continue ; const Instruction * instr = cast < Instruction > ( U ) ; const BasicBlock * bb = instr -> getParent ( ) ; if ( ! bb ) continue ;" LLVM,NVPTX,511,"Predict the next statement of this code snippet: void AsmPrinter :: emitDemotedVars ( const Function * f , raw_ostream & O ) { if ( localDecls . find ( f ) == localDecls . end ( ) ) return ; std :: vector < const GlobalVariable * > & gvars = localDecls [ f ] ; for ( unsigned i = , e = gvars . size ( ) ; i != e ; ++ i ) { O << ; printModuleLevelGV ( gvars [ i ] , O , true ) ; }" LLVM,NVPTX,512,"Predict the next statement of this code snippet: void AsmPrinter :: EmitFunctionBodyStart ( ) { VRegMapping . clear ( ) ; OutStreamer -> EmitRawText ( StringRef ( ) ) ; setAndEmitFunctionVirtualRegisters ( * MF ) ; SmallString < > Str ;" LLVM,NVPTX,513,"Predict the next statement of this code snippet: else { O << ; printReturnValStr ( * MF , O ) ; } CurrentFnSym -> print ( O , MAI ) ; emitFunctionParamList ( * MF , O ) ; if ( llvm :: isKernelFunction ( * F ) ) emitKernelFunctionDirectives ( * F , O ) ;" LLVM,NVPTX,514,"Predict the next statement of this code snippet: const Function * F = MF . getFunction ( ) ;" LLVM,NVPTX,515,"Predict the next statement of this code snippet: void AsmPrinter :: emitImplicitDef ( const MachineInstr * MI ) const {" LLVM,NVPTX,516,"Predict the next statement of this code snippet: if ( specified ) O << << reqntidx << << reqntidy << << reqntidz << ; unsigned maxntidx , maxntidy , maxntidz ; specified = false ; if ( ! llvm :: getMaxNTIDx ( F , maxntidx ) ) maxntidx = ; else specified = true ; if ( ! llvm :: getMaxNTIDy ( F , maxntidy ) ) maxntidy = ; else specified = true ; if ( ! llvm :: getMaxNTIDz ( F , maxntidz ) ) maxntidz = ; else specified = true ; if ( specified ) O << << maxntidx << << maxntidy << << maxntidz << ; unsigned mincta ;" LLVM,NVPTX,517,"Predict the next statement of this code snippet: if ( ! dirName . empty ( ) && ! sys :: path :: is_absolute ( fileName ) ) { sys :: path :: append ( FullPathName , fileName ) ; fileName = FullPathName ; } if ( filenameMap . find ( fileName ) == filenameMap . end ( ) ) return ; if ( InterleaveSrc ) this -> emitSrcInText ( fileName , curLoc . getLine ( ) ) ;" LLVM,NVPTX,518,"Predict the next statement of this code snippet: if ( isa < GlobalVariable > ( V ) ) { const GlobalVariable * GVar = cast < GlobalVariable > ( V ) ; if ( GVar ) { if ( GVar -> hasInitializer ( ) ) O << ; else O << ; } } else if ( V -> isDeclaration ( ) ) O << ; else O << ; } else if ( V -> hasAppendingLinkage ( ) ) { std :: string msg ; msg . append ( ) ; msg . append ( ) ; if ( V -> hasName ( ) ) msg . append ( V -> getName ( ) ) ; msg . append ( ) ; llvm_unreachable ( msg . c_str ( ) ) ; } else if ( ! V -> hasInternalLinkage ( ) && ! V -> hasPrivateLinkage ( ) ) {" LLVM,NVPTX,519,"Predict the next statement of this code snippet: break ; case llvm :: ADDRESS_SPACE_GLOBAL : O << ; break ; case llvm :: ADDRESS_SPACE_CONST : O << ; break ; case llvm :: ADDRESS_SPACE_SHARED :" LLVM,NVPTX,520,"Predict the next statement of this code snippet: int64_t ElementSize = ; switch ( ETy -> getTypeID ( ) ) { case Type :: StructTyID : case Type :: ArrayTyID : case Type :: VectorTyID : ElementSize = DL . getTypeStoreSize ( ETy ) ; O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; if ( ElementSize ) { O << ElementSize ; } O << ; break ; default : llvm_unreachable ( ) ;" LLVM,NVPTX,521,"Predict the next statement of this code snippet: temp << filename . str ( ) ; temp << ; temp << line ; temp << ; temp << reader -> readLine ( line ) ; temp << ;" LLVM,NVPTX,522,"Predict the next statement of this code snippet: void AsmPrinter :: emitVirtualRegister ( unsigned int vr , raw_ostream & O ) { O << getVirtualRegisterName ( vr ) ;" LLVM,NVPTX,523,"Predict the next statement of this code snippet: return theFileName ;" LLVM,NVPTX,524,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,NVPTX,525,"Predict the next statement of this code snippet: case Type :: DoubleTyID : return ; case Type :: PointerTyID : if ( static_cast < const TargetMachine & > ( TM ) . is64Bit ( ) ) if ( useB4PTR ) return ; else return ; else if ( useB4PTR ) return ;" LLVM,NVPTX,526,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; break ; case Type :: IntegerTyID : { unsigned NumBits = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( NumBits == ) return ; else if ( NumBits <= ) { std :: string name = ; return name + utostr ( NumBits ) ; } else { llvm_unreachable ( ) ; break ; }" LLVM,NVPTX,527,"Predict the next statement of this code snippet: reader = new LineReader ( filename ) ; } if ( reader -> fileName ( ) != filename ) { delete reader ; reader = new LineReader ( filename ) ; }" LLVM,NVPTX,528,"Predict the next statement of this code snippet: if ( reader -> fileName ( ) != filename ) { delete reader ; reader = new LineReader ( filename ) ; }" LLVM,NVPTX,529,"Predict the next statement of this code snippet: MCOperand AsmPrinter :: GetSymbolRef ( const MCSymbol * Symbol ) { const MCExpr * Expr ; Expr = MCSymbolRefExpr :: create ( Symbol , MCSymbolRefExpr :: VK_None , OutContext ) ;" LLVM,NVPTX,530,"Predict the next statement of this code snippet: MCOperand AsmPrinter :: GetSymbolRef ( const MCSymbol * Symbol ) {" LLVM,NVPTX,531,"Predict the next statement of this code snippet: const DenseMap < unsigned , unsigned > & RegMap = I -> second ; VRegMap :: const_iterator VI = RegMap . find ( Reg ) ; assert ( VI != RegMap . end ( ) && ) ; unsigned MappedVR = VI -> second ;" LLVM,NVPTX,532,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : return true ; } return false ;" LLVM,NVPTX,533,"Predict the next statement of this code snippet: bool AsmPrinter :: isImageType ( Type * Ty ) {" LLVM,NVPTX,534,"Predict the next statement of this code snippet: for ( auto I = MBB . pred_begin ( ) ; I != MBB . pred_end ( ) ; ++ I ) { const MachineBasicBlock * PMBB = * I ;" LLVM,NVPTX,535,"Predict the next statement of this code snippet: MachineLoopInfo & LI = getAnalysis < MachineLoopInfo > ( ) ; if ( ! LI . isLoopHeader ( & MBB ) ) return false ; for ( auto I = MBB . pred_begin ( ) ; I != MBB . pred_end ( ) ; ++ I ) { const MachineBasicBlock * PMBB = * I ; if ( LI . getLoopFor ( PMBB ) != LI . getLoopFor ( & MBB ) ) { continue ; }" LLVM,NVPTX,536,"Predict the next statement of this code snippet: theCurLine = ; fstr . open ( filename . c_str ( ) ) ; theFileName = filename ;" LLVM,NVPTX,537,"Predict the next statement of this code snippet: LineReader ( std :: string filename ) { theCurLine = ;" LLVM,NVPTX,538,"Predict the next statement of this code snippet: void LLVMInitializeAsmPrinter ( ) {" LLVM,NVPTX,539,"Predict the next statement of this code snippet: } } const ConstantExpr * CE = dyn_cast < ConstantExpr > ( CV ) ; if ( ! CE ) { llvm_unreachable ( ) ; } switch ( CE -> getOpcode ( ) ) { default : if ( Constant * C = ConstantFoldConstantExpression ( CE , getDataLayout ( ) ) ) if ( C != CE ) return lowerConstantForGV ( C , ProcessingGeneric ) ; { std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? nullptr : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: AddrSpaceCast : { PointerType * DstTy = cast < PointerType > ( CE -> getType ( ) ) ; if ( DstTy -> getAddressSpace ( ) == ) { return lowerConstantForGV ( cast < const Constant > ( CE -> getOperand ( ) ) , true ) ; } std :: string S ; raw_string_ostream OS ( S ) ; OS << ; CE -> printAsOperand ( OS , false , ! MF ? : MF -> getFunction ( ) -> getParent ( ) ) ; report_fatal_error ( OS . str ( ) ) ; } case Instruction :: GetElementPtr : { const DataLayout & DL = getDataLayout ( ) ; APInt OffsetAI ( DL . getPointerTypeSizeInBits ( CE -> getType ( ) ) , ) ; cast < GEPOperator > ( CE ) -> accumulateConstantOffset ( DL , OffsetAI ) ; const MCExpr * Base = lowerConstantForGV ( CE -> getOperand ( ) , ProcessingGeneric ) ; if ( ! OffsetAI ) return Base ;" LLVM,NVPTX,540,"Predict the next statement of this code snippet: bool AsmPrinter :: lowerImageHandleOperand ( const MachineInstr * MI , unsigned OpNo , MCOperand & MCOp ) { const MachineOperand & MO = MI -> getOperand ( OpNo ) ; const MCInstrDesc & MCID = MI -> getDesc ( ) ; if ( MCID . TSFlags & ) { if ( OpNo == && MO . isImm ( ) ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ; return true ; } if ( OpNo == && MO . isImm ( ) && ! ( MCID . TSFlags & ) ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ; return true ; } return false ; } else if ( MCID . TSFlags & ) { unsigned VecSize = << ( ( ( MCID . TSFlags & ) >> ) - ) ; if ( OpNo == VecSize && MO . isImm ( ) ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ; return true ; } return false ; } else if ( MCID . TSFlags & ) { if ( OpNo == && MO . isImm ( ) ) { lowerImageHandleSymbol ( MO . getImm ( ) , MCOp ) ; return true ; }" LLVM,NVPTX,541,"Predict the next statement of this code snippet: std :: string * SymNamePtr = nvTM . getManagedStrPool ( ) -> getManagedString ( Sym ) ;" LLVM,NVPTX,542,"Predict the next statement of this code snippet: const char * Sym = MFI -> getImageHandleSymbol ( Index ) ; std :: string * SymNamePtr = nvTM . getManagedStrPool ( ) -> getManagedString ( Sym ) ; MCOp = GetSymbolRef ( OutContext . getOrCreateSymbol ( StringRef ( SymNamePtr -> c_str ( ) ) ) ) ;" LLVM,NVPTX,543,"Predict the next statement of this code snippet: bool AsmPrinter :: lowerOperand ( const MachineOperand & MO , MCOperand & MCOp ) { switch ( MO . getType ( ) ) { default : llvm_unreachable ( ) ; case MachineOperand :: MO_Register : MCOp = MCOperand :: createReg ( encodeVirtualRegister ( MO . getReg ( ) ) ) ; break ; case MachineOperand :: MO_Immediate : MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ;" LLVM,NVPTX,544,"Predict the next statement of this code snippet: MCOp = MCOperand :: createImm ( MO . getImm ( ) ) ; break ; case MachineOperand :: MO_MachineBasicBlock : MCOp = MCOperand :: createExpr ( MCSymbolRefExpr :: create ( MO . getMBB ( ) -> getSymbol ( ) , OutContext ) ) ; break ; case MachineOperand :: MO_ExternalSymbol : MCOp = GetSymbolRef ( GetExternalSymbolSymbol ( MO . getSymbolName ( ) ) ) ; break ; case MachineOperand :: MO_GlobalAddress : MCOp = GetSymbolRef ( getSymbol ( MO . getGlobal ( ) ) ) ; break ; case MachineOperand :: MO_FPImmediate : { const ConstantFP * Cnt = MO . getFPImm ( ) ; APFloat Val = Cnt -> getValueAPF ( ) ; switch ( Cnt -> getType ( ) -> getTypeID ( ) ) { default : report_fatal_error ( ) ; break ; case Type :: FloatTyID : MCOp = MCOperand :: createExpr ( FloatMCExpr :: createConstantFPSingle ( Val , OutContext ) ) ; break ; case Type :: DoubleTyID : MCOp = MCOperand :: createExpr ( FloatMCExpr :: createConstantFPDouble ( Val , OutContext ) ) ; break ;" LLVM,NVPTX,545,"Predict the next statement of this code snippet: const MachineOperand & MO = MI -> getOperand ( i ) ; MCOperand MCOp ; if ( ! nvptxSubtarget -> hasImageHandles ( ) ) { if ( lowerImageHandleOperand ( MI , i , MCOp ) ) { OutMI . addOperand ( MCOp ) ; continue ; } }" LLVM,NVPTX,546,"Predict the next statement of this code snippet: unsigned int nextSymbolPos = symbolPosInBuffer [ nSym ] ; unsigned int nBytes = ; if ( static_cast < const TargetMachine & > ( AP . TM ) . is64Bit ( ) ) nBytes = ; for ( pos = ; pos < size ; pos += nBytes ) { if ( pos ) O << ; if ( pos == nextSymbolPos ) { const Value * v = Symbols [ nSym ] ; const Value * v0 = SymbolsBeforeStripping [ nSym ] ; if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { MCSymbol * Name = AP . getSymbol ( GVar ) ; PointerType * PTy = dyn_cast < PointerType > ( v0 -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; Name -> print ( O , AP . MAI ) ; O << ; } else { Name -> print ( O , AP . MAI ) ; } } else if ( const ConstantExpr * CExpr = dyn_cast < ConstantExpr > ( v0 ) ) { const MCExpr * Expr = AP . lowerConstantForGV ( cast < Constant > ( CExpr ) , false ) ; AP . printMCExpr ( * Expr , O ) ;" LLVM,NVPTX,547,"Predict the next statement of this code snippet: bool AsmPrinter :: PrintAsmMemoryOperand ( const MachineInstr * MI , unsigned OpNo , unsigned AsmVariant , const char * ExtraCode , raw_ostream & O ) { if ( ExtraCode && ExtraCode [ ] ) return true ; O << '[' ; printMemOperand ( MI , OpNo , O ) ;" LLVM,NVPTX,548,"Predict the next statement of this code snippet: bool AsmPrinter :: PrintAsmOperand ( const MachineInstr * MI , unsigned OpNo , unsigned AsmVariant , const char * ExtraCode , raw_ostream & O ) { if ( ExtraCode && ExtraCode [ ] ) {" LLVM,NVPTX,549,"Predict the next statement of this code snippet: switch ( ExtraCode [ ] ) { default : return AsmPrinter :: PrintAsmOperand ( MI , OpNo , AsmVariant , ExtraCode , O ) ; case 'r' : break ; }" LLVM,NVPTX,550,"Predict the next statement of this code snippet: } else llvm_unreachable ( ) ; APInt API = APF . bitcastToAPInt ( ) ; std :: string hexstr ( utohexstr ( API . getZExtValue ( ) ) ) ; O << lead ;" LLVM,NVPTX,551,"Predict the next statement of this code snippet: case MCExpr :: Constant : OS << cast < MCConstantExpr > ( Expr ) . getValue ( ) ; return ; case MCExpr :: SymbolRef : { const MCSymbolRefExpr & SRE = cast < MCSymbolRefExpr > ( Expr ) ; const MCSymbol & Sym = SRE . getSymbol ( ) ; Sym . print ( OS , MAI ) ; return ; } case MCExpr :: Unary : { const MCUnaryExpr & UE = cast < MCUnaryExpr > ( Expr ) ; switch ( UE . getOpcode ( ) ) { case MCUnaryExpr :: LNot : OS << '!' ; break ; case MCUnaryExpr :: Minus : OS << '-' ; break ; case MCUnaryExpr :: Not : OS << '~' ; break ; case MCUnaryExpr :: Plus : OS << '+' ; break ; } printMCExpr ( * UE . getSubExpr ( ) , OS ) ; return ; } case MCExpr :: Binary : { const MCBinaryExpr & BE = cast < MCBinaryExpr > ( Expr ) ; if ( isa < MCConstantExpr > ( BE . getLHS ( ) ) || isa < MCSymbolRefExpr > ( BE . getLHS ( ) ) || isa < GenericMCSymbolRefExpr > ( BE . getLHS ( ) ) ) { printMCExpr ( * BE . getLHS ( ) , OS ) ; } else { OS << '(' ; printMCExpr ( * BE . getLHS ( ) , OS ) ; OS << ')' ; } switch ( BE . getOpcode ( ) ) { case MCBinaryExpr :: Add : if ( const MCConstantExpr * RHSC = dyn_cast < MCConstantExpr > ( BE . getRHS ( ) ) ) { if ( RHSC -> getValue ( ) < ) { OS << RHSC -> getValue ( ) ; return ; } }" LLVM,NVPTX,552,"Predict the next statement of this code snippet: } else { if ( MI -> getOperand ( opNum + ) . isImm ( ) && MI -> getOperand ( opNum + ) . getImm ( ) == ) return ; O << ; printOperand ( MI , opNum + , O ) ;" LLVM,NVPTX,553,"Predict the next statement of this code snippet: if ( Modifier && ! strcmp ( Modifier , ) ) { O << ; printOperand ( MI , opNum + , O ) ; } else { if ( MI -> getOperand ( opNum + ) . isImm ( ) && MI -> getOperand ( opNum + ) . getImm ( ) == ) return ;" LLVM,NVPTX,554,"Predict the next statement of this code snippet: const MachineOperand & MO = MI -> getOperand ( opNum ) ; switch ( MO . getType ( ) ) { case MachineOperand :: MO_Register : if ( TargetRegisterInfo :: isPhysicalRegister ( MO . getReg ( ) ) ) { if ( MO . getReg ( ) == ) O << DEPOTNAME << getFunctionNumber ( ) ; else O << InstPrinter :: getRegisterName ( MO . getReg ( ) ) ;" LLVM,NVPTX,555,"Predict the next statement of this code snippet: const Function * F = MF . getFunction ( ) ;" LLVM,NVPTX,556,"Predict the next statement of this code snippet: void AsmPrinter :: printReturnValStr ( const MachineFunction & MF , raw_ostream & O ) { const Function * F = MF . getFunction ( ) ;" LLVM,NVPTX,557,"Predict the next statement of this code snippet: return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; PointerType * PTy = dyn_cast < PointerType > ( Cexpr -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; } else { getSymbol ( GVar ) -> print ( O , MAI ) ; } return ; } else { lowerConstant ( CPV ) -> print ( O , MAI ) ; return ; } } llvm_unreachable ( ) ;" LLVM,NVPTX,558,"Predict the next statement of this code snippet: return ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( CPV ) ) { PointerType * PTy = dyn_cast < PointerType > ( GVar -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( EmitGeneric && ! isa < Function > ( CPV ) && ! IsNonGenericPointer ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; } else { getSymbol ( GVar ) -> print ( O , MAI ) ; } return ; } if ( const ConstantExpr * Cexpr = dyn_cast < ConstantExpr > ( CPV ) ) { const Value * v = Cexpr -> stripPointerCasts ( ) ; PointerType * PTy = dyn_cast < PointerType > ( Cexpr -> getType ( ) ) ; bool IsNonGenericPointer = false ; if ( PTy && PTy -> getAddressSpace ( ) != ) { IsNonGenericPointer = true ; } if ( const GlobalValue * GVar = dyn_cast < GlobalValue > ( v ) ) { if ( EmitGeneric && ! isa < Function > ( v ) && ! IsNonGenericPointer ) { O << ; getSymbol ( GVar ) -> print ( O , MAI ) ; O << ; } else { getSymbol ( GVar ) -> print ( O , MAI ) ; }" LLVM,NVPTX,559,"Predict the next statement of this code snippet: if ( ( Imm < ) || ( Imm > ) ) O << ; } else if ( == strcmp ( Modifier , ) ) { if ( Imm < ) Imm = ; O << << vecelem [ Imm % ] ; } else if ( == strcmp ( Modifier , ) ) { if ( ( Imm < ) || ( Imm > ) ) O << ; } else if ( == strcmp ( Modifier , ) ) { if ( ( Imm < ) || ( Imm > ) ) O << ; } else if ( == strcmp ( Modifier , ) ) { if ( Imm < ) Imm = ;" LLVM,NVPTX,560,"Predict the next statement of this code snippet: } else if ( == strcmp ( Modifier , ) ) { if ( Imm < ) Imm = ; O << << vecelem [ Imm % ] ; } else if ( == strcmp ( Modifier , ) ) { if ( ( Imm < ) || ( Imm > ) ) O << ; } else if ( == strcmp ( Modifier , ) ) { if ( ( Imm < ) || ( Imm > ) ) O << ; } else if ( == strcmp ( Modifier , ) ) {" LLVM,NVPTX,561,"Predict the next statement of this code snippet: std :: string LineReader :: readLine ( unsigned lineNum ) { if ( lineNum < theCurLine ) { theCurLine = ; fstr . seekg ( , std :: ios :: beg ) ; } while ( theCurLine < lineNum ) { fstr . getline ( buff , ) ; theCurLine ++ ;" LLVM,NVPTX,562,"Predict the next statement of this code snippet: void AsmPrinter :: recordAndEmitFilenames ( Module & M ) { DebugInfoFinder DbgFinder ; DbgFinder . processModule ( M ) ; unsigned i = ; for ( const DICompileUnit * DIUnit : DbgFinder . compile_units ( ) ) { StringRef Filename = DIUnit -> getFilename ( ) ; StringRef Dirname = DIUnit -> getDirectory ( ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ; filenameMap [ Filename ] = i ; OutStreamer -> EmitDwarfFileDirective ( i , , Filename ) ; ++ i ; } for ( DISubprogram * SP : DbgFinder . subprograms ( ) ) { StringRef Filename = SP -> getFilename ( ) ; StringRef Dirname = SP -> getDirectory ( ) ; SmallString < > FullPathName = Dirname ; if ( ! Dirname . empty ( ) && ! sys :: path :: is_absolute ( Filename ) ) { sys :: path :: append ( FullPathName , Filename ) ; Filename = FullPathName ; } if ( filenameMap . find ( Filename ) != filenameMap . end ( ) ) continue ;" LLVM,NVPTX,563,"Predict the next statement of this code snippet: nvptxSubtarget = & F . getSubtarget < Subtarget > ( ) ;" LLVM,NVPTX,564,"Predict the next statement of this code snippet: bool runOnMachineFunction ( MachineFunction & F ) override { nvptxSubtarget = & F . getSubtarget < Subtarget > ( ) ;" LLVM,NVPTX,565,"Predict the next statement of this code snippet: } } unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = TRI -> index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; int n = regmap . size ( ) ; regmap . insert ( std :: make_pair ( vr , n + ) ) ; } for ( unsigned i = ; i < TRI -> getNumRegClasses ( ) ; i ++ ) { const TargetRegisterClass * RC = TRI -> getRegClass ( i ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; std :: string rcname = getRegClassName ( RC ) ; std :: string rcStr = getRegClassStr ( RC ) ; int n = regmap . size ( ) ;" LLVM,NVPTX,566,"Predict the next statement of this code snippet: unsigned int numVRs = MRI -> getNumVirtRegs ( ) ; for ( unsigned i = ; i < numVRs ; i ++ ) { unsigned int vr = TRI -> index2VirtReg ( i ) ; const TargetRegisterClass * RC = MRI -> getRegClass ( vr ) ; DenseMap < unsigned , unsigned > & regmap = VRegMapping [ RC ] ; int n = regmap . size ( ) ; regmap . insert ( std :: make_pair ( vr , n + ) ) ; }" LLVM,NVPTX,567,"Predict the next statement of this code snippet: }" LLVM,NVPTX,568,"Predict the next statement of this code snippet: for ( const User * U : C -> users ( ) ) if ( const Constant * C = dyn_cast < Constant > ( U ) ) if ( usedInGlobalVarDef ( C ) ) return true ; return false ;" LLVM,NVPTX,569,"Predict the next statement of this code snippet: if ( const Instruction * instr = dyn_cast < Instruction > ( U ) ) { if ( instr -> getParent ( ) && instr -> getParent ( ) -> getParent ( ) ) { const Function * curFunc = instr -> getParent ( ) -> getParent ( ) ; if ( oneFunc && ( curFunc != oneFunc ) ) return false ;" LLVM,NVPTX,570,"Predict the next statement of this code snippet: } else if ( const Instruction * I = dyn_cast < Instruction > ( U ) ) { const BasicBlock * bb = I -> getParent ( ) ; if ( ! bb ) continue ; const Function * caller = bb -> getParent ( ) ; if ( ! caller ) continue ;" LLVM,NVPTX,571,"Predict the next statement of this code snippet: void VisitGlobalVariableForEmission ( const GlobalVariable * GV , SmallVectorImpl < const GlobalVariable * > & Order , DenseSet < const GlobalVariable * > & Visited , DenseSet < const GlobalVariable * > & Visiting ) { if ( Visited . count ( GV ) ) return ; if ( ! Visiting . insert ( GV ) . second ) report_fatal_error ( ) ; DenseSet < const GlobalVariable * > Others ; for ( unsigned i = , e = GV -> getNumOperands ( ) ; i != e ; ++ i ) DiscoverDependentGlobals ( GV -> getOperand ( i ) , Others ) ; for ( DenseSet < const GlobalVariable * > :: iterator I = Others . begin ( ) , E = Others . end ( ) ; I != E ; ++ I ) VisitGlobalVariableForEmission ( * I , Order , Visited , Visiting ) ; Order . push_back ( GV ) ; Visited . insert ( GV ) ; Visiting . erase ( GV ) ;" LLVM,NVPTX,572,"Predict the next statement of this code snippet: ~ LineReader ( ) {" LLVM,NVPTX,573,"Predict the next statement of this code snippet: ~ AsmPrinter ( ) {" LLVM,NVPTX,574,"Predict the next statement of this code snippet: ~ AsmPrinter ( ) { if ( ! reader ) delete reader ;" LLVM,NVPTX,575,"Predict the next statement of this code snippet: if ( C == '.' || C == '@' ) { ValidNameStream << ; } else { ValidNameStream << C ; } } return ValidNameStream . str ( ) ;" LLVM,NVPTX,576,"Predict the next statement of this code snippet: GV . setName ( cleanUpName ( GV . getName ( ) ) ) ; } }" LLVM,NVPTX,577,"Predict the next statement of this code snippet: raw_string_ostream ValidNameStream ( ValidName ) ; for ( unsigned I = , E = Name . size ( ) ; I != E ; ++ I ) { char C = Name [ I ] ; if ( C == '.' || C == '@' ) { ValidNameStream << ; } else {" LLVM,NVPTX,578,"Predict the next statement of this code snippet: ModulePass * llvm :: createAssignValidGlobalNamesPass ( ) { return new AssignValidGlobalNames ( ) ;" LLVM,NVPTX,579,"Predict the next statement of this code snippet: return new AssignValidGlobalNames ( ) ;" LLVM,NVPTX,580,"Predict the next statement of this code snippet: AssignValidGlobalNames ( ) : ModulePass ( ID ) {" LLVM,NVPTX,581,"Predict the next statement of this code snippet: AssignValidGlobalNames ( ) : ModulePass ( ID ) {" LLVM,NVPTX,582,"Predict the next statement of this code snippet: for ( GlobalVariable & GV : M . globals ( ) ) { if ( GV . hasLocalLinkage ( ) ) { GV . setName ( cleanUpName ( GV . getName ( ) ) ) ; } } for ( Function & F : M . functions ( ) ) if ( F . hasLocalLinkage ( ) ) F . setName ( cleanUpName ( F . getName ( ) ) ) ;" LLVM,NVPTX,583,"Predict the next statement of this code snippet: GV . setName ( cleanUpName ( GV . getName ( ) ) ) ; } }" LLVM,NVPTX,584,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,NVPTX,585,"Predict the next statement of this code snippet: AU . setPreservesCFG ( ) ;" LLVM,NVPTX,586,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,NVPTX,587,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,588,"Predict the next statement of this code snippet: AtomicLower ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,589,"Predict the next statement of this code snippet: AtomicLower ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,590,"Predict the next statement of this code snippet: bool AtomicLower :: runOnFunction ( Function & F ) { SmallVector < AtomicRMWInst * > LocalMemoryAtomics ; for ( Instruction & I : instructions ( F ) ) if ( AtomicRMWInst * RMWI = dyn_cast < AtomicRMWInst > ( & I ) ) if ( RMWI -> getPointerAddressSpace ( ) == ADDRESS_SPACE_LOCAL ) LocalMemoryAtomics . push_back ( RMWI ) ;" LLVM,NVPTX,591,"Predict the next statement of this code snippet: NewGEPI -> setIsInBounds ( GEP -> isInBounds ( ) ) ; GEP -> replaceAllUsesWith ( new AddrSpaceCastInst ( NewGEPI , GEP -> getType ( ) , , GEPI ) ) ; } else { Constant * NewGEPCE = ConstantExpr :: getGetElementPtr ( cast < Constant > ( Cast -> getOperand ( ) ) , Indices , GEP -> isInBounds ( ) ) ; GEP -> replaceAllUsesWith ( ConstantExpr :: getAddrSpaceCast ( NewGEPCE , GEP -> getType ( ) ) ) ; } return true ;" LLVM,NVPTX,592,"Predict the next statement of this code snippet: if ( SrcTy -> getElementType ( ) != DestTy -> getElementType ( ) ) return false ;" LLVM,NVPTX,593,"Predict the next statement of this code snippet: hoistAddrSpaceCastFromGEP ( GEP ) ; } if ( Operator * Cast = dyn_cast < Operator > ( MI -> getOperand ( Idx ) ) ) { if ( IsEliminableAddrSpaceCast ( Cast ) ) {" LLVM,NVPTX,594,"Predict the next statement of this code snippet: if ( GEPOperator * GEP = dyn_cast < GEPOperator > ( MI -> getOperand ( Idx ) ) ) { hoistAddrSpaceCastFromGEP ( GEP ) ; } if ( Operator * Cast = dyn_cast < Operator > ( MI -> getOperand ( Idx ) ) ) { if ( IsEliminableAddrSpaceCast ( Cast ) ) { MI -> setOperand ( Idx , Cast -> getOperand ( ) ) ; return true ; }" LLVM,NVPTX,595,"Predict the next statement of this code snippet: GEP -> replaceAllUsesWith ( new AddrSpaceCastInst ( NewGEPI , GEP -> getType ( ) , , GEPI ) ) ; } else { Constant * NewGEPCE = ConstantExpr :: getGetElementPtr ( GEP -> getSourceElementType ( ) , cast < Constant > ( Cast -> getOperand ( ) ) , Indices , GEP -> isInBounds ( ) ) ; GEP -> replaceAllUsesWith ( ConstantExpr :: getAddrSpaceCast ( NewGEPCE , GEP -> getType ( ) ) ) ; }" LLVM,NVPTX,596,"Predict the next statement of this code snippet: NewGEPI -> setIsInBounds ( GEP -> isInBounds ( ) ) ; GEP -> replaceAllUsesWith ( new AddrSpaceCastInst ( NewGEPI , GEP -> getType ( ) , , GEPI ) ) ; } else { Constant * NewGEPCE = ConstantExpr :: getGetElementPtr ( GEP -> getSourceElementType ( ) , cast < Constant > ( Cast -> getOperand ( ) ) , Indices , GEP -> isInBounds ( ) ) ;" LLVM,NVPTX,597,"Predict the next statement of this code snippet: if ( DisableFavorNonGeneric ) return false ; bool Changed = false ; for ( BasicBlock & B : F ) { for ( Instruction & I : B ) { if ( isa < LoadInst > ( I ) ) { Changed |= optimizeMemoryInstruction ( & I , ) ;" LLVM,NVPTX,598,"Predict the next statement of this code snippet: if ( DisableFavorNonGeneric ) return false ; bool Changed = false ; for ( BasicBlock & B : F ) { for ( Instruction & I : B ) { if ( isa < LoadInst > ( I ) ) {" LLVM,NVPTX,599,"Predict the next statement of this code snippet: if ( isEliminableAddrSpaceCast ( V ) ) return true ; const int MaxDepth = ; if ( Depth >= MaxDepth ) return false ; if ( GEPOperator * GEP = dyn_cast < GEPOperator > ( V ) ) return hoistAddrSpaceCastFromGEP ( GEP , Depth ) ; if ( BitCastOperator * BC = dyn_cast < BitCastOperator > ( V ) ) return hoistAddrSpaceCastFromBitCast ( BC , Depth ) ;" LLVM,NVPTX,600,"Predict the next statement of this code snippet: if ( isEliminableAddrSpaceCast ( V ) ) return true ; const int MaxDepth = ; if ( Depth >= MaxDepth ) return false ; if ( GEPOperator * GEP = dyn_cast < GEPOperator > ( V ) ) return hoistAddrSpaceCastFromGEP ( GEP , Depth ) ; if ( BitCastOperator * BC = dyn_cast < BitCastOperator > ( V ) ) return hoistAddrSpaceCastFromBitCast ( BC , Depth ) ;" LLVM,NVPTX,601,"Predict the next statement of this code snippet: Type * TypeOfNewCast = PointerType :: get ( BC -> getType ( ) -> getPointerElementType ( ) , Src -> getType ( ) -> getPointerAddressSpace ( ) ) ; if ( BitCastInst * BCI = dyn_cast < BitCastInst > ( BC ) ) { Value * NewCast = new BitCastInst ( Src , TypeOfNewCast , , BCI ) ; Value * NewBC = new AddrSpaceCastInst ( NewCast , BC -> getType ( ) , , BCI ) ; NewBC -> takeName ( BC ) ; BC -> replaceAllUsesWith ( NewBC ) ; } else { Constant * NewCast = ConstantExpr :: getBitCast ( cast < Constant > ( Src ) , TypeOfNewCast ) ; Constant * NewBC = ConstantExpr :: getAddrSpaceCast ( NewCast , BC -> getType ( ) ) ; BC -> replaceAllUsesWith ( NewBC ) ;" LLVM,NVPTX,602,"Predict the next statement of this code snippet: Operator * Cast = cast < Operator > ( BC -> getOperand ( ) ) ; Value * Src = Cast -> getOperand ( ) ; Type * TypeOfNewCast = PointerType :: get ( BC -> getType ( ) -> getPointerElementType ( ) , Src -> getType ( ) -> getPointerAddressSpace ( ) ) ; if ( BitCastInst * BCI = dyn_cast < BitCastInst > ( BC ) ) { Value * NewCast = new BitCastInst ( Src , TypeOfNewCast , , BCI ) ; Value * NewBC = new AddrSpaceCastInst ( NewCast , BC -> getType ( ) , , BCI ) ; NewBC -> takeName ( BC ) ; BC -> replaceAllUsesWith ( NewBC ) ; } else {" LLVM,NVPTX,603,"Predict the next statement of this code snippet: SmallVector < Value * , > Indices ( GEP -> idx_begin ( ) , GEP -> idx_end ( ) ) ; if ( Instruction * GEPI = dyn_cast < Instruction > ( GEP ) ) { GetElementPtrInst * NewGEP = GetElementPtrInst :: Create ( GEP -> getSourceElementType ( ) , Cast -> getOperand ( ) , Indices , , GEPI ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; Value * NewASC = new AddrSpaceCastInst ( NewGEP , GEP -> getType ( ) , , GEPI ) ; NewASC -> takeName ( GEP ) ; GEP -> replaceAllUsesWith ( NewASC ) ; } else { Constant * NewGEP = ConstantExpr :: getGetElementPtr ( GEP -> getSourceElementType ( ) , cast < Constant > ( Cast -> getOperand ( ) ) , Indices , GEP -> isInBounds ( ) ) ; GEP -> replaceAllUsesWith ( ConstantExpr :: getAddrSpaceCast ( NewGEP , GEP -> getType ( ) ) ) ; } return true ;" LLVM,NVPTX,604,"Predict the next statement of this code snippet: if ( Instruction * GEPI = dyn_cast < Instruction > ( GEP ) ) { GetElementPtrInst * NewGEP = GetElementPtrInst :: Create ( GEP -> getSourceElementType ( ) , Cast -> getOperand ( ) , Indices , , GEPI ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; Value * NewASC = new AddrSpaceCastInst ( NewGEP , GEP -> getType ( ) , , GEPI ) ; NewASC -> takeName ( GEP ) ; GEP -> replaceAllUsesWith ( NewASC ) ; } else { Constant * NewGEP = ConstantExpr :: getGetElementPtr ( GEP -> getSourceElementType ( ) , cast < Constant > ( Cast -> getOperand ( ) ) , Indices , GEP -> isInBounds ( ) ) ;" LLVM,NVPTX,605,"Predict the next statement of this code snippet: Operator * ASC = dyn_cast < Operator > ( MI -> getOperand ( Idx ) ) ; MI -> setOperand ( Idx , ASC -> getOperand ( ) ) ; return true ;" LLVM,NVPTX,606,"Predict the next statement of this code snippet: GetElementPtrInst * NewGEP = GetElementPtrInst :: Create ( GEP -> getSourceElementType ( ) , Cast -> getOperand ( ) , Indices , , GEPI ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; NewGEP -> takeName ( GEP ) ; NewASC = new AddrSpaceCastInst ( NewGEP , GEP -> getType ( ) , , GEPI ) ; GEP -> replaceAllUsesWith ( NewASC ) ; } else {" LLVM,NVPTX,607,"Predict the next statement of this code snippet: } else if ( isa < StoreInst > ( I ) ) { Changed |= optimizeMemoryInstruction ( & I , ) ; } } } return Changed ;" LLVM,NVPTX,608,"Predict the next statement of this code snippet: if ( GEPOperator * GEP = dyn_cast < GEPOperator > ( V ) ) return hoistAddrSpaceCastFromGEP ( GEP , Depth ) ; if ( BitCastOperator * BC = dyn_cast < BitCastOperator > ( V ) ) return hoistAddrSpaceCastFromBitCast ( BC , Depth ) ;" LLVM,NVPTX,609,"Predict the next statement of this code snippet: Value * NewOperand = hoistAddrSpaceCastFrom ( BC -> getOperand ( ) , Depth + ) ; if ( NewOperand == nullptr ) return nullptr ; assert ( isEliminableAddrSpaceCast ( NewOperand ) ) ; Operator * Cast = cast < Operator > ( NewOperand ) ; Value * Src = Cast -> getOperand ( ) ; Type * TypeOfNewCast = PointerType :: get ( BC -> getType ( ) -> getPointerElementType ( ) , Src -> getType ( ) -> getPointerAddressSpace ( ) ) ; Value * NewBC ; if ( BitCastInst * BCI = dyn_cast < BitCastInst > ( BC ) ) { Value * NewCast = new BitCastInst ( Src , TypeOfNewCast , , BCI ) ; NewBC = new AddrSpaceCastInst ( NewCast , BC -> getType ( ) , , BCI ) ; NewBC -> takeName ( BC ) ; BC -> replaceAllUsesWith ( NewBC ) ; } else {" LLVM,NVPTX,610,"Predict the next statement of this code snippet: assert ( isEliminableAddrSpaceCast ( NewOperand ) ) ; Operator * Cast = cast < Operator > ( NewOperand ) ; SmallVector < Value * , > Indices ( GEP -> idx_begin ( ) , GEP -> idx_end ( ) ) ; Value * NewASC ; if ( Instruction * GEPI = dyn_cast < Instruction > ( GEP ) ) { GetElementPtrInst * NewGEP = GetElementPtrInst :: Create ( GEP -> getSourceElementType ( ) , Cast -> getOperand ( ) , Indices , , GEPI ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; NewASC = new AddrSpaceCastInst ( NewGEP , GEP -> getType ( ) , , GEPI ) ; NewASC -> takeName ( GEP ) ; GEP -> replaceAllUsesWith ( NewASC ) ; } else {" LLVM,NVPTX,611,"Predict the next statement of this code snippet: if ( Instruction * GEPI = dyn_cast < Instruction > ( GEP ) ) { GetElementPtrInst * NewGEP = GetElementPtrInst :: Create ( GEP -> getSourceElementType ( ) , Cast -> getOperand ( ) , Indices , , GEPI ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; NewASC = new AddrSpaceCastInst ( NewGEP , GEP -> getType ( ) , , GEPI ) ; NewASC -> takeName ( GEP ) ; GEP -> replaceAllUsesWith ( NewASC ) ; } else { Constant * NewGEP = ConstantExpr :: getGetElementPtr ( GEP -> getSourceElementType ( ) , cast < Constant > ( Cast -> getOperand ( ) ) , Indices , GEP -> isInBounds ( ) ) ; NewASC = ConstantExpr :: getAddrSpaceCast ( NewGEP , GEP -> getType ( ) ) ; } return NewASC ;" LLVM,NVPTX,612,"Predict the next statement of this code snippet: Value * Src = Cast -> getOperand ( ) ; PointerType * SrcTy = cast < PointerType > ( Src -> getType ( ) ) ; PointerType * DestTy = cast < PointerType > ( Cast -> getType ( ) ) ;" LLVM,NVPTX,613,"Predict the next statement of this code snippet: FavorNonGenericAddrSpaces ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,614,"Predict the next statement of this code snippet: FavorNonGenericAddrSpaces ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,615,"Predict the next statement of this code snippet: bool FavorNonGenericAddrSpaces :: optimizeMemoryInstruction ( Instruction * MI , unsigned Idx ) { Value * NewOperand = hoistAddrSpaceCastFrom ( MI -> getOperand ( Idx ) ) ; if ( NewOperand == nullptr ) return false ; assert ( isEliminableAddrSpaceCast ( NewOperand ) ) ; Operator * ASC = dyn_cast < Operator > ( NewOperand ) ; MI -> setOperand ( Idx , ASC -> getOperand ( ) ) ;" LLVM,NVPTX,616,"Predict the next statement of this code snippet: if ( DisableFavorNonGeneric ) return false ; bool Changed = false ; for ( Function :: iterator B = F . begin ( ) , BE = F . end ( ) ; B != BE ; ++ B ) {" LLVM,NVPTX,617,"Predict the next statement of this code snippet: bool Changed = false ; for ( Function :: iterator B = F . begin ( ) , BE = F . end ( ) ; B != BE ; ++ B ) { for ( BasicBlock :: iterator I = B -> begin ( ) , IE = B -> end ( ) ; I != IE ; ++ I ) { if ( isa < LoadInst > ( I ) ) { Changed |= optimizeMemoryInstruction ( I , ) ;" LLVM,NVPTX,618,"Predict the next statement of this code snippet: void FrameLowering :: eliminateCallFramePseudoInstr ( MachineFunction & MF , MachineBasicBlock & MBB , MachineBasicBlock :: iterator I ) const {" LLVM,NVPTX,619,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,NVPTX,620,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,NVPTX,621,"Predict the next statement of this code snippet: unsigned MovDepotOpcode = ( Is64Bit ? : ) ; if ( ! MR . use_empty ( ) ) { MI = BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( CvtaLocalOpcode ) , ) . addReg ( ) ; }" LLVM,NVPTX,622,"Predict the next statement of this code snippet: bool FrameLowering :: hasFP ( const MachineFunction & MF ) const {" LLVM,NVPTX,623,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , , ) {" LLVM,NVPTX,624,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , , ) {" LLVM,NVPTX,625,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator FrameLowering :: eliminateCallFramePseudoInstr ( MachineFunction & MF , MachineBasicBlock & MBB , MachineBasicBlock :: iterator I ) const {" LLVM,NVPTX,626,"Predict the next statement of this code snippet: void FrameLowering :: emitPrologue ( MachineFunction & MF , MachineBasicBlock & MBB ) const { if ( MF . getFrameInfo ( ) . hasStackObjects ( ) ) { assert ( & MF . front ( ) == & MBB && ) ; MachineInstr * MI = & MBB . front ( ) ; MachineRegisterInfo & MR = MF . getRegInfo ( ) ; const RegisterInfo * NRI = MF . getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; DebugLoc dl = DebugLoc ( ) ; bool Is64Bit = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) . is64Bit ( ) ;" LLVM,NVPTX,627,"Predict the next statement of this code snippet: return { DwarfFrameBase :: CFA , { } } ;" LLVM,NVPTX,628,"Predict the next statement of this code snippet: StackOffset FrameLowering :: getFrameIndexReference ( const MachineFunction & MF , int FI , Register & FrameReg ) const { const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,NVPTX,629,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , Align ( ) , ) {" LLVM,NVPTX,630,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , Align ( ) , ) {" LLVM,NVPTX,631,"Predict the next statement of this code snippet: explicit FrameLowering ( TargetMachine & _tm , bool _is64bit ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , , ) , tm ( _tm ) , is64bit ( _is64bit ) {" LLVM,NVPTX,632,"Predict the next statement of this code snippet: explicit FrameLowering ( TargetMachine & _tm , bool _is64bit ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , , ) , tm ( _tm ) , is64bit ( _is64bit ) {" LLVM,NVPTX,633,"Predict the next statement of this code snippet: unsigned CvtaLocalOpcode = ( Is64Bit ? : ) ; unsigned MovDepotOpcode = ( Is64Bit ? : ) ; if ( ! MR . use_empty ( ) ) { MI = BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( CvtaLocalOpcode ) , ) . addReg ( ) ; }" LLVM,NVPTX,634,"Predict the next statement of this code snippet: int FrameLowering :: getFrameIndexReference ( const MachineFunction & MF , int FI , unsigned & FrameReg ) const { const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,NVPTX,635,"Predict the next statement of this code snippet: FrameReg = ; return MFI . getObjectOffset ( FI ) - getOffsetOfLocalArea ( ) ;" LLVM,NVPTX,636,"Predict the next statement of this code snippet: MI = BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( CvtaLocalOpcode ) , ) . addReg ( ) ; } BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( MovDepotOpcode ) , ) . addImm ( MF . getFunctionNumber ( ) ) ; }" LLVM,NVPTX,637,"Predict the next statement of this code snippet: MachineInstr * MI = & MBB . front ( ) ; MachineRegisterInfo & MR = MF . getRegInfo ( ) ; DebugLoc dl = DebugLoc ( ) ; bool Is64Bit = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) . is64Bit ( ) ; unsigned CvtaLocalOpcode = ( Is64Bit ? : ) ; unsigned MovDepotOpcode = ( Is64Bit ? : ) ; if ( ! MR . use_empty ( ) ) { MI = BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( CvtaLocalOpcode ) , ) . addReg ( ) ;" LLVM,NVPTX,638,"Predict the next statement of this code snippet: MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; } else {" LLVM,NVPTX,639,"Predict the next statement of this code snippet: if ( MF . getFrameInfo ( ) -> hasStackObjects ( ) ) { assert ( & MF . front ( ) == & MBB && ) ; MachineBasicBlock :: iterator MBBI = MBB . begin ( ) ; DebugLoc dl = DebugLoc ( ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; if ( static_cast < const TargetMachine & > ( MF . getTarget ( ) ) . is64Bit ( ) ) { unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; } else { unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; } }" LLVM,NVPTX,640,"Predict the next statement of this code snippet: if ( tm . getSubtargetImpl ( ) -> hasGenericLdSt ( ) ) { if ( is64bit ) { MachineInstr * MI = BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; BuildMI ( MBB , MI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; } else { MachineInstr * MI = BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; BuildMI ( MBB , MI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; } } else { if ( is64bit ) BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; else BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; }" LLVM,NVPTX,641,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,NVPTX,642,"Predict the next statement of this code snippet: void FrameLowering :: emitEpilogue ( MachineFunction & MF , MachineBasicBlock & MBB ) const {" LLVM,NVPTX,643,"Predict the next statement of this code snippet: BuildMI ( MBB , MI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; } else { MachineInstr * MI = BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; BuildMI ( MBB , MI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; } } else { if ( is64bit ) BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ; else BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( ) ;" LLVM,NVPTX,644,"Predict the next statement of this code snippet: } else { unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; }" LLVM,NVPTX,645,"Predict the next statement of this code snippet: void FrameLowering ::" LLVM,NVPTX,646,"Predict the next statement of this code snippet: eliminateCallFramePseudoInstr ( MachineFunction & MF , MachineBasicBlock & MBB , MachineBasicBlock :: iterator I ) const {" LLVM,NVPTX,647,"Predict the next statement of this code snippet: unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , tm . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , tm . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; }" LLVM,NVPTX,648,"Predict the next statement of this code snippet: unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getSubtarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ;" LLVM,NVPTX,649,"Predict the next statement of this code snippet: int FrameLowering :: getFrameIndexReference ( const MachineFunction & MF , int FI , Register & FrameReg ) const { const MachineFrameInfo & MFI = MF . getFrameInfo ( ) ;" LLVM,NVPTX,650,"Predict the next statement of this code snippet: MachineBasicBlock :: iterator MBBI = MBB . begin ( ) ; DebugLoc dl = DebugLoc ( ) ; MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; if ( is64bit ) { unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; } else { unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; }" LLVM,NVPTX,651,"Predict the next statement of this code snippet: MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; } else { unsigned LocalReg = MRI . createVirtualRegister ( & ) ; MachineInstr * MI = BuildMI ( MBB , MBBI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , ) . addReg ( LocalReg ) ; BuildMI ( MBB , MI , dl , MF . getTarget ( ) . getInstrInfo ( ) -> get ( ) , LocalReg ) . addImm ( MF . getFunctionNumber ( ) ) ; }" LLVM,NVPTX,652,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( Subtarget & STI ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , , ) , is64bit ( STI . is64Bit ( ) ) {" LLVM,NVPTX,653,"Predict the next statement of this code snippet: FrameLowering :: FrameLowering ( Subtarget & STI ) : TargetFrameLowering ( TargetFrameLowering :: StackGrowsUp , , ) , is64bit ( STI . is64Bit ( ) ) {" LLVM,NVPTX,654,"Predict the next statement of this code snippet: GlobalVariable * GV = & * I ++ ; if ( GV -> getType ( ) -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_GENERIC && ! llvm :: isTexture ( * GV ) && ! llvm :: isSurface ( * GV ) && ! llvm :: isSampler ( * GV ) && ! GV -> getName ( ) . startswith ( ) ) { GlobalVariable * NewGV = new GlobalVariable ( M , GV -> getValueType ( ) , GV -> isConstant ( ) , GV -> getLinkage ( ) , GV -> hasInitializer ( ) ? GV -> getInitializer ( ) : nullptr , , GV , GV -> getThreadLocalMode ( ) , llvm :: ADDRESS_SPACE_GLOBAL ) ; NewGV -> copyAttributesFrom ( GV ) ; GVMap [ GV ] = NewGV ; } } if ( GVMap . empty ( ) ) { return false ; } for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; }" LLVM,NVPTX,655,"Predict the next statement of this code snippet: ParamTypes . push_back ( DestTy ) ; Function * CVTAFunction = ( M , , ParamTypes ) ; CVTA = Builder . CreateCall ( CVTAFunction , CVTA , ) ; DestTy = PointerType :: get ( GVType -> getElementType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ; CVTA = Builder . CreateBitCast ( CVTA , DestTy , ) ; } else { SmallVector < Type * , > ParamTypes ; ParamTypes . push_back ( PointerType :: get ( GVType -> getElementType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ) ;" LLVM,NVPTX,656,"Predict the next statement of this code snippet: Type * ResultType = PointerType :: get ( Type :: getInt8Ty ( Context ) , llvm :: ADDRESS_SPACE_GENERIC ) ; SmallVector < Type * , > ParamTypes ; ParamTypes . push_back ( ResultType ) ; ParamTypes . push_back ( DestTy ) ; Function * CVTAFunction = ( M , , ParamTypes ) ; CVTA = Builder . CreateCall ( CVTAFunction , CVTA , ) ; DestTy = PointerType :: get ( GVType -> getElementType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ; CVTA = Builder . CreateBitCast ( CVTA , DestTy , ) ; } else { SmallVector < Type * , > ParamTypes ;" LLVM,NVPTX,657,"Predict the next statement of this code snippet: } else if ( isa < ConstantVector > ( C ) || isa < ConstantArray > ( C ) || isa < ConstantStruct > ( C ) ) { NewValue = remapConstantVectorOrConstantAggregate ( M , F , C , Builder ) ; } else if ( isa < ConstantExpr > ( C ) ) { NewValue = remapConstantExpr ( M , F , cast < ConstantExpr > ( C ) , Builder ) ; } ConstantToValueMap [ C ] = NewValue ;" LLVM,NVPTX,658,"Predict the next statement of this code snippet: MDNode * GenericToNVVM :: remapMDNode ( Module * M , MDNode * N ) { bool OperandChanged = false ; SmallVector < Value * , > NewOperands ; unsigned NumOperands = N -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) { Value * Operand = N -> getOperand ( i ) ; Value * NewOperand = Operand ; if ( Operand ) { if ( isa < GlobalVariable > ( Operand ) ) { GVMapTy :: iterator I = GVMap . find ( cast < GlobalVariable > ( Operand ) ) ; if ( I != GVMap . end ( ) ) { NewOperand = I -> second ; if ( ++ i < NumOperands ) { NewOperands . push_back ( NewOperand ) ; NewOperand = ConstantInt :: get ( Type :: getInt32Ty ( M -> getContext ( ) ) , I -> second -> getType ( ) -> getAddressSpace ( ) ) ; } } } else if ( isa < MDNode > ( Operand ) ) { NewOperand = remapMDNode ( M , cast < MDNode > ( Operand ) ) ; }" LLVM,NVPTX,659,"Predict the next statement of this code snippet: Value * NewOperand = Operand ; if ( Operand ) { if ( isa < GlobalVariable > ( Operand ) ) { GVMapTy :: iterator I = GVMap . find ( cast < GlobalVariable > ( Operand ) ) ; if ( I != GVMap . end ( ) ) { NewOperand = I -> second ; if ( ++ i < NumOperands ) { NewOperands . push_back ( NewOperand ) ; NewOperand = ConstantInt :: get ( Type :: getInt32Ty ( M -> getContext ( ) ) , I -> second -> getType ( ) -> getAddressSpace ( ) ) ; } } } else if ( isa < MDNode > ( Operand ) ) { NewOperand = remapMDNode ( M , cast < MDNode > ( Operand ) ) ; } } OperandChanged |= Operand != NewOperand ; NewOperands . push_back ( NewOperand ) ; } if ( ! OperandChanged ) { return N ;" LLVM,NVPTX,660,"Predict the next statement of this code snippet: MDNode * Operand = N -> getOperand ( i ) ; MDNode * NewOperand = remapMDNode ( M , Operand ) ; OperandChanged |= Operand != NewOperand ; NewOperands . push_back ( NewOperand ) ; } if ( ! OperandChanged ) { return ; } N -> dropAllReferences ( ) ;" LLVM,NVPTX,661,"Predict the next statement of this code snippet: virtual void getAnalysisUsage ( AnalysisUsage & AU ) const {" LLVM,NVPTX,662,"Predict the next statement of this code snippet: virtual void getAnalysisUsage ( AnalysisUsage & AU ) const {" LLVM,NVPTX,663,"Predict the next statement of this code snippet: case Instruction :: GetElementPtr : return Builder . CreateGEP ( cast < GEPOperator > ( C ) -> getSourceElementType ( ) , NewOperands [ ] , makeArrayRef ( & NewOperands [ ] , NumOperands - ) , , cast < GEPOperator > ( C ) -> isInBounds ( ) ) ; case Instruction :: Select : return Builder . CreateSelect ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; default : if ( Instruction :: isBinaryOp ( Opcode ) ) { return Builder . CreateBinOp ( Instruction :: BinaryOps ( C -> getOpcode ( ) ) , NewOperands [ ] , NewOperands [ ] ) ; } if ( Instruction :: isCast ( Opcode ) ) { return Builder . CreateCast ( Instruction :: CastOps ( C -> getOpcode ( ) ) , NewOperands [ ] , C -> getType ( ) ) ;" LLVM,NVPTX,664,"Predict the next statement of this code snippet: } } } } ConstantToValueMap . clear ( ) ; } ValueToValueMapTy VM ; for ( auto I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ++ I ) VM [ I -> first ] = I -> second ; for ( GVMapTy :: iterator I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ) { GlobalVariable * GV = I -> first ; GlobalVariable * NewGV = I -> second ; auto Next = std :: next ( I ) ; GVMap . erase ( I ) ; I = Next ; Constant * BitCastNewGV = ConstantExpr :: getPointerCast ( NewGV , GV -> getType ( ) ) ; GV -> replaceAllUsesWith ( BitCastNewGV ) ; std :: string Name = std :: string ( GV -> getName ( ) ) ; GV -> eraseFromParent ( ) ; NewGV -> setName ( Name ) ; } assert ( GVMap . empty ( ) && ) ;" LLVM,NVPTX,665,"Predict the next statement of this code snippet: unsigned int AddrSpace = GVType -> getAddressSpace ( ) ; Type * DestTy = PointerType :: get ( Type :: getInt8Ty ( Context ) , AddrSpace ) ; CVTA = Builder . CreateBitCast ( GV , DestTy , ) ; Type * ResultType = PointerType :: get ( Type :: getInt8Ty ( Context ) , llvm :: ADDRESS_SPACE_GENERIC ) ; SmallVector < Type * , > ParamTypes ; ParamTypes . push_back ( ResultType ) ; ParamTypes . push_back ( DestTy ) ; Function * CVTAFunction = ( M , , ParamTypes ) ; CVTA = Builder . CreateCall ( CVTAFunction , CVTA , ) ; DestTy = PointerType :: get ( GV -> getValueType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ; CVTA = Builder . CreateBitCast ( CVTA , DestTy , ) ;" LLVM,NVPTX,666,"Predict the next statement of this code snippet: Value * GenericToNVVM :: getOrInsertCVTA ( Module * M , Function * F , GlobalVariable * GV , IRBuilder < > & Builder ) { PointerType * GVType = GV -> getType ( ) ; Value * CVTA = nullptr ; EVT ExtendedGVType = EVT :: getEVT ( GV -> getValueType ( ) , true ) ; if ( ! ExtendedGVType . isInteger ( ) && ! ExtendedGVType . isFloatingPoint ( ) ) { LLVMContext & Context = M -> getContext ( ) ;" LLVM,NVPTX,667,"Predict the next statement of this code snippet: MDNode * Operand = N -> getOperand ( i ) ; MDNode * NewOperand = MapMetadata ( Operand , VM ) ; OperandChanged |= Operand != NewOperand ; NewOperands . push_back ( NewOperand ) ; } if ( ! OperandChanged ) {" LLVM,NVPTX,668,"Predict the next statement of this code snippet: OperandChanged |= Operand != NewOperand ; NewOperands . push_back ( NewOperand ) ; } if ( ! OperandChanged ) { return ; } N -> dropAllReferences ( ) ; for ( SmallVectorImpl < MDNode * > :: iterator I = NewOperands . begin ( ) , E = NewOperands . end ( ) ; I != E ; ++ I ) { N -> addOperand ( * I ) ;" LLVM,NVPTX,669,"Predict the next statement of this code snippet: } for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , & * I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } ValueToValueMapTy VM ; for ( auto I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ++ I ) VM [ I -> first ] = I -> second ; for ( NamedMDNode & I : M . named_metadata ( ) ) { remapNamedMDNode ( VM , & I ) ; } for ( GVMapTy :: iterator I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ) { GlobalVariable * GV = I -> first ; GlobalVariable * NewGV = I -> second ; auto Next = std :: next ( I ) ; GVMap . erase ( I ) ; I = Next ;" LLVM,NVPTX,670,"Predict the next statement of this code snippet: for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , & * I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } ValueToValueMapTy VM ;" LLVM,NVPTX,671,"Predict the next statement of this code snippet: for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , & * I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } ValueToValueMapTy VM ; for ( auto I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ++ I ) VM [ I -> first ] = I -> second ; for ( NamedMDNode & I : M . named_metadata ( ) ) { remapNamedMDNode ( VM , & I ) ; } for ( GVMapTy :: iterator I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ) { GlobalVariable * GV = I -> first ; GlobalVariable * NewGV = I -> second ; auto Next = std :: next ( I ) ; GVMap . erase ( I ) ; I = Next ; Constant * BitCastNewGV = ConstantExpr :: getPointerCast ( NewGV , GV -> getType ( ) ) ; GV -> replaceAllUsesWith ( BitCastNewGV ) ;" LLVM,NVPTX,672,"Predict the next statement of this code snippet: Value * CVTA = nullptr ; EVT ExtendedGVType = EVT :: getEVT ( GV -> getValueType ( ) , true ) ; if ( ! ExtendedGVType . isInteger ( ) && ! ExtendedGVType . isFloatingPoint ( ) ) { LLVMContext & Context = M -> getContext ( ) ; unsigned int AddrSpace = GVType -> getAddressSpace ( ) ; Type * DestTy = PointerType :: get ( Type :: getInt8Ty ( Context ) , AddrSpace ) ; CVTA = Builder . CreateBitCast ( GV , DestTy , ) ; Type * ResultType = PointerType :: get ( Type :: getInt8Ty ( Context ) , llvm :: ADDRESS_SPACE_GENERIC ) ; Function * CVTAFunction = ( M , , { ResultType , DestTy } ) ;" LLVM,NVPTX,673,"Predict the next statement of this code snippet: return CTII -> second ; } Value * NewValue = C ; if ( isa < GlobalVariable > ( C ) ) { GVMapTy :: iterator I = GVMap . find ( cast < GlobalVariable > ( C ) ) ; if ( I != GVMap . end ( ) ) { NewValue = getOrInsertCVTA ( M , F , I -> second , Builder ) ; } } else if ( isa < ConstantAggregate > ( C ) ) { NewValue = remapConstantVectorOrConstantAggregate ( M , F , C , Builder ) ;" LLVM,NVPTX,674,"Predict the next statement of this code snippet: return CTII -> second ; } Value * NewValue = C ; if ( isa < GlobalVariable > ( C ) ) { GVMapTy :: iterator I = GVMap . find ( cast < GlobalVariable > ( C ) ) ; if ( I != GVMap . end ( ) ) { NewValue = getOrInsertCVTA ( M , F , I -> second , Builder ) ; } } else if ( isa < ConstantAggregate > ( C ) ) { NewValue = remapConstantVectorOrConstantAggregate ( M , F , C , Builder ) ; } else if ( isa < ConstantExpr > ( C ) ) { NewValue = remapConstantExpr ( M , F , cast < ConstantExpr > ( C ) , Builder ) ; }" LLVM,NVPTX,675,"Predict the next statement of this code snippet: } if ( ! OperandChanged ) { return C ; } Value * NewValue = UndefValue :: get ( C -> getType ( ) ) ; if ( isa < ConstantVector > ( C ) ) { for ( unsigned i = ; i < NumOperands ; ++ i ) { Value * Idx = ConstantInt :: get ( Type :: getInt32Ty ( M -> getContext ( ) ) , i ) ; NewValue = Builder . CreateInsertElement ( NewValue , NewOperands [ i ] , Idx ) ; } } else {" LLVM,NVPTX,676,"Predict the next statement of this code snippet: } if ( ! OperandChanged ) { return C ; } Value * NewValue = UndefValue :: get ( C -> getType ( ) ) ; if ( isa < ConstantVector > ( C ) ) { for ( unsigned i = ; i < NumOperands ; ++ i ) { Value * Idx = ConstantInt :: get ( Type :: getInt32Ty ( M -> getContext ( ) ) , i ) ; NewValue = Builder . CreateInsertElement ( NewValue , NewOperands [ i ] , Idx ) ; } } else { for ( unsigned i = ; i < NumOperands ; ++ i ) { NewValue = Builder . CreateInsertValue ( NewValue , NewOperands [ i ] , makeArrayRef ( i ) ) ; }" LLVM,NVPTX,677,"Predict the next statement of this code snippet: GVMap [ GV ] = NewGV ; } } if ( GVMap . empty ( ) ) { return false ; } for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , & * I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } ValueToValueMapTy VM ;" LLVM,NVPTX,678,"Predict the next statement of this code snippet: SmallVector < Value * , > NewOperands ; unsigned NumOperands = C -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) { Value * Operand = C -> getOperand ( i ) ; Value * NewOperand = remapConstant ( M , F , cast < Constant > ( Operand ) , Builder ) ; OperandChanged |= Operand != NewOperand ; NewOperands . push_back ( NewOperand ) ; } if ( ! OperandChanged ) { return C ; } unsigned Opcode = C -> getOpcode ( ) ; switch ( Opcode ) { case Instruction :: ICmp : return Builder . CreateICmp ( CmpInst :: Predicate ( C -> getPredicate ( ) ) , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: FCmp : assert ( false && ) ; return C ; case Instruction :: ExtractElement : return Builder . CreateExtractElement ( NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: InsertElement : return Builder . CreateInsertElement ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: ShuffleVector : return Builder . CreateShuffleVector ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: ExtractValue : return Builder . CreateExtractValue ( NewOperands [ ] , C -> getIndices ( ) ) ; case Instruction :: InsertValue : return Builder . CreateInsertValue ( NewOperands [ ] , NewOperands [ ] , C -> getIndices ( ) ) ; case Instruction :: GetElementPtr :" LLVM,NVPTX,679,"Predict the next statement of this code snippet: switch ( Opcode ) { case Instruction :: ICmp : return Builder . CreateICmp ( CmpInst :: Predicate ( C -> getPredicate ( ) ) , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: FCmp : assert ( false && ) ; return C ; case Instruction :: ExtractElement : return Builder . CreateExtractElement ( NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: InsertElement : return Builder . CreateInsertElement ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: ShuffleVector : return Builder . CreateShuffleVector ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: ExtractValue : return Builder . CreateExtractValue ( NewOperands [ ] , C -> getIndices ( ) ) ; case Instruction :: InsertValue : return Builder . CreateInsertValue ( NewOperands [ ] , NewOperands [ ] , C -> getIndices ( ) ) ; case Instruction :: GetElementPtr : return cast < GEPOperator > ( C ) -> isInBounds ( ) ? Builder . CreateGEP ( cast < GEPOperator > ( C ) -> getSourceElementType ( ) , NewOperands [ ] , makeArrayRef ( & NewOperands [ ] , NumOperands - ) ) : Builder . CreateInBoundsGEP ( cast < GEPOperator > ( C ) -> getSourceElementType ( ) , NewOperands [ ] , makeArrayRef ( & NewOperands [ ] , NumOperands - ) ) ; case Instruction :: Select : return Builder . CreateSelect ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; default : if ( Instruction :: isBinaryOp ( Opcode ) ) { return Builder . CreateBinOp ( Instruction :: BinaryOps ( C -> getOpcode ( ) ) , NewOperands [ ] , NewOperands [ ] ) ; } if ( Instruction :: isCast ( Opcode ) ) { return Builder . CreateCast ( Instruction :: CastOps ( C -> getOpcode ( ) ) , NewOperands [ ] , C -> getType ( ) ) ; }" LLVM,NVPTX,680,"Predict the next statement of this code snippet: if ( GV -> getType ( ) -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_GENERIC && ! llvm :: isTexture ( * GV ) && ! llvm :: isSurface ( * GV ) && ! GV -> getName ( ) . startswith ( ) ) { GlobalVariable * NewGV = new GlobalVariable ( M , GV -> getType ( ) -> getElementType ( ) , GV -> isConstant ( ) , GV -> getLinkage ( ) , GV -> hasInitializer ( ) ? GV -> getInitializer ( ) : NULL , , GV , GV -> getThreadLocalMode ( ) , llvm :: ADDRESS_SPACE_GLOBAL ) ; NewGV -> copyAttributesFrom ( GV ) ; GVMap [ GV ] = NewGV ; } } if ( GVMap . empty ( ) ) { return false ; } for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ;" LLVM,NVPTX,681,"Predict the next statement of this code snippet: if ( GVMap . empty ( ) ) { return false ; } for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } for ( Module :: named_metadata_iterator I = M . named_metadata_begin ( ) , E = M . named_metadata_end ( ) ; I != E ; I ++ ) { remapNamedMDNode ( & M , I ) ; } for ( GVMapTy :: iterator I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ) { GlobalVariable * GV = I -> first ; GlobalVariable * NewGV = I -> second ; ++ I ; Constant * BitCastNewGV = ConstantExpr :: getBitCast ( NewGV , GV -> getType ( ) ) ; for ( Value :: use_iterator UI = GV -> use_begin ( ) , UE = GV -> use_end ( ) ; UI != UE ; ) { Use & U = ( UI ++ ) . getUse ( ) ; U . set ( BitCastNewGV ) ; } std :: string Name = GV -> getName ( ) ; GV -> removeDeadConstantUsers ( ) ; GV -> eraseFromParent ( ) ; NewGV -> setName ( Name ) ; } GVMap . clear ( ) ;" LLVM,NVPTX,682,"Predict the next statement of this code snippet: MDNode * GenericToNVVM :: remapMDNode ( Module * M , MDNode * N ) { bool OperandChanged = false ; SmallVector < Metadata * , > NewOperands ; unsigned NumOperands = N -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) { Metadata * Operand = N -> getOperand ( i ) ; Metadata * NewOperand = Operand ; if ( Operand ) { if ( auto * N = dyn_cast < MDNode > ( Operand ) ) { NewOperand = remapMDNode ( M , N ) ; } else if ( auto * C = dyn_cast < ConstantAsMetadata > ( Operand ) ) { if ( auto * G = dyn_cast < GlobalVariable > ( C -> getValue ( ) ) ) {" LLVM,NVPTX,683,"Predict the next statement of this code snippet: GlobalVariable * GV = I ++ ; if ( GV -> getType ( ) -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_GENERIC && ! llvm :: isTexture ( * GV ) && ! llvm :: isSurface ( * GV ) && ! llvm :: isSampler ( * GV ) && ! GV -> getName ( ) . startswith ( ) ) { GlobalVariable * NewGV = new GlobalVariable ( M , GV -> getType ( ) -> getElementType ( ) , GV -> isConstant ( ) , GV -> getLinkage ( ) , GV -> hasInitializer ( ) ? GV -> getInitializer ( ) : nullptr , , GV , GV -> getThreadLocalMode ( ) , llvm :: ADDRESS_SPACE_GLOBAL ) ; NewGV -> copyAttributesFrom ( GV ) ; GVMap [ GV ] = NewGV ; } } if ( GVMap . empty ( ) ) { return false ; } for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; }" LLVM,NVPTX,684,"Predict the next statement of this code snippet: for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; }" LLVM,NVPTX,685,"Predict the next statement of this code snippet: ParamTypes . push_back ( ResultType ) ; ParamTypes . push_back ( DestTy ) ; Function * CVTAFunction = ( M , , ParamTypes ) ; CVTA = Builder . CreateCall ( CVTAFunction , CVTA , ) ; DestTy = PointerType :: get ( GVType -> getElementType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ; CVTA = Builder . CreateBitCast ( CVTA , DestTy , ) ; } else { SmallVector < Type * , > ParamTypes ; ParamTypes . push_back ( PointerType :: get ( GVType -> getElementType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ) ; ParamTypes . push_back ( GVType ) ; Function * CVTAFunction = ( M , , ParamTypes ) ; CVTA = Builder . CreateCall ( CVTAFunction , GV , ) ; }" LLVM,NVPTX,686,"Predict the next statement of this code snippet: LLVMContext & Context = M -> getContext ( ) ; unsigned int AddrSpace = GVType -> getAddressSpace ( ) ; Type * DestTy = PointerType :: get ( Type :: getInt8Ty ( Context ) , AddrSpace ) ; CVTA = Builder . CreateBitCast ( GV , DestTy , ) ; Type * ResultType = PointerType :: get ( Type :: getInt8Ty ( Context ) , llvm :: ADDRESS_SPACE_GENERIC ) ; SmallVector < Type * , > ParamTypes ; ParamTypes . push_back ( ResultType ) ; ParamTypes . push_back ( DestTy ) ; Function * CVTAFunction = ( M , , ParamTypes ) ; CVTA = Builder . CreateCall ( CVTAFunction , CVTA , ) ; DestTy = PointerType :: get ( GVType -> getElementType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ; CVTA = Builder . CreateBitCast ( CVTA , DestTy , ) ; } else { SmallVector < Type * , > ParamTypes ; ParamTypes . push_back ( PointerType :: get ( GVType -> getElementType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ) ;" LLVM,NVPTX,687,"Predict the next statement of this code snippet: if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } for ( Module :: named_metadata_iterator I = M . named_metadata_begin ( ) , E = M . named_metadata_end ( ) ; I != E ; I ++ ) { remapNamedMDNode ( & M , I ) ; } for ( GVMapTy :: iterator I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ) { GlobalVariable * GV = I -> first ; GlobalVariable * NewGV = I -> second ; ++ I ; Constant * BitCastNewGV = ConstantExpr :: getPointerCast ( NewGV , GV -> getType ( ) ) ; for ( Value :: use_iterator UI = GV -> use_begin ( ) , UE = GV -> use_end ( ) ; UI != UE ; ) ( UI ++ ) -> set ( BitCastNewGV ) ; std :: string Name = GV -> getName ( ) ; GV -> removeDeadConstantUsers ( ) ;" LLVM,NVPTX,688,"Predict the next statement of this code snippet: IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } for ( Module :: named_metadata_iterator I = M . named_metadata_begin ( ) , E = M . named_metadata_end ( ) ;" LLVM,NVPTX,689,"Predict the next statement of this code snippet: ModulePass * llvm :: createGenericToNVVMPass ( ) { return new GenericToNVVM ( ) ;" LLVM,NVPTX,690,"Predict the next statement of this code snippet: ModulePass * llvm :: createGenericToNVVMPass ( ) {" LLVM,NVPTX,691,"Predict the next statement of this code snippet: GenericToNVVM ( ) : ModulePass ( ID ) {" LLVM,NVPTX,692,"Predict the next statement of this code snippet: GenericToNVVM ( ) : ModulePass ( ID ) {" LLVM,NVPTX,693,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,NVPTX,694,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,NVPTX,695,"Predict the next statement of this code snippet: } Value * NewValue = C ; if ( isa < GlobalVariable > ( C ) ) { GVMapTy :: iterator I = GVMap . find ( cast < GlobalVariable > ( C ) ) ; if ( I != GVMap . end ( ) ) { GlobalVariable * GV = I -> second ;" LLVM,NVPTX,696,"Predict the next statement of this code snippet: GlobalVariable * GV = I -> second ; NewValue = Builder . CreateAddrSpaceCast ( GV , PointerType :: get ( GV -> getValueType ( ) , llvm :: ADDRESS_SPACE_GENERIC ) ) ; } } else if ( isa < ConstantAggregate > ( C ) ) { NewValue = remapConstantVectorOrConstantAggregate ( M , F , C , Builder ) ; } else if ( isa < ConstantExpr > ( C ) ) { NewValue = remapConstantExpr ( M , F , cast < ConstantExpr > ( C ) , Builder ) ; } ConstantToValueMap [ C ] = NewValue ; return NewValue ;" LLVM,NVPTX,697,"Predict the next statement of this code snippet: case Instruction :: ICmp : return Builder . CreateICmp ( CmpInst :: Predicate ( C -> getPredicate ( ) ) , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: FCmp : llvm_unreachable ( ) ; case Instruction :: ExtractElement : return Builder . CreateExtractElement ( NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: InsertElement : return Builder . CreateInsertElement ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: ShuffleVector : return Builder . CreateShuffleVector ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; case Instruction :: ExtractValue : return Builder . CreateExtractValue ( NewOperands [ ] , C -> getIndices ( ) ) ; case Instruction :: InsertValue : return Builder . CreateInsertValue ( NewOperands [ ] , NewOperands [ ] , C -> getIndices ( ) ) ; case Instruction :: GetElementPtr : return cast < GEPOperator > ( C ) -> isInBounds ( ) ? Builder . CreateGEP ( cast < GEPOperator > ( C ) -> getSourceElementType ( ) , NewOperands [ ] , makeArrayRef ( & NewOperands [ ] , NumOperands - ) ) : Builder . CreateInBoundsGEP ( cast < GEPOperator > ( C ) -> getSourceElementType ( ) , NewOperands [ ] , makeArrayRef ( & NewOperands [ ] , NumOperands - ) ) ; case Instruction :: Select : return Builder . CreateSelect ( NewOperands [ ] , NewOperands [ ] , NewOperands [ ] ) ; default : if ( Instruction :: isBinaryOp ( Opcode ) ) { return Builder . CreateBinOp ( Instruction :: BinaryOps ( C -> getOpcode ( ) ) , NewOperands [ ] , NewOperands [ ] ) ; } if ( Instruction :: isCast ( Opcode ) ) { return Builder . CreateCast ( Instruction :: CastOps ( C -> getOpcode ( ) ) , NewOperands [ ] , C -> getType ( ) ) ; } llvm_unreachable ( ) ; }" LLVM,NVPTX,698,"Predict the next statement of this code snippet: } Value * NewValue = PoisonValue :: get ( C -> getType ( ) ) ; if ( isa < ConstantVector > ( C ) ) { for ( unsigned i = ; i < NumOperands ; ++ i ) { Value * Idx = ConstantInt :: get ( Type :: getInt32Ty ( M -> getContext ( ) ) , i ) ; NewValue = Builder . CreateInsertElement ( NewValue , NewOperands [ i ] , Idx ) ; } } else { for ( unsigned i = ; i < NumOperands ; ++ i ) { NewValue = Builder . CreateInsertValue ( NewValue , NewOperands [ i ] , makeArrayRef ( i ) ) ; } } return NewValue ;" LLVM,NVPTX,699,"Predict the next statement of this code snippet: if ( GV . getType ( ) -> getAddressSpace ( ) == llvm :: ADDRESS_SPACE_GENERIC && ! llvm :: isTexture ( GV ) && ! llvm :: isSurface ( GV ) && ! llvm :: isSampler ( GV ) && ! GV . getName ( ) . startswith ( ) ) { GlobalVariable * NewGV = new GlobalVariable ( M , GV . getValueType ( ) , GV . isConstant ( ) , GV . getLinkage ( ) , GV . hasInitializer ( ) ? GV . getInitializer ( ) : nullptr , , & GV , GV . getThreadLocalMode ( ) , llvm :: ADDRESS_SPACE_GLOBAL ) ; NewGV -> copyAttributesFrom ( & GV ) ; GVMap [ & GV ] = NewGV ; } } if ( GVMap . empty ( ) ) { return false ; } for ( Module :: iterator I = M . begin ( ) , E = M . end ( ) ; I != E ; ++ I ) { if ( I -> isDeclaration ( ) ) { continue ; } IRBuilder < > Builder ( I -> getEntryBlock ( ) . getFirstNonPHIOrDbg ( ) ) ; for ( Function :: iterator BBI = I -> begin ( ) , BBE = I -> end ( ) ; BBI != BBE ; ++ BBI ) { for ( BasicBlock :: iterator II = BBI -> begin ( ) , IE = BBI -> end ( ) ; II != IE ; ++ II ) { for ( unsigned i = , e = II -> getNumOperands ( ) ; i < e ; ++ i ) { Value * Operand = II -> getOperand ( i ) ; if ( isa < Constant > ( Operand ) ) { II -> setOperand ( i , remapConstant ( & M , & * I , cast < Constant > ( Operand ) , Builder ) ) ; } } } } ConstantToValueMap . clear ( ) ; } ValueToValueMapTy VM ; for ( auto I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ++ I ) VM [ I -> first ] = I -> second ; for ( GVMapTy :: iterator I = GVMap . begin ( ) , E = GVMap . end ( ) ; I != E ; ) { GlobalVariable * GV = I -> first ; GlobalVariable * NewGV = I -> second ; auto Next = std :: next ( I ) ; GVMap . erase ( I ) ; I = Next ; Constant * BitCastNewGV = ConstantExpr :: getPointerCast ( NewGV , GV -> getType ( ) ) ; GV -> replaceAllUsesWith ( BitCastNewGV ) ; std :: string Name = std :: string ( GV -> getName ( ) ) ;" LLVM,NVPTX,700,"Predict the next statement of this code snippet: return cleanupValue ( EVI -> getAggregateOperand ( ) ) ; }" LLVM,NVPTX,701,"Predict the next statement of this code snippet: Value * ImageOptimizer :: cleanupValue ( Value * V ) { if ( ExtractValueInst * EVI = dyn_cast < ExtractValueInst > ( V ) ) { return cleanupValue ( EVI -> getAggregateOperand ( ) ) ;" LLVM,NVPTX,702,"Predict the next statement of this code snippet: FunctionPass * llvm :: createImageOptimizerPass ( ) { return new ImageOptimizer ( ) ;" LLVM,NVPTX,703,"Predict the next statement of this code snippet: FunctionPass * llvm :: createImageOptimizerPass ( ) { return new ImageOptimizer ( ) ;" LLVM,NVPTX,704,"Predict the next statement of this code snippet: ImageOptimizer :: ImageOptimizer ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,705,"Predict the next statement of this code snippet: ImageOptimizer :: ImageOptimizer ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,706,"Predict the next statement of this code snippet: if ( isSampler ( * TexHandle ) ) { replaceWith ( & I , ConstantInt :: getTrue ( I . getContext ( ) ) ) ; return true ; } else if ( isImage ( * TexHandle ) ) { replaceWith ( & I , ConstantInt :: getFalse ( I . getContext ( ) ) ) ; return true ;" LLVM,NVPTX,707,"Predict the next statement of this code snippet: bool ImageOptimizer :: replaceIsTypePSurface ( Instruction & I ) { Value * TexHandle = cleanupValue ( I . getOperand ( ) ) ; if ( isImageReadWrite ( * TexHandle ) || isImageWriteOnly ( * TexHandle ) ) {" LLVM,NVPTX,708,"Predict the next statement of this code snippet: return true ; } else if ( isImageReadOnly ( * TexHandle ) || isSampler ( * TexHandle ) ) { replaceWith ( & I , ConstantInt :: getFalse ( I . getContext ( ) ) ) ; return true ; } else {" LLVM,NVPTX,709,"Predict the next statement of this code snippet: replaceWith ( & I , ConstantInt :: getTrue ( I . getContext ( ) ) ) ; return true ;" LLVM,NVPTX,710,"Predict the next statement of this code snippet: void ImageOptimizer :: replaceWith ( Instruction * From , ConstantInt * To ) { for ( CallInst :: use_iterator UI = From -> use_begin ( ) , UE = From -> use_end ( ) ; UI != UE ; ++ UI ) { if ( BranchInst * BI = dyn_cast < BranchInst > ( * UI ) ) { if ( BI -> isUnconditional ( ) ) continue ; BasicBlock * Dest ; if ( To -> isZero ( ) ) Dest = BI -> getSuccessor ( ) ;" LLVM,NVPTX,711,"Predict the next statement of this code snippet: BasicBlock * Dest ; if ( To -> isZero ( ) ) Dest = BI -> getSuccessor ( ) ; else Dest = BI -> getSuccessor ( ) ; BranchInst :: Create ( Dest , BI ) ;" LLVM,NVPTX,712,"Predict the next statement of this code snippet: for ( Use & U : From -> uses ( ) ) { if ( BranchInst * BI = dyn_cast < BranchInst > ( U ) ) { if ( BI -> isUnconditional ( ) ) continue ; BasicBlock * Dest ; if ( To -> isZero ( ) ) Dest = BI -> getSuccessor ( ) ; else Dest = BI -> getSuccessor ( ) ; BranchInst :: Create ( Dest , BI ) ; InstrToDelete . push_back ( BI ) ; }" LLVM,NVPTX,713,"Predict the next statement of this code snippet: bool ImageOptimizer :: runOnFunction ( Function & F ) { if ( skipFunction ( F ) ) return false ; bool Changed = false ; InstrToDelete . clear ( ) ; for ( BasicBlock & BB : F ) { for ( Instruction & Instr : BB ) { if ( CallInst * CI = dyn_cast < CallInst > ( & Instr ) ) { Function * CalledF = CI -> getCalledFunction ( ) ; if ( CalledF && CalledF -> isIntrinsic ( ) ) { switch ( CalledF -> getIntrinsicID ( ) ) { default : break ; case : Changed |= replaceIsTypePSampler ( Instr ) ; break ; case : Changed |= replaceIsTypePSurface ( Instr ) ; break ; case : Changed |= replaceIsTypePTexture ( Instr ) ; break ; } } } }" LLVM,NVPTX,714,"Predict the next statement of this code snippet: } else if ( isImageWriteOnly ( * TexHandle ) || isImageReadWrite ( * TexHandle ) || isImageReadOnly ( * TexHandle ) ) { replaceWith ( & I , ConstantInt :: getFalse ( I . getContext ( ) ) ) ; return true ; } else { return false ;" LLVM,NVPTX,715,"Predict the next statement of this code snippet: return true ; } else if ( isImageWriteOnly ( * TexHandle ) || isImageReadWrite ( * TexHandle ) || isImageReadOnly ( * TexHandle ) ) { replaceWith ( & I , ConstantInt :: getFalse ( I . getContext ( ) ) ) ; return true ; } else { return false ;" LLVM,NVPTX,716,"Predict the next statement of this code snippet: Function * CalledF = CI -> getCalledFunction ( ) ; if ( CalledF && CalledF -> isIntrinsic ( ) ) { switch ( CalledF -> getIntrinsicID ( ) ) { default : break ; case : Changed |= replaceIsTypePSampler ( Instr ) ; break ; case : Changed |= replaceIsTypePSurface ( Instr ) ; break ; case : Changed |= replaceIsTypePTexture ( Instr ) ; break ; } } } } }" LLVM,NVPTX,717,"Predict the next statement of this code snippet: assert ( V -> getType ( ) -> isPointerTy ( ) ) ; if ( isAddressExpression ( * V ) && V -> getType ( ) -> getPointerAddressSpace ( ) == AddressSpace :: ADDRESS_SPACE_GENERIC ) { if ( Visited -> insert ( V ) . second ) PostorderStack -> push_back ( std :: make_pair ( V , false ) ) ;" LLVM,NVPTX,718,"Predict the next statement of this code snippet: Type * TargetType = CE -> getType ( ) -> getPointerElementType ( ) -> getPointerTo ( NewAddrSpace ) ; if ( CE -> getOpcode ( ) == Instruction :: AddrSpaceCast ) { assert ( CE -> getOperand ( ) -> getType ( ) -> getPointerAddressSpace ( ) == NewAddrSpace ) ; return ConstantExpr :: getBitCast ( CE -> getOperand ( ) , TargetType ) ; } SmallVector < Constant * , > NewOperands ; for ( unsigned Index = ; Index < CE -> getNumOperands ( ) ; ++ Index ) { Constant * Operand = CE -> getOperand ( Index ) ; if ( Value * NewOperand = ValueWithNewAddrSpace . lookup ( Operand ) ) { NewOperands . push_back ( cast < Constant > ( NewOperand ) ) ; } else { NewOperands . push_back ( Operand ) ; } } if ( CE -> getOpcode ( ) == Instruction :: GetElementPtr ) {" LLVM,NVPTX,719,"Predict the next statement of this code snippet: SmallVector < Constant * , > NewOperands ; for ( unsigned Index = ; Index < CE -> getNumOperands ( ) ; ++ Index ) { Constant * Operand = CE -> getOperand ( Index ) ; if ( Value * NewOperand = ValueWithNewAddrSpace . lookup ( Operand ) ) { NewOperands . push_back ( cast < Constant > ( NewOperand ) ) ; } else { NewOperands . push_back ( Operand ) ; }" LLVM,NVPTX,720,"Predict the next statement of this code snippet: PHINode * NewPHI = PHINode :: Create ( NewPtrType , PHI -> getNumIncomingValues ( ) ) ; for ( unsigned Index = ; Index < PHI -> getNumIncomingValues ( ) ; ++ Index ) { unsigned OperandNo = PHINode :: getOperandNumForIncomingValue ( Index ) ; NewPHI -> addIncoming ( NewPointerOperands [ OperandNo ] , PHI -> getIncomingBlock ( Index ) ) ; } return NewPHI ; } case Instruction :: GetElementPtr : { GetElementPtrInst * GEP = cast < GetElementPtrInst > ( I ) ; GetElementPtrInst * NewGEP = GetElementPtrInst :: Create ( GEP -> getSourceElementType ( ) , NewPointerOperands [ ] , SmallVector < Value * , > ( GEP -> idx_begin ( ) , GEP -> idx_end ( ) ) ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; return NewGEP ; }" LLVM,NVPTX,721,"Predict the next statement of this code snippet: static std :: vector < Value * > collectGenericAddressExpressions ( Function & F ) { std :: vector < std :: pair < Value * , bool >> PostorderStack ; DenseSet < Value * > Visited ; for ( Instruction & I : instructions ( F ) ) { if ( isa < LoadInst > ( I ) ) {" LLVM,NVPTX,722,"Predict the next statement of this code snippet: if ( isa < LoadInst > ( I ) ) { appendsGenericAddressExpressionToPostorderStack ( I . getOperand ( ) , & PostorderStack , & Visited ) ; } else if ( isa < StoreInst > ( I ) ) { appendsGenericAddressExpressionToPostorderStack ( I . getOperand ( ) , & PostorderStack , & Visited ) ; } } std :: vector < Value * > Postorder ; while ( ! PostorderStack . empty ( ) ) { if ( PostorderStack . back ( ) . second ) { Postorder . push_back ( PostorderStack . back ( ) . first ) ; PostorderStack . pop_back ( ) ; continue ; } PostorderStack . back ( ) . second = true ; for ( Value * PtrOperand : getPointerOperands ( * PostorderStack . back ( ) . first ) ) {" LLVM,NVPTX,723,"Predict the next statement of this code snippet: FunctionPass * llvm :: createInferAddressSpacesPass ( ) {" LLVM,NVPTX,724,"Predict the next statement of this code snippet: const Operator & Op = cast < Operator > ( V ) ; switch ( Op . getOpcode ( ) ) { case Instruction :: PHI : { auto IncomingValues = cast < PHINode > ( Op ) . incoming_values ( ) ; return SmallVector < Value * , > ( IncomingValues . begin ( ) , IncomingValues . end ( ) ) ; } case Instruction :: BitCast : case Instruction :: AddrSpaceCast : case Instruction :: GetElementPtr :" LLVM,NVPTX,725,"Predict the next statement of this code snippet: assert ( isAddressExpression ( V ) ) ; const Operator & Op = cast < Operator > ( V ) ; switch ( Op . getOpcode ( ) ) { case Instruction :: PHI : { auto IncomingValues = cast < PHINode > ( Op ) . incoming_values ( ) ; return SmallVector < Value * , > ( IncomingValues . begin ( ) , IncomingValues . end ( ) ) ; } case Instruction :: BitCast : case Instruction :: AddrSpaceCast : case Instruction :: GetElementPtr : return { Op . getOperand ( ) } ; default : llvm_unreachable ( ) ; }" LLVM,NVPTX,726,"Predict the next statement of this code snippet: Optional < unsigned > NewAS = updateAddressSpace ( * V , * InferredAddrSpace ) ; if ( ! NewAS . hasValue ( ) ) continue ; DEBUG ( dbgs ( ) << << NewAS . getValue ( ) << ) ; ( * InferredAddrSpace ) [ V ] = NewAS . getValue ( ) ; for ( Value * User : V -> users ( ) ) { if ( Worklist . count ( User ) ) continue ; auto Pos = InferredAddrSpace -> find ( User ) ; if ( Pos == InferredAddrSpace -> end ( ) ) continue ; if ( Pos -> second == AddressSpace :: ADDRESS_SPACE_GENERIC ) continue ;" LLVM,NVPTX,727,"Predict the next statement of this code snippet: switch ( cast < Operator > ( V ) . getOpcode ( ) ) { case Instruction :: PHI : case Instruction :: BitCast : case Instruction :: AddrSpaceCast : case Instruction :: GetElementPtr :" LLVM,NVPTX,728,"Predict the next statement of this code snippet: if ( AS2 == ADDRESS_SPACE_UNINITIALIZED ) return AS1 ; return AS1 == AS2 ? AS1 : ( unsigned ) AddressSpace :: ADDRESS_SPACE_GENERIC ;" LLVM,NVPTX,729,"Predict the next statement of this code snippet: InferAddressSpaces ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,730,"Predict the next statement of this code snippet: InferAddressSpaces ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,731,"Predict the next statement of this code snippet: UndefUsesToFix -> push_back ( & OperandUse ) ; return UndefValue :: get ( Operand -> getType ( ) -> getPointerElementType ( ) -> getPointerTo ( NewAddrSpace ) ) ;" LLVM,NVPTX,732,"Predict the next statement of this code snippet: if ( NewV == nullptr ) continue ; SmallVector < Use * , > Uses ; for ( Use & U : V -> uses ( ) ) Uses . push_back ( & U ) ; DEBUG ( dbgs ( ) << << * V << << * NewV << ) ; for ( Use * U : Uses ) { if ( isa < LoadInst > ( U -> getUser ( ) ) || ( isa < StoreInst > ( U -> getUser ( ) ) && U -> getOperandNo ( ) == ) ) { U -> set ( NewV ) ; } else if ( isa < Instruction > ( U -> getUser ( ) ) ) { if ( Instruction * I = dyn_cast < Instruction > ( V ) ) {" LLVM,NVPTX,733,"Predict the next statement of this code snippet: std :: vector < Value * > Postorder = collectGenericAddressExpressions ( F ) ; ValueToAddrSpaceMapTy InferredAddrSpace ;" LLVM,NVPTX,734,"Predict the next statement of this code snippet: if ( skipFunction ( F ) ) return false ; std :: vector < Value * > Postorder = collectGenericAddressExpressions ( F ) ; ValueToAddrSpaceMapTy InferredAddrSpace ;" LLVM,NVPTX,735,"Predict the next statement of this code snippet: if ( InferredAddrSpace . count ( PtrOperand ) ) OperandAS = InferredAddrSpace . lookup ( PtrOperand ) ; else OperandAS = PtrOperand -> getType ( ) -> getPointerAddressSpace ( ) ; NewAS = joinAddressSpaces ( NewAS , OperandAS ) ; if ( NewAS == AddressSpace :: ADDRESS_SPACE_GENERIC ) break ; } unsigned OldAS = InferredAddrSpace . lookup ( & V ) ; assert ( OldAS != AddressSpace :: ADDRESS_SPACE_GENERIC ) ; if ( OldAS == NewAS ) return None ;" LLVM,NVPTX,736,"Predict the next statement of this code snippet: InstPrinter :: InstPrinter ( const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) : MCInstPrinter ( MAI , MII , MRI ) {" LLVM,NVPTX,737,"Predict the next statement of this code snippet: InstPrinter :: InstPrinter ( const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) : MCInstPrinter ( MAI , MII , MRI ) {" LLVM,NVPTX,738,"Predict the next statement of this code snippet: printInstruction ( MI , Address , OS ) ; printAnnotation ( OS , Annot ) ;" LLVM,NVPTX,739,"Predict the next statement of this code snippet: if ( ! strcmp ( Modifier , ) ) { if ( Imm ) O << ; } else if ( ! strcmp ( Modifier , ) ) { switch ( Imm ) { case :: GLOBAL : O << ; break ; case :: SHARED : O << ; break ; case :: LOCAL : O << ; break ; case :: PARAM : O << ; break ; case :: CONSTANT : O << ; break ; case :: GENERIC : break ; default : llvm_unreachable ( ) ; } } else if ( ! strcmp ( Modifier , ) ) { if ( Imm == :: Signed ) O << ;" LLVM,NVPTX,740,"Predict the next statement of this code snippet: int Imm = ( int ) MO . getImm ( ) ; if ( Modifier == nullptr || strcmp ( Modifier , ) == ) { O << Imm ; } else if ( strcmp ( Modifier , ) == ) { if ( Imm >= ) O << ;" LLVM,NVPTX,741,"Predict the next statement of this code snippet: unsigned Reg = Op . getReg ( ) ; printRegName ( O , Reg ) ; } else if ( Op . isImm ( ) ) { O << markup ( ) << formatImm ( Op . getImm ( ) ) << markup ( ) ; } else { assert ( Op . isExpr ( ) && ) ;" LLVM,NVPTX,742,"Predict the next statement of this code snippet: unsigned Reg = Op . getReg ( ) ; printRegName ( O , Reg ) ; } else if ( Op . isImm ( ) ) { O << markup ( ) << formatImm ( Op . getImm ( ) ) << markup ( ) ; } else { assert ( Op . isExpr ( ) && ) ; Op . getExpr ( ) -> print ( O , & MAI ) ; }" LLVM,NVPTX,743,"Predict the next statement of this code snippet: OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; }" LLVM,NVPTX,744,"Predict the next statement of this code snippet: printInstruction ( MI , OS ) ; printAnnotation ( OS , Annot ) ;" LLVM,NVPTX,745,"Predict the next statement of this code snippet: int64_t Imm = MO . getImm ( ) ; if ( strcmp ( Modifier , ) == ) { if ( Imm & :: FTZ_FLAG ) O << ; } else if ( strcmp ( Modifier , ) == ) { if ( Imm & :: SAT_FLAG ) O << ; } else if ( strcmp ( Modifier , ) == ) { if ( Imm & :: RELU_FLAG ) O << ; } else if ( strcmp ( Modifier , ) == ) { switch ( Imm & :: BASE_MASK ) { default : return ; case :: NONE : break ; case :: RNI : O << ; break ;" LLVM,NVPTX,746,"Predict the next statement of this code snippet: case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; } unsigned VReg = RegNo & ; OS << VReg ;" LLVM,NVPTX,747,"Predict the next statement of this code snippet: case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; }" LLVM,NVPTX,748,"Predict the next statement of this code snippet: OS << ; break ; case : OS << ; break ; case : OS << ; break ; case : OS << ; break ; } unsigned VReg = RegNo & ; OS << VReg ;" LLVM,NVPTX,749,"Predict the next statement of this code snippet: InstPrinter :: InstPrinter ( const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI , const MCSubtargetInfo & STI ) : MCInstPrinter ( MAI , MII , MRI ) { setAvailableFeatures ( STI . getFeatureBits ( ) ) ;" LLVM,NVPTX,750,"Predict the next statement of this code snippet: break ; case :: LO : O << ; break ; case :: LS : O << ; break ; case :: HI : O << ; break ; case :: HS : O << ; break ; case :: EQU : O << ; break ; case :: NEU : O << ; break ; case :: LTU : O << ; break ; case :: LEU : O << ; break ; case :: GTU : O << ; break ; case :: GEU : O << ; break ; case :: NUM : O << ; break ; case :: NotANumber : O << ; break ; }" LLVM,NVPTX,751,"Predict the next statement of this code snippet: if ( Imm & :: FTZ_FLAG ) O << ; } else if ( strcmp ( Modifier , ) == ) { if ( Imm & :: SAT_FLAG ) O << ; } else if ( strcmp ( Modifier , ) == ) { switch ( Imm & :: BASE_MASK ) { default : return ; case :: NONE : break ; case :: RNI : O << ; break ; case :: RZI : O << ; break ; case :: RMI : O << ; break ; case :: RPI :" LLVM,NVPTX,752,"Predict the next statement of this code snippet: default : return ; case :: NONE : break ; case :: RNI : O << ; break ; case :: RZI : O << ; break ; case :: RMI : O << ; break ; case :: RPI : O << ; break ; case :: RN : O << ; break ; case :: RZ : O << ; break ; case :: RM : O << ; break ; case :: RP : O << ; break ; } } else {" LLVM,NVPTX,753,"Predict the next statement of this code snippet: void InstPrinter :: printInst ( const MCInst * MI , raw_ostream & OS , StringRef Annot ) { printInstruction ( MI , OS ) ;" LLVM,NVPTX,754,"Predict the next statement of this code snippet: printInstruction ( MI , OS ) ;" LLVM,NVPTX,755,"Predict the next statement of this code snippet: O << ; break ; case :: LOCAL : O << ; break ; case :: PARAM : O << ; break ; case :: CONSTANT : O << ; break ; case :: GENERIC : break ; default : llvm_unreachable ( ) ; } } else if ( ! strcmp ( Modifier , ) ) { if ( Imm == :: Signed ) O << ; else if ( Imm == :: Unsigned ) O << ; else O << ;" LLVM,NVPTX,756,"Predict the next statement of this code snippet: } else { if ( MI -> getOperand ( OpNum + ) . isImm ( ) && MI -> getOperand ( OpNum + ) . getImm ( ) == ) return ; O << ; printOperand ( MI , OpNum + , O ) ; }" LLVM,NVPTX,757,"Predict the next statement of this code snippet: printRegName ( O , Reg ) ; } else if ( Op . isImm ( ) ) { O << markup ( ) << formatImm ( Op . getImm ( ) ) << markup ( ) ; } else { assert ( Op . isExpr ( ) && ) ;" LLVM,NVPTX,758,"Predict the next statement of this code snippet: const MCSymbol & Sym = cast < MCSymbolRefExpr > ( Expr ) -> getSymbol ( ) ;" LLVM,NVPTX,759,"Predict the next statement of this code snippet: virtual const RegisterInfo & getRegisterInfo ( ) const { return RegInfo ;" LLVM,NVPTX,760,"Predict the next statement of this code snippet: else if ( DestRC == & ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( DestRC == & ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,NVPTX,761,"Predict the next statement of this code snippet: unsigned InstrInfo :: InsertBranch ( MachineBasicBlock & MBB , MachineBasicBlock * TBB , MachineBasicBlock * FBB , const SmallVectorImpl < MachineOperand > & Cond , DebugLoc DL ) const { assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( FBB == ) { if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; else BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ;" LLVM,NVPTX,762,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( TargetMachine & tm ) : GenInstrInfo ( ) , TM ( tm ) , RegInfo ( * TM . getSubtargetImpl ( ) ) {" LLVM,NVPTX,763,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( TargetMachine & tm ) : GenInstrInfo ( ) , TM ( tm ) , RegInfo ( * TM . getSubtargetImpl ( ) ) {" LLVM,NVPTX,764,"Predict the next statement of this code snippet: Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else { llvm_unreachable ( ) ; } BuildMI ( MBB , I , DL , get ( Op ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,NVPTX,765,"Predict the next statement of this code snippet: else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else { llvm_unreachable ( ) ; }" LLVM,NVPTX,766,"Predict the next statement of this code snippet: void InstrInfo :: copyPhysReg ( MachineBasicBlock & MBB , MachineBasicBlock :: iterator I , const DebugLoc & DL , MCRegister DestReg , MCRegister SrcReg , bool KillSrc ) const { const MachineRegisterInfo & MRI = MBB . getParent ( ) -> getRegInfo ( ) ; const TargetRegisterClass * DestRC = MRI . getRegClass ( DestReg ) ; const TargetRegisterClass * SrcRC = MRI . getRegClass ( SrcReg ) ; if ( RegInfo . getRegSizeInBits ( * DestRC ) != RegInfo . getRegSizeInBits ( * SrcRC ) ) report_fatal_error ( ) ; unsigned Op ; if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) {" LLVM,NVPTX,767,"Predict the next statement of this code snippet: } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else { llvm_unreachable ( ) ; }" LLVM,NVPTX,768,"Predict the next statement of this code snippet: assert ( ! BytesAdded && ) ; assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( ! FBB ) { if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; else BuildMI ( & MBB , DL , get ( ) ) . add ( Cond [ ] ) . addMBB ( TBB ) ; return ; } BuildMI ( & MBB , DL , get ( ) ) . add ( Cond [ ] ) . addMBB ( TBB ) ; BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ; return ;" LLVM,NVPTX,769,"Predict the next statement of this code snippet: assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( ! FBB ) { if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; else BuildMI ( & MBB , DL , get ( ) ) . add ( Cond [ ] ) . addMBB ( TBB ) ; return ; } BuildMI ( & MBB , DL , get ( ) ) . add ( Cond [ ] ) . addMBB ( TBB ) ; BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ; return ;" LLVM,NVPTX,770,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : RegInfo ( ) {" LLVM,NVPTX,771,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : RegInfo ( ) {" LLVM,NVPTX,772,"Predict the next statement of this code snippet: void InstrInfo :: anchor ( ) {" LLVM,NVPTX,773,"Predict the next statement of this code snippet: void InstrInfo :: anchor ( ) {" LLVM,NVPTX,774,"Predict the next statement of this code snippet: } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else { llvm_unreachable ( ) ;" LLVM,NVPTX,775,"Predict the next statement of this code snippet: assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( ! FBB ) { if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; else BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ; return ; } BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ;" LLVM,NVPTX,776,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : GenInstrInfo ( ) , RegInfo ( ) {" LLVM,NVPTX,777,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( ) : GenInstrInfo ( ) , RegInfo ( ) {" LLVM,NVPTX,778,"Predict the next statement of this code snippet: I -> eraseFromParent ( ) ; I = MBB . end ( ) ; if ( I == MBB . begin ( ) ) return ; -- I ; if ( I -> getOpcode ( ) != ) return ; I -> eraseFromParent ( ) ;" LLVM,NVPTX,779,"Predict the next statement of this code snippet: assert ( ! BytesRemoved && ) ; MachineBasicBlock :: iterator I = MBB . end ( ) ; if ( I == MBB . begin ( ) ) return ; -- I ; if ( I -> getOpcode ( ) != && I -> getOpcode ( ) != ) return ; I -> eraseFromParent ( ) ; I = MBB . end ( ) ;" LLVM,NVPTX,780,"Predict the next statement of this code snippet: assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( ! FBB ) { if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; else BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ; return ; }" LLVM,NVPTX,781,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & STI ) : GenInstrInfo ( ) , RegInfo ( STI ) {" LLVM,NVPTX,782,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( Subtarget & STI ) : GenInstrInfo ( ) , RegInfo ( STI ) {" LLVM,NVPTX,783,"Predict the next statement of this code snippet: const TargetRegisterClass * SrcRC = MRI . getRegClass ( SrcReg ) ; if ( DestRC -> getSize ( ) != SrcRC -> getSize ( ) ) report_fatal_error ( ) ; unsigned Op ; if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ;" LLVM,NVPTX,784,"Predict the next statement of this code snippet: } MachineInstr * SecondLastInst = I ; if ( SecondLastInst && I != MBB . begin ( ) && isUnpredicatedTerminator ( * -- I ) ) return true ; if ( SecondLastInst -> getOpcode ( ) == && LastInst -> getOpcode ( ) == ) { TBB = SecondLastInst -> getOperand ( ) . getMBB ( ) ; Cond . push_back ( SecondLastInst -> getOperand ( ) ) ; FBB = LastInst -> getOperand ( ) . getMBB ( ) ; return false ; } if ( SecondLastInst -> getOpcode ( ) == && LastInst -> getOpcode ( ) == ) { TBB = SecondLastInst -> getOperand ( ) . getMBB ( ) ; I = LastInst ; if ( AllowModify ) I -> eraseFromParent ( ) ; return false ; } return true ;" LLVM,NVPTX,785,"Predict the next statement of this code snippet: } else if ( LastInst -> getOpcode ( ) == ) { TBB = LastInst -> getOperand ( ) . getMBB ( ) ; Cond . push_back ( LastInst -> getOperand ( ) ) ; return false ; } return true ; } MachineInstr * SecondLastInst = I ; if ( SecondLastInst && I != MBB . begin ( ) && isUnpredicatedTerminator ( * -- I ) ) return true ; if ( SecondLastInst -> getOpcode ( ) == && LastInst -> getOpcode ( ) == ) { TBB = SecondLastInst -> getOperand ( ) . getMBB ( ) ; Cond . push_back ( SecondLastInst -> getOperand ( ) ) ; FBB = LastInst -> getOperand ( ) . getMBB ( ) ; return false ; } if ( SecondLastInst -> getOpcode ( ) == && LastInst -> getOpcode ( ) == ) { TBB = SecondLastInst -> getOperand ( ) . getMBB ( ) ; I = LastInst ; if ( AllowModify ) I -> eraseFromParent ( ) ; return false ; }" LLVM,NVPTX,786,"Predict the next statement of this code snippet: Op = ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else {" LLVM,NVPTX,787,"Predict the next statement of this code snippet: else BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ; return ; } BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ; BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ; return ;" LLVM,NVPTX,788,"Predict the next statement of this code snippet: if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ;" LLVM,NVPTX,789,"Predict the next statement of this code snippet: else if ( DestRC == & ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( DestRC == & ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( DestRC == & ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else {" LLVM,NVPTX,790,"Predict the next statement of this code snippet: const TargetRegisterClass * SrcRC = MRI . getRegClass ( SrcReg ) ; if ( DestRC != SrcRC ) report_fatal_error ( ) ; if ( DestRC == & ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( DestRC == & ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,NVPTX,791,"Predict the next statement of this code snippet: if ( DestRC -> getSize ( ) != SrcRC -> getSize ( ) ) report_fatal_error ( ) ; unsigned Op ; if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ; } else if ( DestRC == & ) { Op = ( SrcRC == & ? : ) ;" LLVM,NVPTX,792,"Predict the next statement of this code snippet: unsigned InstrInfo :: InsertBranch ( MachineBasicBlock & MBB , MachineBasicBlock * TBB , MachineBasicBlock * FBB , ArrayRef < MachineOperand > Cond , const DebugLoc & DL ) const { assert ( TBB && ) ;" LLVM,NVPTX,793,"Predict the next statement of this code snippet: if ( LastInst . getOpcode ( ) == ) { TBB = LastInst . getOperand ( ) . getMBB ( ) ; return false ; } else if ( LastInst . getOpcode ( ) == ) { TBB = LastInst . getOperand ( ) . getMBB ( ) ; Cond . push_back ( LastInst . getOperand ( ) ) ; return false ; } return true ; } MachineInstr & SecondLastInst = * I ; if ( I != MBB . begin ( ) && isUnpredicatedTerminator ( * -- I ) ) return true ; if ( SecondLastInst . getOpcode ( ) == && LastInst . getOpcode ( ) == ) { TBB = SecondLastInst . getOperand ( ) . getMBB ( ) ; Cond . push_back ( SecondLastInst . getOperand ( ) ) ; FBB = LastInst . getOperand ( ) . getMBB ( ) ; return false ; } if ( SecondLastInst . getOpcode ( ) == && LastInst . getOpcode ( ) == ) { TBB = SecondLastInst . getOperand ( ) . getMBB ( ) ; I = LastInst ; if ( AllowModify ) I -> eraseFromParent ( ) ; return false ;" LLVM,NVPTX,794,"Predict the next statement of this code snippet: if ( I == MBB . begin ( ) || ! isUnpredicatedTerminator ( * -- I ) ) { if ( LastInst . getOpcode ( ) == ) { TBB = LastInst . getOperand ( ) . getMBB ( ) ; return false ; } else if ( LastInst . getOpcode ( ) == ) { TBB = LastInst . getOperand ( ) . getMBB ( ) ; Cond . push_back ( LastInst . getOperand ( ) ) ; return false ; } return true ; } MachineInstr & SecondLastInst = * I ; if ( I != MBB . begin ( ) && isUnpredicatedTerminator ( * -- I ) ) return true ; if ( SecondLastInst . getOpcode ( ) == && LastInst . getOpcode ( ) == ) { TBB = SecondLastInst . getOperand ( ) . getMBB ( ) ; Cond . push_back ( SecondLastInst . getOperand ( ) ) ; FBB = LastInst . getOperand ( ) . getMBB ( ) ; return false ; } if ( SecondLastInst . getOpcode ( ) == && LastInst . getOpcode ( ) == ) {" LLVM,NVPTX,795,"Predict the next statement of this code snippet: unsigned addrspace = ; if ( MI -> getOpcode ( ) == ) return false ;" LLVM,NVPTX,796,"Predict the next statement of this code snippet: return MI . getOperand ( ) . getImm ( ) ;" LLVM,NVPTX,797,"Predict the next statement of this code snippet: TBB = LastInst -> getOperand ( ) . getMBB ( ) ; return false ; } else if ( LastInst -> getOpcode ( ) == ) { TBB = LastInst -> getOperand ( ) . getMBB ( ) ; Cond . push_back ( LastInst -> getOperand ( ) ) ; return false ; } return true ; } MachineInstr * SecondLastInst = I ; if ( SecondLastInst && I != MBB . begin ( ) && isUnpredicatedTerminator ( -- I ) ) return true ; if ( SecondLastInst -> getOpcode ( ) == && LastInst -> getOpcode ( ) == ) { TBB = SecondLastInst -> getOperand ( ) . getMBB ( ) ; Cond . push_back ( SecondLastInst -> getOperand ( ) ) ; FBB = LastInst -> getOperand ( ) . getMBB ( ) ; return false ; } if ( SecondLastInst -> getOpcode ( ) == && LastInst -> getOpcode ( ) == ) {" LLVM,NVPTX,798,"Predict the next statement of this code snippet: if ( isLoadInstr ( * MI , addrspace ) ) if ( addrspace == :: SHARED ) return false ; if ( isStoreInstr ( * MI , addrspace ) ) if ( addrspace == :: SHARED ) return false ;" LLVM,NVPTX,799,"Predict the next statement of this code snippet: else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ; else if ( . contains ( DestReg ) && . contains ( SrcReg ) ) BuildMI ( MBB , I , DL , get ( ) , DestReg ) . addReg ( SrcReg , getKillRegState ( KillSrc ) ) ;" LLVM,NVPTX,800,"Predict the next statement of this code snippet: unsigned getLdStCodeAddrSpace ( const MachineInstr & MI ) const { return MI . getOperand ( ) . getImm ( ) ;" LLVM,NVPTX,801,"Predict the next statement of this code snippet: return RegInfo ;" LLVM,NVPTX,802,"Predict the next statement of this code snippet: const RegisterInfo & getRegisterInfo ( ) const {" LLVM,NVPTX,803,"Predict the next statement of this code snippet: assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( FBB == ) { if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ; else BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ; return ; } BuildMI ( & MBB , DL , get ( ) ) . addReg ( Cond [ ] . getReg ( ) ) . addMBB ( TBB ) ; BuildMI ( & MBB , DL , get ( ) ) . addMBB ( FBB ) ; return ;" LLVM,NVPTX,804,"Predict the next statement of this code snippet: assert ( TBB && ) ; assert ( ( Cond . size ( ) == || Cond . size ( ) == ) && ) ; if ( FBB == ) { if ( Cond . empty ( ) ) BuildMI ( & MBB , DL , get ( ) ) . addMBB ( TBB ) ;" LLVM,NVPTX,805,"Predict the next statement of this code snippet: bool InstrInfo :: isLoadInstr ( const MachineInstr & MI , unsigned & AddrSpace ) const { bool isLoad = false ; unsigned TSFlags = ( MI . getDesc ( ) . TSFlags & ) >> ; isLoad = ( TSFlags == ) ; if ( isLoad ) AddrSpace = getLdStCodeAddrSpace ( MI ) ; return isLoad ;" LLVM,NVPTX,806,"Predict the next statement of this code snippet: isLoad = ( TSFlags == ) ; if ( isLoad ) AddrSpace = getLdStCodeAddrSpace ( MI ) ; return isLoad ;" LLVM,NVPTX,807,"Predict the next statement of this code snippet: bool isMove = false ; unsigned TSFlags = ( MI . getDesc ( ) . TSFlags & ) >> ; isMove = ( TSFlags == ) ; if ( isMove ) { MachineOperand dest = MI . getOperand ( ) ; MachineOperand src = MI . getOperand ( ) ;" LLVM,NVPTX,808,"Predict the next statement of this code snippet: unsigned TSFlags = ( MI . getDesc ( ) . TSFlags & ) >> ; isMove = ( TSFlags == ) ; if ( isMove ) { MachineOperand dest = MI . getOperand ( ) ;" LLVM,NVPTX,809,"Predict the next statement of this code snippet: bool isStore = false ; unsigned TSFlags = ( MI . getDesc ( ) . TSFlags & ) >> ; isStore = ( TSFlags == ) ; if ( isStore ) AddrSpace = getLdStCodeAddrSpace ( MI ) ; return isStore ;" LLVM,NVPTX,810,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( TargetMachine & tm ) : GenInstrInfo ( ) , TM ( tm ) , RegInfo ( * this , * TM . getSubtargetImpl ( ) ) {" LLVM,NVPTX,811,"Predict the next statement of this code snippet: InstrInfo :: InstrInfo ( TargetMachine & tm ) : GenInstrInfo ( ) , TM ( tm ) , RegInfo ( * this , * TM . getSubtargetImpl ( ) ) {" LLVM,NVPTX,812,"Predict the next statement of this code snippet: unsigned InstrInfo :: RemoveBranch ( MachineBasicBlock & MBB ) const { MachineBasicBlock :: iterator I = MBB . end ( ) ; if ( I == MBB . begin ( ) ) return ; -- I ; if ( I -> getOpcode ( ) != && I -> getOpcode ( ) != ) return ; I -> eraseFromParent ( ) ; I = MBB . end ( ) ; if ( I == MBB . begin ( ) ) return ; -- I ; if ( I -> getOpcode ( ) != ) return ; I -> eraseFromParent ( ) ;" LLVM,NVPTX,813,"Predict the next statement of this code snippet: if ( auto * A = dyn_cast < const Argument > ( V ) ) return IsKernelFn && A -> onlyReadsMemory ( ) && A -> hasNoAliasAttr ( ) ;" LLVM,NVPTX,814,"Predict the next statement of this code snippet: return CurDAG -> getTargetConstant ( Imm , DL , ) ;" LLVM,NVPTX,815,"Predict the next statement of this code snippet: return CurDAG -> getTargetConstant ( Imm , DL , ) ;" LLVM,NVPTX,816,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,NVPTX,817,"Predict the next statement of this code snippet: Subtarget = & static_cast < const Subtarget & > ( MF . getSubtarget ( ) ) ; return SelectionDAGISel :: runOnMachineFunction ( MF ) ;" LLVM,NVPTX,818,"Predict the next statement of this code snippet: if ( IdxConst -> getZExtValue ( ) == ) E0 . push_back ( U ) ; else if ( IdxConst -> getZExtValue ( ) == ) E1 . push_back ( U ) ; else llvm_unreachable ( ) ; } } if ( E0 . empty ( ) || E1 . empty ( ) ) return false ; unsigned Op = ; SDValue Source = Vector ; if ( Vector -> getOpcode ( ) == ) { Op = ;" LLVM,NVPTX,819,"Predict the next statement of this code snippet: bool DAGToDAGISel :: allowFMA ( ) const { const TargetLowering * TL = Subtarget -> getTargetLowering ( ) ; return TL -> allowFMA ( * MF , OptLevel ) ;" LLVM,NVPTX,820,"Predict the next statement of this code snippet: const TargetLowering * TL = Subtarget -> getTargetLowering ( ) ; return TL -> allowUnsafeFPMath ( * MF ) ;" LLVM,NVPTX,821,"Predict the next statement of this code snippet: const TargetLowering * TL = Subtarget -> getTargetLowering ( ) ; return TL -> allowUnsafeFPMath ( * MF ) ;" LLVM,NVPTX,822,"Predict the next statement of this code snippet: static bool canLowerToLDG ( MemSDNode * N , const Subtarget & Subtarget , unsigned CodeAddrSpace , MachineFunction * F ) { if ( ! Subtarget . hasLDG ( ) || CodeAddrSpace != :: GLOBAL ) return false ; if ( N -> isInvariant ( ) ) return true ; bool IsKernelFn = isKernelFunction ( F -> getFunction ( ) ) ; SmallVector < const Value * , > Objs ;" LLVM,NVPTX,823,"Predict the next statement of this code snippet: if ( auto * A = dyn_cast < const Argument > ( V ) ) return IsKernelFn && A -> onlyReadsMemory ( ) && A -> hasNoAliasAttr ( ) ;" LLVM,NVPTX,824,"Predict the next statement of this code snippet: } if ( ! Src ) return false ; if ( auto * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) return ( PT -> getAddressSpace ( ) == spN ) ; return false ;" LLVM,NVPTX,825,"Predict the next statement of this code snippet: return new DAGToDAGISel ( TM , OptLevel ) ;" LLVM,NVPTX,826,"Predict the next statement of this code snippet: if ( ! Src ) return :: GENERIC ; if ( auto * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) { switch ( PT -> getAddressSpace ( ) ) { case llvm :: ADDRESS_SPACE_LOCAL : return :: LOCAL ; case llvm :: ADDRESS_SPACE_GLOBAL : return :: GLOBAL ; case llvm :: ADDRESS_SPACE_SHARED : return :: SHARED ; case llvm :: ADDRESS_SPACE_GENERIC : return :: GENERIC ;" LLVM,NVPTX,827,"Predict the next statement of this code snippet: case : return IsSigned ? : ; case : return IsSigned ? : ; case : return IsSigned ? : ; } case : switch ( DestTy . SimpleTy ) { default : llvm_unreachable ( ) ; case : return IsSigned ? : ; case : return IsSigned ? : ; case : return IsSigned ? : ; } case : switch ( DestTy . SimpleTy ) { default : llvm_unreachable ( ) ; case : return IsSigned ? : ; case : return IsSigned ? : ; case : return IsSigned ? : ; } case : switch ( DestTy . SimpleTy ) { default : llvm_unreachable ( ) ; case :" LLVM,NVPTX,828,"Predict the next statement of this code snippet: case : switch ( DestTy . SimpleTy ) { default : llvm_unreachable ( ) ; case : return IsSigned ? : ; case : return IsSigned ? : ; case : return IsSigned ? : ; } case : switch ( DestTy . SimpleTy ) { default : llvm_unreachable ( ) ; case : return IsSigned ? : ; case : return IsSigned ? : ; case : return IsSigned ? : ; } case : switch ( DestTy . SimpleTy ) {" LLVM,NVPTX,829,"Predict the next statement of this code snippet: int DAGToDAGISel :: getDivF32Level ( ) const {" LLVM,NVPTX,830,"Predict the next statement of this code snippet: inline SDValue getI32Imm ( unsigned Imm , SDLoc DL ) { return CurDAG -> getTargetConstant ( Imm , DL , ) ;" LLVM,NVPTX,831,"Predict the next statement of this code snippet: inline SDValue getI32Imm ( unsigned Imm , SDLoc DL ) {" LLVM,NVPTX,832,"Predict the next statement of this code snippet: const char * getPassName ( ) const override { return ;" LLVM,NVPTX,833,"Predict the next statement of this code snippet: const char * getPassName ( ) const override {" LLVM,NVPTX,834,"Predict the next statement of this code snippet: return CmpMode :: EQ ; case : return CmpMode :: GT ; case : return CmpMode :: GE ; case : return CmpMode :: LT ; case : return CmpMode :: LE ; case : return CmpMode :: NE ; case : return CmpMode :: NUM ; case : return CmpMode :: NotANumber ; case : return CmpMode :: EQU ; case : return CmpMode :: GTU ; case : return CmpMode :: GEU ; case : return CmpMode :: LTU ; case : return CmpMode :: LEU ; case : return CmpMode :: NEU ; case : return CmpMode :: EQ ; case : return CmpMode :: GT ; case : return CmpMode :: GE ; case : return CmpMode :: LT ;" LLVM,NVPTX,835,"Predict the next statement of this code snippet: DAGToDAGISel :: DAGToDAGISel ( TargetMachine & tm , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( tm , OptLevel ) , TM ( tm ) {" LLVM,NVPTX,836,"Predict the next statement of this code snippet: bool DAGToDAGISel :: runOnMachineFunction ( MachineFunction & MF ) { Subtarget = & MF . getSubtarget < Subtarget > ( ) ; return SelectionDAGISel :: runOnMachineFunction ( MF ) ;" LLVM,NVPTX,837,"Predict the next statement of this code snippet: Subtarget = & MF . getSubtarget < Subtarget > ( ) ;" LLVM,NVPTX,838,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectADDRri ( SDNode * OpNode , SDValue Addr , SDValue & Base , SDValue & Offset ) {" LLVM,NVPTX,839,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectADDRri64 ( SDNode * OpNode , SDValue Addr , SDValue & Base , SDValue & Offset ) {" LLVM,NVPTX,840,"Predict the next statement of this code snippet: if ( Addr . getOpcode ( ) == || Addr . getOpcode ( ) == ) return false ; if ( Addr . getOpcode ( ) == ) { if ( SelectDirectAddr ( Addr . getOperand ( ) , Addr ) ) { return false ; } if ( ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { if ( FrameIndexSDNode * FIN = dyn_cast < FrameIndexSDNode > ( Addr . getOperand ( ) ) ) Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , mvt ) ; else Base = Addr . getOperand ( ) ; Offset = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , SDLoc ( OpNode ) , mvt ) ; return true ;" LLVM,NVPTX,841,"Predict the next statement of this code snippet: return true ; } if ( Addr . getOpcode ( ) == || Addr . getOpcode ( ) == ) return false ; if ( Addr . getOpcode ( ) == ) { if ( SelectDirectAddr ( Addr . getOperand ( ) , Addr ) ) { return false ; } if ( ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) {" LLVM,NVPTX,842,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectADDRsi64 ( SDNode * OpNode , SDValue Addr , SDValue & Base , SDValue & Offset ) {" LLVM,NVPTX,843,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectADDRsi_imp ( SDNode * OpNode , SDValue Addr , SDValue & Base , SDValue & Offset , MVT mvt ) { if ( Addr . getOpcode ( ) == ) { if ( ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { SDValue base = Addr . getOperand ( ) ; if ( SelectDirectAddr ( base , Base ) ) { Offset = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , SDLoc ( OpNode ) , mvt ) ; return true ; } } } return false ;" LLVM,NVPTX,844,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectADDRsi_imp ( SDNode * OpNode , SDValue Addr , SDValue & Base , SDValue & Offset , MVT mvt ) { if ( Addr . getOpcode ( ) == ) { if ( ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { SDValue base = Addr . getOperand ( ) ; if ( SelectDirectAddr ( base , Base ) ) { Offset = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , SDLoc ( OpNode ) , mvt ) ; return true ; } } } return false ;" LLVM,NVPTX,845,"Predict the next statement of this code snippet: case ADDRESS_SPACE_SHARED : Opc = TM . is64Bit ( ) ? ( useShortPointers ( ) ? : ) : ; break ; case ADDRESS_SPACE_CONST : Opc = TM . is64Bit ( ) ? ( useShortPointers ( ) ? : ) : ; break ; case ADDRESS_SPACE_LOCAL : Opc = TM . is64Bit ( ) ? ( useShortPointers ( ) ? : ) : ; break ; } ReplaceNode ( N , CurDAG -> getMachineNode ( Opc , SDLoc ( N ) , N -> getValueType ( ) , Src ) ) ; return ; } else { if ( SrcAddrSpace != ) report_fatal_error ( ) ; unsigned Opc ; switch ( DstAddrSpace ) { default : report_fatal_error ( ) ; case ADDRESS_SPACE_GLOBAL : Opc = TM . is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_SHARED :" LLVM,NVPTX,846,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectDirectAddr ( SDValue N , SDValue & Address ) { if ( N . getOpcode ( ) == || N . getOpcode ( ) == ) { Address = N ; return true ; }" LLVM,NVPTX,847,"Predict the next statement of this code snippet: if ( SelectDirectAddr ( Op , Op0 ) ) { OutOps . push_back ( Op0 ) ; OutOps . push_back ( CurDAG -> getTargetConstant ( , SDLoc ( Op ) , ) ) ; return false ; }" LLVM,NVPTX,848,"Predict the next statement of this code snippet: OutOps . push_back ( Op0 ) ; OutOps . push_back ( CurDAG -> getTargetConstant ( , SDLoc ( Op ) , ) ) ; return false ; } if ( SelectADDRri ( Op . getNode ( ) , Op , Op0 , Op1 ) ) {" LLVM,NVPTX,849,"Predict the next statement of this code snippet: SDLoc DL ( N ) ;" LLVM,NVPTX,850,"Predict the next statement of this code snippet: void DAGToDAGISel :: SelectTexSurfHandle ( SDNode * N ) {" LLVM,NVPTX,851,"Predict the next statement of this code snippet: void DAGToDAGISel :: SelectTexSurfHandle ( SDNode * N ) {" LLVM,NVPTX,852,"Predict the next statement of this code snippet: if ( N -> getValueType ( ) != ) return false ;" LLVM,NVPTX,853,"Predict the next statement of this code snippet: SDNode * LoadConstF16 = CurDAG -> getMachineNode ( , SDLoc ( N ) , , Val ) ; ReplaceNode ( N , LoadConstF16 ) ;" LLVM,NVPTX,854,"Predict the next statement of this code snippet: SDValue Vector = N -> getOperand ( ) ; if ( Vector . getSimpleValueType ( ) != ) return false ; SmallVector < SDNode * , > E0 , E1 ; for ( auto U : Vector . getNode ( ) -> uses ( ) ) { if ( U -> getOpcode ( ) != ) continue ; if ( U -> getOperand ( ) != Vector ) continue ; if ( const ConstantSDNode * IdxConst = dyn_cast < ConstantSDNode > ( U -> getOperand ( ) ) ) { if ( IdxConst -> getZExtValue ( ) == ) E0 . push_back ( U ) ; else if ( IdxConst -> getZExtValue ( ) == ) E1 . push_back ( U ) ; else llvm_unreachable ( ) ; } } if ( E0 . empty ( ) || E1 . empty ( ) ) return false ; unsigned Op = ; SDValue Source = Vector ; if ( Vector -> getOpcode ( ) == ) { Op = ; Source = Vector -> getOperand ( ) ;" LLVM,NVPTX,855,"Predict the next statement of this code snippet: switch ( IID ) { default : return false ; case : SelectTexSurfHandle ( N ) ;" LLVM,NVPTX,856,"Predict the next statement of this code snippet: } else if ( PointerSize == ? SelectADDRsi64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRsi ( N1 . getNode ( ) , N1 , Base , Offset ) ) { Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } else if ( PointerSize == ? SelectADDRri64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRri ( N1 . getNode ( ) , N1 , Base , Offset ) ) { if ( PointerSize == ) Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; else Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } else { if ( PointerSize == ) Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; else Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , N1 , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } if ( ! LD ) return false ; MachineMemOperand * MemRef = cast < MemSDNode > ( N ) -> getMemOperand ( ) ; CurDAG -> setNodeMemRefs ( cast < MachineSDNode > ( LD ) , { MemRef } ) ; ReplaceNode ( N , LD ) ;" LLVM,NVPTX,857,"Predict the next statement of this code snippet: switch ( Node -> getOpcode ( ) ) { default : return false ; case : VecSize = ; break ; case : VecSize = ; break ; case : VecSize = ; break ; } EVT EltVT = Node -> getValueType ( ) ; EVT MemVT = Mem -> getMemoryVT ( ) ; Optional < unsigned > Opcode ; switch ( VecSize ) { default : return false ; case : Opcode = pickOpcodeForVT ( MemVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( MemVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( MemVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } if ( ! Opcode ) return false ; SDVTList VTs ; if ( VecSize == ) {" LLVM,NVPTX,858,"Predict the next statement of this code snippet: SDValue Value = PlainStore ? PlainStore -> getValue ( ) : AtomicStore -> getVal ( ) ; SDValue BasePtr = ST -> getBasePtr ( ) ; SDValue Addr ; SDValue Offset , Base ; Optional < unsigned > Opcode ; SourceVT = Value . getNode ( ) -> getSimpleValueType ( ) . SimpleTy ; if ( SelectDirectAddr ( BasePtr , Addr ) ) { Opcode = pickOpcodeForVT ( SourceVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { Value , getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( toType , dl ) , getI32Imm ( toTypeWidth , dl ) , Addr , Chain } ; ST = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , , Ops ) ; } else if ( PointerSize == ? SelectADDRsi64 ( BasePtr . getNode ( ) , BasePtr , Base , Offset ) : SelectADDRsi ( BasePtr . getNode ( ) , BasePtr , Base , Offset ) ) { Opcode = pickOpcodeForVT ( SourceVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { Value , getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( toType , dl ) , getI32Imm ( toTypeWidth , dl ) , Base , Offset , Chain } ; ST = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , , Ops ) ; } else if ( PointerSize == ? SelectADDRri64 ( BasePtr . getNode ( ) , BasePtr , Base , Offset ) : SelectADDRri ( BasePtr . getNode ( ) , BasePtr , Base , Offset ) ) { if ( PointerSize == ) Opcode = pickOpcodeForVT ( SourceVT , , , , , , , , ) ; else Opcode = pickOpcodeForVT ( SourceVT , , , , , , , , ) ; if ( ! Opcode ) return false ;" LLVM,NVPTX,859,"Predict the next statement of this code snippet: if ( ! Opcode ) return false ; break ; case : { Opcode = ; SDValue CvtNone = CurDAG -> getTargetConstant ( :: NONE , DL , ) ; SDNode * Cvt = CurDAG -> getMachineNode ( , DL , , Ops [ ] , CvtNone ) ; Ops [ ] = SDValue ( Cvt , ) ; break ; } case : { Opcode = ; SDValue CvtNone = CurDAG -> getTargetConstant ( :: NONE , DL , ) ; SDNode * Cvt = CurDAG -> getMachineNode ( , DL , , Ops [ ] , CvtNone ) ; Ops [ ] = SDValue ( Cvt , ) ; break ; } } SDVTList RetVTs = CurDAG -> getVTList ( , ) ; SDNode * Ret = CurDAG -> getMachineNode ( Opcode . getValue ( ) , DL , RetVTs , Ops ) ; MachineMemOperand * MemRef = cast < MemSDNode > ( N ) -> getMemOperand ( ) ; CurDAG -> setNodeMemRefs ( cast < MachineSDNode > ( Ret ) , { MemRef } ) ;" LLVM,NVPTX,860,"Predict the next statement of this code snippet: return Subtarget -> getTargetLowering ( ) -> useF32FTZ ( * MF ) ;" LLVM,NVPTX,861,"Predict the next statement of this code snippet: return Subtarget -> getTargetLowering ( ) -> usePrecSqrtF32 ( ) ;" LLVM,NVPTX,862,"Predict the next statement of this code snippet: return TM . useShortPointers ( ) ;" LLVM,NVPTX,863,"Predict the next statement of this code snippet: if ( ! Src ) return false ; if ( const PointerType * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) return ( PT -> getAddressSpace ( ) == spN ) ; return false ;" LLVM,NVPTX,864,"Predict the next statement of this code snippet: Src = mN -> getSrcValue ( ) ; } else if ( MemSDNode * mN = dyn_cast < MemIntrinsicSDNode > ( N ) ) { Src = mN -> getSrcValue ( ) ; }" LLVM,NVPTX,865,"Predict the next statement of this code snippet: case llvm :: ADDRESS_SPACE_LOCAL : return :: LOCAL ; case llvm :: ADDRESS_SPACE_GLOBAL : return :: GLOBAL ; case llvm :: ADDRESS_SPACE_SHARED : return :: SHARED ; case llvm :: ADDRESS_SPACE_GENERIC : return :: GENERIC ; case llvm :: ADDRESS_SPACE_PARAM : return :: PARAM ; case llvm :: ADDRESS_SPACE_CONST : return :: CONSTANT ; default : break ; }" LLVM,NVPTX,866,"Predict the next statement of this code snippet: const Value * Src = N -> getSrcValue ( ) ; if ( ! Src ) return :: GENERIC ; if ( const PointerType * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) { switch ( PT -> getAddressSpace ( ) ) { case llvm :: ADDRESS_SPACE_LOCAL : return :: LOCAL ; case llvm :: ADDRESS_SPACE_GLOBAL : return :: GLOBAL ; case llvm :: ADDRESS_SPACE_SHARED : return :: SHARED ; case llvm :: ADDRESS_SPACE_GENERIC : return :: GENERIC ; case llvm :: ADDRESS_SPACE_PARAM : return :: PARAM ; case llvm :: ADDRESS_SPACE_CONST : return :: CONSTANT ; default : break ; } } return :: GENERIC ;" LLVM,NVPTX,867,"Predict the next statement of this code snippet: doFMAF64AGG = ( OptLevel > ) && Subtarget . hasFMAF64 ( ) && ( FMAContractLevel == ) ; allowFMA = ( FMAContractLevel >= ) || UseFMADInstruction ; UseF32FTZ = false ; doMulWide = ( OptLevel > ) ; do_DIVF32_PREC = UsePrecDivF32 ; do_SQRTF32_PREC = UsePrecSqrtF32 ;" LLVM,NVPTX,868,"Predict the next statement of this code snippet: case : ResNode = SelectLoadVector ( N ) ; break ; case : case : case : case : ResNode = SelectLDGLDUVector ( N ) ; break ; case : case : ResNode = SelectStoreVector ( N ) ; break ; case : case : case : ResNode = SelectLoadParam ( N ) ; break ; case : case : case : ResNode = SelectStoreRetval ( N ) ; break ;" LLVM,NVPTX,869,"Predict the next statement of this code snippet: return true ; } if ( Addr . getOpcode ( ) == || Addr . getOpcode ( ) == ) return false ; if ( Addr . getOpcode ( ) == ) { if ( SelectDirectAddr ( Addr . getOperand ( ) , Addr ) ) { return false ; } if ( ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { if ( FrameIndexSDNode * FIN = dyn_cast < FrameIndexSDNode > ( Addr . getOperand ( ) ) ) Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , mvt ) ; else Base = Addr . getOperand ( ) ; Offset = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , mvt ) ; return true ; }" LLVM,NVPTX,870,"Predict the next statement of this code snippet: Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , mvt ) ; Offset = CurDAG -> getTargetConstant ( , mvt ) ; return true ; } if ( Addr . getOpcode ( ) == || Addr . getOpcode ( ) == ) return false ; if ( Addr . getOpcode ( ) == ) {" LLVM,NVPTX,871,"Predict the next statement of this code snippet: SDValue base = Addr . getOperand ( ) ; if ( SelectDirectAddr ( base , Base ) ) {" LLVM,NVPTX,872,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectInlineAsmMemoryOperand ( const SDValue & Op , char ConstraintCode , std :: vector < SDValue > & OutOps ) { SDValue Op0 , Op1 ; switch ( ConstraintCode ) { default : return true ; case 'm' : if ( SelectDirectAddr ( Op , Op0 ) ) { OutOps . push_back ( Op0 ) ; OutOps . push_back ( CurDAG -> getTargetConstant ( , ) ) ; return false ; } if ( SelectADDRri ( Op . getNode ( ) , Op , Op0 , Op1 ) ) { OutOps . push_back ( Op0 ) ; OutOps . push_back ( Op1 ) ; return false ; } break ; } return true ;" LLVM,NVPTX,873,"Predict the next statement of this code snippet: Opcode = ; break ; default : return NULL ; } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRri64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRri ( N1 . getNode ( ) , N1 , Base , Offset ) ) { if ( Subtarget . is64Bit ( ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } } else { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops ) ; } else { if ( Subtarget . is64Bit ( ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } } else { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,874,"Predict the next statement of this code snippet: return NULL ; case : NumElts = ; break ; case : NumElts = ; break ; case : NumElts = ; break ; } SmallVector < SDValue , > Ops ; for ( unsigned i = ; i < NumElts ; ++ i ) Ops . push_back ( N -> getOperand ( i + ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( OffsetVal , ) ) ; Ops . push_back ( Chain ) ; unsigned Opcode = ; switch ( NumElts ) { default : return NULL ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,875,"Predict the next statement of this code snippet: return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,876,"Predict the next statement of this code snippet: if ( ! isKernelFunction ( * F -> getFunction ( ) ) ) return false ; SmallVector < Value * , > Objs ; GetUnderlyingObjects ( const_cast < Value * > ( N -> getMemOperand ( ) -> getValue ( ) ) , Objs , F -> getDataLayout ( ) ) ; for ( Value * Obj : Objs ) { auto * A = dyn_cast < const Argument > ( Obj ) ; if ( ! A || ! A -> onlyReadsMemory ( ) || ! A -> hasNoAliasAttr ( ) ) return false ;" LLVM,NVPTX,877,"Predict the next statement of this code snippet: return false ; case : SelectTexSurfHandle ( N ) ; return true ; case : case : SelectMatchAll ( N ) ; return true ; }" LLVM,NVPTX,878,"Predict the next statement of this code snippet: if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( codeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } else if ( TM . is64Bit ( ) ? SelectADDRri64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRri ( N1 . getNode ( ) , N1 , Base , Offset ) ) { if ( TM . is64Bit ( ) ) Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; else Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( codeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } else { if ( TM . is64Bit ( ) ) Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; else Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( codeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , N1 , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } if ( ! LD ) return false ; MachineSDNode :: mmo_iterator MemRefs0 = MF -> allocateMemRefsArray ( ) ; MemRefs0 [ ] = cast < MemSDNode > ( N ) -> getMemOperand ( ) ; cast < MachineSDNode > ( LD ) -> setMemRefs ( MemRefs0 , MemRefs0 + ) ; ReplaceNode ( N , LD ) ; return true ;" LLVM,NVPTX,879,"Predict the next statement of this code snippet: return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( IsVolatile , DL ) , getI32Imm ( CodeAddrSpace , DL ) , getI32Imm ( VecType , DL ) , getI32Imm ( FromType , DL ) , getI32Imm ( FromTypeWidth , DL ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , DL , N -> getVTList ( ) , Ops ) ; } else if ( TM . is64Bit ( ) ? SelectADDRri64 ( Op1 . getNode ( ) , Op1 , Base , Offset ) : SelectADDRri ( Op1 . getNode ( ) , Op1 , Base , Offset ) ) { if ( TM . is64Bit ( ) ) { switch ( N -> getOpcode ( ) ) { default : return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } } else { switch ( N -> getOpcode ( ) ) { default : return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } } if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( IsVolatile , DL ) , getI32Imm ( CodeAddrSpace , DL ) , getI32Imm ( VecType , DL ) , getI32Imm ( FromType , DL ) , getI32Imm ( FromTypeWidth , DL ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , DL , N -> getVTList ( ) , Ops ) ; } else { if ( TM . is64Bit ( ) ) { switch ( N -> getOpcode ( ) ) { default : return false ; case :" LLVM,NVPTX,880,"Predict the next statement of this code snippet: SmallVector < SDValue , > Ops ; for ( unsigned i = ; i < NumElts ; ++ i ) Ops . push_back ( N -> getOperand ( i + ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( ParamVal , DL , ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( OffsetVal , DL , ) ) ; Ops . push_back ( Chain ) ; Ops . push_back ( Flag ) ; Optional < unsigned > Opcode = ; switch ( N -> getOpcode ( ) ) { default : switch ( NumElts ) { default : return false ; case : Opcode = pickOpcodeForVT ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } if ( ! Opcode ) return false ; break ; case : { Opcode = ; SDValue CvtNone = CurDAG -> getTargetConstant ( :: NONE , DL , ) ; SDNode * Cvt = CurDAG -> getMachineNode ( , DL , , Ops [ ] , CvtNone ) ; Ops [ ] = SDValue ( Cvt , ) ; break ; } case : { Opcode = ; SDValue CvtNone = CurDAG -> getTargetConstant ( :: NONE , DL , ) ; SDNode * Cvt = CurDAG -> getMachineNode ( , DL , , Ops [ ] , CvtNone ) ;" LLVM,NVPTX,881,"Predict the next statement of this code snippet: break ; } SmallVector < SDValue , > Ops ; for ( unsigned i = ; i < NumElts ; ++ i ) Ops . push_back ( N -> getOperand ( i + ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( ParamVal , DL , ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( OffsetVal , DL , ) ) ; Ops . push_back ( Chain ) ; Ops . push_back ( Flag ) ; Optional < unsigned > Opcode = ; switch ( N -> getOpcode ( ) ) { default : switch ( NumElts ) { default : return false ; case : Opcode = pickOpcodeForVT ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } if ( ! Opcode ) return false ; break ; case : { Opcode = ; SDValue CvtNone = CurDAG -> getTargetConstant ( :: NONE , DL , ) ; SDNode * Cvt = CurDAG -> getMachineNode ( , DL , , Ops [ ] , CvtNone ) ; Ops [ ] = SDValue ( Cvt , ) ; break ; } case : { Opcode = ; SDValue CvtNone = CurDAG -> getTargetConstant ( :: NONE , DL , ) ; SDNode * Cvt = CurDAG -> getMachineNode ( , DL , , Ops [ ] , CvtNone ) ;" LLVM,NVPTX,882,"Predict the next statement of this code snippet: return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( IsVolatile , DL ) , getI32Imm ( CodeAddrSpace , DL ) , getI32Imm ( VecType , DL ) , getI32Imm ( FromType , DL ) , getI32Imm ( FromTypeWidth , DL ) , Addr , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , DL , N -> getVTList ( ) , Ops ) ; } else if ( PointerSize == ? SelectADDRsi64 ( Op1 . getNode ( ) , Op1 , Base , Offset ) : SelectADDRsi ( Op1 . getNode ( ) , Op1 , Base , Offset ) ) { switch ( N -> getOpcode ( ) ) { default : return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( IsVolatile , DL ) , getI32Imm ( CodeAddrSpace , DL ) , getI32Imm ( VecType , DL ) , getI32Imm ( FromType , DL ) , getI32Imm ( FromTypeWidth , DL ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , DL , N -> getVTList ( ) , Ops ) ; } else if ( PointerSize == ? SelectADDRri64 ( Op1 . getNode ( ) , Op1 , Base , Offset ) : SelectADDRri ( Op1 . getNode ( ) , Op1 , Base , Offset ) ) { if ( PointerSize == ) { switch ( N -> getOpcode ( ) ) { default : return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } } else { switch ( N -> getOpcode ( ) ) {" LLVM,NVPTX,883,"Predict the next statement of this code snippet: } unsigned int PointerSize = CurDAG -> getDataLayout ( ) . getPointerSizeInBits ( MemSD -> getAddressSpace ( ) ) ; bool IsVolatile = MemSD -> isVolatile ( ) ; if ( CodeAddrSpace != :: GLOBAL && CodeAddrSpace != :: SHARED && CodeAddrSpace != :: GENERIC ) IsVolatile = false ; MVT SimpleVT = LoadedVT . getSimpleVT ( ) ; MVT ScalarVT = SimpleVT . getScalarType ( ) ; unsigned FromTypeWidth = std :: max ( , ScalarVT . getSizeInBits ( ) ) ; unsigned int FromType ; unsigned ExtensionType = cast < ConstantSDNode > ( N -> getOperand ( N -> getNumOperands ( ) - ) ) -> getZExtValue ( ) ; if ( ExtensionType == ) FromType = :: Signed ; else if ( ScalarVT . isFloatingPoint ( ) ) FromType = ScalarVT . SimpleTy == ? :: Untyped : :: Float ; else FromType = :: Unsigned ; unsigned VecType ; switch ( N -> getOpcode ( ) ) { case : VecType = :: V2 ; break ; case : VecType = :: V4 ; break ; default : return false ; } EVT EltVT = N -> getValueType ( ) ; if ( EltVT == ) { assert ( N -> getOpcode ( ) == && ) ; EltVT = ; FromType = :: Untyped ; FromTypeWidth = ; } if ( SelectDirectAddr ( Op1 , Addr ) ) { switch ( N -> getOpcode ( ) ) { default : return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , None , , , , None ) ; break ; } if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( IsVolatile , DL ) , getI32Imm ( CodeAddrSpace , DL ) , getI32Imm ( VecType , DL ) , getI32Imm ( FromType , DL ) , getI32Imm ( FromTypeWidth , DL ) , Addr , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , DL , N -> getVTList ( ) , Ops ) ; } else if ( PointerSize == ? SelectADDRsi64 ( Op1 . getNode ( ) , Op1 , Base , Offset ) : SelectADDRsi ( Op1 . getNode ( ) , Op1 , Base , Offset ) ) { switch ( N -> getOpcode ( ) ) { default : return false ; case : Opcode = pickOpcodeForVT ( EltVT . getSimpleVT ( ) . SimpleTy , , , , , , , , ) ; break ;" LLVM,NVPTX,884,"Predict the next statement of this code snippet: if ( ! Opcode ) return false ; SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( toType , dl ) , getI32Imm ( toTypeWidth , dl ) , Addr , Chain } ; ST = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , , Ops ) ; } else if ( PointerSize == ? SelectADDRsi64 ( N2 . getNode ( ) , N2 , Base , Offset ) : SelectADDRsi ( N2 . getNode ( ) , N2 , Base , Offset ) ) { Opcode = pickOpcodeForVT ( SourceVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( toType , dl ) , getI32Imm ( toTypeWidth , dl ) , Base , Offset , Chain } ; ST = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , , Ops ) ; } else if ( PointerSize == ? SelectADDRri64 ( N2 . getNode ( ) , N2 , Base , Offset ) : SelectADDRri ( N2 . getNode ( ) , N2 , Base , Offset ) ) { if ( PointerSize == ) Opcode = pickOpcodeForVT ( SourceVT , , , , , , , , ) ; else Opcode = pickOpcodeForVT ( SourceVT , , , , , , , , ) ;" LLVM,NVPTX,885,"Predict the next statement of this code snippet: } else { if ( TM . Options . UnsafeFPMath ) return ; else return ; }" LLVM,NVPTX,886,"Predict the next statement of this code snippet: doFMAF32AGG = ( OptLevel > ) && Subtarget . hasFMAF32 ( ) && ( FMAContractLevel == ) ; doFMAF64AGG = ( OptLevel > ) && Subtarget . hasFMAF64 ( ) && ( FMAContractLevel == ) ; allowFMA = ( FMAContractLevel >= ) ; doMulWide = ( OptLevel > ) ;" LLVM,NVPTX,887,"Predict the next statement of this code snippet: doFMAF32AGG = ( OptLevel > ) && Subtarget . hasFMAF32 ( ) && ( FMAContractLevel == ) ; doFMAF64AGG = ( OptLevel > ) && Subtarget . hasFMAF64 ( ) && ( FMAContractLevel == ) ;" LLVM,NVPTX,888,"Predict the next statement of this code snippet: } SDNode * ResNode = NULL ; switch ( N -> getOpcode ( ) ) { case : ResNode = SelectLoad ( N ) ; break ; case : ResNode = SelectStore ( N ) ; break ; case : case : ResNode = SelectLoadVector ( N ) ; break ; case : case : case : case : ResNode = SelectLDGLDUVector ( N ) ; break ; case : case : ResNode = SelectStoreVector ( N ) ; break ; case : case : case : ResNode = SelectLoadParam ( N ) ; break ; case : case :" LLVM,NVPTX,889,"Predict the next statement of this code snippet: } EVT EltVT = Node -> getValueType ( ) ; EVT MemVT = Mem -> getMemoryVT ( ) ; unsigned Opc = ; switch ( VecSize ) { default : return NULL ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case :" LLVM,NVPTX,890,"Predict the next statement of this code snippet: if ( F -> hasFnAttribute ( ) ) return ( F -> getAttributes ( ) . getAttribute ( AttributeSet :: FunctionIndex , ) . getValueAsString ( ) == ) ; else return false ; }" LLVM,NVPTX,891,"Predict the next statement of this code snippet: const Function * F = MF -> getFunction ( ) ; if ( F -> hasFnAttribute ( ) ) return ( F -> getAttributes ( ) . getAttribute ( AttributeSet :: FunctionIndex , ) . getValueAsString ( ) == ) ;" LLVM,NVPTX,892,"Predict the next statement of this code snippet: bool DAGToDAGISel :: usePrecSqrtF32 ( ) const { if ( UsePrecSqrtF32 . getNumOccurrences ( ) > ) { return UsePrecSqrtF32 ; } else { if ( TM . Options . UnsafeFPMath ) return false ; else return true ;" LLVM,NVPTX,893,"Predict the next statement of this code snippet: if ( ! Src ) return false ; if ( const PointerType * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) return ( PT -> getAddressSpace ( ) == spN ) ;" LLVM,NVPTX,894,"Predict the next statement of this code snippet: switch ( PT -> getAddressSpace ( ) ) { case llvm :: ADDRESS_SPACE_LOCAL : return :: LOCAL ; case llvm :: ADDRESS_SPACE_GLOBAL : return :: GLOBAL ; case llvm :: ADDRESS_SPACE_SHARED : return :: SHARED ; case llvm :: ADDRESS_SPACE_GENERIC : return :: GENERIC ; case llvm :: ADDRESS_SPACE_PARAM : return :: PARAM ; case llvm :: ADDRESS_SPACE_CONST : return :: CONSTANT ; default : break ; }" LLVM,NVPTX,895,"Predict the next statement of this code snippet: NumZeros = countTrailingZeros ( MaskVal ) ; unsigned NumOnes = countTrailingOnes ( MaskVal >> NumZeros ) ; NumBits = NumZeros + NumOnes - ShiftAmt ; } else { return NULL ; } if ( ShiftAmt < NumZeros ) { return NULL ; } Val = AndLHS ; Start = CurDAG -> getTargetConstant ( ShiftAmt , ) ; Len = CurDAG -> getTargetConstant ( NumBits , ) ; } else if ( LHS -> getOpcode ( ) == ) { Val = LHS -> getOperand ( ) ; SDValue ShlRHS = LHS -> getOperand ( ) ; ConstantSDNode * ShlCnst = dyn_cast < ConstantSDNode > ( ShlRHS ) ; if ( ! ShlCnst ) { return NULL ; } uint64_t InnerShiftAmt = ShlCnst -> getZExtValue ( ) ; SDValue ShrRHS = RHS ; ConstantSDNode * ShrCnst = dyn_cast < ConstantSDNode > ( ShrRHS ) ; if ( ! ShrCnst ) { return NULL ; } uint64_t OuterShiftAmt = ShrCnst -> getZExtValue ( ) ; if ( OuterShiftAmt < InnerShiftAmt ) { return NULL ; } if ( OuterShiftAmt >= Val . getValueType ( ) . getSizeInBits ( ) ) { return NULL ; } Start = CurDAG -> getTargetConstant ( OuterShiftAmt - InnerShiftAmt , ) ; Len = CurDAG -> getTargetConstant ( Val . getValueType ( ) . getSizeInBits ( ) - OuterShiftAmt , ) ; if ( N -> getOpcode ( ) == ) { IsSigned = true ; } } else { return NULL ; }" LLVM,NVPTX,896,"Predict the next statement of this code snippet: if ( ! ShiftCnst ) { return NULL ; } uint64_t ShiftAmt = ShiftCnst -> getZExtValue ( ) ; SDValue AndLHS = LHS -> getOperand ( ) ; SDValue AndRHS = LHS -> getOperand ( ) ; if ( isa < ConstantSDNode > ( AndLHS ) ) { std :: swap ( AndLHS , AndRHS ) ; } ConstantSDNode * MaskCnst = dyn_cast < ConstantSDNode > ( AndRHS ) ; if ( ! MaskCnst ) { return NULL ; } uint64_t MaskVal = MaskCnst -> getZExtValue ( ) ; uint64_t NumZeros ; uint64_t NumBits ; if ( isMask_64 ( MaskVal ) ) { NumZeros = ; NumBits = countTrailingOnes ( MaskVal ) - ShiftAmt ; } else if ( isShiftedMask_64 ( MaskVal ) ) { NumZeros = countTrailingZeros ( MaskVal ) ; unsigned NumOnes = countTrailingOnes ( MaskVal >> NumZeros ) ; NumBits = NumZeros + NumOnes - ShiftAmt ; } else { return NULL ; } if ( ShiftAmt < NumZeros ) { return NULL ; } Val = AndLHS ; Start = CurDAG -> getTargetConstant ( ShiftAmt , ) ; Len = CurDAG -> getTargetConstant ( NumBits , ) ; } else if ( LHS -> getOpcode ( ) == ) { Val = LHS -> getOperand ( ) ; SDValue ShlRHS = LHS -> getOperand ( ) ; ConstantSDNode * ShlCnst = dyn_cast < ConstantSDNode > ( ShlRHS ) ; if ( ! ShlCnst ) { return NULL ; } uint64_t InnerShiftAmt = ShlCnst -> getZExtValue ( ) ; SDValue ShrRHS = RHS ; ConstantSDNode * ShrCnst = dyn_cast < ConstantSDNode > ( ShrRHS ) ; if ( ! ShrCnst ) { return NULL ; } uint64_t OuterShiftAmt = ShrCnst -> getZExtValue ( ) ; if ( OuterShiftAmt < InnerShiftAmt ) { return NULL ; } if ( OuterShiftAmt >= Val . getValueType ( ) . getSizeInBits ( ) ) { return NULL ; } Start = CurDAG -> getTargetConstant ( OuterShiftAmt - InnerShiftAmt , ) ; Len = CurDAG -> getTargetConstant ( Val . getValueType ( ) . getSizeInBits ( ) - OuterShiftAmt , ) ; if ( N -> getOpcode ( ) == ) { IsSigned = true ; } } else { return NULL ; } } else { return NULL ;" LLVM,NVPTX,897,"Predict the next statement of this code snippet: OutOps . push_back ( CurDAG -> getTargetConstant ( , ) ) ; return false ; } if ( SelectADDRri ( Op . getNode ( ) , Op , Op0 , Op1 ) ) { OutOps . push_back ( Op0 ) ; OutOps . push_back ( Op1 ) ; return false ; } break ;" LLVM,NVPTX,898,"Predict the next statement of this code snippet: unsigned IID = cast < ConstantSDNode > ( N -> getOperand ( ) ) -> getZExtValue ( ) ; switch ( IID ) { default : return nullptr ; case :" LLVM,NVPTX,899,"Predict the next statement of this code snippet: Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ;" LLVM,NVPTX,900,"Predict the next statement of this code snippet: Ops . push_back ( Chain ) ; Ops . push_back ( Flag ) ; unsigned Opcode = ; switch ( N -> getOpcode ( ) ) { default : switch ( NumElts ) { default : return nullptr ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,901,"Predict the next statement of this code snippet: default : return nullptr ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case :" LLVM,NVPTX,902,"Predict the next statement of this code snippet: SDNode * DAGToDAGISel :: SelectTexSurfHandle ( SDNode * N ) { SDValue Wrapper = N -> getOperand ( ) ; SDValue GlobalVal = Wrapper . getOperand ( ) ; return CurDAG -> getMachineNode ( , SDLoc ( N ) , , GlobalVal ) ;" LLVM,NVPTX,903,"Predict the next statement of this code snippet: return CurDAG -> getMachineNode ( , SDLoc ( N ) , , GlobalVal ) ;" LLVM,NVPTX,904,"Predict the next statement of this code snippet: bool DAGToDAGISel :: useF32FTZ ( ) const { if ( FtzEnabled . getNumOccurrences ( ) > ) { return FtzEnabled ; } else { const Function * F = MF -> getFunction ( ) ;" LLVM,NVPTX,905,"Predict the next statement of this code snippet: } else { const Function * F = MF -> getFunction ( ) ; if ( F -> hasFnAttribute ( ) ) return F -> getFnAttribute ( ) . getValueAsString ( ) == ; else return false ; }" LLVM,NVPTX,906,"Predict the next statement of this code snippet: bool DAGToDAGISel :: usePrecSqrtF32 ( ) const { if ( UsePrecSqrtF32 . getNumOccurrences ( ) > ) {" LLVM,NVPTX,907,"Predict the next statement of this code snippet: bool DAGToDAGISel :: allowFMA ( ) const {" LLVM,NVPTX,908,"Predict the next statement of this code snippet: const TargetLowering * TL = ( TargetLowering * ) getTargetLowering ( ) ;" LLVM,NVPTX,909,"Predict the next statement of this code snippet: Src = mN -> getMemOperand ( ) -> getValue ( ) ; } else if ( MemSDNode * mN = dyn_cast < MemIntrinsicSDNode > ( N ) ) { if ( spN == && mN -> getMemOperand ( ) -> getPseudoValue ( ) ) return true ;" LLVM,NVPTX,910,"Predict the next statement of this code snippet: case llvm :: ADDRESS_SPACE_SHARED : return :: SHARED ; case llvm :: ADDRESS_SPACE_GENERIC : return :: GENERIC ; case llvm :: ADDRESS_SPACE_PARAM : return :: PARAM ; case llvm :: ADDRESS_SPACE_CONST : return :: CONSTANT ; default : break ; } } return :: GENERIC ;" LLVM,NVPTX,911,"Predict the next statement of this code snippet: static unsigned int getCodeAddrSpace ( MemSDNode * N , const Subtarget & Subtarget ) { const Value * Src = N -> getMemOperand ( ) -> getValue ( ) ; if ( ! Src ) return :: GENERIC ; if ( const PointerType * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) { switch ( PT -> getAddressSpace ( ) ) { case llvm :: ADDRESS_SPACE_LOCAL : return :: LOCAL ;" LLVM,NVPTX,912,"Predict the next statement of this code snippet: DAGToDAGISel :: DAGToDAGISel ( TargetMachine & tm , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( tm , OptLevel ) , Subtarget ( tm . getSubtarget < Subtarget > ( ) ) { doMulWide = ( OptLevel > ) ;" LLVM,NVPTX,913,"Predict the next statement of this code snippet: case ADDRESS_SPACE_LOCAL : Opc = Subtarget . is64Bit ( ) ? : ; break ; } return CurDAG -> getMachineNode ( Opc , SDLoc ( N ) , N -> getValueType ( ) , Src ) ; } else { if ( SrcAddrSpace != ) report_fatal_error ( ) ; unsigned Opc ; switch ( DstAddrSpace ) { default : report_fatal_error ( ) ; case ADDRESS_SPACE_GLOBAL : Opc = Subtarget . is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_SHARED : Opc = Subtarget . is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_CONST : Opc = Subtarget . is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_LOCAL : Opc = Subtarget . is64Bit ( ) ? : ; break ; }" LLVM,NVPTX,914,"Predict the next statement of this code snippet: ConstantSDNode * Mask = dyn_cast < ConstantSDNode > ( RHS ) ; if ( ! Mask ) { return NULL ; } uint64_t MaskVal = Mask -> getZExtValue ( ) ; if ( ! isMask_64 ( MaskVal ) ) { return NULL ; } uint64_t NumBits = CountTrailingOnes_64 ( MaskVal ) ; Len = CurDAG -> getTargetConstant ( NumBits , ) ; if ( LHS . getOpcode ( ) == || LHS . getOpcode ( ) == ) { Val = LHS . getNode ( ) -> getOperand ( ) ; Start = LHS . getNode ( ) -> getOperand ( ) ; ConstantSDNode * StartConst = dyn_cast < ConstantSDNode > ( Start ) ; if ( StartConst ) { uint64_t StartVal = StartConst -> getZExtValue ( ) ; uint64_t GoodBits = Start . getValueType ( ) . getSizeInBits ( ) - StartVal ; if ( NumBits > GoodBits ) { return NULL ; } Start = CurDAG -> getTargetConstant ( StartVal , ) ; } else { return NULL ; } } else { return NULL ; } } else if ( N -> getOpcode ( ) == || N -> getOpcode ( ) == ) { if ( LHS -> getOpcode ( ) == ) { ConstantSDNode * ShiftCnst = dyn_cast < ConstantSDNode > ( RHS ) ; if ( ! ShiftCnst ) { return NULL ; } uint64_t ShiftAmt = ShiftCnst -> getZExtValue ( ) ; SDValue AndLHS = LHS -> getOperand ( ) ; SDValue AndRHS = LHS -> getOperand ( ) ; if ( isa < ConstantSDNode > ( AndLHS ) ) { std :: swap ( AndLHS , AndRHS ) ; }" LLVM,NVPTX,915,"Predict the next statement of this code snippet: case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( toType ) , getI32Imm ( toTypeWidth ) , Base , Offset , Chain } ; ST = CurDAG -> getMachineNode ( Opcode , dl , , Ops ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRri64 ( N2 . getNode ( ) , N2 , Base , Offset ) : SelectADDRri ( N2 . getNode ( ) , N2 , Base , Offset ) ) { if ( Subtarget . is64Bit ( ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } } else { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } } SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( toType ) , getI32Imm ( toTypeWidth ) , Base , Offset , Chain } ; ST = CurDAG -> getMachineNode ( Opcode , dl , , Ops ) ; } else { if ( Subtarget . is64Bit ( ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } } else { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,916,"Predict the next statement of this code snippet: SDValue Chain = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; SDValue N2 = N -> getOperand ( ) ; SDValue Addr ; SDValue Offset , Base ; unsigned Opcode ; SourceVT = N1 . getNode ( ) -> getSimpleValueType ( ) . SimpleTy ; if ( SelectDirectAddr ( N2 , Addr ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( toType ) , getI32Imm ( toTypeWidth ) , Addr , Chain } ; ST = CurDAG -> getMachineNode ( Opcode , dl , , Ops ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRsi64 ( N2 . getNode ( ) , N2 , Base , Offset ) : SelectADDRsi ( N2 . getNode ( ) , N2 , Base , Offset ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( toType ) , getI32Imm ( toTypeWidth ) , Base , Offset , Chain } ; ST = CurDAG -> getMachineNode ( Opcode , dl , , Ops ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRri64 ( N2 . getNode ( ) , N2 , Base , Offset ) : SelectADDRri ( N2 . getNode ( ) , N2 , Base , Offset ) ) { if ( Subtarget . is64Bit ( ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } } else { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ;" LLVM,NVPTX,917,"Predict the next statement of this code snippet: ResNode = SelectLoad ( N ) ; break ; case : ResNode = SelectStore ( N ) ; break ; } if ( ResNode ) return ResNode ;" LLVM,NVPTX,918,"Predict the next statement of this code snippet: case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops , ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRri64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRri ( N1 . getNode ( ) , N1 , Base , Offset ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops , ) ; } else { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ;" LLVM,NVPTX,919,"Predict the next statement of this code snippet: bool DAGToDAGISel :: ChkMemSDNodeAddressSpace ( SDNode * N , unsigned int spN ) const { const Value * Src = NULL ; if ( MemSDNode * mN = dyn_cast < MemSDNode > ( N ) ) { Src = mN -> getSrcValue ( ) ; } else if ( MemSDNode * mN = dyn_cast < MemIntrinsicSDNode > ( N ) ) { Src = mN -> getSrcValue ( ) ; }" LLVM,NVPTX,920,"Predict the next statement of this code snippet: static unsigned int getCodeAddrSpace ( MemSDNode * N , const Subtarget & Subtarget ) { const Value * Src = N -> getSrcValue ( ) ; if ( ! Src ) return :: LOCAL ; if ( const PointerType * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) { switch ( PT -> getAddressSpace ( ) ) {" LLVM,NVPTX,921,"Predict the next statement of this code snippet: doFMAF32AGG = ( OptLevel > ) && Subtarget . hasFMAF32 ( ) && ( FMAContractLevel == ) ; doFMAF64AGG = ( OptLevel > ) && Subtarget . hasFMAF64 ( ) && ( FMAContractLevel == ) ; allowFMA = ( FMAContractLevel >= ) || UseFMADInstruction ;" LLVM,NVPTX,922,"Predict the next statement of this code snippet: switch ( N -> getOpcode ( ) ) { case : ResNode = SelectLoad ( N ) ; break ; case : ResNode = SelectStore ( N ) ; break ; case : case : ResNode = SelectLoadVector ( N ) ; break ; case : case : case : case : ResNode = SelectLDGLDUVector ( N ) ; break ; case : case : ResNode = SelectStoreVector ( N ) ; break ; default : break ; } if ( ResNode ) return ResNode ;" LLVM,NVPTX,923,"Predict the next statement of this code snippet: } if ( ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { if ( FrameIndexSDNode * FIN = dyn_cast < FrameIndexSDNode > ( Addr . getOperand ( ) ) ) Base = CurDAG -> getTargetFrameIndex ( FIN -> getIndex ( ) , mvt ) ; else Base = Addr . getOperand ( ) ; Offset = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , mvt ) ; return true ; } }" LLVM,NVPTX,924,"Predict the next statement of this code snippet: return true ; } if ( Addr . getOpcode ( ) == || Addr . getOpcode ( ) == ) return false ; if ( Addr . getOpcode ( ) == ) { if ( SelectDirectAddr ( Addr . getOperand ( ) , Addr ) ) { return false ; }" LLVM,NVPTX,925,"Predict the next statement of this code snippet: bool DAGToDAGISel :: SelectADDRsi_imp ( SDNode * OpNode , SDValue Addr , SDValue & Base , SDValue & Offset , MVT mvt ) { if ( Addr . getOpcode ( ) == ) {" LLVM,NVPTX,926,"Predict the next statement of this code snippet: if ( Addr . getOpcode ( ) == ) { if ( ConstantSDNode * CN = dyn_cast < ConstantSDNode > ( Addr . getOperand ( ) ) ) { SDValue base = Addr . getOperand ( ) ; if ( SelectDirectAddr ( base , Base ) ) { Offset = CurDAG -> getTargetConstant ( CN -> getZExtValue ( ) , mvt ) ; return true ; } } } return false ;" LLVM,NVPTX,927,"Predict the next statement of this code snippet: unsigned IID = cast < ConstantSDNode > ( N . getOperand ( ) ) -> getZExtValue ( ) ; if ( IID == ) if ( N . getOperand ( ) . getOpcode ( ) == ) return ( SelectDirectAddr ( N . getOperand ( ) . getOperand ( ) , Address ) ) ;" LLVM,NVPTX,928,"Predict the next statement of this code snippet: OutOps . push_back ( CurDAG -> getTargetConstant ( , ) ) ; return false ; } if ( SelectADDRri ( Op . getNode ( ) , Op , Op0 , Op1 ) ) { OutOps . push_back ( Op0 ) ; OutOps . push_back ( Op1 ) ; return false ;" LLVM,NVPTX,929,"Predict the next statement of this code snippet: bool DAGToDAGISel :: UndefOrImm ( SDValue Op , SDValue N , SDValue & Retval ) { if ( ! ( N . getOpcode ( ) == ) && ! ( N . getOpcode ( ) == ) ) return false ; if ( N . getOpcode ( ) == ) Retval = CurDAG -> getTargetConstant ( , ) ; else {" LLVM,NVPTX,930,"Predict the next statement of this code snippet: case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ;" LLVM,NVPTX,931,"Predict the next statement of this code snippet: break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ;" LLVM,NVPTX,932,"Predict the next statement of this code snippet: const Value * Src = N -> getSrcValue ( ) ; if ( ! Src ) return :: LOCAL ; if ( const PointerType * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) { switch ( PT -> getAddressSpace ( ) ) {" LLVM,NVPTX,933,"Predict the next statement of this code snippet: if ( ! Src ) return :: LOCAL ; if ( const PointerType * PT = dyn_cast < PointerType > ( Src -> getType ( ) ) ) { switch ( PT -> getAddressSpace ( ) ) { case llvm :: ADDRESS_SPACE_LOCAL : return :: LOCAL ; case llvm :: ADDRESS_SPACE_GLOBAL : return :: GLOBAL ; case llvm :: ADDRESS_SPACE_SHARED : return :: SHARED ; case llvm :: ADDRESS_SPACE_CONST_NOT_GEN : return :: CONSTANT ; case llvm :: ADDRESS_SPACE_GENERIC : return :: GENERIC ; case llvm :: ADDRESS_SPACE_PARAM :" LLVM,NVPTX,934,"Predict the next statement of this code snippet: ResNode = SelectStore ( N ) ; break ; case : case : ResNode = SelectLoadVector ( N ) ; break ; case : case : case : case : ResNode = SelectLDGLDUVector ( N ) ; break ; case : case : ResNode = SelectStoreVector ( N ) ; break ; default :" LLVM,NVPTX,935,"Predict the next statement of this code snippet: case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; } } else { switch ( N -> getOpcode ( ) ) { default : return NULL ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ;" LLVM,NVPTX,936,"Predict the next statement of this code snippet: return NULL ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; } } SDValue Ops [ ] = { Op1 , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , DL , N -> getVTList ( ) , Ops ) ;" LLVM,NVPTX,937,"Predict the next statement of this code snippet: else fromType = :: Unsigned ; SDValue Chain = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; SDValue Addr ; SDValue Offset , Base ; unsigned Opcode ; TargetVT = LD -> getValueType ( ) . getSimpleVT ( ) . SimpleTy ; if ( SelectDirectAddr ( N1 , Addr ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Addr , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRsi64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRsi ( N1 . getNode ( ) , N1 , Base , Offset ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRri64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRri ( N1 . getNode ( ) , N1 , Base , Offset ) ) { if ( Subtarget . is64Bit ( ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,938,"Predict the next statement of this code snippet: switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( toType ) , getI32Imm ( toTypeWidth ) , Base , Offset , Chain } ; ST = CurDAG -> getMachineNode ( Opcode , dl , , Ops ) ; } else if ( Subtarget . is64Bit ( ) ? SelectADDRri64 ( N2 . getNode ( ) , N2 , Base , Offset ) : SelectADDRri ( N2 . getNode ( ) , N2 , Base , Offset ) ) { if ( Subtarget . is64Bit ( ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } } else { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return NULL ; } } SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( toType ) , getI32Imm ( toTypeWidth ) , Base , Offset , Chain } ; ST = CurDAG -> getMachineNode ( Opcode , dl , , Ops ) ; } else { if ( Subtarget . is64Bit ( ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,939,"Predict the next statement of this code snippet: DAGToDAGISel :: DAGToDAGISel ( TargetMachine & tm , CodeGenOpt :: Level OptLevel ) : SelectionDAGISel ( tm , OptLevel ) {" LLVM,NVPTX,940,"Predict the next statement of this code snippet: case ADDRESS_SPACE_SHARED : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_CONST : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_LOCAL : Opc = Subtarget -> is64Bit ( ) ? : ; break ; } return CurDAG -> getMachineNode ( Opc , SDLoc ( N ) , N -> getValueType ( ) , Src ) ; } else { if ( SrcAddrSpace != ) report_fatal_error ( ) ; unsigned Opc ; switch ( DstAddrSpace ) { default : report_fatal_error ( ) ; case ADDRESS_SPACE_GLOBAL : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_SHARED : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_CONST : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_LOCAL :" LLVM,NVPTX,941,"Predict the next statement of this code snippet: default : report_fatal_error ( ) ; case ADDRESS_SPACE_GLOBAL : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_SHARED : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_CONST : Opc = Subtarget -> is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_LOCAL : Opc = Subtarget -> is64Bit ( ) ? : ; break ; } return CurDAG -> getMachineNode ( Opc , SDLoc ( N ) , N -> getValueType ( ) , Src ) ; } else { if ( SrcAddrSpace != ) report_fatal_error ( ) ;" LLVM,NVPTX,942,"Predict the next statement of this code snippet: case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops ) ; } else if ( Subtarget -> is64Bit ( ) ? SelectADDRri64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRri ( N1 . getNode ( ) , N1 , Base , Offset ) ) { if ( Subtarget -> is64Bit ( ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } } else { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } } SDValue Ops [ ] = { getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( fromType ) , getI32Imm ( fromTypeWidth ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode , dl , TargetVT , , Ops ) ; } else { if ( Subtarget -> is64Bit ( ) ) { switch ( TargetVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ;" LLVM,NVPTX,943,"Predict the next statement of this code snippet: StoreSDNode * ST = cast < StoreSDNode > ( N ) ; EVT StoreVT = ST -> getMemoryVT ( ) ; SDNode * ST = nullptr ; if ( ST -> isIndexed ( ) ) return nullptr ; if ( ! StoreVT . isSimple ( ) ) return nullptr ; unsigned int codeAddrSpace = getCodeAddrSpace ( ST ) ; bool isVolatile = ST -> isVolatile ( ) ; if ( codeAddrSpace != :: GLOBAL && codeAddrSpace != :: SHARED && codeAddrSpace != :: GENERIC ) isVolatile = false ; MVT SimpleVT = StoreVT . getSimpleVT ( ) ; unsigned vecType = :: Scalar ; if ( SimpleVT . isVector ( ) ) { unsigned num = SimpleVT . getVectorNumElements ( ) ; if ( num == ) vecType = :: V2 ; else if ( num == ) vecType = :: V4 ; else return nullptr ; } MVT ScalarVT = SimpleVT . getScalarType ( ) ; unsigned toTypeWidth = ScalarVT . getSizeInBits ( ) ; unsigned int toType ; if ( ScalarVT . isFloatingPoint ( ) ) toType = :: Float ; else toType = :: Unsigned ; SDValue Chain = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; SDValue N2 = N -> getOperand ( ) ; SDValue Addr ; SDValue Offset , Base ; unsigned Opcode ; SourceVT = N1 . getNode ( ) -> getSimpleValueType ( ) . SimpleTy ; if ( SelectDirectAddr ( N2 , Addr ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ; } SDValue Ops [ ] = { N1 , getI32Imm ( isVolatile ) , getI32Imm ( codeAddrSpace ) , getI32Imm ( vecType ) , getI32Imm ( toType ) , getI32Imm ( toTypeWidth ) , Addr , Chain } ; ST = CurDAG -> getMachineNode ( Opcode , dl , , Ops ) ; } else if ( Subtarget -> is64Bit ( ) ? SelectADDRsi64 ( N2 . getNode ( ) , N2 , Base , Offset ) : SelectADDRsi ( N2 . getNode ( ) , N2 , Base , Offset ) ) { switch ( SourceVT ) { case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; default : return nullptr ;" LLVM,NVPTX,944,"Predict the next statement of this code snippet: case : ResNode = SelectIntrinsicNoChain ( N ) ; break ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : ResNode = SelectTextureIntrinsic ( N ) ; break ; case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,945,"Predict the next statement of this code snippet: Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } Ops . push_back ( TexRef ) ; Ops . push_back ( SampRef ) ; for ( unsigned i = ; i < N -> getNumOperands ( ) ; ++ i ) { Ops . push_back ( N -> getOperand ( i ) ) ; } Ops . push_back ( Chain ) ;" LLVM,NVPTX,946,"Predict the next statement of this code snippet: SDNode * DAGToDAGISel :: SelectAddrSpaceCast ( SDNode * N ) { SDValue Src = N -> getOperand ( ) ; AddrSpaceCastSDNode * CastN = cast < AddrSpaceCastSDNode > ( N ) ; unsigned SrcAddrSpace = CastN -> getSrcAddressSpace ( ) ; unsigned DstAddrSpace = CastN -> getDestAddressSpace ( ) ; assert ( SrcAddrSpace != DstAddrSpace && ) ; if ( DstAddrSpace == ADDRESS_SPACE_GENERIC ) { unsigned Opc ; switch ( SrcAddrSpace ) { default : report_fatal_error ( ) ; case ADDRESS_SPACE_GLOBAL : Opc = TM . is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_SHARED : Opc = TM . is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_CONST : Opc = TM . is64Bit ( ) ? : ; break ; case ADDRESS_SPACE_LOCAL : Opc = TM . is64Bit ( ) ? : ; break ; } return CurDAG -> getMachineNode ( Opc , SDLoc ( N ) , N -> getValueType ( ) , Src ) ; } else { if ( SrcAddrSpace != ) report_fatal_error ( ) ; unsigned Opc ; switch ( DstAddrSpace ) { default : report_fatal_error ( ) ; case ADDRESS_SPACE_GLOBAL : Opc = TM . is64Bit ( ) ? : ; break ;" LLVM,NVPTX,947,"Predict the next statement of this code snippet: break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; } SDVTList VTs ; if ( VecSize == ) { VTs = CurDAG -> getVTList ( EltVT , , ) ; } else if ( VecSize == ) { VTs = CurDAG -> getVTList ( EltVT , EltVT , , ) ; } else {" LLVM,NVPTX,948,"Predict the next statement of this code snippet: MemSDNode * Mem = cast < MemSDNode > ( Node ) ; unsigned VecSize ; switch ( Node -> getOpcode ( ) ) { default : return nullptr ; case : VecSize = ; break ; case : VecSize = ; break ; case : VecSize = ; break ; } EVT EltVT = Node -> getValueType ( ) ; EVT MemVT = Mem -> getMemoryVT ( ) ; unsigned Opc = ; switch ( VecSize ) { default : return nullptr ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ; case : switch ( MemVT . getSimpleVT ( ) . SimpleTy ) { default : return nullptr ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; case : Opc = ; break ; } break ;" LLVM,NVPTX,949,"Predict the next statement of this code snippet: if ( Stride ) { if ( Variant == WMMA_VARIANT_ARI64 ) Variant = WMMA_VARIANT_ARI64_STRIDE ; else if ( Variant == WMMA_VARIANT_AVAR ) Variant = WMMA_VARIANT_AVAR_STRIDE ; }" LLVM,NVPTX,950,"Predict the next statement of this code snippet: SDValue ValueOp = N -> getOperand ( ) ; if ( ConstantSDNode * ValueConst = dyn_cast < ConstantSDNode > ( ValueOp ) ) { OpcodeIndex |= HAS_CONST_VALUE ; ValueOp = CurDAG -> getTargetConstant ( ValueConst -> getZExtValue ( ) , DL , ValueConst -> getValueType ( ) ) ; } if ( ConstantSDNode * MaskConst = dyn_cast < ConstantSDNode > ( MaskOp ) ) { OpcodeIndex |= HAS_CONST_MASK ; MaskOp = CurDAG -> getTargetConstant ( MaskConst -> getZExtValue ( ) , DL , MaskConst -> getValueType ( ) ) ; } unsigned Opcodes [ ] = {" LLVM,NVPTX,951,"Predict the next statement of this code snippet: enum { IS_I64 = , HAS_CONST_VALUE = , HAS_CONST_MASK = } ; unsigned IID = cast < ConstantSDNode > ( N -> getOperand ( ) ) -> getZExtValue ( ) ; unsigned OpcodeIndex = ( IID == ) ? IS_I64 : ; SDValue MaskOp = N -> getOperand ( ) ; SDValue ValueOp = N -> getOperand ( ) ; if ( ConstantSDNode * ValueConst = dyn_cast < ConstantSDNode > ( ValueOp ) ) {" LLVM,NVPTX,952,"Predict the next statement of this code snippet: SelectMatchAll ( N ) ; return true ; case : case : case : case : case : case : return tryLDGLDU ( N ) ;" LLVM,NVPTX,953,"Predict the next statement of this code snippet: bool DAGToDAGISel :: tryIntrinsicChain ( SDNode * N ) { unsigned IID = cast < ConstantSDNode > ( N -> getOperand ( ) ) -> getZExtValue ( ) ; if ( getWmmaLdStOpcode ( IID ) ) return tryWMMA_LDST ( N ) ; switch ( IID ) {" LLVM,NVPTX,954,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,955,"Predict the next statement of this code snippet: Variant = WMMA_VARIANT_AVAR ; Ops . push_back ( Addr ) ; } else if ( SelectADDRsi64 ( Op1 . getNode ( ) , Op1 , Base , Offset ) || SelectADDRri64 ( Op1 . getNode ( ) , Op1 , Base , Offset ) ) { Variant = WMMA_VARIANT_ARI64 ; Ops . push_back ( Base ) ; Ops . push_back ( Offset ) ; } else { Variant = WMMA_VARIANT_AVAR ; Ops . push_back ( Op1 ) ; } unsigned NumOps = N -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOps ; ++ i ) Ops . push_back ( N -> getOperand ( i ) ) ; Ops . push_back ( Chain ) ; Opcode = getWmmaLdStOpcode ( IID , Variant ) ; if ( ! Opcode ) { llvm :: errs ( ) << ; return false ;" LLVM,NVPTX,956,"Predict the next statement of this code snippet: if ( N -> isInvariant ( ) ) return true ; if ( ! isKernelFunction ( F -> getFunction ( ) ) ) return false ; SmallVector < Value * , > Objs ; GetUnderlyingObjects ( const_cast < Value * > ( N -> getMemOperand ( ) -> getValue ( ) ) , Objs , F -> getDataLayout ( ) ) ; for ( Value * Obj : Objs ) { auto * A = dyn_cast < const Argument > ( Obj ) ; if ( ! A || ! A -> onlyReadsMemory ( ) || ! A -> hasNoAliasAttr ( ) ) return false ; }" LLVM,NVPTX,957,"Predict the next statement of this code snippet: static bool canLowerToLDG ( MemSDNode * N , const Subtarget & Subtarget , unsigned CodeAddrSpace , MachineFunction * F ) { if ( ! Subtarget . hasLDG ( ) || CodeAddrSpace != :: GLOBAL ) return false ; if ( N -> isInvariant ( ) ) return true ; if ( ! isKernelFunction ( F -> getFunction ( ) ) ) return false ; SmallVector < Value * , > Objs ; GetUnderlyingObjects ( const_cast < Value * > ( N -> getMemOperand ( ) -> getValue ( ) ) , Objs , F -> getDataLayout ( ) ) ; for ( Value * Obj : Objs ) { auto * A = dyn_cast < const Argument > ( Obj ) ; if ( ! A || ! A -> onlyReadsMemory ( ) || ! A -> hasNoAliasAttr ( ) ) return false ; } return true ;" LLVM,NVPTX,958,"Predict the next statement of this code snippet: SmallVector < Value * , > Objs ; GetUnderlyingObjects ( const_cast < Value * > ( N -> getMemOperand ( ) -> getValue ( ) ) , Objs , F -> getDataLayout ( ) ) ;" LLVM,NVPTX,959,"Predict the next statement of this code snippet: for ( Value * Obj : Objs ) { auto * A = dyn_cast < const Argument > ( Obj ) ; if ( ! A || ! A -> onlyReadsMemory ( ) || ! A -> hasNoAliasAttr ( ) ) return false ; } return true ;" LLVM,NVPTX,960,"Predict the next statement of this code snippet: } SmallVector < SDValue , > Ops ; for ( unsigned i = ; i < NumElts ; ++ i ) Ops . push_back ( N -> getOperand ( i + ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( ParamVal , DL , ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( OffsetVal , DL , ) ) ; Ops . push_back ( Chain ) ; Ops . push_back ( Flag ) ; unsigned Opcode = ; switch ( N -> getOpcode ( ) ) { default : switch ( NumElts ) { default : return false ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ;" LLVM,NVPTX,961,"Predict the next statement of this code snippet: } SmallVector < SDValue , > Ops ; for ( unsigned i = ; i < NumElts ; ++ i ) Ops . push_back ( N -> getOperand ( i + ) ) ; Ops . push_back ( CurDAG -> getTargetConstant ( OffsetVal , DL , ) ) ; Ops . push_back ( Chain ) ; unsigned Opcode = ; switch ( NumElts ) { default : return false ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( Mem -> getMemoryVT ( ) . getSimpleVT ( ) . SimpleTy ) { default : return false ; case : Opcode = ; break ;" LLVM,NVPTX,962,"Predict the next statement of this code snippet: const TargetLowering * TL = Subtarget . getTargetLowering ( ) ; return TL -> allowFMA ( * MF , OptLevel ) ;" LLVM,NVPTX,963,"Predict the next statement of this code snippet: break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; } } else { switch ( N -> getOpcode ( ) ) { default : return NULL ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; case : Opcode = ; break ; } break ; case : switch ( RetVT . getSimpleVT ( ) . SimpleTy ) { default : return NULL ; case : Opcode = ; break ; case : Opcode = ;" LLVM,NVPTX,964,"Predict the next statement of this code snippet: if ( ! Subtarget . hasLDG ( ) || CodeAddrSpace != :: GLOBAL ) return false ; if ( N -> isInvariant ( ) ) return true ; bool IsKernelFn = isKernelFunction ( F -> getFunction ( ) ) ; SmallVector < Value * , > Objs ; GetUnderlyingObjects ( const_cast < Value * > ( N -> getMemOperand ( ) -> getValue ( ) ) , Objs , F -> getDataLayout ( ) ) ; return all_of ( Objs , [ & ] ( Value * V ) { if ( auto * A = dyn_cast < const Argument > ( V ) ) return IsKernelFn && A -> onlyReadsMemory ( ) && A -> hasNoAliasAttr ( ) ; if ( auto * GV = dyn_cast < const GlobalVariable > ( V ) ) return GV -> isConstant ( ) ;" LLVM,NVPTX,965,"Predict the next statement of this code snippet: static bool canLowerToLDG ( MemSDNode * N , const Subtarget & Subtarget , unsigned CodeAddrSpace , MachineFunction * F ) { if ( ! Subtarget . hasLDG ( ) || CodeAddrSpace != :: GLOBAL ) return false ; if ( N -> isInvariant ( ) ) return true ; bool IsKernelFn = isKernelFunction ( F -> getFunction ( ) ) ; SmallVector < Value * , > Objs ; GetUnderlyingObjects ( const_cast < Value * > ( N -> getMemOperand ( ) -> getValue ( ) ) , Objs , F -> getDataLayout ( ) ) ;" LLVM,NVPTX,966,"Predict the next statement of this code snippet: inline SDValue getI32Imm ( unsigned Imm ) {" LLVM,NVPTX,967,"Predict the next statement of this code snippet: inline SDValue getI32Imm ( unsigned Imm ) {" LLVM,NVPTX,968,"Predict the next statement of this code snippet: SDValue Addr ; SDValue Offset , Base ; Optional < unsigned > Opcode ; TargetVT = LD -> getSimpleValueType ( ) . SimpleTy ; if ( SelectDirectAddr ( N1 , Addr ) ) { Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , Addr , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } else if ( PointerSize == ? SelectADDRsi64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRsi ( N1 . getNode ( ) , N1 , Base , Offset ) ) { Opcode = pickOpcodeForVT ( TargetVT , , , , , , , , ) ; if ( ! Opcode ) return false ; SDValue Ops [ ] = { getI32Imm ( isVolatile , dl ) , getI32Imm ( CodeAddrSpace , dl ) , getI32Imm ( vecType , dl ) , getI32Imm ( fromType , dl ) , getI32Imm ( fromTypeWidth , dl ) , Base , Offset , Chain } ; LD = CurDAG -> getMachineNode ( Opcode . getValue ( ) , dl , TargetVT , , Ops ) ; } else if ( PointerSize == ? SelectADDRri64 ( N1 . getNode ( ) , N1 , Base , Offset ) : SelectADDRri ( N1 . getNode ( ) , N1 , Base , Offset ) ) {" LLVM,NVPTX,969,"Predict the next statement of this code snippet: if ( OptLevel == ) return false ;" LLVM,NVPTX,970,"Predict the next statement of this code snippet: if ( OptLevel == ) return false ; if ( MF . getTarget ( ) . Options . AllowFPOpFusion == FPOpFusion :: Fast ) return true ; return allowUnsafeFPMath ( MF ) ;" LLVM,NVPTX,971,"Predict the next statement of this code snippet: Attribute Attr = F -> getFnAttribute ( ) ; StringRef Val = Attr . getValueAsString ( ) ; if ( Val == ) return true ; }" LLVM,NVPTX,972,"Predict the next statement of this code snippet: unsigned NumElts = AccessSize / EltSize ; if ( AccessSize != EltSize * NumElts ) return ; if ( Idx + NumElts > ValueVTs . size ( ) ) return ; if ( NumElts != && NumElts != ) return ;" LLVM,NVPTX,973,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) { unsigned NumElts = VT . getVectorNumElements ( ) ; EVT EltVT = VT . getVectorElementType ( ) ; if ( EltVT == && NumElts % == ) { EltVT = ; NumElts /= ; } for ( unsigned j = ; j != NumElts ; ++ j ) {" LLVM,NVPTX,974,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) { unsigned NumElts = VT . getVectorNumElements ( ) ; EVT EltVT = VT . getVectorElementType ( ) ; if ( EltVT == && NumElts % == ) { EltVT = ; NumElts /= ; } for ( unsigned j = ; j != NumElts ; ++ j ) { ValueVTs . push_back ( EltVT ) ; if ( Offsets ) Offsets -> push_back ( Off + j * EltVT . getStoreSize ( ) ) ; } } else { ValueVTs . push_back ( VT ) ; if ( Offsets ) Offsets -> push_back ( Off ) ; }" LLVM,NVPTX,975,"Predict the next statement of this code snippet: if ( ! DirectCallee ) { const Instruction * CalleeI = CS -> getInstruction ( ) ; assert ( CalleeI && ) ; if ( isa < CallInst > ( CalleeI ) ) { if ( getAlign ( * cast < CallInst > ( CalleeI ) , Idx , Align ) ) return Align ;" LLVM,NVPTX,976,"Predict the next statement of this code snippet: while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ; } if ( isa < Function > ( CalleeV ) ) DirectCallee = CalleeV ; } }" LLVM,NVPTX,977,"Predict the next statement of this code snippet: return UsePrecDivF32 ; } else { if ( getTargetMachine ( ) . Options . UnsafeFPMath ) return ; else return ;" LLVM,NVPTX,978,"Predict the next statement of this code snippet: return UsePrecDivF32 ; } else { if ( getTargetMachine ( ) . Options . UnsafeFPMath ) return ;" LLVM,NVPTX,979,"Predict the next statement of this code snippet: if ( VT == ) return TypeLegal ; return TargetLoweringBase :: getPreferredVectorAction ( VT ) ;" LLVM,NVPTX,980,"Predict the next statement of this code snippet: if ( VT . getVectorNumElements ( ) != && VT . getScalarType ( ) == ) return TypeSplitVector ; if ( VT == ) return TypeLegal ; return TargetLoweringBase :: getPreferredVectorAction ( VT ) ;" LLVM,NVPTX,981,"Predict the next statement of this code snippet: if ( ! ( Enabled == ReciprocalEstimate :: Enabled || ( Enabled == ReciprocalEstimate :: Unspecified && ! usePrecSqrtF32 ( ) ) ) ) return SDValue ( ) ; if ( ExtraSteps == ReciprocalEstimate :: Unspecified ) ExtraSteps = ; SDLoc DL ( Operand ) ; EVT VT = Operand . getValueType ( ) ; bool Ftz = useF32FTZ ( DAG . getMachineFunction ( ) ) ;" LLVM,NVPTX,982,"Predict the next statement of this code snippet: SDLoc DL ( Operand ) ; EVT VT = Operand . getValueType ( ) ; bool Ftz = useF32FTZ ( DAG . getMachineFunction ( ) ) ; auto MakeIntrinsicCall = [ & ] ( IID ) { return DAG . getNode ( , DL , VT , DAG . getConstant ( IID , DL , ) , Operand ) ; } ; if ( Reciprocal || ExtraSteps > ) {" LLVM,NVPTX,983,"Predict the next statement of this code snippet: static bool isImageOrSamplerVal ( const Value * arg , const Module * context ) { static const char * const specialTypes [ ] = { , , } ; Type * Ty = arg -> getType ( ) ; auto * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ; if ( ! context ) return false ;" LLVM,NVPTX,984,"Predict the next statement of this code snippet: auto * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ; if ( ! context ) return false ; auto * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ; if ( ! STy || STy -> isLiteral ( ) ) return false ;" LLVM,NVPTX,985,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,986,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,987,"Predict the next statement of this code snippet: if ( ! ( Op -> getValueType ( ) == && isa < ConstantFPSDNode > ( Op -> getOperand ( ) ) && isa < ConstantFPSDNode > ( Op -> getOperand ( ) ) ) ) return Op ;" LLVM,NVPTX,988,"Predict the next statement of this code snippet: APInt E1 = cast < ConstantFPSDNode > ( Op -> getOperand ( ) ) -> getValueAPF ( ) . bitcastToAPInt ( ) ; SDValue Const = DAG . getConstant ( E1 . zext ( ) . shl ( ) | E0 . zext ( ) , SDLoc ( Op ) , ) ;" LLVM,NVPTX,989,"Predict the next statement of this code snippet: SDNode * Node = Op . getNode ( ) ; SDLoc dl ( Node ) ; SmallVector < SDValue , > Ops ; unsigned NumOperands = Node -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) { SDValue SubOp = Node -> getOperand ( i ) ; EVT VVT = SubOp . getNode ( ) -> getValueType ( ) ; EVT EltVT = VVT . getVectorElementType ( ) ; unsigned NumSubElem = VVT . getVectorNumElements ( ) ; for ( unsigned j = ; j < NumSubElem ; ++ j ) { Ops . push_back ( DAG . getNode ( , dl , EltVT , SubOp , DAG . getIntPtrConstant ( j , dl ) ) ) ; } }" LLVM,NVPTX,990,"Predict the next statement of this code snippet: if ( isa < ConstantSDNode > ( Index . getNode ( ) ) ) return Op ; SDValue Vector = Op -> getOperand ( ) ; EVT VectorVT = Vector . getValueType ( ) ; assert ( VectorVT == && ) ; EVT EltVT = VectorVT . getVectorElementType ( ) ; SDLoc dl ( Op . getNode ( ) ) ; SDValue E0 = DAG . getNode ( , dl , EltVT , Vector , DAG . getIntPtrConstant ( , dl ) ) ; SDValue E1 = DAG . getNode ( , dl , EltVT , Vector , DAG . getIntPtrConstant ( , dl ) ) ; return DAG . getSelectCC ( dl , Index , DAG . getIntPtrConstant ( , dl ) , E0 , E1 , :: SETEQ ) ;" LLVM,NVPTX,991,"Predict the next statement of this code snippet: int VecIdx = - ; for ( unsigned parti = , parte = VTs . size ( ) ; parti != parte ; ++ parti ) { if ( VectorInfo [ parti ] & PVF_FIRST ) { assert ( VecIdx == - && ) ; VecIdx = parti ; } if ( VectorInfo [ parti ] & PVF_LAST ) { unsigned NumElts = parti - VecIdx + ; EVT EltVT = VTs [ parti ] ; EVT LoadVT = EltVT ; if ( EltVT == ) LoadVT = ; else if ( EltVT == ) LoadVT = ; EVT VecVT = EVT :: getVectorVT ( F -> getContext ( ) , LoadVT , NumElts ) ; SDValue VecAddr = DAG . getNode ( , dl , PtrVT , Arg , DAG . getConstant ( Offsets [ VecIdx ] , dl , PtrVT ) ) ; Value * srcValue = Constant :: getNullValue ( PointerType :: get ( EltVT . getTypeForEVT ( F -> getContext ( ) ) , ADDRESS_SPACE_PARAM ) ) ; SDValue P = DAG . getLoad ( VecVT , dl , Root , VecAddr , MachinePointerInfo ( srcValue ) , aggregateIsPacked , MachineMemOperand :: MODereferenceable | MachineMemOperand :: MOInvariant ) ; if ( P . getNode ( ) ) P . getNode ( ) -> setIROrder ( idx + ) ; for ( unsigned j = ; j < NumElts ; ++ j ) { SDValue Elt = DAG . getNode ( , dl , LoadVT , P , DAG . getIntPtrConstant ( j , dl ) ) ; if ( EltVT == ) Elt = DAG . getNode ( , dl , , Elt ) ; else if ( EltVT == ) Elt = DAG . getNode ( , dl , , Elt ) ; if ( Ins [ InsIdx ] . VT . isInteger ( ) && Ins [ InsIdx ] . VT . getSizeInBits ( ) > LoadVT . getSizeInBits ( ) ) { unsigned Extend = Ins [ InsIdx ] . Flags . isSExt ( ) ? : ; Elt = DAG . getNode ( Extend , dl , Ins [ InsIdx ] . VT , Elt ) ; } InVals . push_back ( Elt ) ; } VecIdx = - ; } ++ InsIdx ;" LLVM,NVPTX,992,"Predict the next statement of this code snippet: LoadSDNode * Load = cast < LoadSDNode > ( Op ) ; EVT MemVT = Load -> getMemoryVT ( ) ; if ( ! allowsMemoryAccess ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , MemVT , Load -> getAddressSpace ( ) , Load -> getAlignment ( ) ) ) { SDValue Ops [ ] ; std :: tie ( Ops [ ] , Ops [ ] ) = expandUnalignedLoad ( Load , DAG ) ; return DAG . getMergeValues ( Ops , SDLoc ( Op ) ) ; } } return SDValue ( ) ;" LLVM,NVPTX,993,"Predict the next statement of this code snippet: LoadSDNode * LD = cast < LoadSDNode > ( Node ) ; SDLoc dl ( Node ) ; assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ;" LLVM,NVPTX,994,"Predict the next statement of this code snippet: case : return Op ; case : return LowerEXTRACT_VECTOR_ELT ( Op , DAG ) ; case : return LowerCONCAT_VECTORS ( Op , DAG ) ; case : return LowerSTORE ( Op , DAG ) ; case : return LowerLOAD ( Op , DAG ) ; case : return LowerShiftLeftParts ( Op , DAG ) ; case : case : return LowerShiftRightParts ( Op , DAG ) ; case : return LowerSelect ( Op , DAG ) ; default : llvm_unreachable ( ) ; }" LLVM,NVPTX,995,"Predict the next statement of this code snippet: Type * RetTy = MF . getFunction ( ) -> getReturnType ( ) ; bool isABI = ( STI . getSmVersion ( ) >= ) ; assert ( isABI && ) ; if ( ! isABI ) return Chain ; const DataLayout DL = DAG . getDataLayout ( ) ; SmallVector < EVT , > VTs ; SmallVector < uint64_t , > Offsets ; ComputePTXValueVTs ( * this , DL , RetTy , VTs , & Offsets ) ; assert ( VTs . size ( ) == OutVals . size ( ) && ) ; auto VectorInfo = VectorizePTXValueVTs ( VTs , Offsets , RetTy -> isSized ( ) ? DL . getABITypeAlignment ( RetTy ) : ) ; bool ExtendIntegerRetVal = RetTy -> isIntegerTy ( ) && DL . getTypeAllocSizeInBits ( RetTy ) < ; SmallVector < SDValue , > StoreOperands ; for ( unsigned i = , e = VTs . size ( ) ; i != e ; ++ i ) { if ( VectorInfo [ i ] & PVF_FIRST ) { assert ( StoreOperands . empty ( ) && ) ; StoreOperands . push_back ( Chain ) ; StoreOperands . push_back ( DAG . getConstant ( Offsets [ i ] , dl , ) ) ; } SDValue RetVal = OutVals [ i ] ; if ( ExtendIntegerRetVal ) { RetVal = DAG . getNode ( Outs [ i ] . Flags . isSExt ( ) ? : , dl , , RetVal ) ; } else if ( RetVal . getValueSizeInBits ( ) < ) { RetVal = DAG . getNode ( , dl , , RetVal ) ; } StoreOperands . push_back ( RetVal ) ; if ( VectorInfo [ i ] & PVF_LAST ) { Op ; unsigned NumElts = StoreOperands . size ( ) - ; switch ( NumElts ) { case : Op = ; break ; case : Op = ; break ; case : Op = ; break ; default : llvm_unreachable ( ) ;" LLVM,NVPTX,996,"Predict the next statement of this code snippet: if ( VT == ) return LowerSTOREi1 ( Op , DAG ) ; if ( VT == && ! allowsMemoryAccess ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , VT , Store -> getAddressSpace ( ) , Store -> getAlignment ( ) ) ) return expandUnalignedStore ( Store , DAG ) ; if ( VT . isVector ( ) ) return LowerSTOREVector ( Op , DAG ) ; return SDValue ( ) ;" LLVM,NVPTX,997,"Predict the next statement of this code snippet: SDValue Tmp2 = ST -> getBasePtr ( ) ; SDValue Tmp3 = ST -> getValue ( ) ; assert ( Tmp3 . getValueType ( ) == && ) ;" LLVM,NVPTX,998,"Predict the next statement of this code snippet: switch ( ValVT . getSimpleVT ( ) . SimpleTy ) { default : return SDValue ( ) ; case : case : case : case : case : case : case : case : case : case : case : case : case : break ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; const DataLayout & TD = DAG . getDataLayout ( ) ; unsigned Align = MemSD -> getAlignment ( ) ; unsigned PrefAlign = TD . getPrefTypeAlignment ( ValVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return SDValue ( ) ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; bool StoreF16x2 = false ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : Opcode = ; break ; case : assert ( EltVT == && ) ; Opcode = ; StoreF16x2 = true ; break ; }" LLVM,NVPTX,999,"Predict the next statement of this code snippet: unsigned Align = MemSD -> getAlignment ( ) ; unsigned PrefAlign = TD . getPrefTypeAlignment ( ValVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return SDValue ( ) ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; bool StoreF16x2 = false ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : Opcode = ; break ; case : assert ( EltVT == && ) ; Opcode = ; StoreF16x2 = true ; break ; } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; if ( StoreF16x2 ) { NumElts /= ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue E0 = DAG . getNode ( , DL , , Val , DAG . getIntPtrConstant ( i * , DL ) ) ; SDValue E1 = DAG . getNode ( , DL , , Val , DAG . getIntPtrConstant ( i * + , DL ) ) ;" LLVM,NVPTX,1000,"Predict the next statement of this code snippet: SDValue N1 = N -> getOperand ( ) ;" LLVM,NVPTX,1001,"Predict the next statement of this code snippet: if ( SDValue Result = PerformADDCombineWithOperands ( N , N0 , N1 , DCI , Subtarget , OptLevel ) ) return Result ;" LLVM,NVPTX,1002,"Predict the next statement of this code snippet: } if ( Val -> isMachineOpcode ( ) && Val -> getMachineOpcode ( ) == ) { Val = Val -> getOperand ( ) ; } if ( Val -> getOpcode ( ) == || Val -> getOpcode ( ) == ) { ConstantSDNode * MaskCnst = dyn_cast < ConstantSDNode > ( Mask ) ; if ( ! MaskCnst ) { return SDValue ( ) ; } uint64_t MaskVal = MaskCnst -> getZExtValue ( ) ; if ( MaskVal != ) { return SDValue ( ) ; } MemSDNode * Mem = dyn_cast < MemSDNode > ( Val ) ; if ( ! Mem ) { return SDValue ( ) ; } EVT MemVT = Mem -> getMemoryVT ( ) ; if ( MemVT != && MemVT != ) { return SDValue ( ) ; } unsigned ExtType = cast < ConstantSDNode > ( Val -> getOperand ( Val -> getNumOperands ( ) - ) ) -> getZExtValue ( ) ; if ( ExtType == ) { return SDValue ( ) ; } bool AddTo = false ; if ( AExt . getNode ( ) != nullptr ) { Val = DCI . DAG . getNode ( , SDLoc ( N ) , AExt . getValueType ( ) , Val ) ;" LLVM,NVPTX,1003,"Predict the next statement of this code snippet: MemSDNode * Mem = dyn_cast < MemSDNode > ( Val ) ; if ( ! Mem ) { return SDValue ( ) ; } EVT MemVT = Mem -> getMemoryVT ( ) ; if ( MemVT != && MemVT != ) { return SDValue ( ) ; } unsigned ExtType = cast < ConstantSDNode > ( Val -> getOperand ( Val -> getNumOperands ( ) - ) ) -> getZExtValue ( ) ; if ( ExtType == ) { return SDValue ( ) ; } bool AddTo = false ;" LLVM,NVPTX,1004,"Predict the next statement of this code snippet: default : break ; case : case : return PerformADDCombine ( N , DCI , STI , OptLevel ) ; case : return PerformMULCombine ( N , DCI , OptLevel ) ; case : return PerformSHLCombine ( N , DCI , OptLevel ) ; case : return PerformANDCombine ( N , DCI ) ; case : case : return PerformREMCombine ( N , DCI , OptLevel ) ; case : return PerformSETCCCombine ( N , DCI ) ;" LLVM,NVPTX,1005,"Predict the next statement of this code snippet: if ( SDValue Ret = TryMULWIDECombine ( N , DCI ) ) return Ret ;" LLVM,NVPTX,1006,"Predict the next statement of this code snippet: SDLoc DL ( N ) ; EVT VT = N -> getValueType ( ) ; bool IsSigned = N -> getOpcode ( ) == ; unsigned DivOpc = IsSigned ? : ; const SDValue & Num = N -> getOperand ( ) ; const SDValue & Den = N -> getOperand ( ) ; for ( const SDNode * U : Num -> uses ( ) ) { if ( U -> getOpcode ( ) == DivOpc && U -> getOperand ( ) == Num && U -> getOperand ( ) == Den ) { return DAG . getNode ( , DL , VT , Num , DAG . getNode ( , DL , VT , DAG . getNode ( DivOpc , DL , VT , Num , Den ) , Den ) ) ; }" LLVM,NVPTX,1007,"Predict the next statement of this code snippet: unsigned DivOpc = IsSigned ? : ; const SDValue & Num = N -> getOperand ( ) ; const SDValue & Den = N -> getOperand ( ) ; for ( const SDNode * U : Num -> uses ( ) ) {" LLVM,NVPTX,1008,"Predict the next statement of this code snippet: SDValue B = N -> getOperand ( ) ; if ( CCType != || A . getValueType ( ) != ) return SDValue ( ) ; SDLoc DL ( N ) ;" LLVM,NVPTX,1009,"Predict the next statement of this code snippet: static SDValue PerformSHLCombine ( SDNode * N , TargetLowering :: DAGCombinerInfo & DCI , CodeGenOpt :: Level OptLevel ) { if ( OptLevel > ) { if ( SDValue Ret = TryMULWIDECombine ( N , DCI ) ) return Ret ; } return SDValue ( ) ;" LLVM,NVPTX,1010,"Predict the next statement of this code snippet: MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; } SDValue LoadChain = NewLD . getValue ( NumElts ) ; SDValue BuildVec = DAG . getBuildVector ( ResVT , DL , ScalarRes ) ; Results . push_back ( BuildVec ) ; Results . push_back ( LoadChain ) ; } else { assert ( ResVT . isSimple ( ) && ResVT . getSimpleVT ( ) . SimpleTy == && ) ; SmallVector < SDValue , > Ops ( N -> op_begin ( ) , N -> op_end ( ) ) ; SDVTList LdResVTs = DAG . getVTList ( , ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ;" LLVM,NVPTX,1011,"Predict the next statement of this code snippet: bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; bool LoadF16x2 = false ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } case : { assert ( EltVT == && ) ; LoadF16x2 = true ; Opcode = ; EVT ListVTs [ ] = { , , , , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ( N -> op_begin ( ) , N -> op_end ( ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) , DL ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ;" LLVM,NVPTX,1012,"Predict the next statement of this code snippet: MCSection * TargetObjectFile :: SelectSectionForGlobal ( const GlobalObject * GO , SectionKind Kind , const TargetMachine & TM ) const { return getDataSection ( ) ;" LLVM,NVPTX,1013,"Predict the next statement of this code snippet: if ( F -> hasFnAttribute ( ) ) return F -> getFnAttribute ( ) . getValueAsString ( ) == ; else return false ; }" LLVM,NVPTX,1014,"Predict the next statement of this code snippet: return FtzEnabled ; } else { const Function * F = MF . getFunction ( ) ; if ( F -> hasFnAttribute ( ) ) return F -> getFnAttribute ( ) . getValueAsString ( ) == ;" LLVM,NVPTX,1015,"Predict the next statement of this code snippet: return UsePrecSqrtF32 ; } else { return ! getTargetMachine ( ) . Options . UnsafeFPMath ; }" LLVM,NVPTX,1016,"Predict the next statement of this code snippet: if ( UsePrecSqrtF32 . getNumOccurrences ( ) > ) { return UsePrecSqrtF32 ; } else { return ! getTargetMachine ( ) . Options . UnsafeFPMath ;" LLVM,NVPTX,1017,"Predict the next statement of this code snippet: VectorInfo . assign ( ValueVTs . size ( ) , PVF_SCALAR ) ; for ( int I = , E = ValueVTs . size ( ) ; I != E ; ++ I ) { assert ( VectorInfo [ I ] == PVF_SCALAR && ) ; for ( unsigned AccessSize : { , , , } ) { unsigned NumElts = CanMergeParamLoadStoresStartingAt ( I , AccessSize , ValueVTs , Offsets , ParamAlignment ) ; switch ( NumElts ) { default : llvm_unreachable ( ) ; case : continue ; case : assert ( I + < E && ) ; VectorInfo [ I ] = PVF_FIRST ; VectorInfo [ I + ] = PVF_LAST ; I += ;" LLVM,NVPTX,1018,"Predict the next statement of this code snippet: delete static_cast < Section * > ( LSDASection ) ; delete static_cast < Section * > ( EHFrameSection ) ; delete static_cast < Section * > ( DwarfAbbrevSection ) ; delete static_cast < Section * > ( DwarfInfoSection ) ; delete static_cast < Section * > ( DwarfLineSection ) ; delete static_cast < Section * > ( DwarfFrameSection ) ; delete static_cast < Section * > ( DwarfPubTypesSection ) ; delete static_cast < const Section * > ( DwarfDebugInlineSection ) ; delete static_cast < Section * > ( DwarfStrSection ) ; delete static_cast < Section * > ( DwarfLocSection ) ; delete static_cast < Section * > ( DwarfARangesSection ) ; delete static_cast < Section * > ( DwarfRangesSection ) ;" LLVM,NVPTX,1019,"Predict the next statement of this code snippet: if ( MF . getTarget ( ) . Options . UnsafeFPMath ) return true ; const Function & F = MF . getFunction ( ) ; if ( F . hasFnAttribute ( ) ) { Attribute Attr = F . getFnAttribute ( ) ; StringRef Val = Attr . getValueAsString ( ) ;" LLVM,NVPTX,1020,"Predict the next statement of this code snippet: return ; } ComputeValueVTs ( TLI , DL , Ty , TempVTs , & TempOffsets , StartingOffset ) ; for ( unsigned i = , e = TempVTs . size ( ) ; i != e ; ++ i ) { EVT VT = TempVTs [ i ] ; uint64_t Off = TempOffsets [ i ] ; if ( VT . isVector ( ) ) { unsigned NumElts = VT . getVectorNumElements ( ) ; EVT EltVT = VT . getVectorElementType ( ) ; if ( EltVT == && NumElts % == ) { EltVT = ; NumElts /= ; } for ( unsigned j = ; j != NumElts ; ++ j ) { ValueVTs . push_back ( EltVT ) ; if ( Offsets ) Offsets -> push_back ( Off + j * EltVT . getStoreSize ( ) ) ; } } else {" LLVM,NVPTX,1021,"Predict the next statement of this code snippet: static void ComputePTXValueVTs ( const TargetLowering & TLI , const DataLayout & DL , Type * Ty , SmallVectorImpl < EVT > & ValueVTs , SmallVectorImpl < uint64_t > * Offsets = nullptr , uint64_t StartingOffset = ) { SmallVector < EVT , > TempVTs ; SmallVector < uint64_t , > TempOffsets ; if ( Ty -> isIntegerTy ( ) ) { ValueVTs . push_back ( EVT ( ) ) ; ValueVTs . push_back ( EVT ( ) ) ; if ( Offsets ) { Offsets -> push_back ( StartingOffset + ) ; Offsets -> push_back ( StartingOffset + ) ; } return ; } if ( StructType * STy = dyn_cast < StructType > ( Ty ) ) { auto const * SL = DL . getStructLayout ( STy ) ; auto ElementNum = ; for ( auto * EI : STy -> elements ( ) ) { ComputePTXValueVTs ( TLI , DL , EI , ValueVTs , Offsets , StartingOffset + SL -> getElementOffset ( ElementNum ) ) ; ++ ElementNum ; } return ; } ComputeValueVTs ( TLI , DL , Ty , TempVTs , & TempOffsets , StartingOffset ) ; for ( unsigned i = , e = TempVTs . size ( ) ; i != e ; ++ i ) { EVT VT = TempVTs [ i ] ; uint64_t Off = TempOffsets [ i ] ; if ( VT . isVector ( ) ) {" LLVM,NVPTX,1022,"Predict the next statement of this code snippet: } unsigned Align = ; const Value * DirectCallee = CS . getCalledFunction ( ) ; if ( ! DirectCallee ) { const Instruction * CalleeI = CS . getInstruction ( ) ; assert ( CalleeI && ) ; if ( isa < CallInst > ( CalleeI ) ) { if ( getAlign ( * cast < CallInst > ( CalleeI ) , Idx , Align ) ) return Align ; const Value * CalleeV = cast < CallInst > ( CalleeI ) -> getCalledValue ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ;" LLVM,NVPTX,1023,"Predict the next statement of this code snippet: if ( isa < CallInst > ( CalleeI ) ) { if ( getAlign ( * cast < CallInst > ( CalleeI ) , Idx , Align ) ) return Align ; const Value * CalleeV = cast < CallInst > ( CalleeI ) -> getCalledValue ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ; }" LLVM,NVPTX,1024,"Predict the next statement of this code snippet: TargetLoweringBase :: LegalizeTypeAction TargetLowering :: getPreferredVectorAction ( MVT VT ) const {" LLVM,NVPTX,1025,"Predict the next statement of this code snippet: if ( VT . getVectorNumElements ( ) != && VT . getScalarType ( ) == ) return TypeSplitVector ; if ( VT == ) return TypeLegal ; return TargetLoweringBase :: getPreferredVectorAction ( VT ) ;" LLVM,NVPTX,1026,"Predict the next statement of this code snippet: bool TargetLowering :: isLegalAddressingMode ( const DataLayout & DL , const AddrMode & AM , Type * Ty , unsigned AS , Instruction * I ) const { if ( AM . BaseGV ) { return ! AM . BaseOffs && ! AM . HasBaseReg && ! AM . Scale ; }" LLVM,NVPTX,1027,"Predict the next statement of this code snippet: for ( unsigned parti = , parte = VTs . size ( ) ; parti != parte ; ++ parti ) { if ( VectorInfo [ parti ] & PVF_FIRST ) { assert ( VecIdx == - && ) ; VecIdx = parti ; } if ( VectorInfo [ parti ] & PVF_LAST ) { unsigned NumElts = parti - VecIdx + ; EVT EltVT = VTs [ parti ] ; EVT LoadVT = EltVT ; if ( EltVT == ) LoadVT = ; else if ( EltVT == ) LoadVT = ; EVT VecVT = EVT :: getVectorVT ( F -> getContext ( ) , LoadVT , NumElts ) ; SDValue VecAddr = DAG . getNode ( , dl , PtrVT , Arg , DAG . getConstant ( Offsets [ VecIdx ] , dl , PtrVT ) ) ; Value * srcValue = Constant :: getNullValue ( PointerType :: get ( EltVT . getTypeForEVT ( F -> getContext ( ) ) , ADDRESS_SPACE_PARAM ) ) ; SDValue P = DAG . getLoad ( VecVT , dl , Root , VecAddr , MachinePointerInfo ( srcValue ) , aggregateIsPacked , MachineMemOperand :: MODereferenceable | MachineMemOperand :: MOInvariant ) ; if ( P . getNode ( ) ) P . getNode ( ) -> setIROrder ( idx + ) ; for ( unsigned j = ; j < NumElts ; ++ j ) { SDValue Elt = DAG . getNode ( , dl , LoadVT , P , DAG . getIntPtrConstant ( j , dl ) ) ; if ( EltVT == ) Elt = DAG . getNode ( , dl , , Elt ) ; else if ( EltVT == ) Elt = DAG . getNode ( , dl , , Elt ) ; if ( Ins [ InsIdx ] . VT . isInteger ( ) && Ins [ InsIdx ] . VT . getSizeInBits ( ) > LoadVT . getSizeInBits ( ) ) { unsigned Extend = Ins [ InsIdx ] . Flags . isSExt ( ) ? : ; Elt = DAG . getNode ( Extend , dl , Ins [ InsIdx ] . VT , Elt ) ; } InVals . push_back ( Elt ) ; } VecIdx = - ; } ++ InsIdx ; } if ( VTs . size ( ) > ) -- InsIdx ; continue ; } EVT ObjectVT = getValueType ( DL , Ty ) ; assert ( ObjectVT == Ins [ InsIdx ] . VT && ) ; SDValue Arg = getParamSymbol ( DAG , idx , PtrVT ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ;" LLVM,NVPTX,1028,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerFROUND ( SDValue Op , SelectionDAG & DAG ) const { EVT VT = Op . getValueType ( ) ; if ( VT == ) return LowerFROUND32 ( Op , DAG ) ;" LLVM,NVPTX,1029,"Predict the next statement of this code snippet: SDValue RoundedA = DAG . getNode ( , SL , VT , AdjustedA ) ; EVT SetCCVT = getSetCCResultType ( DAG . getDataLayout ( ) , * DAG . getContext ( ) , VT ) ; SDValue IsLarge = DAG . getSetCC ( SL , SetCCVT , AbsA , DAG . getConstantFP ( pow ( , ) , SL , VT ) , ) ; RoundedA = DAG . getNode ( , SL , VT , IsLarge , A , RoundedA ) ;" LLVM,NVPTX,1030,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerFROUND64 ( SDValue Op , SelectionDAG & DAG ) const { SDLoc SL ( Op ) ; SDValue A = Op . getOperand ( ) ; EVT VT = Op . getValueType ( ) ; SDValue AbsA = DAG . getNode ( , SL , VT , A ) ;" LLVM,NVPTX,1031,"Predict the next statement of this code snippet: RoundedA = DAG . getNode ( , SL , VT , IsSmall , DAG . getConstantFP ( , SL , VT ) , RoundedA ) ; RoundedA = DAG . getNode ( , SL , VT , RoundedA , A ) ; DAG . getNode ( , SL , VT , A ) ;" LLVM,NVPTX,1032,"Predict the next statement of this code snippet: auto PtrVT = getPointerTy ( DAG . getDataLayout ( ) , GAN -> getAddressSpace ( ) ) ;" LLVM,NVPTX,1033,"Predict the next statement of this code snippet: SDLoc dl ( Op ) ; const GlobalAddressSDNode * GAN = cast < GlobalAddressSDNode > ( Op ) ; auto PtrVT = getPointerTy ( DAG . getDataLayout ( ) , GAN -> getAddressSpace ( ) ) ; Op = DAG . getTargetGlobalAddress ( GAN -> getGlobal ( ) , dl , PtrVT ) ; return DAG . getNode ( , dl , PtrVT , Op ) ;" LLVM,NVPTX,1034,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerLOAD ( SDValue Op , SelectionDAG & DAG ) const { if ( Op . getValueType ( ) == ) return LowerLOADi1 ( Op , DAG ) ; if ( Op . getValueType ( ) == ) { LoadSDNode * Load = cast < LoadSDNode > ( Op ) ;" LLVM,NVPTX,1035,"Predict the next statement of this code snippet: if ( Op . getValueType ( ) == ) return LowerLOADi1 ( Op , DAG ) ; if ( Op . getValueType ( ) == ) { LoadSDNode * Load = cast < LoadSDNode > ( Op ) ; EVT MemVT = Load -> getMemoryVT ( ) ; if ( ! allowsMemoryAccessForAlignment ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , MemVT , * Load -> getMemOperand ( ) ) ) { SDValue Ops [ ] ; std :: tie ( Ops [ ] , Ops [ ] ) = expandUnalignedLoad ( Load , DAG ) ; return DAG . getMergeValues ( Ops , SDLoc ( Op ) ) ; } }" LLVM,NVPTX,1036,"Predict the next statement of this code snippet: case : return SDValue ( ) ; case : return SDValue ( ) ; case : return LowerGlobalAddress ( Op , DAG ) ; case : return Op ; case : return LowerBUILD_VECTOR ( Op , DAG ) ; case : return Op ; case : return LowerEXTRACT_VECTOR_ELT ( Op , DAG ) ; case : return LowerCONCAT_VECTORS ( Op , DAG ) ; case : return LowerSTORE ( Op , DAG ) ; case : return LowerLOAD ( Op , DAG ) ; case : return LowerShiftLeftParts ( Op , DAG ) ; case : case : return LowerShiftRightParts ( Op , DAG ) ; case : return LowerSelect ( Op , DAG ) ;" LLVM,NVPTX,1037,"Predict the next statement of this code snippet: auto VectorInfo = VectorizePTXValueVTs ( VTs , Offsets , RetTy -> isSized ( ) ? DL . getABITypeAlignment ( RetTy ) : ) ; bool ExtendIntegerRetVal = RetTy -> isIntegerTy ( ) && DL . getTypeAllocSizeInBits ( RetTy ) < ; SmallVector < SDValue , > StoreOperands ; for ( unsigned i = , e = VTs . size ( ) ; i != e ; ++ i ) { if ( VectorInfo [ i ] & PVF_FIRST ) { assert ( StoreOperands . empty ( ) && ) ; StoreOperands . push_back ( Chain ) ; StoreOperands . push_back ( DAG . getConstant ( Offsets [ i ] , dl , ) ) ; } SDValue RetVal = OutVals [ i ] ; if ( ExtendIntegerRetVal ) { RetVal = DAG . getNode ( Outs [ i ] . Flags . isSExt ( ) ? : , dl , , RetVal ) ; } else if ( RetVal . getValueSizeInBits ( ) < ) { RetVal = DAG . getNode ( , dl , , RetVal ) ; } StoreOperands . push_back ( RetVal ) ; if ( VectorInfo [ i ] & PVF_LAST ) { Op ; unsigned NumElts = StoreOperands . size ( ) - ; switch ( NumElts ) { case : Op = ; break ; case :" LLVM,NVPTX,1038,"Predict the next statement of this code snippet: SmallVector < EVT , > VTs ; SmallVector < uint64_t , > Offsets ; ComputePTXValueVTs ( * this , DL , RetTy , VTs , & Offsets ) ; assert ( VTs . size ( ) == OutVals . size ( ) && ) ; auto VectorInfo = VectorizePTXValueVTs ( VTs , Offsets , RetTy -> isSized ( ) ? DL . getABITypeAlignment ( RetTy ) : ) ; bool ExtendIntegerRetVal = RetTy -> isIntegerTy ( ) && DL . getTypeAllocSizeInBits ( RetTy ) < ; SmallVector < SDValue , > StoreOperands ; for ( unsigned i = , e = VTs . size ( ) ; i != e ; ++ i ) { if ( VectorInfo [ i ] & PVF_FIRST ) { assert ( StoreOperands . empty ( ) && ) ; StoreOperands . push_back ( Chain ) ; StoreOperands . push_back ( DAG . getConstant ( Offsets [ i ] , dl , ) ) ; } SDValue RetVal = OutVals [ i ] ; if ( ExtendIntegerRetVal ) { RetVal = DAG . getNode ( Outs [ i ] . Flags . isSExt ( ) ? : , dl , , RetVal ) ; } else if ( RetVal . getValueSizeInBits ( ) < ) { RetVal = DAG . getNode ( , dl , , RetVal ) ; } StoreOperands . push_back ( RetVal ) ; if ( VectorInfo [ i ] & PVF_LAST ) { Op ;" LLVM,NVPTX,1039,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerSTORE ( SDValue Op , SelectionDAG & DAG ) const { StoreSDNode * Store = cast < StoreSDNode > ( Op ) ; EVT VT = Store -> getMemoryVT ( ) ; if ( VT == ) return LowerSTOREi1 ( Op , DAG ) ; if ( VT == && ! allowsMemoryAccessForAlignment ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , VT , * Store -> getMemOperand ( ) ) ) return expandUnalignedStore ( Store , DAG ) ; if ( VT . isVector ( ) ) return LowerSTOREVector ( Op , DAG ) ;" LLVM,NVPTX,1040,"Predict the next statement of this code snippet: } else { const Function & F = MF . getFunction ( ) ; if ( F . hasFnAttribute ( ) ) return F . getFnAttribute ( ) . getValueAsString ( ) == ;" LLVM,NVPTX,1041,"Predict the next statement of this code snippet: } else { const Function & F = MF . getFunction ( ) ; if ( F . hasFnAttribute ( ) ) return F . getFnAttribute ( ) . getValueAsString ( ) == ; else return false ;" LLVM,NVPTX,1042,"Predict the next statement of this code snippet: TargetObjectFile :: ~ TargetObjectFile ( ) {" LLVM,NVPTX,1043,"Predict the next statement of this code snippet: TargetObjectFile :: ~ TargetObjectFile ( ) {" LLVM,NVPTX,1044,"Predict the next statement of this code snippet: bool TargetLowering :: allowFMA ( MachineFunction & MF , CodeGenOpt :: Level OptLevel ) const { const Function * F = MF . getFunction ( ) ; const TargetOptions & TO = MF . getTarget ( ) . Options ;" LLVM,NVPTX,1045,"Predict the next statement of this code snippet: if ( FMAContractLevelOpt . getNumOccurrences ( ) > ) { return FMAContractLevelOpt > ; } else if ( OptLevel == ) { return false ; } else if ( TO . AllowFPOpFusion == FPOpFusion :: Fast || TO . UnsafeFPMath ) { return true ; } else if ( F -> hasFnAttribute ( ) ) {" LLVM,NVPTX,1046,"Predict the next statement of this code snippet: void Section :: anchor ( ) {" LLVM,NVPTX,1047,"Predict the next statement of this code snippet: void Section :: anchor ( ) {" LLVM,NVPTX,1048,"Predict the next statement of this code snippet: OperandSignedness LHSSign ; if ( ! IsMulWideOperandDemotable ( LHS , OptSize , LHSSign ) ) return false ; if ( LHSSign == Unknown ) return false ; IsSigned = ( LHSSign == Signed ) ; if ( ConstantSDNode * CI = dyn_cast < ConstantSDNode > ( RHS ) ) {" LLVM,NVPTX,1049,"Predict the next statement of this code snippet: SmallVector < uint64_t , > TempOffsets ; ComputeValueVTs ( TLI , DL , Ty , TempVTs , & TempOffsets , StartingOffset ) ; for ( unsigned i = , e = TempVTs . size ( ) ; i != e ; ++ i ) { EVT VT = TempVTs [ i ] ; uint64_t Off = TempOffsets [ i ] ; if ( VT . isVector ( ) ) for ( unsigned j = , je = VT . getVectorNumElements ( ) ; j != je ; ++ j ) { ValueVTs . push_back ( VT . getVectorElementType ( ) ) ; if ( Offsets ) Offsets -> push_back ( Off + j * VT . getVectorElementType ( ) . getStoreSize ( ) ) ; } else { ValueVTs . push_back ( VT ) ;" LLVM,NVPTX,1050,"Predict the next statement of this code snippet: if ( llvm :: getAlign ( * cast < CallInst > ( CalleeI ) , Idx , Align ) ) return Align ; const Value * CalleeV = cast < CallInst > ( CalleeI ) -> getCalledValue ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ;" LLVM,NVPTX,1051,"Predict the next statement of this code snippet: TargetLowering :: ConstraintType TargetLowering :: getConstraintType ( StringRef Constraint ) const { if ( Constraint . size ( ) == ) { switch ( Constraint [ ] ) { default : break ; case 'b' : case 'r' : case 'h' : case 'c' :" LLVM,NVPTX,1052,"Predict the next statement of this code snippet: SDValue TargetLowering :: getParamSymbol ( SelectionDAG & DAG , int idx , EVT v ) const { std :: string ParamSym ; raw_string_ostream ParamStr ( ParamSym ) ; ParamStr << DAG . getMachineFunction ( ) . getName ( ) << << idx ; ParamStr . flush ( ) ;" LLVM,NVPTX,1053,"Predict the next statement of this code snippet: ParamStr << DAG . getMachineFunction ( ) . getName ( ) << << idx ; ParamStr . flush ( ) ; std :: string * SavedStr = nvTM -> getManagedStrPool ( ) -> getManagedString ( ParamSym . c_str ( ) ) ;" LLVM,NVPTX,1054,"Predict the next statement of this code snippet: if ( VT . getVectorNumElements ( ) != && VT . getScalarType ( ) == ) return TypeSplitVector ; return TargetLoweringBase :: getPreferredVectorAction ( VT ) ;" LLVM,NVPTX,1055,"Predict the next statement of this code snippet: if ( VT . getVectorNumElements ( ) != && VT . getScalarType ( ) == ) return TypeSplitVector ;" LLVM,NVPTX,1056,"Predict the next statement of this code snippet: size = retTy -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( retTy ) ) { O << << PtrVT . getSizeInBits ( ) << ; } else if ( ( retTy -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( retTy ) ) { auto & DL = CS -> getCalledFunction ( ) -> getParent ( ) -> getDataLayout ( ) ; O << << retAlignment << << DL . getTypeAllocSize ( retTy ) << ; } else { llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; if ( ! llvm :: getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) {" LLVM,NVPTX,1057,"Predict the next statement of this code snippet: return std :: make_pair ( , & ) ; case 'h' : return std :: make_pair ( , & ) ; case 'r' : return std :: make_pair ( , & ) ; case 'l' : case 'N' : return std :: make_pair ( , & ) ; case 'f' : return std :: make_pair ( , & ) ; case 'd' : return std :: make_pair ( , & ) ; } } return TargetLowering :: getRegForInlineAsmConstraint ( TRI , Constraint , VT ) ;" LLVM,NVPTX,1058,"Predict the next statement of this code snippet: const std :: string TypeName = STy && ! STy -> isLiteral ( ) ? STy -> getName ( ) : ; return std :: find ( std :: begin ( specialTypes ) , std :: end ( specialTypes ) , TypeName ) != std :: end ( specialTypes ) ;" LLVM,NVPTX,1059,"Predict the next statement of this code snippet: if ( ! PTy ) return false ; if ( ! context ) return false ; auto * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ; const std :: string TypeName = STy && ! STy -> isLiteral ( ) ? STy -> getName ( ) : ;" LLVM,NVPTX,1060,"Predict the next statement of this code snippet: bool TargetLowering :: isLegalAddressingMode ( const DataLayout & DL , const AddrMode & AM , Type * Ty , unsigned AS ) const { if ( AM . BaseGV ) { return ! AM . BaseOffs && ! AM . HasBaseReg && ! AM . Scale ; } switch ( AM . Scale ) { case : break ; case : if ( AM . HasBaseReg ) return false ; break ;" LLVM,NVPTX,1061,"Predict the next statement of this code snippet: EVT OrigVT = Op . getOperand ( ) . getValueType ( ) ; if ( OrigVT . getSizeInBits ( ) <= OptSize ) { S = Signed ; return true ; } } else if ( Op . getOpcode ( ) == ) {" LLVM,NVPTX,1062,"Predict the next statement of this code snippet: static bool IsPTXVectorType ( MVT VT ) { switch ( VT . SimpleTy ) { default : return false ; case : case : case : case : case :" LLVM,NVPTX,1063,"Predict the next statement of this code snippet: if ( Constraint . length ( ) > ) return ; else TargetLowering :: LowerAsmOperandForConstraint ( Op , Constraint , Ops , DAG ) ;" LLVM,NVPTX,1064,"Predict the next statement of this code snippet: if ( Constraint . length ( ) > ) return ;" LLVM,NVPTX,1065,"Predict the next statement of this code snippet: unsigned NumSubElem = VVT . getVectorNumElements ( ) ; for ( unsigned j = ; j < NumSubElem ; ++ j ) { Ops . push_back ( DAG . getNode ( , dl , EltVT , SubOp , DAG . getIntPtrConstant ( j , dl ) ) ) ; } } return DAG . getNode ( , dl , Node -> getValueType ( ) , Ops ) ;" LLVM,NVPTX,1066,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerCONCAT_VECTORS ( SDValue Op , SelectionDAG & DAG ) const { SDNode * Node = Op . getNode ( ) ; SDLoc dl ( Node ) ; SmallVector < SDValue , > Ops ; unsigned NumOperands = Node -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) {" LLVM,NVPTX,1067,"Predict the next statement of this code snippet: const GlobalValue * GV = cast < GlobalAddressSDNode > ( Op ) -> getGlobal ( ) ;" LLVM,NVPTX,1068,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerLOAD ( SDValue Op , SelectionDAG & DAG ) const { if ( Op . getValueType ( ) == ) return LowerLOADi1 ( Op , DAG ) ;" LLVM,NVPTX,1069,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerLOADi1 ( SDValue Op , SelectionDAG & DAG ) const { SDNode * Node = Op . getNode ( ) ; LoadSDNode * LD = cast < LoadSDNode > ( Node ) ; SDLoc dl ( Node ) ; assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ;" LLVM,NVPTX,1070,"Predict the next statement of this code snippet: SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ; SDValue result = DAG . getNode ( , dl , , newLD ) ; SDValue Ops [ ] = { result , LD -> getChain ( ) } ;" LLVM,NVPTX,1071,"Predict the next statement of this code snippet: assert ( Op . getValueType ( ) == && ) ; Op1 = DAG . getNode ( , DL , , Op1 ) ; Op2 = DAG . getNode ( , DL , , Op2 ) ; SDValue Select = DAG . getNode ( , DL , , Op0 , Op1 , Op2 ) ;" LLVM,NVPTX,1072,"Predict the next statement of this code snippet: SDValue Op1 = Op -> getOperand ( ) ; SDValue Op2 = Op -> getOperand ( ) ; SDLoc DL ( Op . getNode ( ) ) ; assert ( Op . getValueType ( ) == && ) ; Op1 = DAG . getNode ( , DL , , Op1 ) ; Op2 = DAG . getNode ( , DL , , Op2 ) ; SDValue Select = DAG . getNode ( , DL , , Op0 , Op1 , Op2 ) ;" LLVM,NVPTX,1073,"Predict the next statement of this code snippet: SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShAmt ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ; } else { SDValue RevShAmt = DAG . getNode ( , dl , , DAG . getConstant ( VTBits , dl , ) , ShAmt ) ; SDValue Tmp1 = DAG . getNode ( , dl , VT , ShOpHi , ShAmt ) ; SDValue ExtraShAmt = DAG . getNode ( , dl , , ShAmt , DAG . getConstant ( VTBits , dl , ) ) ; SDValue Tmp2 = DAG . getNode ( , dl , VT , ShOpLo , RevShAmt ) ; SDValue FalseVal = DAG . getNode ( , dl , VT , Tmp1 , Tmp2 ) ; SDValue TrueVal = DAG . getNode ( , dl , VT , ShOpLo , ExtraShAmt ) ;" LLVM,NVPTX,1074,"Predict the next statement of this code snippet: if ( VTBits == && STI . getSmVersion ( ) >= ) { SDValue Hi = DAG . getNode ( Opc , dl , VT , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShOpHi , ShAmt ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ; } else { SDValue RevShAmt = DAG . getNode ( , dl , , DAG . getConstant ( VTBits , dl , ) , ShAmt ) ; SDValue Tmp1 = DAG . getNode ( , dl , VT , ShOpLo , ShAmt ) ; SDValue ExtraShAmt = DAG . getNode ( , dl , , ShAmt , DAG . getConstant ( VTBits , dl , ) ) ; SDValue Tmp2 = DAG . getNode ( , dl , VT , ShOpHi , RevShAmt ) ; SDValue FalseVal = DAG . getNode ( , dl , VT , Tmp1 , Tmp2 ) ; SDValue TrueVal = DAG . getNode ( Opc , dl , VT , ShOpHi , ExtraShAmt ) ; SDValue Cmp = DAG . getSetCC ( dl , , ShAmt , DAG . getConstant ( VTBits , dl , ) , ) ; SDValue Hi = DAG . getNode ( Opc , dl , VT , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , Cmp , TrueVal , FalseVal ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ;" LLVM,NVPTX,1075,"Predict the next statement of this code snippet: SDValue Tmp2 = DAG . getNode ( , dl , VT , ShOpHi , RevShAmt ) ; SDValue FalseVal = DAG . getNode ( , dl , VT , Tmp1 , Tmp2 ) ; SDValue TrueVal = DAG . getNode ( Opc , dl , VT , ShOpHi , ExtraShAmt ) ; SDValue Cmp = DAG . getSetCC ( dl , , ShAmt , DAG . getConstant ( VTBits , dl , ) , ) ; SDValue Hi = DAG . getNode ( Opc , dl , VT , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , Cmp , TrueVal , FalseVal ) ; SDValue Ops [ ] = { Lo , Hi } ;" LLVM,NVPTX,1076,"Predict the next statement of this code snippet: else if ( ValVT . isVector ( ) ) return LowerSTOREVector ( Op , DAG ) ;" LLVM,NVPTX,1077,"Predict the next statement of this code snippet: else if ( ValVT . isVector ( ) ) return LowerSTOREVector ( Op , DAG ) ;" LLVM,NVPTX,1078,"Predict the next statement of this code snippet: bool isNonTemporal = ST -> isNonTemporal ( ) ; Tmp3 = DAG . getNode ( , dl , , Tmp3 ) ;" LLVM,NVPTX,1079,"Predict the next statement of this code snippet: bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : { Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i , DL ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ; Ops . push_back ( ExtVal ) ; }" LLVM,NVPTX,1080,"Predict the next statement of this code snippet: return SDValue ( ) ; case : case : case : case : case : case : case : case : case : case : break ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; const DataLayout & TD = DAG . getDataLayout ( ) ; unsigned Align = MemSD -> getAlignment ( ) ; unsigned PrefAlign = TD . getPrefTypeAlignment ( ValVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return SDValue ( ) ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : {" LLVM,NVPTX,1081,"Predict the next statement of this code snippet: static SDValue PerformADDCombine ( SDNode * N , TargetLowering :: DAGCombinerInfo & DCI , const Subtarget & Subtarget , CodeGenOpt :: Level OptLevel ) { SDValue N0 = N -> getOperand ( ) ; SDValue N1 = N -> getOperand ( ) ; SDValue Result = PerformADDCombineWithOperands ( N , N0 , N1 , DCI , Subtarget , OptLevel ) ;" LLVM,NVPTX,1082,"Predict the next statement of this code snippet: SDValue N1 = N -> getOperand ( ) ; SDValue Result = PerformADDCombineWithOperands ( N , N0 , N1 , DCI , Subtarget , OptLevel ) ; if ( Result . getNode ( ) ) return Result ;" LLVM,NVPTX,1083,"Predict the next statement of this code snippet: return DAG . getNode ( , SDLoc ( N ) , VT , N0 . getOperand ( ) , N0 . getOperand ( ) , N1 ) ; } else if ( N0 . getOpcode ( ) == ) { if ( VT == || VT == ) { const auto * TLI = static_cast < const TargetLowering * > ( & DAG . getTargetLoweringInfo ( ) ) ; if ( ! TLI -> allowFMA ( DAG . getMachineFunction ( ) , OptLevel ) ) return SDValue ( ) ; int numUses = ; int nonAddCount = ; for ( SDNode :: use_iterator UI = N0 . getNode ( ) -> use_begin ( ) , UE = N0 . getNode ( ) -> use_end ( ) ; UI != UE ; ++ UI ) { numUses ++ ; SDNode * User = * UI ; if ( User -> getOpcode ( ) != ) ++ nonAddCount ; } if ( numUses >= ) return SDValue ( ) ; if ( nonAddCount ) { int orderNo = N -> getIROrder ( ) ; int orderNo2 = N0 . getNode ( ) -> getIROrder ( ) ; if ( orderNo - orderNo2 < ) return SDValue ( ) ; bool opIsLive = false ; const SDNode * left = N0 . getOperand ( ) . getNode ( ) ; const SDNode * right = N0 . getOperand ( ) . getNode ( ) ; if ( isa < ConstantSDNode > ( left ) || isa < ConstantSDNode > ( right ) ) opIsLive = true ; if ( ! opIsLive ) for ( SDNode :: use_iterator UI = left -> use_begin ( ) , UE = left -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) { opIsLive = true ; break ; } } if ( ! opIsLive ) for ( SDNode :: use_iterator UI = right -> use_begin ( ) , UE = right -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) { opIsLive = true ;" LLVM,NVPTX,1084,"Predict the next statement of this code snippet: Val = Val -> getOperand ( ) ; } if ( Val -> getOpcode ( ) == || Val -> getOpcode ( ) == ) { ConstantSDNode * MaskCnst = dyn_cast < ConstantSDNode > ( Mask ) ; if ( ! MaskCnst ) { return SDValue ( ) ; } uint64_t MaskVal = MaskCnst -> getZExtValue ( ) ; if ( MaskVal != ) { return SDValue ( ) ; } MemSDNode * Mem = dyn_cast < MemSDNode > ( Val ) ; if ( ! Mem ) { return SDValue ( ) ; } EVT MemVT = Mem -> getMemoryVT ( ) ; if ( MemVT != && MemVT != ) { return SDValue ( ) ; }" LLVM,NVPTX,1085,"Predict the next statement of this code snippet: if ( Val -> isMachineOpcode ( ) && Val -> getMachineOpcode ( ) == ) { Val = Val -> getOperand ( ) ; } if ( Val -> getOpcode ( ) == || Val -> getOpcode ( ) == ) { ConstantSDNode * MaskCnst = dyn_cast < ConstantSDNode > ( Mask ) ; if ( ! MaskCnst ) { return SDValue ( ) ; } uint64_t MaskVal = MaskCnst -> getZExtValue ( ) ; if ( MaskVal != ) { return SDValue ( ) ; } MemSDNode * Mem = dyn_cast < MemSDNode > ( Val ) ; if ( ! Mem ) { return SDValue ( ) ; } EVT MemVT = Mem -> getMemoryVT ( ) ;" LLVM,NVPTX,1086,"Predict the next statement of this code snippet: return PerformADDCombine ( N , DCI , STI , OptLevel ) ; case : return PerformMULCombine ( N , DCI , OptLevel ) ; case : return PerformSHLCombine ( N , DCI , OptLevel ) ; case : return PerformANDCombine ( N , DCI ) ; case : return PerformSELECTCombine ( N , DCI ) ;" LLVM,NVPTX,1087,"Predict the next statement of this code snippet: case : return PerformMULCombine ( N , DCI , OptLevel ) ; case : return PerformSHLCombine ( N , DCI , OptLevel ) ; case : return PerformANDCombine ( N , DCI ) ; case : return PerformSELECTCombine ( N , DCI ) ; } return SDValue ( ) ;" LLVM,NVPTX,1088,"Predict the next statement of this code snippet: static SDValue PerformMULCombine ( SDNode * N , TargetLowering :: DAGCombinerInfo & DCI , CodeGenOpt :: Level OptLevel ) { if ( OptLevel > ) { SDValue Ret = TryMULWIDECombine ( N , DCI ) ; if ( Ret . getNode ( ) ) return Ret ;" LLVM,NVPTX,1089,"Predict the next statement of this code snippet: case : case : Larger = RHS ; break ; case : case : case : case : Larger = LHS ; break ; default : return SDValue ( ) ; } const bool IsMax = ( Larger == True ) ; const bool IsSigned = ( CC ) ; unsigned IntrinsicId ; if ( VT == ) { if ( IsSigned ) IntrinsicId = IsMax ? : ; else IntrinsicId = IsMax ? : ; } else { assert ( VT == ) ; if ( IsSigned ) IntrinsicId = IsMax ? : ; else IntrinsicId = IsMax ? : ;" LLVM,NVPTX,1090,"Predict the next statement of this code snippet: if ( Ret . getNode ( ) ) return Ret ; }" LLVM,NVPTX,1091,"Predict the next statement of this code snippet: if ( Ret . getNode ( ) ) return Ret ; }" LLVM,NVPTX,1092,"Predict the next statement of this code snippet: case : case : case : { EVT ResVT = N -> getValueType ( ) ; if ( ResVT . isVector ( ) ) { unsigned NumElts = ResVT . getVectorNumElements ( ) ; EVT EltVT = ResVT . getVectorElementType ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : switch ( IntrinNo ) { default : return ; case : case : case : Opcode = ; break ; case : case : case : Opcode = ; break ; } LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { switch ( IntrinNo ) { default : return ; case : case : case : Opcode = ; break ; case : case : case : Opcode = ; break ; } EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ; OtherOps . push_back ( Chain ) ; OtherOps . append ( N -> op_begin ( ) + , N -> op_end ( ) ) ;" LLVM,NVPTX,1093,"Predict the next statement of this code snippet: auto & TD = DAG . getDataLayout ( ) ; unsigned PrefAlign = TD . getPrefTypeAlignment ( ResVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ( N -> op_begin ( ) , N -> op_end ( ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) , DL ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; }" LLVM,NVPTX,1094,"Predict the next statement of this code snippet: default : report_fatal_error ( ) ; case : ReplaceLoadVector ( N , DAG , Results ) ; return ;" LLVM,NVPTX,1095,"Predict the next statement of this code snippet: MCSection * TargetObjectFile :: SelectSectionForGlobal ( const GlobalValue * GV , SectionKind Kind , Mangler & Mang , const TargetMachine & TM ) const {" LLVM,NVPTX,1096,"Predict the next statement of this code snippet: APInt ShiftAmt = ShlRHS -> getAPIntValue ( ) ; unsigned BitWidth = MulType . getSizeInBits ( ) ; if ( ShiftAmt . sge ( ) && ShiftAmt . slt ( BitWidth ) ) { APInt MulVal = APInt ( BitWidth , ) << ShiftAmt ; RHS = DCI . DAG . getConstant ( MulVal , DL , MulType ) ; } else { return SDValue ( ) ; } } bool Signed ; if ( ! AreMulWideOperandsDemotable ( LHS , RHS , OptSize , Signed ) ) { return SDValue ( ) ; } EVT DemotedVT ; if ( MulType == ) { DemotedVT = ; } else { DemotedVT = ; } SDValue TruncLHS = DCI . DAG . getNode ( , DL , DemotedVT , LHS ) ; SDValue TruncRHS = DCI . DAG . getNode ( , DL , DemotedVT , RHS ) ; unsigned Opc ; if ( Signed ) { Opc = ; } else { Opc = ; } return DCI . DAG . getNode ( Opc , DL , MulType , TruncLHS , TruncRHS ) ;" LLVM,NVPTX,1097,"Predict the next statement of this code snippet: SDValue RHS = N -> getOperand ( ) ; if ( N -> getOpcode ( ) == ) { if ( isa < ConstantSDNode > ( LHS ) ) { std :: swap ( LHS , RHS ) ; } } if ( N -> getOpcode ( ) == ) { ConstantSDNode * ShlRHS = dyn_cast < ConstantSDNode > ( RHS ) ; if ( ! ShlRHS ) { return SDValue ( ) ; } APInt ShiftAmt = ShlRHS -> getAPIntValue ( ) ; unsigned BitWidth = MulType . getSizeInBits ( ) ; if ( ShiftAmt . sge ( ) && ShiftAmt . slt ( BitWidth ) ) { APInt MulVal = APInt ( BitWidth , ) << ShiftAmt ; RHS = DCI . DAG . getConstant ( MulVal , DL , MulType ) ; } else { return SDValue ( ) ; } } bool Signed ; if ( ! AreMulWideOperandsDemotable ( LHS , RHS , OptSize , Signed ) ) { return SDValue ( ) ; } EVT DemotedVT ; if ( MulType == ) {" LLVM,NVPTX,1098,"Predict the next statement of this code snippet: delete static_cast < Section * > ( DwarfFrameSection ) ; delete static_cast < Section * > ( DwarfPubTypesSection ) ; delete static_cast < const Section * > ( DwarfDebugInlineSection ) ; delete static_cast < Section * > ( DwarfStrSection ) ; delete static_cast < Section * > ( DwarfLocSection ) ;" LLVM,NVPTX,1099,"Predict the next statement of this code snippet: bool isFMAFasterThanFMulAndFAdd ( const MachineFunction & MF , EVT ) const override {" LLVM,NVPTX,1100,"Predict the next statement of this code snippet: bool isFMAFasterThanFMulAndFAdd ( const MachineFunction & MF , EVT ) const override { return true ;" LLVM,NVPTX,1101,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) return ( , VT . getVectorNumElements ( ) ) ;" LLVM,NVPTX,1102,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) return ( , VT . getVectorNumElements ( ) ) ;" LLVM,NVPTX,1103,"Predict the next statement of this code snippet: virtual MVT getShiftAmountTy ( EVT LHSTy ) const {" LLVM,NVPTX,1104,"Predict the next statement of this code snippet: static void ComputePTXValueVTs ( const TargetLowering & TLI , const DataLayout & DL , Type * Ty , SmallVectorImpl < EVT > & ValueVTs , SmallVectorImpl < uint64_t > * Offsets = nullptr , uint64_t StartingOffset = ) { SmallVector < EVT , > TempVTs ; SmallVector < uint64_t , > TempOffsets ; if ( Ty -> isIntegerTy ( ) ) { ValueVTs . push_back ( EVT ( ) ) ; ValueVTs . push_back ( EVT ( ) ) ; if ( Offsets ) { Offsets -> push_back ( StartingOffset + ) ; Offsets -> push_back ( StartingOffset + ) ; } return ; } ComputeValueVTs ( TLI , DL , Ty , TempVTs , & TempOffsets , StartingOffset ) ; for ( unsigned i = , e = TempVTs . size ( ) ; i != e ; ++ i ) { EVT VT = TempVTs [ i ] ; uint64_t Off = TempOffsets [ i ] ; if ( VT . isVector ( ) ) { unsigned NumElts = VT . getVectorNumElements ( ) ; EVT EltVT = VT . getVectorElementType ( ) ; if ( EltVT == && NumElts % == ) { EltVT = ; NumElts /= ; } for ( unsigned j = ; j != NumElts ; ++ j ) { ValueVTs . push_back ( EltVT ) ; if ( Offsets ) Offsets -> push_back ( Off + j * EltVT . getStoreSize ( ) ) ; } } else { ValueVTs . push_back ( VT ) ; if ( Offsets ) Offsets -> push_back ( Off ) ; }" LLVM,NVPTX,1105,"Predict the next statement of this code snippet: if ( ! isABI ) return ; std :: stringstream O ; O << << uniqueCallSite << ; if ( retTy -> getTypeID ( ) == Type :: VoidTyID ) { O << ; } else { O << ; if ( retTy -> isFloatingPointTy ( ) || ( retTy -> isIntegerTy ( ) && ! retTy -> isIntegerTy ( ) ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( retTy ) ) { size = ITy -> getBitWidth ( ) ; } else { assert ( retTy -> isFloatingPointTy ( ) && ) ; size = retTy -> getPrimitiveSizeInBits ( ) ; } if ( size < ) size = ; O << << size << ; } else if ( isa < PointerType > ( retTy ) ) { O << << PtrVT . getSizeInBits ( ) << ; } else if ( retTy -> isAggregateType ( ) || retTy -> isVectorTy ( ) || retTy -> isIntegerTy ( ) ) { auto & DL = CS . getCalledFunction ( ) -> getParent ( ) -> getDataLayout ( ) ; O << << retAlignment << << DL . getTypeAllocSize ( retTy ) << ; } else { llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) {" LLVM,NVPTX,1106,"Predict the next statement of this code snippet: } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS . getInstruction ( ) ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) { sz = PtrVT . getSizeInBits ( ) ; } else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ;" LLVM,NVPTX,1107,"Predict the next statement of this code snippet: if ( Offsets [ Idx ] & ( AccessSize - ) ) return ; EVT EltVT = ValueVTs [ Idx ] ; unsigned EltSize = EltVT . getStoreSize ( ) ; if ( EltSize >= AccessSize ) return ; unsigned NumElts = AccessSize / EltSize ; if ( AccessSize != EltSize * NumElts ) return ; if ( Idx + NumElts > ValueVTs . size ( ) ) return ; if ( NumElts != && NumElts != ) return ; for ( unsigned j = Idx + ; j < Idx + NumElts ; ++ j ) {" LLVM,NVPTX,1108,"Predict the next statement of this code snippet: llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS . getInstruction ( ) ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) { sz = PtrVT . getSizeInBits ( ) ; } else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; Align align = Outs [ OIdx ] . Flags . getNonZeroByValAlign ( ) ;" LLVM,NVPTX,1109,"Predict the next statement of this code snippet: } else { O << ; if ( retTy -> isFloatingPointTy ( ) || ( retTy -> isIntegerTy ( ) && ! retTy -> isIntegerTy ( ) ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( retTy ) ) { size = ITy -> getBitWidth ( ) ; } else { assert ( retTy -> isFloatingPointTy ( ) && ) ; size = retTy -> getPrimitiveSizeInBits ( ) ; } if ( size < ) size = ; O << << size << ; } else if ( isa < PointerType > ( retTy ) ) { O << << PtrVT . getSizeInBits ( ) << ; } else if ( retTy -> isAggregateType ( ) || retTy -> isVectorTy ( ) || retTy -> isIntegerTy ( ) ) { O << << ( retAlignment ? retAlignment -> value ( ) : ) << << DL . getTypeAllocSize ( retTy ) << ; } else { llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ;" LLVM,NVPTX,1110,"Predict the next statement of this code snippet: return MF . getDenormalMode ( APFloat :: IEEEsingle ( ) ) . Output == DenormalMode :: PreserveSign ;" LLVM,NVPTX,1111,"Predict the next statement of this code snippet: if ( FtzEnabled . getNumOccurrences ( ) > ) { return FtzEnabled ; }" LLVM,NVPTX,1112,"Predict the next statement of this code snippet: return MF . getDenormalMode ( APFloat :: IEEEsingle ( ) ) == DenormalMode :: PreserveSign ;" LLVM,NVPTX,1113,"Predict the next statement of this code snippet: return getExtSymb ( DAG , , idx , v ) ;" LLVM,NVPTX,1114,"Predict the next statement of this code snippet: O << ; } O << ; bool first = true ; MVT thePointerTy = getPointerTy ( ) ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i ) { const Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( Outs [ i ] . Flags . isByVal ( ) == false ) { unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; O << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI ) { unsigned align = Outs [ i ] . Flags . getByValAlign ( ) ; unsigned sz = getDataLayout ( ) -> getTypeAllocSize ( ETy ) ; O << << align << ; O << ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) {" LLVM,NVPTX,1115,"Predict the next statement of this code snippet: return std :: make_pair ( , & ) ; case 'f' : return std :: make_pair ( , & ) ; case 'd' : return std :: make_pair ( , & ) ; } } return TargetLowering :: getRegForInlineAsmConstraint ( Constraint , VT ) ;" LLVM,NVPTX,1116,"Predict the next statement of this code snippet: case 'r' : return std :: make_pair ( , & ) ; case 'l' : case 'N' : return std :: make_pair ( , & ) ; case 'f' : return std :: make_pair ( , & ) ; case 'd' : return std :: make_pair ( , & ) ; } }" LLVM,NVPTX,1117,"Predict the next statement of this code snippet: default : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; }" LLVM,NVPTX,1118,"Predict the next statement of this code snippet: case : case : case : Info . opc = ; if ( Intrinsic == ) Info . memVT = ; else if ( Intrinsic == ) Info . memVT = getPointerTy ( ) ; else Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = false ; Info . align = ; return true ;" LLVM,NVPTX,1119,"Predict the next statement of this code snippet: const StructType * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ; const std :: string TypeName = STy ? STy -> getName ( ) : ; for ( int i = , e = array_lengthof ( specialTypes ) ; i != e ; ++ i ) if ( TypeName == specialTypes [ i ] ) return true ; return false ;" LLVM,NVPTX,1120,"Predict the next statement of this code snippet: const Type * Ty = arg -> getType ( ) ; const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ; if ( ! context ) return false ; const StructType * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ; const std :: string TypeName = STy ? STy -> getName ( ) : ; for ( int i = , e = array_lengthof ( specialTypes ) ; i != e ; ++ i ) if ( TypeName == specialTypes [ i ] ) return true ; return false ;" LLVM,NVPTX,1121,"Predict the next statement of this code snippet: void TargetLowering :: LowerAsmOperandForConstraint ( SDValue Op , std :: string & Constraint , std :: vector < SDValue > & Ops , SelectionDAG & DAG ) const { if ( Constraint . length ( ) > ) return ;" LLVM,NVPTX,1122,"Predict the next statement of this code snippet: if ( Constraint . length ( ) > ) return ; else TargetLowering :: LowerAsmOperandForConstraint ( Op , Constraint , Ops , DAG ) ;" LLVM,NVPTX,1123,"Predict the next statement of this code snippet: DebugLoc dl = Node -> getDebugLoc ( ) ; SmallVector < SDValue , > Ops ; unsigned NumOperands = Node -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) { SDValue SubOp = Node -> getOperand ( i ) ; EVT VVT = SubOp . getNode ( ) -> getValueType ( ) ; EVT EltVT = VVT . getVectorElementType ( ) ; unsigned NumSubElem = VVT . getVectorNumElements ( ) ; for ( unsigned j = ; j < NumSubElem ; ++ j ) { Ops . push_back ( DAG . getNode ( , dl , EltVT , SubOp , DAG . getIntPtrConstant ( j ) ) ) ; } } return DAG . getNode ( , dl , Node -> getValueType ( ) , & Ops [ ] , Ops . size ( ) ) ;" LLVM,NVPTX,1124,"Predict the next statement of this code snippet: EVT EltVT = VVT . getVectorElementType ( ) ; unsigned NumSubElem = VVT . getVectorNumElements ( ) ; for ( unsigned j = ; j < NumSubElem ; ++ j ) { Ops . push_back ( DAG . getNode ( , dl , EltVT , SubOp , DAG . getIntPtrConstant ( j ) ) ) ;" LLVM,NVPTX,1125,"Predict the next statement of this code snippet: if ( isABI || isKernel ) { SDValue Arg = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) DAG . AssignOrdering ( p . getNode ( ) , idx + ) ; if ( isKernel ) InVals . push_back ( p ) ; else { SDValue p2 = DAG . getNode ( , dl , ObjectVT , DAG . getConstant ( , ) , p ) ; InVals . push_back ( p2 ) ; } } else { const PointerType * elemPtrType = dyn_cast < PointerType > ( argTypes [ i ] ) ; assert ( elemPtrType && ) ; Type * elemType = elemPtrType -> getElementType ( ) ; SmallVector < EVT , > vtparts ; SmallVector < uint64_t , > offsets ; ComputeValueVTs ( * this , elemType , vtparts , & offsets , ) ; unsigned totalsize = ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) totalsize += vtparts [ j ] . getStoreSizeInBits ( ) ; SDValue localcopy = DAG . getFrameIndex ( MF . getFrameInfo ( ) -> CreateStackObject ( totalsize / , , false ) , getPointerTy ( ) ) ; unsigned sizesofar = ; std :: vector < SDValue > theChains ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) { unsigned numElems = ; if ( vtparts [ j ] . isVector ( ) ) numElems = vtparts [ j ] . getVectorNumElements ( ) ; for ( unsigned k = , ke = numElems ; k != ke ; ++ k ) { EVT tmpvt = vtparts [ j ] ; if ( tmpvt . isVector ( ) ) tmpvt = tmpvt . getVectorElementType ( ) ; SDValue arg = DAG . getNode ( , dl , tmpvt , getParamSymbol ( DAG , idx , tmpvt ) ) ; SDValue addr = DAG . getNode ( , dl , getPointerTy ( ) , localcopy , DAG . getConstant ( sizesofar , getPointerTy ( ) ) ) ; theChains . push_back ( DAG . getStore ( Chain , dl , arg , addr , MachinePointerInfo ( ) , false , false , ) ) ; sizesofar += tmpvt . getStoreSizeInBits ( ) / ; ++ idx ; }" LLVM,NVPTX,1126,"Predict the next statement of this code snippet: DebugLoc dl = Op . getDebugLoc ( ) ; const GlobalValue * GV = cast < GlobalAddressSDNode > ( Op ) -> getGlobal ( ) ; Op = DAG . getTargetGlobalAddress ( GV , dl , getPointerTy ( ) ) ; return DAG . getNode ( , dl , getPointerTy ( ) , Op ) ;" LLVM,NVPTX,1127,"Predict the next statement of this code snippet: LowerOperation ( SDValue Op , SelectionDAG & DAG ) const { switch ( Op . getOpcode ( ) ) { case : return SDValue ( ) ; case : return SDValue ( ) ; case : return LowerGlobalAddress ( Op , DAG ) ; case : return Op ; case : case : return Op ;" LLVM,NVPTX,1128,"Predict the next statement of this code snippet: case : return LowerGlobalAddress ( Op , DAG ) ; case : return Op ; case : case : return Op ; case : return LowerCONCAT_VECTORS ( Op , DAG ) ; default : llvm_unreachable ( ) ; }" LLVM,NVPTX,1129,"Predict the next statement of this code snippet: if ( theValType . isVector ( ) ) tmpval = DAG . getNode ( , dl , theValType . getVectorElementType ( ) , tmpval , DAG . getIntPtrConstant ( j ) ) ; Chain = DAG . getNode ( isABI ? : , dl , , Chain , DAG . getConstant ( isABI ? sizesofar : idx , ) , tmpval ) ;" LLVM,NVPTX,1130,"Predict the next statement of this code snippet: if ( Op . getValueType ( ) == ) { LoadSDNode * Load = cast < LoadSDNode > ( Op ) ; EVT MemVT = Load -> getMemoryVT ( ) ; if ( ! allowsMemoryAccess ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , MemVT , * Load -> getMemOperand ( ) ) ) { SDValue Ops [ ] ; std :: tie ( Ops [ ] , Ops [ ] ) = expandUnalignedLoad ( Load , DAG ) ; return DAG . getMergeValues ( Ops , SDLoc ( Op ) ) ; } }" LLVM,NVPTX,1131,"Predict the next statement of this code snippet: SDValue Ops [ ] ; std :: tie ( Ops [ ] , Ops [ ] ) = expandUnalignedLoad ( Load , DAG ) ; return DAG . getMergeValues ( Ops , SDLoc ( Op ) ) ; } }" LLVM,NVPTX,1132,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerSTORE ( SDValue Op , SelectionDAG & DAG ) const { StoreSDNode * Store = cast < StoreSDNode > ( Op ) ; EVT VT = Store -> getMemoryVT ( ) ; if ( VT == ) return LowerSTOREi1 ( Op , DAG ) ; if ( VT == && ! allowsMemoryAccess ( * DAG . getContext ( ) , DAG . getDataLayout ( ) , VT , * Store -> getMemOperand ( ) ) ) return expandUnalignedStore ( Store , DAG ) ;" LLVM,NVPTX,1133,"Predict the next statement of this code snippet: if ( MF . getTarget ( ) . Options . UnsafeFPMath ) return true ; const Function & F = MF . getFunction ( ) ; return F . getFnAttribute ( ) . getValueAsBool ( ) ;" LLVM,NVPTX,1134,"Predict the next statement of this code snippet: if ( MF . getTarget ( ) . Options . UnsafeFPMath ) return true ; const Function & F = MF . getFunction ( ) ;" LLVM,NVPTX,1135,"Predict the next statement of this code snippet: Align TargetLowering :: getArgumentAlignment ( SDValue Callee , const CallBase * CB , Type * Ty , unsigned Idx , const DataLayout & DL ) const { if ( ! CB ) { return DL . getABITypeAlign ( Ty ) ; } unsigned Alignment = ; const Function * DirectCallee = CB -> getCalledFunction ( ) ; if ( ! DirectCallee ) { if ( const auto * CI = dyn_cast < CallInst > ( CB ) ) { if ( getAlign ( * CI , Idx , Alignment ) ) return Align ( Alignment ) ; const Value * CalleeV = CI -> getCalledOperand ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ; } if ( const auto * CalleeF = dyn_cast < Function > ( CalleeV ) ) DirectCallee = CalleeF ; }" LLVM,NVPTX,1136,"Predict the next statement of this code snippet: for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( & CB ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) { sz = PtrVT . getSizeInBits ( ) ; } else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getPointerElementType ( ) ; Align align = Outs [ OIdx ] . Flags . getNonZeroByValAlign ( ) ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align . value ( ) << ; O << ; O << << sz << ; }" LLVM,NVPTX,1137,"Predict the next statement of this code snippet: O << << size << ; } else if ( isa < PointerType > ( retTy ) ) { O << << PtrVT . getSizeInBits ( ) << ; } else if ( retTy -> isAggregateType ( ) || retTy -> isVectorTy ( ) || retTy -> isIntegerTy ( ) ) { O << << ( retAlignment ? retAlignment -> value ( ) : ) << << DL . getTypeAllocSize ( retTy ) << ; } else { llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( & CB ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ;" LLVM,NVPTX,1138,"Predict the next statement of this code snippet: virtual bool isFMAFasterThanFMulAndFAdd ( EVT ) const { return true ;" LLVM,NVPTX,1139,"Predict the next statement of this code snippet: return true ;" LLVM,NVPTX,1140,"Predict the next statement of this code snippet: static const char * const specialTypes [ ] = { , , } ; Type * Ty = arg -> getType ( ) ; auto * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ; if ( ! context ) return false ;" LLVM,NVPTX,1141,"Predict the next statement of this code snippet: static const char * const specialTypes [ ] = { , , } ; Type * Ty = arg -> getType ( ) ; auto * PTy = dyn_cast < PointerType > ( Ty ) ;" LLVM,NVPTX,1142,"Predict the next statement of this code snippet: static bool IsMulWideOperandDemotable ( SDValue Op , unsigned OptSize , OperandSignedness & S ) { S = Unknown ; if ( Op . getOpcode ( ) == || Op . getOpcode ( ) == ) { EVT OrigVT = Op . getOperand ( ) . getValueType ( ) ; if ( OrigVT . getFixedSizeInBits ( ) <= OptSize ) {" LLVM,NVPTX,1143,"Predict the next statement of this code snippet: if ( ! isABI ) return Chain ; const DataLayout & DL = DAG . getDataLayout ( ) ; SmallVector < EVT , > VTs ; SmallVector < uint64_t , > Offsets ; ComputePTXValueVTs ( * this , DL , RetTy , VTs , & Offsets ) ; assert ( VTs . size ( ) == OutVals . size ( ) && ) ; auto VectorInfo = VectorizePTXValueVTs ( VTs , Offsets , RetTy -> isSized ( ) ? DL . getABITypeAlign ( RetTy ) : Align ( ) ) ; bool ExtendIntegerRetVal = RetTy -> isIntegerTy ( ) && DL . getTypeAllocSizeInBits ( RetTy ) < ; SmallVector < SDValue , > StoreOperands ; for ( unsigned i = , e = VTs . size ( ) ; i != e ; ++ i ) { if ( VectorInfo [ i ] & PVF_FIRST ) { assert ( StoreOperands . empty ( ) && ) ; StoreOperands . push_back ( Chain ) ; StoreOperands . push_back ( DAG . getConstant ( Offsets [ i ] , dl , ) ) ; } SDValue RetVal = OutVals [ i ] ; if ( ExtendIntegerRetVal ) { RetVal = DAG . getNode ( Outs [ i ] . Flags . isSExt ( ) ? : , dl , , RetVal ) ; } else if ( RetVal . getValueSizeInBits ( ) < ) { RetVal = DAG . getNode ( , dl , , RetVal ) ; } StoreOperands . push_back ( RetVal ) ; if ( VectorInfo [ i ] & PVF_LAST ) { Op ; unsigned NumElts = StoreOperands . size ( ) - ; switch ( NumElts ) {" LLVM,NVPTX,1144,"Predict the next statement of this code snippet: } SDValue RetVal = OutVals [ i ] ; if ( ExtendIntegerRetVal ) { RetVal = DAG . getNode ( Outs [ i ] . Flags . isSExt ( ) ? : , dl , , RetVal ) ; } else if ( RetVal . getValueSizeInBits ( ) < ) { RetVal = DAG . getNode ( , dl , , RetVal ) ; } StoreOperands . push_back ( RetVal ) ; if ( VectorInfo [ i ] & PVF_LAST ) { Op ; unsigned NumElts = StoreOperands . size ( ) - ; switch ( NumElts ) { case : Op = ; break ; case : Op = ; break ; case : Op = ; break ; default : llvm_unreachable ( ) ; } EVT TheStoreType = ExtendIntegerRetVal ? : VTs [ i ] ; Chain = DAG . getMemIntrinsicNode ( Op , dl , DAG . getVTList ( ) , StoreOperands , TheStoreType , MachinePointerInfo ( ) , Align ( ) , MachineMemOperand :: MOStore ) ; StoreOperands . clear ( ) ; } } return DAG . getNode ( , dl , , Chain ) ;" LLVM,NVPTX,1145,"Predict the next statement of this code snippet: int orderNo2 = N0 . getNode ( ) -> getIROrder ( ) ; if ( orderNo - orderNo2 < ) return SDValue ( ) ; bool opIsLive = false ; const SDNode * left = N0 . getOperand ( ) . getNode ( ) ; const SDNode * right = N0 . getOperand ( ) . getNode ( ) ; if ( isa < ConstantSDNode > ( left ) || isa < ConstantSDNode > ( right ) ) opIsLive = true ; if ( ! opIsLive ) for ( const SDNode * User : left -> uses ( ) ) { int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) { opIsLive = true ; break ; } } if ( ! opIsLive ) for ( const SDNode * User : right -> uses ( ) ) { int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) { opIsLive = true ; break ; } }" LLVM,NVPTX,1146,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) return SDValue ( ) ; if ( N0 . getOpcode ( ) == ) { assert ( VT . isInteger ( ) ) ; if ( OptLevel == CodeGenOpt :: None || VT != || ! N0 . getNode ( ) -> hasOneUse ( ) ) return SDValue ( ) ; return DAG . getNode ( , SDLoc ( N ) , VT , N0 . getOperand ( ) , N0 . getOperand ( ) , N1 ) ; } else if ( N0 . getOpcode ( ) == ) { if ( VT == || VT == ) { const auto * TLI = static_cast < const TargetLowering * > ( & DAG . getTargetLoweringInfo ( ) ) ; if ( ! TLI -> allowFMA ( DAG . getMachineFunction ( ) , OptLevel ) ) return SDValue ( ) ; int numUses = ; int nonAddCount = ; for ( const SDNode * User : N0 . getNode ( ) -> uses ( ) ) { numUses ++ ; if ( User -> getOpcode ( ) != ) ++ nonAddCount ; } if ( numUses >= ) return SDValue ( ) ; if ( nonAddCount ) { int orderNo = N -> getIROrder ( ) ; int orderNo2 = N0 . getNode ( ) -> getIROrder ( ) ; if ( orderNo - orderNo2 < ) return SDValue ( ) ; bool opIsLive = false ; const SDNode * left = N0 . getOperand ( ) . getNode ( ) ; const SDNode * right = N0 . getOperand ( ) . getNode ( ) ; if ( isa < ConstantSDNode > ( left ) || isa < ConstantSDNode > ( right ) ) opIsLive = true ; if ( ! opIsLive ) for ( const SDNode * User : left -> uses ( ) ) { int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) {" LLVM,NVPTX,1147,"Predict the next statement of this code snippet: LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } case : { assert ( EltVT == && ) ; LoadF16x2 = true ; Opcode = ; EVT ListVTs [ ] = { , , , , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ( N -> op_begin ( ) , N -> op_end ( ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) , DL ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; if ( LoadF16x2 ) { NumElts /= ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue SubVector = NewLD . getValue ( i ) ; SDValue E0 = DAG . getNode ( , DL , EltVT , SubVector , DAG . getIntPtrConstant ( , DL ) ) ; SDValue E1 = DAG . getNode ( , DL , EltVT , SubVector , DAG . getIntPtrConstant ( , DL ) ) ; ScalarRes . push_back ( E0 ) ; ScalarRes . push_back ( E1 ) ; }" LLVM,NVPTX,1148,"Predict the next statement of this code snippet: static bool AreMulWideOperandsDemotable ( SDValue LHS , SDValue RHS , unsigned OptSize , bool & IsSigned ) { OperandSignedness LHSSign ; if ( ! IsMulWideOperandDemotable ( LHS , OptSize , LHSSign ) ) return false ; if ( LHSSign == Unknown ) return false ; IsSigned = ( LHSSign == Signed ) ; if ( ConstantSDNode * CI = dyn_cast < ConstantSDNode > ( RHS ) ) { APInt Val = CI -> getAPIntValue ( ) ; if ( LHSSign == Unsigned ) { if ( Val . isIntN ( OptSize ) ) { return true ;" LLVM,NVPTX,1149,"Predict the next statement of this code snippet: SmallVector < EVT , > TempVTs ; SmallVector < uint64_t , > TempOffsets ; ComputeValueVTs ( TLI , Ty , TempVTs , & TempOffsets , StartingOffset ) ; for ( unsigned i = , e = TempVTs . size ( ) ; i != e ; ++ i ) {" LLVM,NVPTX,1150,"Predict the next statement of this code snippet: if ( llvm :: getAlign ( * cast < CallInst > ( CalleeI ) , Idx , Align ) ) return Align ; const Value * CalleeV = cast < CallInst > ( CalleeI ) -> getCalledValue ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ; } if ( isa < Function > ( CalleeV ) ) DirectCallee = CalleeV ;" LLVM,NVPTX,1151,"Predict the next statement of this code snippet: if ( llvm :: getAlign ( * cast < CallInst > ( CalleeI ) , Idx , Align ) ) return Align ; const Value * CalleeV = cast < CallInst > ( CalleeI ) -> getCalledValue ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ; } if ( isa < Function > ( CalleeV ) ) DirectCallee = CalleeV ; } } if ( DirectCallee ) if ( llvm :: getAlign ( * cast < Function > ( DirectCallee ) , Idx , Align ) ) return Align ; return TD -> getABITypeAlignment ( Ty ) ;" LLVM,NVPTX,1152,"Predict the next statement of this code snippet: switch ( Constraint [ ] ) { default : break ; case 'b' : case 'r' : case 'h' : case 'c' : case 'l' : case 'f' : case 'd' : case '0' : case 'N' : return C_RegisterClass ; } } return TargetLowering :: getConstraintType ( Constraint ) ;" LLVM,NVPTX,1153,"Predict the next statement of this code snippet: case 'b' : return std :: make_pair ( , & ) ; case 'c' : return std :: make_pair ( , & ) ; case 'h' : return std :: make_pair ( , & ) ; case 'r' : return std :: make_pair ( , & ) ; case 'l' : case 'N' : return std :: make_pair ( , & ) ; case 'f' : return std :: make_pair ( , & ) ; case 'd' : return std :: make_pair ( , & ) ;" LLVM,NVPTX,1154,"Predict the next statement of this code snippet: MVT getScalarShiftAmountTy ( EVT LHSTy ) const override { return ;" LLVM,NVPTX,1155,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) return EVT :: getVectorVT ( Ctx , , VT . getVectorNumElements ( ) ) ;" LLVM,NVPTX,1156,"Predict the next statement of this code snippet: if ( VT . isVector ( ) ) return EVT :: getVectorVT ( Ctx , , VT . getVectorNumElements ( ) ) ;" LLVM,NVPTX,1157,"Predict the next statement of this code snippet: bool llvm :: isImageOrSamplerVal ( const Value * arg , const Module * context ) { static const char * const specialTypes [ ] = { , , } ; const Type * Ty = arg -> getType ( ) ; const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ; if ( ! context ) return false ; const StructType * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ;" LLVM,NVPTX,1158,"Predict the next statement of this code snippet: const std :: string TypeName = STy && ! STy -> isLiteral ( ) ? STy -> getName ( ) : ;" LLVM,NVPTX,1159,"Predict the next statement of this code snippet: } switch ( AM . Scale ) { case : break ; case : if ( AM . HasBaseReg ) return false ; break ; default : return false ; } return true ;" LLVM,NVPTX,1160,"Predict the next statement of this code snippet: static bool IsMulWideOperandDemotable ( SDValue Op , unsigned OptSize , OperandSignedness & S ) { S = Unknown ; if ( Op . getOpcode ( ) == || Op . getOpcode ( ) == ) { EVT OrigVT = Op . getOperand ( ) . getValueType ( ) ; if ( OrigVT . getSizeInBits ( ) == OptSize ) { S = Signed ; return true ; } } else if ( Op . getOpcode ( ) == ) { EVT OrigVT = Op . getOperand ( ) . getValueType ( ) ; if ( OrigVT . getSizeInBits ( ) == OptSize ) { S = Unsigned ;" LLVM,NVPTX,1161,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerCONCAT_VECTORS ( SDValue Op , SelectionDAG & DAG ) const { SDNode * Node = Op . getNode ( ) ; SDLoc dl ( Node ) ; SmallVector < SDValue , > Ops ; unsigned NumOperands = Node -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) {" LLVM,NVPTX,1162,"Predict the next statement of this code snippet: SDLoc dl ( Op ) ; const GlobalValue * GV = cast < GlobalAddressSDNode > ( Op ) -> getGlobal ( ) ; Op = DAG . getTargetGlobalAddress ( GV , dl , getPointerTy ( ) ) ;" LLVM,NVPTX,1163,"Predict the next statement of this code snippet: const GlobalValue * GV = cast < GlobalAddressSDNode > ( Op ) -> getGlobal ( ) ; Op = DAG . getTargetGlobalAddress ( GV , dl , getPointerTy ( ) ) ;" LLVM,NVPTX,1164,"Predict the next statement of this code snippet: Ops . push_back ( DAG . getConstant ( Offset , ) ) ; unsigned Opc = ; EVT ExtendedVT = ( NeedExtend ) ? : OutVals [ ] . getValueType ( ) ; StoreVal = OutVals [ i ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( VecSize == ) { Opc = ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; } Chain = DAG . getMemIntrinsicNode ( Opc , dl , DAG . getVTList ( ) , Ops , EltVT , MachinePointerInfo ( ) ) ; Offset += PerStoreOffset ; } } } else { SmallVector < EVT , > ValVTs ; SmallVector < uint64_t , > Offsets ; ComputePTXValueVTs ( * this , RetTy , ValVTs , & Offsets , ) ; assert ( ValVTs . size ( ) == OutVals . size ( ) && ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { SDValue theVal = OutVals [ i ] ; EVT TheValType = theVal . getValueType ( ) ; unsigned numElems = ; if ( TheValType . isVector ( ) ) numElems = TheValType . getVectorNumElements ( ) ; for ( unsigned j = , je = numElems ; j != je ; ++ j ) { SDValue TmpVal = theVal ; if ( TheValType . isVector ( ) ) TmpVal = DAG . getNode ( , dl , TheValType . getVectorElementType ( ) , TmpVal , DAG . getIntPtrConstant ( j ) ) ; EVT TheStoreType = ValVTs [ i ] ; if ( RetTy -> isIntegerTy ( ) && TD -> getTypeAllocSizeInBits ( RetTy ) < ) { TmpVal = DAG . getNode ( , dl , , TmpVal ) ; TheStoreType = ; }" LLVM,NVPTX,1165,"Predict the next statement of this code snippet: unsigned VTBits = VT . getSizeInBits ( ) ; SDLoc dl ( Op ) ; SDValue ShOpLo = Op . getOperand ( ) ; SDValue ShOpHi = Op . getOperand ( ) ; SDValue ShAmt = Op . getOperand ( ) ; if ( VTBits == && nvptxSubtarget . getSmVersion ( ) >= ) { SDValue Hi = DAG . getNode ( , dl , VT , ShOpLo , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShAmt ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ; } else { SDValue RevShAmt = DAG . getNode ( , dl , , DAG . getConstant ( VTBits , ) , ShAmt ) ; SDValue Tmp1 = DAG . getNode ( , dl , VT , ShOpHi , ShAmt ) ; SDValue ExtraShAmt = DAG . getNode ( , dl , , ShAmt , DAG . getConstant ( VTBits , ) ) ; SDValue Tmp2 = DAG . getNode ( , dl , VT , ShOpLo , RevShAmt ) ; SDValue FalseVal = DAG . getNode ( , dl , VT , Tmp1 , Tmp2 ) ; SDValue TrueVal = DAG . getNode ( , dl , VT , ShOpLo , ExtraShAmt ) ; SDValue Cmp = DAG . getSetCC ( dl , , ShAmt , DAG . getConstant ( VTBits , ) , ) ; SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShAmt ) ; SDValue Hi = DAG . getNode ( , dl , VT , Cmp , TrueVal , FalseVal ) ; SDValue Ops [ ] = { Lo , Hi } ;" LLVM,NVPTX,1166,"Predict the next statement of this code snippet: unsigned VTBits = VT . getSizeInBits ( ) ; SDLoc dl ( Op ) ; SDValue ShOpLo = Op . getOperand ( ) ; SDValue ShOpHi = Op . getOperand ( ) ; SDValue ShAmt = Op . getOperand ( ) ; if ( VTBits == && nvptxSubtarget . getSmVersion ( ) >= ) { SDValue Hi = DAG . getNode ( , dl , VT , ShOpLo , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShAmt ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ; } else { SDValue RevShAmt = DAG . getNode ( , dl , , DAG . getConstant ( VTBits , ) , ShAmt ) ; SDValue Tmp1 = DAG . getNode ( , dl , VT , ShOpHi , ShAmt ) ; SDValue ExtraShAmt = DAG . getNode ( , dl , , ShAmt , DAG . getConstant ( VTBits , ) ) ; SDValue Tmp2 = DAG . getNode ( , dl , VT , ShOpLo , RevShAmt ) ; SDValue FalseVal = DAG . getNode ( , dl , VT , Tmp1 , Tmp2 ) ;" LLVM,NVPTX,1167,"Predict the next statement of this code snippet: SDLoc dl ( Op ) ; SDValue ShOpLo = Op . getOperand ( ) ; SDValue ShOpHi = Op . getOperand ( ) ; SDValue ShAmt = Op . getOperand ( ) ; unsigned Opc = ( Op . getOpcode ( ) == ) ? : ; if ( VTBits == && nvptxSubtarget . getSmVersion ( ) >= ) { SDValue Hi = DAG . getNode ( Opc , dl , VT , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShOpHi , ShAmt ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ; } else { SDValue RevShAmt = DAG . getNode ( , dl , , DAG . getConstant ( VTBits , ) , ShAmt ) ;" LLVM,NVPTX,1168,"Predict the next statement of this code snippet: EVT VT = Op . getValueType ( ) ; unsigned VTBits = VT . getSizeInBits ( ) ; SDLoc dl ( Op ) ; SDValue ShOpLo = Op . getOperand ( ) ; SDValue ShOpHi = Op . getOperand ( ) ; SDValue ShAmt = Op . getOperand ( ) ; unsigned Opc = ( Op . getOpcode ( ) == ) ? : ; if ( VTBits == && nvptxSubtarget . getSmVersion ( ) >= ) { SDValue Hi = DAG . getNode ( Opc , dl , VT , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShOpHi , ShAmt ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ; } else { SDValue RevShAmt = DAG . getNode ( , dl , , DAG . getConstant ( VTBits , ) , ShAmt ) ; SDValue Tmp1 = DAG . getNode ( , dl , VT , ShOpLo , ShAmt ) ; SDValue ExtraShAmt = DAG . getNode ( , dl , , ShAmt , DAG . getConstant ( VTBits , ) ) ; SDValue Tmp2 = DAG . getNode ( , dl , VT , ShOpHi , RevShAmt ) ; SDValue FalseVal = DAG . getNode ( , dl , VT , Tmp1 , Tmp2 ) ; SDValue TrueVal = DAG . getNode ( Opc , dl , VT , ShOpHi , ExtraShAmt ) ; SDValue Cmp = DAG . getSetCC ( dl , , ShAmt , DAG . getConstant ( VTBits , ) , ) ; SDValue Hi = DAG . getNode ( Opc , dl , VT , ShOpHi , ShAmt ) ;" LLVM,NVPTX,1169,"Predict the next statement of this code snippet: return SDValue ( ) ; case : case : case : case : case : case : case : case : case : case : break ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : { Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) {" LLVM,NVPTX,1170,"Predict the next statement of this code snippet: break ; case : case : case : Opcode = ; break ; } EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ; OtherOps . push_back ( Chain ) ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; } SDValue LoadChain = NewLD . getValue ( NumElts ) ; SDValue BuildVec = DAG . getNode ( , DL , ResVT , ScalarRes ) ; Results . push_back ( BuildVec ) ; Results . push_back ( LoadChain ) ; } else { assert ( ResVT . isSimple ( ) && ResVT . getSimpleVT ( ) . SimpleTy == && ) ; SmallVector < SDValue , > Ops ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) Ops . push_back ( N -> getOperand ( i ) ) ; SDVTList LdResVTs = DAG . getVTList ( , ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( , DL , LdResVTs , Ops , , MemSD -> getMemOperand ( ) ) ; Results . push_back ( DAG . getNode ( , DL , , NewLD . getValue ( ) ) ) ; Results . push_back ( NewLD . getValue ( ) ) ; }" LLVM,NVPTX,1171,"Predict the next statement of this code snippet: SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; LoadSDNode * LD = cast < LoadSDNode > ( N ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; }" LLVM,NVPTX,1172,"Predict the next statement of this code snippet: if ( MulType != && MulType != ) { return SDValue ( ) ; } unsigned OptSize = MulType . getSizeInBits ( ) >> ; SDValue LHS = N -> getOperand ( ) ; SDValue RHS = N -> getOperand ( ) ; if ( N -> getOpcode ( ) == ) { if ( isa < ConstantSDNode > ( LHS ) ) { std :: swap ( LHS , RHS ) ; } } if ( N -> getOpcode ( ) == ) { ConstantSDNode * ShlRHS = dyn_cast < ConstantSDNode > ( RHS ) ; if ( ! ShlRHS ) { return SDValue ( ) ;" LLVM,NVPTX,1173,"Predict the next statement of this code snippet: } bool Signed ; if ( ! AreMulWideOperandsDemotable ( LHS , RHS , OptSize , Signed ) ) { return SDValue ( ) ; } EVT DemotedVT ; if ( MulType == ) { DemotedVT = ; } else { DemotedVT = ; } SDValue TruncLHS = DCI . DAG . getNode ( , SDLoc ( N ) , DemotedVT , LHS ) ; SDValue TruncRHS = DCI . DAG . getNode ( , SDLoc ( N ) , DemotedVT , RHS ) ; unsigned Opc ; if ( Signed ) { Opc = ; } else { Opc = ; } return DCI . DAG . getNode ( Opc , SDLoc ( N ) , MulType , TruncLHS , TruncRHS ) ;" LLVM,NVPTX,1174,"Predict the next statement of this code snippet: delete StaticDtorSection ; delete LSDASection ; delete EHFrameSection ; delete DwarfAbbrevSection ; delete DwarfInfoSection ; delete DwarfLineSection ; delete DwarfFrameSection ; delete DwarfPubTypesSection ;" LLVM,NVPTX,1175,"Predict the next statement of this code snippet: delete DwarfAbbrevSection ; delete DwarfInfoSection ; delete DwarfLineSection ; delete DwarfFrameSection ; delete DwarfPubTypesSection ; delete DwarfDebugInlineSection ; delete DwarfStrSection ;" LLVM,NVPTX,1176,"Predict the next statement of this code snippet: SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = PtrVT . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; unsigned align = Outs [ OIdx ] . Flags . getByValAlign ( ) ;" LLVM,NVPTX,1177,"Predict the next statement of this code snippet: if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = PtrVT . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ;" LLVM,NVPTX,1178,"Predict the next statement of this code snippet: return PerformSHLCombine ( N , DCI , OptLevel ) ; case : return PerformANDCombine ( N , DCI ) ; case : return PerformSELECTCombine ( N , DCI ) ; case : case : return PerformREMCombine ( N , DCI , OptLevel ) ;" LLVM,NVPTX,1179,"Predict the next statement of this code snippet: case : return PerformADDCombine ( N , DCI , STI , OptLevel ) ; case : return PerformMULCombine ( N , DCI , OptLevel ) ; case : return PerformSHLCombine ( N , DCI , OptLevel ) ; case : return PerformANDCombine ( N , DCI ) ; case : return PerformSELECTCombine ( N , DCI ) ; case :" LLVM,NVPTX,1180,"Predict the next statement of this code snippet: static void ReplaceLoadVector ( SDNode * N , SelectionDAG & DAG , SmallVectorImpl < SDValue > & Results ) { EVT ResVT = N -> getValueType ( ) ; SDLoc DL ( N ) ; assert ( ResVT . isVector ( ) && ) ; assert ( ResVT . isSimple ( ) && ) ; switch ( ResVT . getSimpleVT ( ) . SimpleTy ) { default : return ; case : case : case : case : case : case : case : case : case : case : break ; } LoadSDNode * LD = cast < LoadSDNode > ( N ) ; unsigned Align = LD -> getAlignment ( ) ; auto & TD = DAG . getDataLayout ( ) ; unsigned PrefAlign = TD . getPrefTypeAlignment ( ResVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) {" LLVM,NVPTX,1181,"Predict the next statement of this code snippet: case : case : break ; } LoadSDNode * LD = cast < LoadSDNode > ( N ) ; unsigned Align = LD -> getAlignment ( ) ; auto & TD = DAG . getDataLayout ( ) ; unsigned PrefAlign = TD . getPrefTypeAlignment ( ResVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ( N -> op_begin ( ) , N -> op_end ( ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) , DL ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) {" LLVM,NVPTX,1182,"Predict the next statement of this code snippet: return AtomicExpansionKind :: None ;" LLVM,NVPTX,1183,"Predict the next statement of this code snippet: return AtomicExpansionKind :: None ;" LLVM,NVPTX,1184,"Predict the next statement of this code snippet: return AtomicExpansionKind :: None ;" LLVM,NVPTX,1185,"Predict the next statement of this code snippet: uint64_t Off = TempOffsets [ i ] ; if ( VT . isVector ( ) ) for ( unsigned j = , je = VT . getVectorNumElements ( ) ; j != je ; ++ j ) { ValueVTs . push_back ( VT . getVectorElementType ( ) ) ; if ( Offsets ) Offsets -> push_back ( Off + j * VT . getVectorElementType ( ) . getStoreSize ( ) ) ; } else { ValueVTs . push_back ( VT ) ; if ( Offsets ) Offsets -> push_back ( Off ) ;" LLVM,NVPTX,1186,"Predict the next statement of this code snippet: for ( unsigned i = , e = TempVTs . size ( ) ; i != e ; ++ i ) { EVT VT = TempVTs [ i ] ; uint64_t Off = TempOffsets [ i ] ; if ( VT . isVector ( ) ) for ( unsigned j = , je = VT . getVectorNumElements ( ) ; j != je ; ++ j ) { ValueVTs . push_back ( VT . getVectorElementType ( ) ) ;" LLVM,NVPTX,1187,"Predict the next statement of this code snippet: const DataLayout * TD = getDataLayout ( ) ; unsigned align = ; GlobalAddressSDNode * Func = dyn_cast < GlobalAddressSDNode > ( Callee . getNode ( ) ) ; if ( Func ) { assert ( CS -> getCalledFunction ( ) && ) ; if ( ! llvm :: getAlign ( * ( CS -> getCalledFunction ( ) ) , Idx , align ) ) align = TD -> getABITypeAlignment ( Ty ) ; }" LLVM,NVPTX,1188,"Predict the next statement of this code snippet: O << << uniqueCallSite << ; if ( retTy -> getTypeID ( ) == Type :: VoidTyID ) { O << ; } else { O << ; if ( retTy -> isPrimitiveType ( ) || retTy -> isIntegerTy ( ) ) { unsigned size = ; if ( const IntegerType * ITy = dyn_cast < IntegerType > ( retTy ) ) { size = ITy -> getBitWidth ( ) ; if ( size < ) size = ; } else { assert ( retTy -> isFloatingPointTy ( ) && ) ; size = retTy -> getPrimitiveSizeInBits ( ) ; } O << << size << ; } else if ( isa < PointerType > ( retTy ) ) { O << << getPointerTy ( ) . getSizeInBits ( ) << ; } else { if ( ( retTy -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( retTy ) ) { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , retTy , vtparts ) ; unsigned totalsz = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; totalsz += sz / ; } } O << << retAlignment << << totalsz << ;" LLVM,NVPTX,1189,"Predict the next statement of this code snippet: MVT thePointerTy = getPointerTy ( ) ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( Outs [ OIdx ] . Flags . isByVal ( ) == false ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; const DataLayout * TD = getDataLayout ( ) ; if ( ! llvm :: getAlign ( * CallI , i + , align ) ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( Ty ) == Outs [ OIdx ] . VT || ( getValueType ( Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ;" LLVM,NVPTX,1190,"Predict the next statement of this code snippet: case 'c' : return std :: make_pair ( , & ) ; case 'h' : return std :: make_pair ( , & ) ; case 'r' : return std :: make_pair ( , & ) ; case 'l' : case 'N' : return std :: make_pair ( , & ) ; case 'f' : return std :: make_pair ( , & ) ; case 'd' :" LLVM,NVPTX,1191,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,NVPTX,1192,"Predict the next statement of this code snippet: bool TargetLowering :: getTgtMemIntrinsic ( IntrinsicInfo & Info , const CallInst & I , unsigned Intrinsic ) const { switch ( Intrinsic ) { default : return false ; case : Info . opc = ; Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = true ; Info . align = ; return true ; case : case : Info . opc = ; Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = true ; Info . align = ; return true ; case : case : case : Info . opc = ; if ( Intrinsic == ) Info . memVT = getValueType ( I . getType ( ) ) ; else if ( Intrinsic == ) Info . memVT = getValueType ( I . getType ( ) ) ; else Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . vol = ; Info . readMem = true ;" LLVM,NVPTX,1193,"Predict the next statement of this code snippet: SDNode * Node = Op . getNode ( ) ; SDLoc dl ( Node ) ; SmallVector < SDValue , > Ops ; unsigned NumOperands = Node -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) { SDValue SubOp = Node -> getOperand ( i ) ; EVT VVT = SubOp . getNode ( ) -> getValueType ( ) ; EVT EltVT = VVT . getVectorElementType ( ) ; unsigned NumSubElem = VVT . getVectorNumElements ( ) ; for ( unsigned j = ; j < NumSubElem ; ++ j ) { Ops . push_back ( DAG . getNode ( , dl , EltVT , SubOp , DAG . getIntPtrConstant ( j ) ) ) ; } } return DAG . getNode ( , dl , Node -> getValueType ( ) , & Ops [ ] , Ops . size ( ) ) ;" LLVM,NVPTX,1194,"Predict the next statement of this code snippet: SDNode * Node = Op . getNode ( ) ; LoadSDNode * LD = cast < LoadSDNode > ( Node ) ; SDLoc dl ( Node ) ; assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ; SDValue result = DAG . getNode ( , dl , , newLD ) ;" LLVM,NVPTX,1195,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerLOADi1 ( SDValue Op , SelectionDAG & DAG ) const { SDNode * Node = Op . getNode ( ) ; LoadSDNode * LD = cast < LoadSDNode > ( Node ) ; SDLoc dl ( Node ) ; assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ; SDValue result = DAG . getNode ( , dl , , newLD ) ;" LLVM,NVPTX,1196,"Predict the next statement of this code snippet: case : return LowerCONCAT_VECTORS ( Op , DAG ) ; case : return LowerSTORE ( Op , DAG ) ; case : return LowerLOAD ( Op , DAG ) ; default : llvm_unreachable ( ) ;" LLVM,NVPTX,1197,"Predict the next statement of this code snippet: return SDValue ( ) ; case : return SDValue ( ) ; case : return LowerGlobalAddress ( Op , DAG ) ; case : return Op ; case : case : return Op ; case : return LowerCONCAT_VECTORS ( Op , DAG ) ; case : return LowerSTORE ( Op , DAG ) ; case : return LowerLOAD ( Op , DAG ) ;" LLVM,NVPTX,1198,"Predict the next statement of this code snippet: case : case : case : case : case : break ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : { Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ;" LLVM,NVPTX,1199,"Predict the next statement of this code snippet: default : return SDValue ( ) ; case : case : case : case : case : case : case : case : case : case : break ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : { Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ; Ops . push_back ( ExtVal ) ; } for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) { Ops . push_back ( N -> getOperand ( i ) ) ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; SDValue NewSt = DAG . getMemIntrinsicNode ( Opcode , DL , DAG . getVTList ( ) , & Ops [ ] , Ops . size ( ) , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; return NewSt ; } return SDValue ( ) ;" LLVM,NVPTX,1200,"Predict the next statement of this code snippet: case : case : case : Opcode = ; break ; case : case : case : Opcode = ; break ; } EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; } } SmallVector < SDValue , > OtherOps ; OtherOps . push_back ( Chain ) ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , & OtherOps [ ] , OtherOps . size ( ) , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ;" LLVM,NVPTX,1201,"Predict the next statement of this code snippet: assert ( ResVT . isSimple ( ) && ) ; switch ( ResVT . getSimpleVT ( ) . SimpleTy ) { default : return ; case : case : case : case : case : case : case : case : case : case : break ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; } } SmallVector < SDValue , > OtherOps ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; LoadSDNode * LD = cast < LoadSDNode > ( N ) ;" LLVM,NVPTX,1202,"Predict the next statement of this code snippet: unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; } } SmallVector < SDValue , > OtherOps ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; LoadSDNode * LD = cast < LoadSDNode > ( N ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , & OtherOps [ ] , OtherOps . size ( ) , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ;" LLVM,NVPTX,1203,"Predict the next statement of this code snippet: return VT == ;" LLVM,NVPTX,1204,"Predict the next statement of this code snippet: virtual MVT getScalarShiftAmountTy ( EVT LHSTy ) const {" LLVM,NVPTX,1205,"Predict the next statement of this code snippet: virtual MVT getScalarShiftAmountTy ( EVT LHSTy ) const {" LLVM,NVPTX,1206,"Predict the next statement of this code snippet: virtual EVT getSetCCResultType ( LLVMContext & , EVT VT ) const { if ( VT . isVector ( ) ) return ( , VT . getVectorNumElements ( ) ) ; return ;" LLVM,NVPTX,1207,"Predict the next statement of this code snippet: if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; } Chain = DAG . getMemIntrinsicNode ( Opc , dl , DAG . getVTList ( ) , Ops , EltVT , MachinePointerInfo ( ) ) ; Offset += PerStoreOffset ; } } } else { SmallVector < EVT , > ValVTs ; SmallVector < uint64_t , > Offsets ; ComputePTXValueVTs ( * this , RetTy , ValVTs , & Offsets , ) ; assert ( ValVTs . size ( ) == OutVals . size ( ) && ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { SDValue theVal = OutVals [ i ] ; EVT TheValType = theVal . getValueType ( ) ; unsigned numElems = ; if ( TheValType . isVector ( ) ) numElems = TheValType . getVectorNumElements ( ) ; for ( unsigned j = , je = numElems ; j != je ; ++ j ) { SDValue TmpVal = theVal ; if ( TheValType . isVector ( ) ) TmpVal = DAG . getNode ( , dl , TheValType . getVectorElementType ( ) , TmpVal , DAG . getIntPtrConstant ( j ) ) ; EVT TheStoreType = ValVTs [ i ] ; if ( RetTy -> isIntegerTy ( ) && TD -> getTypeAllocSizeInBits ( RetTy ) < ) { TmpVal = DAG . getNode ( , dl , , TmpVal ) ; TheStoreType = ; } else if ( TmpVal . getValueType ( ) . getSizeInBits ( ) < ) TmpVal = DAG . getNode ( , dl , , TmpVal ) ; SDValue Ops [ ] = { Chain , DAG . getConstant ( Offsets [ i ] , ) , TmpVal } ; Chain = DAG . getMemIntrinsicNode ( , dl , DAG . getVTList ( ) , Ops , TheStoreType , MachinePointerInfo ( ) ) ; }" LLVM,NVPTX,1208,"Predict the next statement of this code snippet: else { SDValue RevShAmt = DAG . getNode ( , dl , , DAG . getConstant ( VTBits , ) , ShAmt ) ; SDValue Tmp1 = DAG . getNode ( , dl , VT , ShOpHi , ShAmt ) ; SDValue ExtraShAmt = DAG . getNode ( , dl , , ShAmt , DAG . getConstant ( VTBits , ) ) ; SDValue Tmp2 = DAG . getNode ( , dl , VT , ShOpLo , RevShAmt ) ; SDValue FalseVal = DAG . getNode ( , dl , VT , Tmp1 , Tmp2 ) ; SDValue TrueVal = DAG . getNode ( , dl , VT , ShOpLo , ExtraShAmt ) ; SDValue Cmp = DAG . getSetCC ( dl , , ShAmt , DAG . getConstant ( VTBits , ) , ) ;" LLVM,NVPTX,1209,"Predict the next statement of this code snippet: assert ( Op . getOpcode ( ) == ) ; EVT VT = Op . getValueType ( ) ; unsigned VTBits = VT . getSizeInBits ( ) ; SDLoc dl ( Op ) ; SDValue ShOpLo = Op . getOperand ( ) ; SDValue ShOpHi = Op . getOperand ( ) ; SDValue ShAmt = Op . getOperand ( ) ; if ( VTBits == && STI . getSmVersion ( ) >= ) { SDValue Hi = DAG . getNode ( , dl , VT , ShOpLo , ShOpHi , ShAmt ) ; SDValue Lo = DAG . getNode ( , dl , VT , ShOpLo , ShAmt ) ; SDValue Ops [ ] = { Lo , Hi } ; return DAG . getMergeValues ( Ops , dl ) ;" LLVM,NVPTX,1210,"Predict the next statement of this code snippet: break ; case : { Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ; Ops . push_back ( ExtVal ) ; } for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) { Ops . push_back ( N -> getOperand ( i ) ) ; } SDValue NewSt = DAG . getMemIntrinsicNode ( Opcode , DL , DAG . getVTList ( ) , Ops , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; return NewSt ; }" LLVM,NVPTX,1211,"Predict the next statement of this code snippet: if ( ! ValVT . isSimple ( ) ) return SDValue ( ) ; switch ( ValVT . getSimpleVT ( ) . SimpleTy ) { default : return SDValue ( ) ; case : case : case : case : case : case : case : case : case : case : break ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; const DataLayout * TD = getDataLayout ( ) ; unsigned Align = MemSD -> getAlignment ( ) ; unsigned PrefAlign = TD -> getPrefTypeAlignment ( ValVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return SDValue ( ) ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : { Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ; Ops . push_back ( ExtVal ) ; } for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) { Ops . push_back ( N -> getOperand ( i ) ) ;" LLVM,NVPTX,1212,"Predict the next statement of this code snippet: int nonAddCount = ; for ( SDNode :: use_iterator UI = N0 . getNode ( ) -> use_begin ( ) , UE = N0 . getNode ( ) -> use_end ( ) ; UI != UE ; ++ UI ) { numUses ++ ; SDNode * User = * UI ; if ( User -> getOpcode ( ) != ) ++ nonAddCount ; } if ( numUses >= ) return SDValue ( ) ; if ( nonAddCount ) { int orderNo = N -> getIROrder ( ) ; int orderNo2 = N0 . getNode ( ) -> getIROrder ( ) ; if ( orderNo - orderNo2 < ) return SDValue ( ) ; bool opIsLive = false ; const SDNode * left = N0 . getOperand ( ) . getNode ( ) ; const SDNode * right = N0 . getOperand ( ) . getNode ( ) ; if ( dyn_cast < ConstantSDNode > ( left ) || dyn_cast < ConstantSDNode > ( right ) ) opIsLive = true ; if ( ! opIsLive ) for ( SDNode :: use_iterator UI = left -> use_begin ( ) , UE = left -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) { opIsLive = true ; break ; } } if ( ! opIsLive ) for ( SDNode :: use_iterator UI = right -> use_begin ( ) , UE = right -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) { opIsLive = true ; break ; } } if ( ! opIsLive ) return SDValue ( ) ; } return DAG . getNode ( , SDLoc ( N ) , VT , N0 . getOperand ( ) , N0 . getOperand ( ) , N1 ) ; } } return SDValue ( ) ;" LLVM,NVPTX,1213,"Predict the next statement of this code snippet: return PerformMULCombine ( N , DCI , OptLevel ) ; case : return PerformSHLCombine ( N , DCI , OptLevel ) ; case : return PerformANDCombine ( N , DCI ) ; } return SDValue ( ) ;" LLVM,NVPTX,1214,"Predict the next statement of this code snippet: switch ( N -> getOpcode ( ) ) { default : break ; case : case : return PerformADDCombine ( N , DCI , STI , OptLevel ) ;" LLVM,NVPTX,1215,"Predict the next statement of this code snippet: break ; } } SmallVector < SDValue , > OtherOps ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; } SDValue LoadChain = NewLD . getValue ( NumElts ) ; SDValue BuildVec = DAG . getNode ( , DL , ResVT , ScalarRes ) ; Results . push_back ( BuildVec ) ; Results . push_back ( LoadChain ) ;" LLVM,NVPTX,1216,"Predict the next statement of this code snippet: } first = false ; if ( Outs [ OIdx ] . Flags . isByVal ( ) == false ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; const DataLayout * TD = getDataLayout ( ) ; if ( ! llvm :: getAlign ( * CallI , i + , align ) ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( Ty ) == Outs [ OIdx ] . VT || ( getValueType ( Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; unsigned align = Outs [ OIdx ] . Flags . getByValAlign ( ) ; unsigned sz = getDataLayout ( ) -> getTypeAllocSize ( ETy ) ; O << << align << ;" LLVM,NVPTX,1217,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,NVPTX,1218,"Predict the next statement of this code snippet: first = false ; if ( Outs [ i ] . Flags . isByVal ( ) == false ) { unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; if ( isABI ) O << << sz << ; else O << << sz << ; O << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; if ( isABI ) { unsigned align = Outs [ i ] . Flags . getByValAlign ( ) ; unsigned sz = getTargetData ( ) -> getTypeAllocSize ( ETy ) ; O << << align << ; O << ; O << << sz << ; continue ; } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , ETy , vtparts ) ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; O << ; if ( j < je - ) O << ; }" LLVM,NVPTX,1219,"Predict the next statement of this code snippet: if ( ( retTy -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( retTy ) ) { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , retTy , vtparts ) ; unsigned totalsz = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; totalsz += sz / ; } } O << << retAlignment << << totalsz << ; } else { assert ( false && ) ; } } } else { SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , retTy , vtparts ) ; unsigned idx = ; for ( unsigned i = , e = vtparts . size ( ) ; i != e ; ++ i ) { unsigned elems = ; EVT elemtype = vtparts [ i ] ; if ( vtparts [ i ] . isVector ( ) ) { elems = vtparts [ i ] . getVectorNumElements ( ) ; elemtype = vtparts [ i ] . getVectorElementType ( ) ; } for ( unsigned j = , je = elems ; j != je ; ++ j ) { unsigned sz = elemtype . getSizeInBits ( ) ; if ( elemtype . isInteger ( ) && ( sz < ) ) sz = ; O << << sz << ; if ( j < je - ) O << ; ++ idx ; } if ( i < e - ) O << ; } } O << ;" LLVM,NVPTX,1220,"Predict the next statement of this code snippet: virtual EVT getSetCCResultType ( EVT VT ) const {" LLVM,NVPTX,1221,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerReturn ( SDValue Chain , CallingConv :: ID CallConv , bool isVarArg , const SmallVectorImpl < > & Outs , const SmallVectorImpl < SDValue > & OutVals , DebugLoc dl , SelectionDAG & DAG ) const { bool isABI = ( nvptxSubtarget . getSmVersion ( ) >= ) ; unsigned sizesofar = ; unsigned idx = ;" LLVM,NVPTX,1222,"Predict the next statement of this code snippet: EVT theValType = theVal . getValueType ( ) ; unsigned numElems = ; if ( theValType . isVector ( ) ) numElems = theValType . getVectorNumElements ( ) ; for ( unsigned j = , je = numElems ; j != je ; ++ j ) { SDValue tmpval = theVal ;" LLVM,NVPTX,1223,"Predict the next statement of this code snippet: O << << uniqueCallSite << ; if ( retTy -> getTypeID ( ) == Type :: VoidTyID ) { O << ; } else { O << ; if ( retTy -> isFloatingPointTy ( ) || ( retTy -> isIntegerTy ( ) && ! retTy -> isIntegerTy ( ) ) ) { unsigned size = ; if ( auto * ITy = dyn_cast < IntegerType > ( retTy ) ) { size = ITy -> getBitWidth ( ) ; } else { assert ( retTy -> isFloatingPointTy ( ) && ) ; size = retTy -> getPrimitiveSizeInBits ( ) ; } if ( size < ) size = ; O << << size << ; } else if ( isa < PointerType > ( retTy ) ) { O << << PtrVT . getSizeInBits ( ) << ; } else if ( retTy -> isAggregateType ( ) || retTy -> isVectorTy ( ) || retTy -> isIntegerTy ( ) ) { O << << ( retAlignment ? retAlignment -> value ( ) : ) << << DL . getTypeAllocSize ( retTy ) << ; } else { llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) {" LLVM,NVPTX,1224,"Predict the next statement of this code snippet: } else if ( NumElts == ) { SDValue StoreVal0 = OutVals [ ] ; SDValue StoreVal1 = OutVals [ ] ; if ( NeedExtend ) { StoreVal0 = DAG . getNode ( , dl , , StoreVal0 ) ; StoreVal1 = DAG . getNode ( , dl , , StoreVal1 ) ; } SDValue Ops [ ] = { Chain , DAG . getConstant ( , dl , ) , StoreVal0 , StoreVal1 } ; Chain = DAG . getMemIntrinsicNode ( , dl , DAG . getVTList ( ) , Ops , EltVT , MachinePointerInfo ( ) ) ; } else { unsigned VecSize = ; if ( OutVals [ ] . getValueSizeInBits ( ) == ) VecSize = ; unsigned Offset = ; EVT VecVT = EVT :: getVectorVT ( F -> getContext ( ) , EltVT , VecSize ) ; unsigned PerStoreOffset = TD . getTypeAllocSize ( VecVT . getTypeForEVT ( F -> getContext ( ) ) ) ; for ( unsigned i = ; i < NumElts ; i += VecSize ) { SDValue StoreVal ; SmallVector < SDValue , > Ops ; Ops . push_back ( Chain ) ; Ops . push_back ( DAG . getConstant ( Offset , dl , ) ) ; unsigned Opc = ; EVT ExtendedVT = ( NeedExtend ) ? : OutVals [ ] . getValueType ( ) ; StoreVal = OutVals [ i ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( VecSize == ) { Opc = ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; } Chain = DAG . getMemIntrinsicNode ( Opc , dl , DAG . getVTList ( ) , Ops , EltVT , MachinePointerInfo ( ) ) ; Offset += PerStoreOffset ; } }" LLVM,NVPTX,1225,"Predict the next statement of this code snippet: switch ( ValVT . getSimpleVT ( ) . SimpleTy ) { case : return LowerSTOREi1 ( Op , DAG ) ; default :" LLVM,NVPTX,1226,"Predict the next statement of this code snippet: EVT ValVT = Op . getOperand ( ) . getValueType ( ) ; switch ( ValVT . getSimpleVT ( ) . SimpleTy ) { case : return LowerSTOREi1 ( Op , DAG ) ; default :" LLVM,NVPTX,1227,"Predict the next statement of this code snippet: CodeGenOpt :: Level OptLevel = getTargetMachine ( ) . getOptLevel ( ) ; switch ( N -> getOpcode ( ) ) { default : break ; case : case : return PerformADDCombine ( N , DCI , STI , OptLevel ) ; case : return PerformMULCombine ( N , DCI , OptLevel ) ; case : return PerformSHLCombine ( N , DCI , OptLevel ) ; case : return PerformANDCombine ( N , DCI ) ; case : case : return PerformREMCombine ( N , DCI , OptLevel ) ;" LLVM,NVPTX,1228,"Predict the next statement of this code snippet: unsigned getInlineAsmMemConstraint ( const std :: string & ConstraintCode ) const override {" LLVM,NVPTX,1229,"Predict the next statement of this code snippet: int orderNo = N -> getIROrder ( ) ; int orderNo2 = N0 . getNode ( ) -> getIROrder ( ) ; if ( orderNo - orderNo2 < ) return SDValue ( ) ; bool opIsLive = false ; const SDNode * left = N0 . getOperand ( ) . getNode ( ) ; const SDNode * right = N0 . getOperand ( ) . getNode ( ) ; if ( dyn_cast < ConstantSDNode > ( left ) || dyn_cast < ConstantSDNode > ( right ) ) opIsLive = true ; if ( ! opIsLive ) for ( SDNode :: use_iterator UI = left -> use_begin ( ) , UE = left -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) { opIsLive = true ; break ; } } if ( ! opIsLive ) for ( SDNode :: use_iterator UI = right -> use_begin ( ) , UE = right -> use_end ( ) ; UI != UE ; ++ UI ) { SDNode * User = * UI ; int orderNo3 = User -> getIROrder ( ) ; if ( orderNo3 > orderNo ) {" LLVM,NVPTX,1230,"Predict the next statement of this code snippet: SDValue TargetLowering :: PerformDAGCombine ( SDNode * N , DAGCombinerInfo & DCI ) const { CodeGenOpt :: Level OptLevel = getTargetMachine ( ) . getOptLevel ( ) ; switch ( N -> getOpcode ( ) ) { default : break ; case : case : return PerformADDCombine ( N , DCI , nvptxSubtarget , OptLevel ) ;" LLVM,NVPTX,1231,"Predict the next statement of this code snippet: const Type * Ty = arg -> getType ( ) ; const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ; if ( ! context ) return false ; const StructType * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ; const std :: string TypeName = STy && ! STy -> isLiteral ( ) ? STy -> getName ( ) : ; for ( int i = , e = array_lengthof ( specialTypes ) ; i != e ; ++ i ) if ( TypeName == specialTypes [ i ] ) return true ;" LLVM,NVPTX,1232,"Predict the next statement of this code snippet: static const char * const specialTypes [ ] = { , , } ; const Type * Ty = arg -> getType ( ) ; const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ;" LLVM,NVPTX,1233,"Predict the next statement of this code snippet: continue ; } if ( PAL . hasAttribute ( i + , Attribute :: ByVal ) == false ) { if ( isABI || isKernel ) { SDValue Arg = getParamSymbol ( DAG , idx ) ; Value * srcValue = new Argument ( PointerType :: get ( ObjectVT . getTypeForEVT ( F -> getContext ( ) ) , llvm :: ADDRESS_SPACE_PARAM ) ) ; SDValue p = DAG . getLoad ( ObjectVT , dl , Root , Arg , MachinePointerInfo ( srcValue ) , false , false , false , TD -> getABITypeAlignment ( ObjectVT . getTypeForEVT ( F -> getContext ( ) ) ) ) ; if ( p . getNode ( ) ) DAG . AssignOrdering ( p . getNode ( ) , idx + ) ; InVals . push_back ( p ) ; } else { SDValue Arg = getParamSymbol ( DAG , idx , ObjectVT ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) DAG . AssignOrdering ( p . getNode ( ) , idx + ) ; InVals . push_back ( p ) ; } continue ; } if ( isABI || isKernel ) { SDValue Arg = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) DAG . AssignOrdering ( p . getNode ( ) , idx + ) ; if ( isKernel ) InVals . push_back ( p ) ; else { SDValue p2 = DAG . getNode ( , dl , ObjectVT , DAG . getConstant ( , ) , p ) ; InVals . push_back ( p2 ) ; } } else { const PointerType * elemPtrType = dyn_cast < PointerType > ( argTypes [ i ] ) ; assert ( elemPtrType && ) ; Type * elemType = elemPtrType -> getElementType ( ) ; SmallVector < EVT , > vtparts ; SmallVector < uint64_t , > offsets ; ComputeValueVTs ( * this , elemType , vtparts , & offsets , ) ; unsigned totalsize = ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) totalsize += vtparts [ j ] . getStoreSizeInBits ( ) ; SDValue localcopy = DAG . getFrameIndex ( MF . getFrameInfo ( ) -> CreateStackObject ( totalsize / , , false ) , getPointerTy ( ) ) ; unsigned sizesofar = ; std :: vector < SDValue > theChains ;" LLVM,NVPTX,1234,"Predict the next statement of this code snippet: assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ; SDValue result = DAG . getNode ( , dl , , newLD ) ; SDValue Ops [ ] = { result , LD -> getChain ( ) } ;" LLVM,NVPTX,1235,"Predict the next statement of this code snippet: DebugLoc dl = Node -> getDebugLoc ( ) ; assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ;" LLVM,NVPTX,1236,"Predict the next statement of this code snippet: case : return SDValue ( ) ; case : return LowerGlobalAddress ( Op , DAG ) ; case : return Op ; case : case : return Op ; case : return LowerCONCAT_VECTORS ( Op , DAG ) ; case : return LowerSTORE ( Op , DAG ) ; case : return LowerLOAD ( Op , DAG ) ; default : llvm_unreachable ( ) ;" LLVM,NVPTX,1237,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerSTORE ( SDValue Op , SelectionDAG & DAG ) const { SDNode * Node = Op . getNode ( ) ; DebugLoc dl = Node -> getDebugLoc ( ) ; StoreSDNode * ST = cast < StoreSDNode > ( Node ) ; SDValue Tmp1 = ST -> getChain ( ) ; SDValue Tmp2 = ST -> getBasePtr ( ) ; SDValue Tmp3 = ST -> getValue ( ) ; assert ( Tmp3 . getValueType ( ) == && ) ; unsigned Alignment = ST -> getAlignment ( ) ; bool isVolatile = ST -> isVolatile ( ) ;" LLVM,NVPTX,1238,"Predict the next statement of this code snippet: unsigned Alignment = ; const Function * DirectCallee = CB -> getCalledFunction ( ) ; if ( ! DirectCallee ) { if ( const auto * CI = dyn_cast < CallInst > ( CB ) ) { if ( getAlign ( * CI , Idx , Alignment ) ) return Align ( Alignment ) ; const Value * CalleeV = CI -> getCalledOperand ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ; } if ( const auto * CalleeF = dyn_cast < Function > ( CalleeV ) ) DirectCallee = CalleeF ;" LLVM,NVPTX,1239,"Predict the next statement of this code snippet: unsigned Alignment = ; const Function * DirectCallee = CB -> getCalledFunction ( ) ; if ( ! DirectCallee ) { if ( const auto * CI = dyn_cast < CallInst > ( CB ) ) { if ( getAlign ( * CI , Idx , Alignment ) ) return Align ( Alignment ) ; const Value * CalleeV = CI -> getCalledOperand ( ) ; while ( isa < ConstantExpr > ( CalleeV ) ) { const ConstantExpr * CE = cast < ConstantExpr > ( CalleeV ) ; if ( ! CE -> isCast ( ) ) break ; CalleeV = cast < ConstantExpr > ( CalleeV ) -> getOperand ( ) ; } if ( const auto * CalleeF = dyn_cast < Function > ( CalleeV ) ) DirectCallee = CalleeF ; } } if ( DirectCallee ) { if ( getAlign ( * DirectCallee , Idx , Alignment ) ) return Align ( Alignment ) ; return getFunctionParamOptimizedAlign ( DirectCallee , Ty , DL ) ; } return DL . getABITypeAlign ( Ty ) ;" LLVM,NVPTX,1240,"Predict the next statement of this code snippet: assert ( ! isKernelFunction ( * F ) && ) ; return Align ( std :: max ( uint64_t ( ) , ABITypeAlign ) ) ;" LLVM,NVPTX,1241,"Predict the next statement of this code snippet: const uint64_t ABITypeAlign = DL . getABITypeAlign ( ArgTy ) . value ( ) ;" LLVM,NVPTX,1242,"Predict the next statement of this code snippet: if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned ParamAlign = ; const CallInst * CallI = cast < CallInst > ( & CB ) ; if ( ! getAlign ( * CallI , i + , ParamAlign ) ) ParamAlign = getFunctionParamOptimizedAlign ( F , Ty , DL ) . value ( ) ; O << << ParamAlign << ; O << ; O << << DL . getTypeAllocSize ( Ty ) << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) { sz = PtrVT . getSizeInBits ( ) ; } else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } Align ParamByValAlign = Outs [ OIdx ] . Flags . getNonZeroByValAlign ( ) ; Type * ETy = Args [ i ] . IndirectType ; Align AlignCandidate = getFunctionParamOptimizedAlign ( F , ETy , DL ) ; ParamByValAlign = std :: max ( ParamByValAlign , AlignCandidate ) ; O << << ParamByValAlign . value ( ) << ; O << ;" LLVM,NVPTX,1243,"Predict the next statement of this code snippet: StoreOperands . push_back ( Chain ) ; StoreOperands . push_back ( DAG . getConstant ( Offsets [ i ] , dl , ) ) ; } SDValue RetVal = OutVals [ i ] ; if ( ExtendIntegerRetVal ) { RetVal = DAG . getNode ( Outs [ i ] . Flags . isSExt ( ) ? : , dl , , RetVal ) ; } else if ( RetVal . getValueSizeInBits ( ) < ) { RetVal = DAG . getNode ( , dl , , RetVal ) ; } StoreOperands . push_back ( RetVal ) ; if ( VectorInfo [ i ] & PVF_LAST ) { Op ; unsigned NumElts = StoreOperands . size ( ) - ; switch ( NumElts ) { case : Op = ; break ; case : Op = ; break ; case : Op = ; break ; default : llvm_unreachable ( ) ; } EVT TheStoreType = ExtendIntegerRetVal ? : VTs [ i ] ; Chain = DAG . getMemIntrinsicNode ( Op , dl , DAG . getVTList ( ) , StoreOperands , TheStoreType , MachinePointerInfo ( ) , Align ( ) , MachineMemOperand :: MOStore ) ; StoreOperands . clear ( ) ; }" LLVM,NVPTX,1244,"Predict the next statement of this code snippet: for ( std :: size_t I = , OpsCount = N -> ops ( ) . size ( ) ; I != OpsCount ; ++ I ) if ( ! N -> getOperand ( I ) . isUndef ( ) ) return SDValue ( ) ;" LLVM,NVPTX,1245,"Predict the next statement of this code snippet: static SDValue PerformStoreRetvalCombine ( SDNode * N ) { for ( std :: size_t I = , OpsCount = N -> ops ( ) . size ( ) ; I != OpsCount ; ++ I ) if ( ! N -> getOperand ( I ) . isUndef ( ) ) return SDValue ( ) ;" LLVM,NVPTX,1246,"Predict the next statement of this code snippet: O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; if ( ! llvm :: getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = PtrVT . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ;" LLVM,NVPTX,1247,"Predict the next statement of this code snippet: bool TargetLowering :: isLegalAddressingMode ( const DataLayout & DL , const AddrMode & AM , Type * Ty , unsigned AS ) const { if ( AM . BaseGV ) { if ( AM . BaseOffs || AM . HasBaseReg || AM . Scale ) return false ; return true ; } switch ( AM . Scale ) { case : break ; case : if ( AM . HasBaseReg ) return false ; break ;" LLVM,NVPTX,1248,"Predict the next statement of this code snippet: setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; } else { setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; for ( MVT VT : ( ) ) { setLoadExtAction ( , VT , , Promote ) ; setLoadExtAction ( , VT , , Promote ) ; setTruncStoreAction ( VT , , Expand ) ; } setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( MVT VT : ( ) ) { if ( IsPTXVectorType ( VT ) ) { setOperationAction ( , VT , Custom ) ; setOperationAction ( , VT , Custom ) ; setOperationAction ( , VT , Custom ) ; } } setOperationAction ( , , Custom ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ;" LLVM,NVPTX,1249,"Predict the next statement of this code snippet: delete DwarfFrameSection ; delete DwarfPubTypesSection ; delete DwarfDebugInlineSection ; delete DwarfStrSection ; delete DwarfLocSection ; delete DwarfARangesSection ;" LLVM,NVPTX,1250,"Predict the next statement of this code snippet: default : return AtomicExpansionKind :: CmpXChg ; case AtomicRMWInst :: BinOp :: And : case AtomicRMWInst :: BinOp :: Or : case AtomicRMWInst :: BinOp :: Xor : case AtomicRMWInst :: BinOp :: Xchg : switch ( ITy -> getBitWidth ( ) ) { case : case : return AtomicExpansionKind :: CmpXChg ; case : return AtomicExpansionKind :: None ; case : if ( STI . hasAtomBitwise64 ( ) ) return AtomicExpansionKind :: None ; return AtomicExpansionKind :: CmpXChg ; default : llvm_unreachable ( ) ; } case AtomicRMWInst :: BinOp :: Add : case AtomicRMWInst :: BinOp :: Sub : case AtomicRMWInst :: BinOp :: Max : case AtomicRMWInst :: BinOp :: Min : case AtomicRMWInst :: BinOp :: UMax : case AtomicRMWInst :: BinOp :: UMin : switch ( ITy -> getBitWidth ( ) ) {" LLVM,NVPTX,1251,"Predict the next statement of this code snippet: O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( & CB ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) { sz = PtrVT . getSizeInBits ( ) ; } else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; Align align = Outs [ OIdx ] . Flags . getNonZeroByValAlign ( ) ;" LLVM,NVPTX,1252,"Predict the next statement of this code snippet: static const char * const specialTypes [ ] = { , , } ; Type * Ty = arg -> getType ( ) ; auto * PTy = dyn_cast < PointerType > ( Ty ) ; if ( ! PTy ) return false ;" LLVM,NVPTX,1253,"Predict the next statement of this code snippet: if ( ! PTy ) return false ; if ( ! context ) return false ; auto * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ;" LLVM,NVPTX,1254,"Predict the next statement of this code snippet: if ( NumRegs > ) -- InsIdx ; continue ; } InVals . push_back ( DAG . getNode ( , dl , Ins [ InsIdx ] . VT ) ) ; continue ; } if ( ! PAL . hasAttribute ( i + , Attribute :: ByVal ) ) { bool aggregateIsPacked = false ; if ( StructType * STy = dyn_cast < StructType > ( Ty ) ) aggregateIsPacked = STy -> isPacked ( ) ; SmallVector < EVT , > VTs ; SmallVector < uint64_t , > Offsets ; ComputePTXValueVTs ( * this , DL , Ty , VTs , & Offsets , ) ; assert ( VTs . size ( ) > && ) ; auto VectorInfo = VectorizePTXValueVTs ( VTs , Offsets , DL . getABITypeAlignment ( Ty ) ) ; SDValue Arg = getParamSymbol ( DAG , idx , PtrVT ) ; int VecIdx = - ; for ( unsigned parti = , parte = VTs . size ( ) ; parti != parte ; ++ parti ) { if ( VectorInfo [ parti ] & PVF_FIRST ) { assert ( VecIdx == - && ) ; VecIdx = parti ; } if ( VectorInfo [ parti ] & PVF_LAST ) { unsigned NumElts = parti - VecIdx + ; EVT EltVT = VTs [ parti ] ; EVT LoadVT = EltVT ; if ( EltVT == ) LoadVT = ; else if ( EltVT == ) LoadVT = ; EVT VecVT = EVT :: getVectorVT ( F -> getContext ( ) , LoadVT , NumElts ) ; SDValue VecAddr = DAG . getNode ( , dl , PtrVT , Arg , DAG . getConstant ( Offsets [ VecIdx ] , dl , PtrVT ) ) ; Value * srcValue = Constant :: getNullValue ( PointerType :: get ( EltVT . getTypeForEVT ( F -> getContext ( ) ) , ADDRESS_SPACE_PARAM ) ) ; SDValue P = DAG . getLoad ( VecVT , dl , Root , VecAddr , MachinePointerInfo ( srcValue ) , aggregateIsPacked , MachineMemOperand :: MODereferenceable | MachineMemOperand :: MOInvariant ) ; if ( P . getNode ( ) ) P . getNode ( ) -> setIROrder ( idx + ) ; for ( unsigned j = ; j < NumElts ; ++ j ) {" LLVM,NVPTX,1255,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,NVPTX,1256,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { Info . opc = getOpcForTextureInstr ( Intrinsic ) ; Info . memVT = ; Info . ptrVal = nullptr ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = false ; Info . align = ; return true ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { Info . opc = getOpcForTextureInstr ( Intrinsic ) ; Info . memVT = ; Info . ptrVal = nullptr ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = false ; Info . align = ; return true ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { Info . opc = getOpcForSurfaceInstr ( Intrinsic ) ; Info . memVT = ; Info . ptrVal = nullptr ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = false ; Info . align = ; return true ; } case : case : case : case : case : case :" LLVM,NVPTX,1257,"Predict the next statement of this code snippet: for ( unsigned i = ; i < NumElts ; i += VecSize ) { SDValue StoreVal ; SmallVector < SDValue , > Ops ; Ops . push_back ( Chain ) ; Ops . push_back ( DAG . getConstant ( Offset , ) ) ; unsigned Opc = ; EVT ExtendedVT = ( NeedExtend ) ? : OutVals [ ] . getValueType ( ) ; StoreVal = OutVals [ i ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( VecSize == ) { Opc = ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; } Chain = DAG . getMemIntrinsicNode ( Opc , dl , DAG . getVTList ( ) , Ops , EltVT , MachinePointerInfo ( ) ) ; Offset += PerStoreOffset ; } } } else { SmallVector < EVT , > ValVTs ; ComputePTXValueVTs ( * this , RetTy , ValVTs ) ; assert ( ValVTs . size ( ) == OutVals . size ( ) && ) ; unsigned SizeSoFar = ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { SDValue theVal = OutVals [ i ] ; EVT TheValType = theVal . getValueType ( ) ; unsigned numElems = ; if ( TheValType . isVector ( ) ) numElems = TheValType . getVectorNumElements ( ) ;" LLVM,NVPTX,1258,"Predict the next statement of this code snippet: return VT . getScalarType ( ) == ;" LLVM,NVPTX,1259,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,NVPTX,1260,"Predict the next statement of this code snippet: InVals . push_back ( p ) ; } continue ; } if ( isABI || isKernel ) { SDValue Arg = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) DAG . AssignOrdering ( p . getNode ( ) , idx + ) ; if ( isKernel ) InVals . push_back ( p ) ; else { SDValue p2 = DAG . getNode ( , dl , ObjectVT , DAG . getConstant ( , ) , p ) ; InVals . push_back ( p2 ) ; } } else { const PointerType * elemPtrType = dyn_cast < PointerType > ( argTypes [ i ] ) ; assert ( elemPtrType && ) ; Type * elemType = elemPtrType -> getElementType ( ) ; SmallVector < EVT , > vtparts ; SmallVector < uint64_t , > offsets ; ComputeValueVTs ( * this , elemType , vtparts , & offsets , ) ; unsigned totalsize = ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) totalsize += vtparts [ j ] . getStoreSizeInBits ( ) ; SDValue localcopy = DAG . getFrameIndex ( MF . getFrameInfo ( ) -> CreateStackObject ( totalsize / , , false ) , getPointerTy ( ) ) ; unsigned sizesofar = ; std :: vector < SDValue > theChains ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) { unsigned numElems = ; if ( vtparts [ j ] . isVector ( ) ) numElems = vtparts [ j ] . getVectorNumElements ( ) ; for ( unsigned k = , ke = numElems ; k != ke ; ++ k ) { EVT tmpvt = vtparts [ j ] ; if ( tmpvt . isVector ( ) ) tmpvt = tmpvt . getVectorElementType ( ) ; SDValue arg = DAG . getNode ( , dl , tmpvt , getParamSymbol ( DAG , idx , tmpvt ) ) ; SDValue addr = DAG . getNode ( , dl , getPointerTy ( ) , localcopy , DAG . getConstant ( sizesofar , getPointerTy ( ) ) ) ; theChains . push_back ( DAG . getStore ( Chain , dl , arg , addr , MachinePointerInfo ( ) , false , false , ) ) ;" LLVM,NVPTX,1261,"Predict the next statement of this code snippet: LoadSDNode * LD = cast < LoadSDNode > ( Node ) ; DebugLoc dl = Node -> getDebugLoc ( ) ; assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ;" LLVM,NVPTX,1262,"Predict the next statement of this code snippet: SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ; Ops . push_back ( ExtVal ) ; } for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) { Ops . push_back ( N -> getOperand ( i ) ) ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; SDValue NewSt = DAG . getMemIntrinsicNode ( Opcode , DL , DAG . getVTList ( ) , & Ops [ ] , Ops . size ( ) , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ;" LLVM,NVPTX,1263,"Predict the next statement of this code snippet: static void ReplaceINTRINSIC_W_CHAIN ( SDNode * N , SelectionDAG & DAG , SmallVectorImpl < SDValue > & Results ) { SDValue Chain = N -> getOperand ( ) ; SDValue Intrin = N -> getOperand ( ) ; DebugLoc DL = N -> getDebugLoc ( ) ; unsigned IntrinNo = cast < ConstantSDNode > ( Intrin . getNode ( ) ) -> getZExtValue ( ) ; switch ( IntrinNo ) { default : return ; case : case : case : case : case : case : { EVT ResVT = N -> getValueType ( ) ; if ( ResVT . isVector ( ) ) { unsigned NumElts = ResVT . getVectorNumElements ( ) ; EVT EltVT = ResVT . getVectorElementType ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : switch ( IntrinNo ) { default : return ; case : case : case : Opcode = ; break ; case : case : case : Opcode = ; break ; } LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ;" LLVM,NVPTX,1264,"Predict the next statement of this code snippet: static void ReplaceINTRINSIC_W_CHAIN ( SDNode * N , SelectionDAG & DAG , SmallVectorImpl < SDValue > & Results ) { SDValue Chain = N -> getOperand ( ) ; SDValue Intrin = N -> getOperand ( ) ; DebugLoc DL = N -> getDebugLoc ( ) ; unsigned IntrinNo = cast < ConstantSDNode > ( Intrin . getNode ( ) ) -> getZExtValue ( ) ; switch ( IntrinNo ) { default : return ; case : case : case : case : case : case : { EVT ResVT = N -> getValueType ( ) ; if ( ResVT . isVector ( ) ) { unsigned NumElts = ResVT . getVectorNumElements ( ) ; EVT EltVT = ResVT . getVectorElementType ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : switch ( IntrinNo ) { default : return ; case : case : case : Opcode = ; break ; case : case : case : Opcode = ; break ; } LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { switch ( IntrinNo ) { default : return ; case :" LLVM,NVPTX,1265,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : break ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; }" LLVM,NVPTX,1266,"Predict the next statement of this code snippet: case : case : case : break ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; } } SmallVector < SDValue , > OtherOps ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; LoadSDNode * LD = cast < LoadSDNode > ( N ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , & OtherOps [ ] , OtherOps . size ( ) , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ;" LLVM,NVPTX,1267,"Predict the next statement of this code snippet: ReplaceLoadVector ( N , DAG , Results ) ; return ; case : ReplaceINTRINSIC_W_CHAIN ( N , DAG , Results ) ;" LLVM,NVPTX,1268,"Predict the next statement of this code snippet: if ( Constraint . size ( ) == ) { switch ( Constraint [ ] ) { case 'c' : return std :: make_pair ( , & ) ; case 'h' : return std :: make_pair ( , & ) ; case 'r' : return std :: make_pair ( , & ) ; case 'l' : case 'N' : return std :: make_pair ( , & ) ;" LLVM,NVPTX,1269,"Predict the next statement of this code snippet: return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,NVPTX,1270,"Predict the next statement of this code snippet: const char * TargetLowering :: getTargetNodeName ( unsigned Opcode ) const { switch ( Opcode ) { default : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ;" LLVM,NVPTX,1271,"Predict the next statement of this code snippet: Info . opc = ; Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = true ; Info . align = ; return true ; case : case : Info . opc = ; Info . memVT = ; Info . ptrVal = I . getArgOperand ( ) ; Info . offset = ; Info . vol = ; Info . readMem = true ; Info . writeMem = true ; Info . align = ; return true ;" LLVM,NVPTX,1272,"Predict the next statement of this code snippet: case : case : case : case : case : case : case :" LLVM,NVPTX,1273,"Predict the next statement of this code snippet: continue ; } if ( theArgs [ i ] -> use_empty ( ) ) { if ( ObjectVT . isVector ( ) ) { EVT EltVT = ObjectVT . getVectorElementType ( ) ; unsigned NumElts = ObjectVT . getVectorNumElements ( ) ; for ( unsigned vi = ; vi < NumElts ; ++ vi ) { InVals . push_back ( DAG . getNode ( , dl , EltVT ) ) ; } } else { InVals . push_back ( DAG . getNode ( , dl , ObjectVT ) ) ; } continue ; } if ( PAL . hasAttribute ( i + , Attribute :: ByVal ) == false ) { if ( ObjectVT . isVector ( ) ) { unsigned NumElts = ObjectVT . getVectorNumElements ( ) ; EVT EltVT = ObjectVT . getVectorElementType ( ) ; unsigned Offset = ; for ( unsigned vi = ; vi < NumElts ; ++ vi ) { SDValue A = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; SDValue B = DAG . getIntPtrConstant ( Offset ) ; SDValue Addr = DAG . getNode ( , dl , getPointerTy ( ) , A , B ) ; Value * SrcValue = Constant :: getNullValue ( PointerType :: get ( EltVT . getTypeForEVT ( F -> getContext ( ) ) , llvm :: ADDRESS_SPACE_PARAM ) ) ; SDValue Ld = DAG . getLoad ( EltVT , dl , Root , Addr , MachinePointerInfo ( SrcValue ) , false , false , false , TD -> getABITypeAlignment ( EltVT . getTypeForEVT ( F -> getContext ( ) ) ) ) ; Offset += EltVT . getStoreSizeInBits ( ) / ; InVals . push_back ( Ld ) ; } continue ; } if ( isABI || isKernel ) { SDValue Arg = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; Value * srcValue = Constant :: getNullValue ( PointerType :: get ( ObjectVT . getTypeForEVT ( F -> getContext ( ) ) , llvm :: ADDRESS_SPACE_PARAM ) ) ; SDValue p = DAG . getLoad ( ObjectVT , dl , Root , Arg , MachinePointerInfo ( srcValue ) , false , false , false , TD -> getABITypeAlignment ( ObjectVT . getTypeForEVT ( F -> getContext ( ) ) ) ) ; if ( p . getNode ( ) ) p . getNode ( ) -> setIROrder ( idx + ) ; InVals . push_back ( p ) ; } else { SDValue Arg = getParamSymbol ( DAG , idx , ObjectVT ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) p . getNode ( ) -> setIROrder ( idx + ) ;" LLVM,NVPTX,1274,"Predict the next statement of this code snippet: if ( theArgs [ i ] -> use_empty ( ) ) { if ( ObjectVT . isVector ( ) ) { EVT EltVT = ObjectVT . getVectorElementType ( ) ; unsigned NumElts = ObjectVT . getVectorNumElements ( ) ; for ( unsigned vi = ; vi < NumElts ; ++ vi ) { InVals . push_back ( DAG . getNode ( , dl , EltVT ) ) ; } } else { InVals . push_back ( DAG . getNode ( , dl , ObjectVT ) ) ; } continue ; } if ( PAL . hasAttribute ( i + , Attribute :: ByVal ) == false ) { if ( ObjectVT . isVector ( ) ) { unsigned NumElts = ObjectVT . getVectorNumElements ( ) ; EVT EltVT = ObjectVT . getVectorElementType ( ) ; unsigned Offset = ; for ( unsigned vi = ; vi < NumElts ; ++ vi ) { SDValue A = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; SDValue B = DAG . getIntPtrConstant ( Offset ) ; SDValue Addr = DAG . getNode ( , dl , getPointerTy ( ) , A , B ) ; Value * SrcValue = Constant :: getNullValue ( PointerType :: get ( EltVT . getTypeForEVT ( F -> getContext ( ) ) , llvm :: ADDRESS_SPACE_PARAM ) ) ; SDValue Ld = DAG . getLoad ( EltVT , dl , Root , Addr , MachinePointerInfo ( SrcValue ) , false , false , false , TD -> getABITypeAlignment ( EltVT . getTypeForEVT ( F -> getContext ( ) ) ) ) ; Offset += EltVT . getStoreSizeInBits ( ) / ; InVals . push_back ( Ld ) ; } continue ; } if ( isABI || isKernel ) { SDValue Arg = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; Value * srcValue = Constant :: getNullValue ( PointerType :: get ( ObjectVT . getTypeForEVT ( F -> getContext ( ) ) , llvm :: ADDRESS_SPACE_PARAM ) ) ; SDValue p = DAG . getLoad ( ObjectVT , dl , Root , Arg , MachinePointerInfo ( srcValue ) , false , false , false , TD -> getABITypeAlignment ( ObjectVT . getTypeForEVT ( F -> getContext ( ) ) ) ) ; if ( p . getNode ( ) ) p . getNode ( ) -> setIROrder ( idx + ) ; InVals . push_back ( p ) ; } else { SDValue Arg = getParamSymbol ( DAG , idx , ObjectVT ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) p . getNode ( ) -> setIROrder ( idx + ) ; InVals . push_back ( p ) ; } continue ; } if ( isABI || isKernel ) {" LLVM,NVPTX,1275,"Predict the next statement of this code snippet: SDNode * Node = Op . getNode ( ) ; LoadSDNode * LD = cast < LoadSDNode > ( Node ) ; SDLoc dl ( Node ) ; assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ; SDValue result = DAG . getNode ( , dl , , newLD ) ; SDValue Ops [ ] = { result , LD -> getChain ( ) } ;" LLVM,NVPTX,1276,"Predict the next statement of this code snippet: assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ; SDValue result = DAG . getNode ( , dl , , newLD ) ; SDValue Ops [ ] = { result , LD -> getChain ( ) } ; return DAG . getMergeValues ( Ops , , dl ) ;" LLVM,NVPTX,1277,"Predict the next statement of this code snippet: bool isVolatile = ST -> isVolatile ( ) ; bool isNonTemporal = ST -> isNonTemporal ( ) ; Tmp3 = DAG . getNode ( , dl , , Tmp3 ) ; SDValue Result = DAG . getStore ( Tmp1 , dl , Tmp3 , Tmp2 , ST -> getPointerInfo ( ) , isVolatile , isNonTemporal , Alignment ) ;" LLVM,NVPTX,1278,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerSTOREi1 ( SDValue Op , SelectionDAG & DAG ) const { SDNode * Node = Op . getNode ( ) ; SDLoc dl ( Node ) ; StoreSDNode * ST = cast < StoreSDNode > ( Node ) ; SDValue Tmp1 = ST -> getChain ( ) ; SDValue Tmp2 = ST -> getBasePtr ( ) ; SDValue Tmp3 = ST -> getValue ( ) ; assert ( Tmp3 . getValueType ( ) == && ) ; unsigned Alignment = ST -> getAlignment ( ) ; bool isVolatile = ST -> isVolatile ( ) ; bool isNonTemporal = ST -> isNonTemporal ( ) ; Tmp3 = DAG . getNode ( , dl , , Tmp3 ) ; SDValue Result = DAG . getStore ( Tmp1 , dl , Tmp3 , Tmp2 , ST -> getPointerInfo ( ) , isVolatile , isNonTemporal , Alignment ) ; return Result ;" LLVM,NVPTX,1279,"Predict the next statement of this code snippet: setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; } else { setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } if ( nvptxSubtarget . hasROT32 ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; } else { setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setLoadExtAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setLoadExtAction ( , , Promote ) ; setLoadExtAction ( , , Promote ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; for ( int i = ; i <= ; ++ i ) {" LLVM,NVPTX,1280,"Predict the next statement of this code snippet: case : case : case : Opcode = ; break ; } EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; } } SmallVector < SDValue , > OtherOps ; OtherOps . push_back ( Chain ) ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , & OtherOps [ ] , OtherOps . size ( ) , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; } SDValue LoadChain = NewLD . getValue ( NumElts ) ; SDValue BuildVec = DAG . getNode ( , DL , ResVT , & ScalarRes [ ] , NumElts ) ; Results . push_back ( BuildVec ) ; Results . push_back ( LoadChain ) ; } else { assert ( ResVT . isSimple ( ) && ResVT . getSimpleVT ( ) . SimpleTy == && ) ; SmallVector < SDValue , > Ops ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) Ops . push_back ( N -> getOperand ( i ) ) ; SDVTList LdResVTs = DAG . getVTList ( , ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( , DL , LdResVTs , & Ops [ ] , Ops . size ( ) , , MemSD -> getMemOperand ( ) ) ; Results . push_back ( NewLD . getValue ( ) ) ; Results . push_back ( NewLD . getValue ( ) ) ; }" LLVM,NVPTX,1281,"Predict the next statement of this code snippet: O << << retAlignment << << DL . getTypeAllocSize ( retTy ) << ; } else { llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS . getInstruction ( ) ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) { sz = PtrVT . getSizeInBits ( ) ; } else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } auto * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; Align align = Outs [ OIdx ] . Flags . getNonZeroByValAlign ( ) ; unsigned sz = DL . getTypeAllocSize ( ETy ) ; O << << align . value ( ) << ; O << ;" LLVM,NVPTX,1282,"Predict the next statement of this code snippet: bool TargetLowering :: useF32FTZ ( const MachineFunction & MF ) const { if ( FtzEnabled . getNumOccurrences ( ) > ) { return FtzEnabled ; } return MF . getDenormalMode ( APFloat :: IEEEsingle ( ) ) . Output == DenormalMode :: PreserveSign ;" LLVM,NVPTX,1283,"Predict the next statement of this code snippet: return FtzEnabled ; }" LLVM,NVPTX,1284,"Predict the next statement of this code snippet: O << << getPointerTy ( ) . getSizeInBits ( ) << ; } else if ( ( retTy -> getTypeID ( ) == Type :: StructTyID ) || isa < VectorType > ( retTy ) ) { O << << retAlignment << << getDataLayout ( ) -> getTypeAllocSize ( retTy ) << ; } else { llvm_unreachable ( ) ; } O << ; } O << ; bool first = true ; MVT thePointerTy = getPointerTy ( ) ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; const DataLayout * TD = getDataLayout ( ) ; if ( ! llvm :: getAlign ( * CallI , i + , align ) ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( Ty ) == Outs [ OIdx ] . VT || ( getValueType ( Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ;" LLVM,NVPTX,1285,"Predict the next statement of this code snippet: case 'b' : return std :: make_pair ( , & ) ; case 'c' : return std :: make_pair ( , & ) ; case 'h' : return std :: make_pair ( , & ) ; case 'r' : return std :: make_pair ( , & ) ; case 'l' : case 'N' : return std :: make_pair ( , & ) ; case 'f' :" LLVM,NVPTX,1286,"Predict the next statement of this code snippet: SDLoc DL ( N ) ; EVT ValVT = Val . getValueType ( ) ; if ( ValVT . isVector ( ) ) { if ( ! ValVT . isSimple ( ) ) return SDValue ( ) ; switch ( ValVT . getSimpleVT ( ) . SimpleTy ) { default : return SDValue ( ) ; case : case : case : case : case : case : case : case : case : case : break ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; const DataLayout * TD = getDataLayout ( ) ; unsigned Align = MemSD -> getAlignment ( ) ; unsigned PrefAlign = TD -> getPrefTypeAlignment ( ValVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return SDValue ( ) ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ; bool NeedExt = false ; if ( EltVT . getSizeInBits ( ) < ) NeedExt = true ; switch ( NumElts ) { default : return SDValue ( ) ; case : Opcode = ; break ; case : { Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ; Ops . push_back ( ExtVal ) ; } Ops . append ( N -> op_begin ( ) + , N -> op_end ( ) ) ; SDValue NewSt = DAG . getMemIntrinsicNode ( Opcode , DL , DAG . getVTList ( ) , Ops , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; return NewSt ; }" LLVM,NVPTX,1287,"Predict the next statement of this code snippet: unsigned PrefAlign = TD -> getPrefTypeAlignment ( ResVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ( N -> op_begin ( ) , N -> op_end ( ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; } SDValue LoadChain = NewLD . getValue ( NumElts ) ; SDValue BuildVec = DAG . getNode ( , DL , ResVT , ScalarRes ) ;" LLVM,NVPTX,1288,"Predict the next statement of this code snippet: } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ( N -> op_begin ( ) , N -> op_end ( ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , OtherOps , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ;" LLVM,NVPTX,1289,"Predict the next statement of this code snippet: if ( OutVals [ ] . getValueType ( ) . getSizeInBits ( ) == ) VecSize = ; unsigned Offset = ; EVT VecVT = EVT :: getVectorVT ( F -> getContext ( ) , EltVT , VecSize ) ; unsigned PerStoreOffset = TD . getTypeAllocSize ( VecVT . getTypeForEVT ( F -> getContext ( ) ) ) ; for ( unsigned i = ; i < NumElts ; i += VecSize ) { SDValue StoreVal ; SmallVector < SDValue , > Ops ; Ops . push_back ( Chain ) ; Ops . push_back ( DAG . getConstant ( Offset , dl , ) ) ; unsigned Opc = ; EVT ExtendedVT = ( NeedExtend ) ? : OutVals [ ] . getValueType ( ) ; StoreVal = OutVals [ i ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( VecSize == ) { Opc = ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; if ( i + < NumElts ) { StoreVal = OutVals [ i + ] ; if ( NeedExtend ) StoreVal = DAG . getNode ( , dl , ExtendedVT , StoreVal ) ; } else { StoreVal = DAG . getUNDEF ( ExtendedVT ) ; } Ops . push_back ( StoreVal ) ; } Chain = DAG . getMemIntrinsicNode ( Opc , dl , DAG . getVTList ( ) , Ops , EltVT , MachinePointerInfo ( ) ) ; Offset += PerStoreOffset ; } }" LLVM,NVPTX,1290,"Predict the next statement of this code snippet: if ( AM . BaseGV ) { if ( AM . BaseOffs || AM . HasBaseReg || AM . Scale ) return false ; return true ; } switch ( AM . Scale ) { case : break ; case : if ( AM . HasBaseReg ) return false ;" LLVM,NVPTX,1291,"Predict the next statement of this code snippet: } Chain = DAG . getMemIntrinsicNode ( Opc , dl , DAG . getVTList ( ) , Ops , EltVT , MachinePointerInfo ( ) ) ; Offset += PerStoreOffset ; } } } else { SmallVector < EVT , > ValVTs ; SmallVector < uint64_t , > Offsets ; ComputePTXValueVTs ( * this , RetTy , ValVTs , & Offsets , ) ; assert ( ValVTs . size ( ) == OutVals . size ( ) && ) ; for ( unsigned i = , e = Outs . size ( ) ; i != e ; ++ i ) { SDValue theVal = OutVals [ i ] ; EVT TheValType = theVal . getValueType ( ) ; unsigned numElems = ; if ( TheValType . isVector ( ) ) numElems = TheValType . getVectorNumElements ( ) ; for ( unsigned j = , je = numElems ; j != je ; ++ j ) { SDValue TmpVal = theVal ; if ( TheValType . isVector ( ) ) TmpVal = DAG . getNode ( , dl , TheValType . getVectorElementType ( ) , TmpVal , DAG . getIntPtrConstant ( j , dl ) ) ; EVT TheStoreType = ValVTs [ i ] ; if ( RetTy -> isIntegerTy ( ) && TD -> getTypeAllocSizeInBits ( RetTy ) < ) { TmpVal = DAG . getNode ( , dl , , TmpVal ) ; TheStoreType = ; } else if ( TmpVal . getValueType ( ) . getSizeInBits ( ) < ) TmpVal = DAG . getNode ( , dl , , TmpVal ) ; SDValue Ops [ ] = { Chain , DAG . getConstant ( Offsets [ i ] , dl , ) , TmpVal } ; Chain = DAG . getMemIntrinsicNode ( , dl , DAG . getVTList ( ) , Ops , TheStoreType , MachinePointerInfo ( ) ) ; } } } return DAG . getNode ( , dl , , Chain ) ;" LLVM,NVPTX,1292,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerSTOREVector ( SDValue Op , SelectionDAG & DAG ) const { SDNode * N = Op . getNode ( ) ; SDValue Val = N -> getOperand ( ) ; SDLoc DL ( N ) ; EVT ValVT = Val . getValueType ( ) ; if ( ValVT . isVector ( ) ) { if ( ! ValVT . isSimple ( ) ) return SDValue ( ) ; switch ( ValVT . getSimpleVT ( ) . SimpleTy ) { default : return SDValue ( ) ; case : case : case : case : case : case : case : case : case : case : break ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; const DataLayout * TD = getDataLayout ( ) ; unsigned Align = MemSD -> getAlignment ( ) ; unsigned PrefAlign = TD -> getPrefTypeAlignment ( ValVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return SDValue ( ) ; } unsigned Opcode = ; EVT EltVT = ValVT . getVectorElementType ( ) ; unsigned NumElts = ValVT . getVectorNumElements ( ) ;" LLVM,NVPTX,1293,"Predict the next statement of this code snippet: case : case : case : case : case : case : break ; } LoadSDNode * LD = cast < LoadSDNode > ( N ) ; unsigned Align = LD -> getAlignment ( ) ; unsigned PrefAlign = TD -> getPrefTypeAlignment ( ResVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ;" LLVM,NVPTX,1294,"Predict the next statement of this code snippet: } LoadSDNode * LD = cast < LoadSDNode > ( N ) ; unsigned Align = LD -> getAlignment ( ) ; unsigned PrefAlign = TD -> getPrefTypeAlignment ( ResVT . getTypeForEVT ( * DAG . getContext ( ) ) ) ; if ( Align < PrefAlign ) { return ; } EVT EltVT = ResVT . getVectorElementType ( ) ; unsigned NumElts = ResVT . getVectorNumElements ( ) ; bool NeedTrunc = false ; if ( EltVT . getSizeInBits ( ) < ) { EltVT = ; NeedTrunc = true ; } unsigned Opcode = ; SDVTList LdResVTs ; switch ( NumElts ) { default : return ; case : Opcode = ; LdResVTs = DAG . getVTList ( EltVT , EltVT , ) ; break ; case : { Opcode = ; EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs ) ; break ; } } SmallVector < SDValue , > OtherOps ( N -> op_begin ( ) , N -> op_end ( ) ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) , DL ) ) ;" LLVM,NVPTX,1295,"Predict the next statement of this code snippet: return std :: make_pair ( , & ) ; case 'r' : return std :: make_pair ( , & ) ; case 'l' : case 'N' : return std :: make_pair ( , & ) ; case 'f' :" LLVM,NVPTX,1296,"Predict the next statement of this code snippet: SDValue TargetLowering :: LowerCONCAT_VECTORS ( SDValue Op , SelectionDAG & DAG ) const { SDNode * Node = Op . getNode ( ) ; DebugLoc dl = Node -> getDebugLoc ( ) ; SmallVector < SDValue , > Ops ; unsigned NumOperands = Node -> getNumOperands ( ) ; for ( unsigned i = ; i < NumOperands ; ++ i ) { SDValue SubOp = Node -> getOperand ( i ) ; EVT VVT = SubOp . getNode ( ) -> getValueType ( ) ; EVT EltVT = VVT . getVectorElementType ( ) ; unsigned NumSubElem = VVT . getVectorNumElements ( ) ; for ( unsigned j = ; j < NumSubElem ; ++ j ) { Ops . push_back ( DAG . getNode ( , dl , EltVT , SubOp , DAG . getIntPtrConstant ( j ) ) ) ; } } return DAG . getNode ( , dl , Node -> getValueType ( ) , & Ops [ ] , Ops . size ( ) ) ;" LLVM,NVPTX,1297,"Predict the next statement of this code snippet: unsigned NumSubElem = VVT . getVectorNumElements ( ) ; for ( unsigned j = ; j < NumSubElem ; ++ j ) { Ops . push_back ( DAG . getNode ( , dl , EltVT , SubOp , DAG . getIntPtrConstant ( j ) ) ) ; } }" LLVM,NVPTX,1298,"Predict the next statement of this code snippet: SDValue Arg = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) DAG . AssignOrdering ( p . getNode ( ) , idx + ) ; if ( isKernel ) InVals . push_back ( p ) ; else { SDValue p2 = DAG . getNode ( , dl , ObjectVT , DAG . getConstant ( , ) , p ) ; InVals . push_back ( p2 ) ; } } else { const PointerType * elemPtrType = dyn_cast < PointerType > ( argTypes [ i ] ) ; assert ( elemPtrType && ) ; Type * elemType = elemPtrType -> getElementType ( ) ; SmallVector < EVT , > vtparts ; SmallVector < uint64_t , > offsets ; ComputeValueVTs ( * this , elemType , vtparts , & offsets , ) ; unsigned totalsize = ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) totalsize += vtparts [ j ] . getStoreSizeInBits ( ) ; SDValue localcopy = DAG . getFrameIndex ( MF . getFrameInfo ( ) -> CreateStackObject ( totalsize / , , false ) , getPointerTy ( ) ) ; unsigned sizesofar = ; std :: vector < SDValue > theChains ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) { unsigned numElems = ; if ( vtparts [ j ] . isVector ( ) ) numElems = vtparts [ j ] . getVectorNumElements ( ) ; for ( unsigned k = , ke = numElems ; k != ke ; ++ k ) { EVT tmpvt = vtparts [ j ] ; if ( tmpvt . isVector ( ) ) tmpvt = tmpvt . getVectorElementType ( ) ; SDValue arg = DAG . getNode ( , dl , tmpvt , getParamSymbol ( DAG , idx , tmpvt ) ) ; SDValue addr = DAG . getNode ( , dl , getPointerTy ( ) , localcopy , DAG . getConstant ( sizesofar , getPointerTy ( ) ) ) ; theChains . push_back ( DAG . getStore ( Chain , dl , arg , addr , MachinePointerInfo ( ) , false , false , ) ) ; sizesofar += tmpvt . getStoreSizeInBits ( ) / ; ++ idx ; } } -- idx ; Chain = DAG . getNode ( , dl , , & theChains [ ] , theChains . size ( ) ) ; InVals . push_back ( localcopy ) ; } } if ( ! OutChains . empty ( ) ) DAG . setRoot ( DAG . getNode ( , dl , , & OutChains [ ] , OutChains . size ( ) ) ) ;" LLVM,NVPTX,1299,"Predict the next statement of this code snippet: assert ( LD -> getExtensionType ( ) == ) ; assert ( Node -> getValueType ( ) == && ) ; SDValue newLD = DAG . getLoad ( , dl , LD -> getChain ( ) , LD -> getBasePtr ( ) , LD -> getPointerInfo ( ) , LD -> isVolatile ( ) , LD -> isNonTemporal ( ) , LD -> isInvariant ( ) , LD -> getAlignment ( ) ) ;" LLVM,NVPTX,1300,"Predict the next statement of this code snippet: if ( theValType . isVector ( ) ) tmpval = DAG . getNode ( , dl , theValType . getVectorElementType ( ) , tmpval , DAG . getIntPtrConstant ( j ) ) ; Chain = DAG . getNode ( isABI ? : , dl , , Chain , DAG . getConstant ( isABI ? sizesofar : idx , ) , tmpval ) ;" LLVM,NVPTX,1301,"Predict the next statement of this code snippet: for ( unsigned j = , je = numElems ; j != je ; ++ j ) { SDValue tmpval = theVal ; if ( theValType . isVector ( ) ) tmpval = DAG . getNode ( , dl , theValType . getVectorElementType ( ) , tmpval , DAG . getIntPtrConstant ( j ) ) ; Chain = DAG . getNode ( isABI ? : , dl , , Chain , DAG . getConstant ( isABI ? sizesofar : idx , ) , tmpval ) ;" LLVM,NVPTX,1302,"Predict the next statement of this code snippet: SDValue Tmp3 = ST -> getValue ( ) ; assert ( Tmp3 . getValueType ( ) == && ) ; unsigned Alignment = ST -> getAlignment ( ) ; bool isVolatile = ST -> isVolatile ( ) ; bool isNonTemporal = ST -> isNonTemporal ( ) ;" LLVM,NVPTX,1303,"Predict the next statement of this code snippet: Opcode = ; break ; } } SmallVector < SDValue , > Ops ; Ops . push_back ( N -> getOperand ( ) ) ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue ExtVal = DAG . getNode ( , DL , EltVT , Val , DAG . getIntPtrConstant ( i ) ) ; if ( NeedExt ) ExtVal = DAG . getNode ( , DL , , ExtVal ) ; Ops . push_back ( ExtVal ) ; } for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) { Ops . push_back ( N -> getOperand ( i ) ) ; } MemSDNode * MemSD = cast < MemSDNode > ( N ) ; SDValue NewSt = DAG . getMemIntrinsicNode ( Opcode , DL , DAG . getVTList ( ) , & Ops [ ] , Ops . size ( ) , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; return NewSt ;" LLVM,NVPTX,1304,"Predict the next statement of this code snippet: LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; } } SmallVector < SDValue , > OtherOps ; OtherOps . push_back ( Chain ) ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , & OtherOps [ ] , OtherOps . size ( ) , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; } SDValue LoadChain = NewLD . getValue ( NumElts ) ; SDValue BuildVec = DAG . getNode ( , DL , ResVT , & ScalarRes [ ] , NumElts ) ; Results . push_back ( BuildVec ) ; Results . push_back ( LoadChain ) ; } else { assert ( ResVT . isSimple ( ) && ResVT . getSimpleVT ( ) . SimpleTy == && ) ; SmallVector < SDValue , > Ops ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) Ops . push_back ( N -> getOperand ( i ) ) ; SDVTList LdResVTs = DAG . getVTList ( , ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( , DL , LdResVTs , & Ops [ ] , Ops . size ( ) , , MemSD -> getMemOperand ( ) ) ; Results . push_back ( NewLD . getValue ( ) ) ; Results . push_back ( NewLD . getValue ( ) ) ; } } }" LLVM,NVPTX,1305,"Predict the next statement of this code snippet: case : case : case : Opcode = ; break ; } EVT ListVTs [ ] = { EltVT , EltVT , EltVT , EltVT , } ; LdResVTs = DAG . getVTList ( ListVTs , ) ; break ; } } SmallVector < SDValue , > OtherOps ; OtherOps . push_back ( Chain ) ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , & OtherOps [ ] , OtherOps . size ( ) , MemSD -> getMemoryVT ( ) , MemSD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ; if ( NeedTrunc ) Res = DAG . getNode ( , DL , ResVT . getVectorElementType ( ) , Res ) ; ScalarRes . push_back ( Res ) ; } SDValue LoadChain = NewLD . getValue ( NumElts ) ; SDValue BuildVec = DAG . getNode ( , DL , ResVT , & ScalarRes [ ] , NumElts ) ; Results . push_back ( BuildVec ) ; Results . push_back ( LoadChain ) ; } else { assert ( ResVT . isSimple ( ) && ResVT . getSimpleVT ( ) . SimpleTy == && ) ; SmallVector < SDValue , > Ops ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) Ops . push_back ( N -> getOperand ( i ) ) ; SDVTList LdResVTs = DAG . getVTList ( , ) ; MemIntrinsicSDNode * MemSD = cast < MemIntrinsicSDNode > ( N ) ;" LLVM,NVPTX,1306,"Predict the next statement of this code snippet: SmallVector < SDValue , > OtherOps ; for ( unsigned i = , e = N -> getNumOperands ( ) ; i != e ; ++ i ) OtherOps . push_back ( N -> getOperand ( i ) ) ; LoadSDNode * LD = cast < LoadSDNode > ( N ) ; OtherOps . push_back ( DAG . getIntPtrConstant ( LD -> getExtensionType ( ) ) ) ; SDValue NewLD = DAG . getMemIntrinsicNode ( Opcode , DL , LdResVTs , & OtherOps [ ] , OtherOps . size ( ) , LD -> getMemoryVT ( ) , LD -> getMemOperand ( ) ) ; SmallVector < SDValue , > ScalarRes ; for ( unsigned i = ; i < NumElts ; ++ i ) { SDValue Res = NewLD . getValue ( i ) ;" LLVM,NVPTX,1307,"Predict the next statement of this code snippet: SDValue Offset = DAG . getConstant ( GN -> getOffset ( ) , dl , getPointerTy ( DAG . getDataLayout ( ) ) ) ; Op = DAG . getNode ( , Op , getPointerTy ( DAG . getDataLayout ( ) ) , Op , Offset ) ; } return Op ;" LLVM,NVPTX,1308,"Predict the next statement of this code snippet: if ( ! llvm :: getAlign ( * CallI , i + , align ) ) align = TD -> getABITypeAlignment ( Ty ) ; unsigned sz = TD -> getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( Ty ) == Outs [ OIdx ] . VT || ( getValueType ( Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) sz = thePointerTy . getSizeInBits ( ) ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ; } const PointerType * PTy = dyn_cast < PointerType > ( Ty ) ; assert ( PTy && ) ; Type * ETy = PTy -> getElementType ( ) ; unsigned align = Outs [ OIdx ] . Flags . getByValAlign ( ) ;" LLVM,NVPTX,1309,"Predict the next statement of this code snippet: setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; if ( nvptxSubtarget . hasROT64 ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; } else { setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } if ( nvptxSubtarget . hasROT32 ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; } else { setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setLoadExtAction ( , , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; for ( MVT VT : ( ) ) { setLoadExtAction ( , VT , , Promote ) ; setLoadExtAction ( , VT , , Promote ) ; setTruncStoreAction ( VT , , Expand ) ; } setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; for ( MVT VT : ( ) ) { if ( IsPTXVectorType ( VT ) ) { setOperationAction ( , VT , Custom ) ; setOperationAction ( , VT , Custom ) ; setOperationAction ( , VT , Custom ) ; } } setOperationAction ( , , Custom ) ; setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ;" LLVM,NVPTX,1310,"Predict the next statement of this code snippet: O << ; bool first = true ; unsigned OIdx = ; for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) { sz = PtrVT . getSizeInBits ( ) ; } else if ( Ty -> isHalfTy ( ) ) sz = ; else sz = Ty -> getPrimitiveSizeInBits ( ) ; O << << sz << ; O << ; continue ;" LLVM,NVPTX,1311,"Predict the next statement of this code snippet: for ( unsigned i = , e = Args . size ( ) ; i != e ; ++ i , ++ OIdx ) { Type * Ty = Args [ i ] . Ty ; if ( ! first ) { O << ; } first = false ; if ( ! Outs [ OIdx ] . Flags . isByVal ( ) ) { if ( Ty -> isAggregateType ( ) || Ty -> isVectorTy ( ) || Ty -> isIntegerTy ( ) ) { unsigned align = ; const CallInst * CallI = cast < CallInst > ( CS -> getInstruction ( ) ) ; if ( ! getAlign ( * CallI , i + , align ) ) align = DL . getABITypeAlignment ( Ty ) ; unsigned sz = DL . getTypeAllocSize ( Ty ) ; O << << align << ; O << ; O << << sz << ; SmallVector < EVT , > vtparts ; ComputeValueVTs ( * this , DL , Ty , vtparts ) ; if ( unsigned len = vtparts . size ( ) ) OIdx += len - ; continue ; } assert ( ( getValueType ( DL , Ty ) == Outs [ OIdx ] . VT || ( getValueType ( DL , Ty ) == && Outs [ OIdx ] . VT == ) ) && ) ; unsigned sz = ; if ( isa < IntegerType > ( Ty ) ) { sz = cast < IntegerType > ( Ty ) -> getBitWidth ( ) ; if ( sz < ) sz = ; } else if ( isa < PointerType > ( Ty ) ) {" LLVM,NVPTX,1312,"Predict the next statement of this code snippet: setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } if ( nvptxSubtarget . hasROT32 ( ) ) { setOperationAction ( , , Legal ) ; setOperationAction ( , , Legal ) ; } else { setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; } setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setLoadExtAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setOperationAction ( , , Custom ) ; setOperationAction ( , , Custom ) ; setLoadExtAction ( , , Promote ) ; setLoadExtAction ( , , Promote ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setTruncStoreAction ( , , Expand ) ; setOperationAction ( , , Legal ) ;" LLVM,NVPTX,1313,"Predict the next statement of this code snippet: } if ( isABI || isKernel ) { SDValue Arg = getParamSymbol ( DAG , idx , getPointerTy ( ) ) ; SDValue p = DAG . getNode ( , dl , ObjectVT , Arg ) ; if ( p . getNode ( ) ) p . getNode ( ) -> setIROrder ( idx + ) ; if ( isKernel ) InVals . push_back ( p ) ; else { SDValue p2 = DAG . getNode ( , dl , ObjectVT , DAG . getConstant ( , ) , p ) ; InVals . push_back ( p2 ) ; } } else { const PointerType * elemPtrType = dyn_cast < PointerType > ( argTypes [ i ] ) ; assert ( elemPtrType && ) ; Type * elemType = elemPtrType -> getElementType ( ) ; SmallVector < EVT , > vtparts ; SmallVector < uint64_t , > offsets ; ComputeValueVTs ( * this , elemType , vtparts , & offsets , ) ; unsigned totalsize = ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) totalsize += vtparts [ j ] . getStoreSizeInBits ( ) ; SDValue localcopy = DAG . getFrameIndex ( MF . getFrameInfo ( ) -> CreateStackObject ( totalsize / , , false ) , getPointerTy ( ) ) ; unsigned sizesofar = ; std :: vector < SDValue > theChains ; for ( unsigned j = , je = vtparts . size ( ) ; j != je ; ++ j ) { unsigned numElems = ; if ( vtparts [ j ] . isVector ( ) ) numElems = vtparts [ j ] . getVectorNumElements ( ) ; for ( unsigned k = , ke = numElems ; k != ke ; ++ k ) { EVT tmpvt = vtparts [ j ] ; if ( tmpvt . isVector ( ) ) tmpvt = tmpvt . getVectorElementType ( ) ; SDValue arg = DAG . getNode ( , dl , tmpvt , getParamSymbol ( DAG , idx , tmpvt ) ) ; SDValue addr = DAG . getNode ( , dl , getPointerTy ( ) , localcopy , DAG . getConstant ( sizesofar , getPointerTy ( ) ) ) ; theChains . push_back ( DAG . getStore ( Chain , dl , arg , addr , MachinePointerInfo ( ) , false , false , ) ) ; sizesofar += tmpvt . getStoreSizeInBits ( ) / ;" LLVM,NVPTX,1314,"Predict the next statement of this code snippet: unsigned combineRepeatedFPDivisors ( ) const override { return ;" LLVM,NVPTX,1315,"Predict the next statement of this code snippet: unsigned combineRepeatedFPDivisors ( ) const override { return ;" LLVM,NVPTX,1316,"Predict the next statement of this code snippet: std :: string * name = nvTM -> getManagedStrPool ( ) -> getManagedString ( inname ) ; std :: stringstream suffix ; suffix << idx ; * name += suffix . str ( ) ;" LLVM,NVPTX,1317,"Predict the next statement of this code snippet: unsigned TargetLowering :: getFunctionAlignment ( const Function * ) const { return ;" LLVM,NVPTX,1318,"Predict the next statement of this code snippet: MVT getScalarShiftAmountTy ( const DataLayout & , EVT ) const override {" LLVM,NVPTX,1319,"Predict the next statement of this code snippet: return true ;" LLVM,NVPTX,1320,"Predict the next statement of this code snippet: return true ;" LLVM,NVPTX,1321,"Predict the next statement of this code snippet: bool isFMAFasterThanFMulAndFAdd ( EVT ) const override { return true ;" LLVM,NVPTX,1322,"Predict the next statement of this code snippet: if ( ! context ) return false ; auto * STy = dyn_cast < StructType > ( PTy -> getElementType ( ) ) ; const std :: string TypeName = STy && ! STy -> isLiteral ( ) ? STy -> getName ( ) : ;" LLVM,NVPTX,1323,"Predict the next statement of this code snippet: MVT eVT = VT . getVectorElementType ( ) ; if ( isTypeLegal ( eVT ) ) return true ;" LLVM,NVPTX,1324,"Predict the next statement of this code snippet: MVT eVT = VT . getVectorElementType ( ) ; if ( isTypeLegal ( eVT ) ) return true ; } return false ;" LLVM,NVPTX,1325,"Predict the next statement of this code snippet: BasicBlock * OrigBB = ConvertedInst -> getParent ( ) ; BasicBlock * NewBB = ConvertedInst -> getParent ( ) -> splitBasicBlock ( ConvertedInst , ) ; BasicBlock * LoopBB = BasicBlock :: Create ( Context , , & F , NewBB ) ; OrigBB -> getTerminator ( ) -> setSuccessor ( , LoopBB ) ; IRBuilder < > Builder ( OrigBB -> getTerminator ( ) ) ; unsigned SrcAS = cast < PointerType > ( SrcAddr -> getType ( ) ) -> getAddressSpace ( ) ; unsigned DstAS = cast < PointerType > ( DstAddr -> getType ( ) ) -> getAddressSpace ( ) ;" LLVM,NVPTX,1326,"Predict the next statement of this code snippet: OrigBB -> getTerminator ( ) -> setSuccessor ( , LoopBB ) ; IRBuilder < > Builder ( OrigBB -> getTerminator ( ) ) ; unsigned SrcAS = cast < PointerType > ( SrcAddr -> getType ( ) ) -> getAddressSpace ( ) ; unsigned DstAS = cast < PointerType > ( DstAddr -> getType ( ) ) -> getAddressSpace ( ) ; SrcAddr = Builder . CreateBitCast ( SrcAddr , Builder . getInt8PtrTy ( SrcAS ) ) ; DstAddr = Builder . CreateBitCast ( DstAddr , Builder . getInt8PtrTy ( DstAS ) ) ; IRBuilder < > LoopBuilder ( LoopBB ) ; PHINode * LoopIndex = LoopBuilder . CreatePHI ( TypeOfCopyLen , ) ; LoopIndex -> addIncoming ( ConstantInt :: get ( TypeOfCopyLen , ) , OrigBB ) ; Value * Element = LoopBuilder . CreateLoad ( LoopBuilder . CreateInBoundsGEP ( LoopBuilder . getInt8Ty ( ) , SrcAddr , LoopIndex ) , SrcIsVolatile ) ; LoopBuilder . CreateStore ( Element , LoopBuilder . CreateInBoundsGEP ( LoopBuilder . getInt8Ty ( ) , DstAddr , LoopIndex ) , DstIsVolatile ) ; Value * NewIndex = LoopBuilder . CreateAdd ( LoopIndex , ConstantInt :: get ( TypeOfCopyLen , ) ) ; LoopIndex -> addIncoming ( NewIndex , LoopBB ) ;" LLVM,NVPTX,1327,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1328,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,NVPTX,1329,"Predict the next statement of this code snippet: AU . addRequired < TargetTransformInfoWrapperPass > ( ) ;" LLVM,NVPTX,1330,"Predict the next statement of this code snippet: AU . addPreserved < StackProtector > ( ) ; AU . addRequired < TargetTransformInfoWrapperPass > ( ) ;" LLVM,NVPTX,1331,"Predict the next statement of this code snippet: for ( Instruction & I : BB ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( & I ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ; } } else if ( MemIntrinsic * IntrCall = dyn_cast < MemIntrinsic > ( & I ) ) { if ( ConstantInt * LenCI = dyn_cast < ConstantInt > ( IntrCall -> getLength ( ) ) ) { if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) { MemCalls . push_back ( IntrCall ) ; } } else { MemCalls . push_back ( IntrCall ) ; } } } } if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ;" LLVM,NVPTX,1332,"Predict the next statement of this code snippet: if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { auto * SI = cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; ConstantInt * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ; createMemCpyLoopKnownSize ( SI , SrcAddr , DstAddr , CopyLen , LI -> getAlign ( ) , SI -> getAlign ( ) , LI -> isVolatile ( ) , SI -> isVolatile ( ) , true , TTI ) ; SI -> eraseFromParent ( ) ; LI -> eraseFromParent ( ) ; }" LLVM,NVPTX,1333,"Predict the next statement of this code snippet: for ( Function :: iterator BI = F . begin ( ) , BE = F . end ( ) ; BI != BE ; ++ BI ) { for ( BasicBlock :: iterator II = BI -> begin ( ) , IE = BI -> end ( ) ; II != IE ; ++ II ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( II ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ; } } else if ( MemIntrinsic * IntrCall = dyn_cast < MemIntrinsic > ( II ) ) { if ( ConstantInt * LenCI = dyn_cast < ConstantInt > ( IntrCall -> getLength ( ) ) ) { if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) { MemCalls . push_back ( IntrCall ) ; } } else { MemCalls . push_back ( IntrCall ) ; } } } } if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { auto * SI = cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; ConstantInt * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ; createMemCpyLoopKnownSize ( SI , SrcAddr , DstAddr , CopyLen , LI -> getAlign ( ) , SI -> getAlign ( ) , LI -> isVolatile ( ) , SI -> isVolatile ( ) , TTI ) ; SI -> eraseFromParent ( ) ; LI -> eraseFromParent ( ) ; } for ( MemIntrinsic * MemCall : MemCalls ) { if ( MemCpyInst * Memcpy = dyn_cast < MemCpyInst > ( MemCall ) ) { expandMemCpyAsLoop ( Memcpy , TTI ) ; } else if ( MemMoveInst * Memmove = dyn_cast < MemMoveInst > ( MemCall ) ) { expandMemMoveAsLoop ( Memmove ) ; } else if ( MemSetInst * Memset = dyn_cast < MemSetInst > ( MemCall ) ) { expandMemSetAsLoop ( Memset ) ; } MemCall -> eraseFromParent ( ) ;" LLVM,NVPTX,1334,"Predict the next statement of this code snippet: for ( Function :: iterator BI = F . begin ( ) , BE = F . end ( ) ; BI != BE ; ++ BI ) { for ( BasicBlock :: iterator II = BI -> begin ( ) , IE = BI -> end ( ) ; II != IE ; ++ II ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( II ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ; } } else if ( MemIntrinsic * IntrCall = dyn_cast < MemIntrinsic > ( II ) ) { if ( ConstantInt * LenCI = dyn_cast < ConstantInt > ( IntrCall -> getLength ( ) ) ) { if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) {" LLVM,NVPTX,1335,"Predict the next statement of this code snippet: SmallVector < MemIntrinsic * , > MemCalls ; const DataLayout & DL = F . getParent ( ) -> getDataLayout ( ) ; LLVMContext & Context = F . getParent ( ) -> getContext ( ) ; const TargetTransformInfo & TTI = getAnalysis < TargetTransformInfoWrapperPass > ( ) . getTTI ( F ) ; for ( Function :: iterator BI = F . begin ( ) , BE = F . end ( ) ; BI != BE ; ++ BI ) { for ( BasicBlock :: iterator II = BI -> begin ( ) , IE = BI -> end ( ) ; II != IE ; ++ II ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( II ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ;" LLVM,NVPTX,1336,"Predict the next statement of this code snippet: for ( Function :: iterator BI = F . begin ( ) , BE = F . end ( ) ; BI != BE ; ++ BI ) { for ( BasicBlock :: iterator II = BI -> begin ( ) , IE = BI -> end ( ) ; II != IE ; ++ II ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( II ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ; } } else if ( MemIntrinsic * IntrCall = dyn_cast < MemIntrinsic > ( II ) ) { if ( ConstantInt * LenCI = dyn_cast < ConstantInt > ( IntrCall -> getLength ( ) ) ) { if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) { MemCalls . push_back ( IntrCall ) ; } } else { MemCalls . push_back ( IntrCall ) ; } } } } if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { StoreInst * SI = dyn_cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; ConstantInt * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ; if ( ! TTI . useWideIRMemcpyLoopLowering ( ) ) { createMemCpyLoop ( SI , SrcAddr , DstAddr , CopyLen , LI -> getAlignment ( ) , SI -> getAlignment ( ) , LI -> isVolatile ( ) , SI -> isVolatile ( ) ) ; } else { createMemCpyLoopKnownSize ( SI , SrcAddr , DstAddr , CopyLen , LI -> getAlignment ( ) , SI -> getAlignment ( ) , LI -> isVolatile ( ) , SI -> isVolatile ( ) , TTI ) ; } SI -> eraseFromParent ( ) ; LI -> eraseFromParent ( ) ; } for ( MemIntrinsic * MemCall : MemCalls ) { if ( MemCpyInst * Memcpy = dyn_cast < MemCpyInst > ( MemCall ) ) { expandMemCpyAsLoop ( Memcpy , TTI ) ; } else if ( MemMoveInst * Memmove = dyn_cast < MemMoveInst > ( MemCall ) ) { expandMemMoveAsLoop ( Memmove ) ; } else if ( MemSetInst * Memset = dyn_cast < MemSetInst > ( MemCall ) ) {" LLVM,NVPTX,1337,"Predict the next statement of this code snippet: BasicBlock * loopBB = BasicBlock :: Create ( Context , , & F , newBB ) ; origBB -> getTerminator ( ) -> setSuccessor ( , loopBB ) ; IRBuilder < > builder ( origBB , origBB -> getTerminator ( ) ) ; unsigned dstAS = dyn_cast < PointerType > ( dstAddr -> getType ( ) ) -> getAddressSpace ( ) ; dstAddr = builder . CreateBitCast ( dstAddr , PointerType :: get ( val -> getType ( ) , dstAS ) ) ; IRBuilder < > loop ( loopBB ) ; PHINode * ind = loop . CreatePHI ( len -> getType ( ) , ) ; ind -> addIncoming ( ConstantInt :: get ( len -> getType ( ) , ) , origBB ) ; loop . CreateStore ( val , loop . CreateGEP ( dstAddr , ind ) , false ) ; Value * newind = loop . CreateAdd ( ind , ConstantInt :: get ( len -> getType ( ) , ) ) ;" LLVM,NVPTX,1338,"Predict the next statement of this code snippet: Type * indType = len -> getType ( ) ; BasicBlock * origBB = splitAt -> getParent ( ) ; BasicBlock * newBB = splitAt -> getParent ( ) -> splitBasicBlock ( splitAt , ) ; BasicBlock * loopBB = BasicBlock :: Create ( Context , , & F , newBB ) ; origBB -> getTerminator ( ) -> setSuccessor ( , loopBB ) ; IRBuilder < > builder ( origBB , origBB -> getTerminator ( ) ) ; unsigned srcAS = dyn_cast < PointerType > ( srcAddr -> getType ( ) ) -> getAddressSpace ( ) ; unsigned dstAS = dyn_cast < PointerType > ( dstAddr -> getType ( ) ) -> getAddressSpace ( ) ; srcAddr = builder . CreateBitCast ( srcAddr , Type :: getInt8PtrTy ( Context , srcAS ) ) ; dstAddr = builder . CreateBitCast ( dstAddr , Type :: getInt8PtrTy ( Context , dstAS ) ) ; IRBuilder < > loop ( loopBB ) ; PHINode * ind = loop . CreatePHI ( indType , ) ; ind -> addIncoming ( ConstantInt :: get ( indType , ) , origBB ) ; Value * val = loop . CreateLoad ( loop . CreateGEP ( srcAddr , ind ) , srcVolatile ) ; loop . CreateStore ( val , loop . CreateGEP ( dstAddr , ind ) , dstVolatile ) ; Value * newind = loop . CreateAdd ( ind , ConstantInt :: get ( indType , ) ) ; ind -> addIncoming ( newind , loopBB ) ; loop . CreateCondBr ( loop . CreateICmpULT ( newind , len ) , loopBB , newBB ) ;" LLVM,NVPTX,1339,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1340,"Predict the next statement of this code snippet: aggrMemcpys . push_back ( intr ) ; } } else { aggrMemcpys . push_back ( intr ) ; } } else if ( MemSetInst * memsetintr = dyn_cast < MemSetInst > ( II ) ) { Value * len = memsetintr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemsets . push_back ( memsetintr ) ; } } else { aggrMemsets . push_back ( memsetintr ) ; } } } } if ( ( aggrLoads . size ( ) == ) && ( aggrMemcpys . size ( ) == ) && ( aggrMemsets . size ( ) == ) ) return false ; for ( unsigned i = , e = aggrLoads . size ( ) ; i != e ; ++ i ) { LoadInst * load = aggrLoads [ i ] ; StoreInst * store = dyn_cast < StoreInst > ( * load -> user_begin ( ) ) ; Value * srcAddr = load -> getOperand ( ) ; Value * dstAddr = store -> getOperand ( ) ; unsigned numLoads = DL -> getTypeStoreSize ( load -> getType ( ) ) ; Value * len = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , numLoads ) ; convertTransferToLoop ( store , srcAddr , dstAddr , len , load -> isVolatile ( ) , store -> isVolatile ( ) , Context , F ) ; store -> eraseFromParent ( ) ; load -> eraseFromParent ( ) ; } for ( unsigned i = , e = aggrMemcpys . size ( ) ; i != e ; ++ i ) {" LLVM,NVPTX,1341,"Predict the next statement of this code snippet: BasicBlock * loopBB = BasicBlock :: Create ( Context , , & F , newBB ) ; origBB -> getTerminator ( ) -> setSuccessor ( , loopBB ) ; IRBuilder < > builder ( origBB , origBB -> getTerminator ( ) ) ; unsigned srcAS = dyn_cast < PointerType > ( srcAddr -> getType ( ) ) -> getAddressSpace ( ) ; unsigned dstAS = dyn_cast < PointerType > ( dstAddr -> getType ( ) ) -> getAddressSpace ( ) ; srcAddr = builder . CreateBitCast ( srcAddr , Type :: getInt8PtrTy ( Context , srcAS ) ) ; dstAddr = builder . CreateBitCast ( dstAddr , Type :: getInt8PtrTy ( Context , dstAS ) ) ; IRBuilder < > loop ( loopBB ) ; PHINode * ind = loop . CreatePHI ( indType , ) ; ind -> addIncoming ( ConstantInt :: get ( indType , ) , origBB ) ;" LLVM,NVPTX,1342,"Predict the next statement of this code snippet: LLVMContext & Context = F . getParent ( ) -> getContext ( ) ; for ( Function :: iterator BI = F . begin ( ) , BE = F . end ( ) ; BI != BE ; ++ BI ) { for ( BasicBlock :: iterator II = BI -> begin ( ) , IE = BI -> end ( ) ; II != IE ; ++ II ) { if ( LoadInst * load = dyn_cast < LoadInst > ( II ) ) { if ( load -> hasOneUse ( ) == false ) continue ; if ( TD -> getTypeStoreSize ( load -> getType ( ) ) < MaxAggrCopySize ) continue ; User * use = * ( load -> use_begin ( ) ) ; if ( StoreInst * store = dyn_cast < StoreInst > ( use ) ) { if ( store -> getOperand ( ) != load ) continue ; aggrLoads . push_back ( load ) ; } } else if ( MemTransferInst * intr = dyn_cast < MemTransferInst > ( II ) ) { Value * len = intr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemcpys . push_back ( intr ) ; } } else { aggrMemcpys . push_back ( intr ) ; } } else if ( MemSetInst * memsetintr = dyn_cast < MemSetInst > ( II ) ) { Value * len = memsetintr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) {" LLVM,NVPTX,1343,"Predict the next statement of this code snippet: BasicBlock * newBB = splitAt -> getParent ( ) -> splitBasicBlock ( splitAt , ) ; BasicBlock * loopBB = BasicBlock :: Create ( Context , , & F , newBB ) ; origBB -> getTerminator ( ) -> setSuccessor ( , loopBB ) ; IRBuilder < > builder ( origBB , origBB -> getTerminator ( ) ) ;" LLVM,NVPTX,1344,"Predict the next statement of this code snippet: BasicBlock * origBB = splitAt -> getParent ( ) ; BasicBlock * newBB = splitAt -> getParent ( ) -> splitBasicBlock ( splitAt , ) ; BasicBlock * loopBB = BasicBlock :: Create ( Context , , & F , newBB ) ; origBB -> getTerminator ( ) -> setSuccessor ( , loopBB ) ; IRBuilder < > builder ( origBB , origBB -> getTerminator ( ) ) ; unsigned dstAS = cast < PointerType > ( dstAddr -> getType ( ) ) -> getAddressSpace ( ) ; dstAddr = builder . CreateBitCast ( dstAddr , PointerType :: get ( val -> getType ( ) , dstAS ) ) ; IRBuilder < > loop ( loopBB ) ; PHINode * ind = loop . CreatePHI ( len -> getType ( ) , ) ; ind -> addIncoming ( ConstantInt :: get ( len -> getType ( ) , ) , origBB ) ; loop . CreateStore ( val , loop . CreateGEP ( val -> getType ( ) , dstAddr , ind ) , false ) ;" LLVM,NVPTX,1345,"Predict the next statement of this code snippet: PHINode * ind = loop . CreatePHI ( indType , ) ; ind -> addIncoming ( ConstantInt :: get ( indType , ) , origBB ) ; Value * val = loop . CreateLoad ( loop . CreateGEP ( loop . getInt8Ty ( ) , srcAddr , ind ) , srcVolatile ) ; loop . CreateStore ( val , loop . CreateGEP ( loop . getInt8Ty ( ) , dstAddr , ind ) , dstVolatile ) ;" LLVM,NVPTX,1346,"Predict the next statement of this code snippet: aggrLoads . push_back ( load ) ; } } else if ( MemTransferInst * intr = dyn_cast < MemTransferInst > ( II ) ) { Value * len = intr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemcpys . push_back ( intr ) ; } } else { aggrMemcpys . push_back ( intr ) ; } } else if ( MemSetInst * memsetintr = dyn_cast < MemSetInst > ( II ) ) { Value * len = memsetintr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemsets . push_back ( memsetintr ) ; } } else { aggrMemsets . push_back ( memsetintr ) ; } } } } if ( ( aggrLoads . size ( ) == ) && ( aggrMemcpys . size ( ) == ) && ( aggrMemsets . size ( ) == ) ) return false ; for ( LoadInst * load : aggrLoads ) { StoreInst * store = dyn_cast < StoreInst > ( * load -> user_begin ( ) ) ; Value * srcAddr = load -> getOperand ( ) ; Value * dstAddr = store -> getOperand ( ) ; unsigned numLoads = DL . getTypeStoreSize ( load -> getType ( ) ) ; Value * len = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , numLoads ) ; convertTransferToLoop ( store , srcAddr , dstAddr , len , load -> isVolatile ( ) , store -> isVolatile ( ) , Context , F ) ; store -> eraseFromParent ( ) ; load -> eraseFromParent ( ) ; } for ( MemTransferInst * cpy : aggrMemcpys ) { convertTransferToLoop ( cpy , cpy -> getSource ( ) , cpy -> getDest ( ) , cpy -> getLength ( ) , cpy -> isVolatile ( ) , cpy -> isVolatile ( ) , Context , F ) ; cpy -> eraseFromParent ( ) ; } for ( MemSetInst * memsetinst : aggrMemsets ) { Value * len = memsetinst -> getLength ( ) ; Value * val = memsetinst -> getValue ( ) ; convertMemSetToLoop ( memsetinst , memsetinst -> getDest ( ) , len , val , Context , F ) ; memsetinst -> eraseFromParent ( ) ; } return true ;" LLVM,NVPTX,1347,"Predict the next statement of this code snippet: if ( LoadInst * load = dyn_cast < LoadInst > ( II ) ) { if ( load -> hasOneUse ( ) == false ) continue ; if ( TD -> getTypeStoreSize ( load -> getType ( ) ) < MaxAggrCopySize ) continue ; User * use = * ( load -> use_begin ( ) ) ; if ( StoreInst * store = dyn_cast < StoreInst > ( use ) ) { if ( store -> getOperand ( ) != load ) continue ; aggrLoads . push_back ( load ) ; } } else if ( MemTransferInst * intr = dyn_cast < MemTransferInst > ( II ) ) { Value * len = intr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemcpys . push_back ( intr ) ; } } else { aggrMemcpys . push_back ( intr ) ; } } else if ( MemSetInst * memsetintr = dyn_cast < MemSetInst > ( II ) ) { Value * len = memsetintr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemsets . push_back ( memsetintr ) ; } } else { aggrMemsets . push_back ( memsetintr ) ; } } } } if ( ( aggrLoads . size ( ) == ) && ( aggrMemcpys . size ( ) == ) && ( aggrMemsets . size ( ) == ) ) return false ; for ( unsigned i = , e = aggrLoads . size ( ) ; i != e ; ++ i ) { LoadInst * load = aggrLoads [ i ] ; StoreInst * store = dyn_cast < StoreInst > ( * load -> use_begin ( ) ) ; Value * srcAddr = load -> getOperand ( ) ;" LLVM,NVPTX,1348,"Predict the next statement of this code snippet: ++ II ) { if ( LoadInst * load = dyn_cast < LoadInst > ( II ) ) { if ( ! load -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( load -> getType ( ) ) < MaxAggrCopySize ) continue ; User * use = load -> user_back ( ) ; if ( StoreInst * store = dyn_cast < StoreInst > ( use ) ) { if ( store -> getOperand ( ) != load ) continue ; aggrLoads . push_back ( load ) ; } } else if ( MemTransferInst * intr = dyn_cast < MemTransferInst > ( II ) ) { Value * len = intr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemcpys . push_back ( intr ) ; } } else { aggrMemcpys . push_back ( intr ) ; } } else if ( MemSetInst * memsetintr = dyn_cast < MemSetInst > ( II ) ) { Value * len = memsetintr -> getLength ( ) ; if ( ConstantInt * len_int = dyn_cast < ConstantInt > ( len ) ) { if ( len_int -> getZExtValue ( ) >= MaxAggrCopySize ) { aggrMemsets . push_back ( memsetintr ) ; } } else { aggrMemsets . push_back ( memsetintr ) ; } } } } if ( ( aggrLoads . size ( ) == ) && ( aggrMemcpys . size ( ) == ) && ( aggrMemsets . size ( ) == ) ) return false ; for ( unsigned i = , e = aggrLoads . size ( ) ; i != e ; ++ i ) { LoadInst * load = aggrLoads [ i ] ; StoreInst * store = dyn_cast < StoreInst > ( * load -> user_begin ( ) ) ; Value * srcAddr = load -> getOperand ( ) ; Value * dstAddr = store -> getOperand ( ) ; unsigned numLoads = DL . getTypeStoreSize ( load -> getType ( ) ) ; Value * len = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , numLoads ) ;" LLVM,NVPTX,1349,"Predict the next statement of this code snippet: if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) { MemCalls . push_back ( IntrCall ) ; } } else { MemCalls . push_back ( IntrCall ) ; } } } } if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { StoreInst * SI = dyn_cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; Value * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ;" LLVM,NVPTX,1350,"Predict the next statement of this code snippet: LLVMContext & Context = F . getParent ( ) -> getContext ( ) ; const TargetTransformInfo & TTI = getAnalysis < TargetTransformInfoWrapperPass > ( ) . getTTI ( F ) ; for ( Function :: iterator BI = F . begin ( ) , BE = F . end ( ) ; BI != BE ; ++ BI ) { for ( BasicBlock :: iterator II = BI -> begin ( ) , IE = BI -> end ( ) ; II != IE ; ++ II ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( II ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ; } } else if ( MemIntrinsic * IntrCall = dyn_cast < MemIntrinsic > ( II ) ) { if ( ConstantInt * LenCI = dyn_cast < ConstantInt > ( IntrCall -> getLength ( ) ) ) { if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) { MemCalls . push_back ( IntrCall ) ; } } else { MemCalls . push_back ( IntrCall ) ;" LLVM,NVPTX,1351,"Predict the next statement of this code snippet: if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { auto * SI = cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; ConstantInt * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ; createMemCpyLoopKnownSize ( SI , SrcAddr , DstAddr , CopyLen , LI -> getAlign ( ) , SI -> getAlign ( ) , LI -> isVolatile ( ) , SI -> isVolatile ( ) , TTI ) ; SI -> eraseFromParent ( ) ; LI -> eraseFromParent ( ) ; } for ( MemIntrinsic * MemCall : MemCalls ) { if ( MemCpyInst * Memcpy = dyn_cast < MemCpyInst > ( MemCall ) ) { expandMemCpyAsLoop ( Memcpy , TTI ) ; } else if ( MemMoveInst * Memmove = dyn_cast < MemMoveInst > ( MemCall ) ) {" LLVM,NVPTX,1352,"Predict the next statement of this code snippet: SmallVector < LoadInst * , > AggrLoads ; SmallVector < MemIntrinsic * , > MemCalls ; const DataLayout & DL = F . getParent ( ) -> getDataLayout ( ) ; LLVMContext & Context = F . getParent ( ) -> getContext ( ) ; const TargetTransformInfo & TTI = getAnalysis < TargetTransformInfoWrapperPass > ( ) . getTTI ( F ) ; for ( BasicBlock & BB : F ) { for ( Instruction & I : BB ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( & I ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ; } } else if ( MemIntrinsic * IntrCall = dyn_cast < MemIntrinsic > ( & I ) ) { if ( ConstantInt * LenCI = dyn_cast < ConstantInt > ( IntrCall -> getLength ( ) ) ) { if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) { MemCalls . push_back ( IntrCall ) ; } } else { MemCalls . push_back ( IntrCall ) ; } } } } if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { auto * SI = cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; ConstantInt * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ; createMemCpyLoopKnownSize ( SI , SrcAddr , DstAddr , CopyLen , LI -> getAlign ( ) , SI -> getAlign ( ) , LI -> isVolatile ( ) , SI -> isVolatile ( ) , TTI ) ; SI -> eraseFromParent ( ) ; LI -> eraseFromParent ( ) ; } for ( MemIntrinsic * MemCall : MemCalls ) { if ( MemCpyInst * Memcpy = dyn_cast < MemCpyInst > ( MemCall ) ) { expandMemCpyAsLoop ( Memcpy , TTI ) ; } else if ( MemMoveInst * Memmove = dyn_cast < MemMoveInst > ( MemCall ) ) { expandMemMoveAsLoop ( Memmove ) ; } else if ( MemSetInst * Memset = dyn_cast < MemSetInst > ( MemCall ) ) { expandMemSetAsLoop ( Memset ) ; } MemCall -> eraseFromParent ( ) ; }" LLVM,NVPTX,1353,"Predict the next statement of this code snippet: ind -> addIncoming ( ConstantInt :: get ( len -> getType ( ) , ) , origBB ) ; loop . CreateStore ( val , loop . CreateGEP ( val -> getType ( ) , dstAddr , ind ) , false ) ; Value * newind = loop . CreateAdd ( ind , ConstantInt :: get ( len -> getType ( ) , ) ) ; ind -> addIncoming ( newind , loopBB ) ;" LLVM,NVPTX,1354,"Predict the next statement of this code snippet: BasicBlock * origBB = splitAt -> getParent ( ) ; BasicBlock * newBB = splitAt -> getParent ( ) -> splitBasicBlock ( splitAt , ) ; BasicBlock * loopBB = BasicBlock :: Create ( Context , , & F , newBB ) ; origBB -> getTerminator ( ) -> setSuccessor ( , loopBB ) ; IRBuilder < > builder ( origBB , origBB -> getTerminator ( ) ) ; unsigned dstAS = dyn_cast < PointerType > ( dstAddr -> getType ( ) ) -> getAddressSpace ( ) ; dstAddr = builder . CreateBitCast ( dstAddr , PointerType :: get ( val -> getType ( ) , dstAS ) ) ; IRBuilder < > loop ( loopBB ) ; PHINode * ind = loop . CreatePHI ( len -> getType ( ) , ) ; ind -> addIncoming ( ConstantInt :: get ( len -> getType ( ) , ) , origBB ) ; loop . CreateStore ( val , loop . CreateGEP ( val -> getType ( ) , dstAddr , ind ) , false ) ; Value * newind = loop . CreateAdd ( ind , ConstantInt :: get ( len -> getType ( ) , ) ) ; ind -> addIncoming ( newind , loopBB ) ; loop . CreateCondBr ( loop . CreateICmpULT ( newind , len ) , loopBB , newBB ) ;" LLVM,NVPTX,1355,"Predict the next statement of this code snippet: unsigned srcAS = dyn_cast < PointerType > ( srcAddr -> getType ( ) ) -> getAddressSpace ( ) ; unsigned dstAS = dyn_cast < PointerType > ( dstAddr -> getType ( ) ) -> getAddressSpace ( ) ; srcAddr = builder . CreateBitCast ( srcAddr , Type :: getInt8PtrTy ( Context , srcAS ) ) ; dstAddr = builder . CreateBitCast ( dstAddr , Type :: getInt8PtrTy ( Context , dstAS ) ) ; IRBuilder < > loop ( loopBB ) ; PHINode * ind = loop . CreatePHI ( indType , ) ; ind -> addIncoming ( ConstantInt :: get ( indType , ) , origBB ) ; Value * val = loop . CreateLoad ( loop . CreateGEP ( loop . getInt8Ty ( ) , srcAddr , ind ) , srcVolatile ) ; loop . CreateStore ( val , loop . CreateGEP ( loop . getInt8Ty ( ) , dstAddr , ind ) , dstVolatile ) ; Value * newind = loop . CreateAdd ( ind , ConstantInt :: get ( indType , ) ) ;" LLVM,NVPTX,1356,"Predict the next statement of this code snippet: unsigned SrcAS = cast < PointerType > ( SrcAddr -> getType ( ) ) -> getAddressSpace ( ) ; unsigned DstAS = cast < PointerType > ( DstAddr -> getType ( ) ) -> getAddressSpace ( ) ; SrcAddr = Builder . CreateBitCast ( SrcAddr , Builder . getInt8PtrTy ( SrcAS ) ) ; DstAddr = Builder . CreateBitCast ( DstAddr , Builder . getInt8PtrTy ( DstAS ) ) ; IRBuilder < > LoopBuilder ( LoopBB ) ; PHINode * LoopIndex = LoopBuilder . CreatePHI ( TypeOfCopyLen , ) ; LoopIndex -> addIncoming ( ConstantInt :: get ( TypeOfCopyLen , ) , OrigBB ) ; Value * Element = LoopBuilder . CreateLoad ( LoopBuilder . CreateInBoundsGEP ( LoopBuilder . getInt8Ty ( ) , SrcAddr , LoopIndex ) , SrcIsVolatile ) ; LoopBuilder . CreateStore ( Element , LoopBuilder . CreateInBoundsGEP ( LoopBuilder . getInt8Ty ( ) , DstAddr , LoopIndex ) , DstIsVolatile ) ; Value * NewIndex = LoopBuilder . CreateAdd ( LoopIndex , ConstantInt :: get ( TypeOfCopyLen , ) ) ; LoopIndex -> addIncoming ( NewIndex , LoopBB ) ; LoopBuilder . CreateCondBr ( LoopBuilder . CreateICmpULT ( NewIndex , CopyLen ) , LoopBB , NewBB ) ;" LLVM,NVPTX,1357,"Predict the next statement of this code snippet: BasicBlock * ExitBB = ConvertedInst -> getParent ( ) ; ExitBB -> setName ( ) ; ICmpInst * CompareN = new ICmpInst ( OrigBB -> getTerminator ( ) , ICmpInst :: ICMP_EQ , CopyLen , ConstantInt :: get ( TypeOfCopyLen , ) , ) ; BasicBlock * LoopBB = BasicBlock :: Create ( Context , , & F , CopyForwardBB ) ; IRBuilder < > LoopBuilder ( LoopBB ) ; PHINode * LoopPhi = LoopBuilder . CreatePHI ( TypeOfCopyLen , ) ; Value * IndexPtr = LoopBuilder . CreateSub ( LoopPhi , ConstantInt :: get ( TypeOfCopyLen , ) , ) ; Value * Element = LoopBuilder . CreateLoad ( LoopBuilder . CreateInBoundsGEP ( SrcAddr , IndexPtr ) , ) ; LoopBuilder . CreateStore ( Element , LoopBuilder . CreateInBoundsGEP ( DstAddr , IndexPtr ) ) ; LoopBuilder . CreateCondBr ( LoopBuilder . CreateICmpEQ ( IndexPtr , ConstantInt :: get ( TypeOfCopyLen , ) ) , ExitBB , LoopBB ) ; LoopPhi -> addIncoming ( IndexPtr , LoopBB ) ; LoopPhi -> addIncoming ( CopyLen , CopyBackwardsBB ) ; BranchInst :: Create ( ExitBB , LoopBB , CompareN , ThenTerm ) ; ThenTerm -> eraseFromParent ( ) ; BasicBlock * FwdLoopBB = BasicBlock :: Create ( Context , , & F , ExitBB ) ; IRBuilder < > FwdLoopBuilder ( FwdLoopBB ) ;" LLVM,NVPTX,1358,"Predict the next statement of this code snippet: BasicBlock * NewBB = ConvertedInst -> getParent ( ) -> splitBasicBlock ( ConvertedInst , ) ; BasicBlock * LoopBB = BasicBlock :: Create ( Context , , & F , NewBB ) ; OrigBB -> getTerminator ( ) -> setSuccessor ( , LoopBB ) ; IRBuilder < > Builder ( OrigBB , OrigBB -> getTerminator ( ) ) ; unsigned dstAS = cast < PointerType > ( DstAddr -> getType ( ) ) -> getAddressSpace ( ) ; DstAddr = Builder . CreateBitCast ( DstAddr , PointerType :: get ( SetValue -> getType ( ) , dstAS ) ) ; IRBuilder < > LoopBuilder ( LoopBB ) ;" LLVM,NVPTX,1359,"Predict the next statement of this code snippet: return new LowerAggrCopies ( ) ;" LLVM,NVPTX,1360,"Predict the next statement of this code snippet: const char * getPassName ( ) const override { return ;" LLVM,NVPTX,1361,"Predict the next statement of this code snippet: const char * getPassName ( ) const override {" LLVM,NVPTX,1362,"Predict the next statement of this code snippet: LowerAggrCopies ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1363,"Predict the next statement of this code snippet: LowerAggrCopies ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1364,"Predict the next statement of this code snippet: } if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { StoreInst * SI = dyn_cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; Value * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ; convertMemCpyToLoop ( SI , SrcAddr , DstAddr , CopyLen , LI -> isVolatile ( ) , SI -> isVolatile ( ) , Context , F ) ; SI -> eraseFromParent ( ) ; LI -> eraseFromParent ( ) ; } for ( MemIntrinsic * MemCall : MemCalls ) { if ( MemCpyInst * Memcpy = dyn_cast < MemCpyInst > ( MemCall ) ) { convertMemCpyToLoop ( Memcpy , Memcpy -> getRawSource ( ) , Memcpy -> getRawDest ( ) , Memcpy -> getLength ( ) , Memcpy -> isVolatile ( ) , Memcpy -> isVolatile ( ) , Context , F ) ;" LLVM,NVPTX,1365,"Predict the next statement of this code snippet: bool LowerAggrCopies :: runOnFunction ( Function & F ) { SmallVector < LoadInst * , > AggrLoads ; SmallVector < MemIntrinsic * , > MemCalls ; const DataLayout & DL = F . getParent ( ) -> getDataLayout ( ) ; LLVMContext & Context = F . getParent ( ) -> getContext ( ) ; for ( Function :: iterator BI = F . begin ( ) , BE = F . end ( ) ; BI != BE ; ++ BI ) { for ( BasicBlock :: iterator II = BI -> begin ( ) , IE = BI -> end ( ) ; II != IE ; ++ II ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( II ) ) { if ( ! LI -> hasOneUse ( ) ) continue ; if ( DL . getTypeStoreSize ( LI -> getType ( ) ) < MaxAggrCopySize ) continue ; if ( StoreInst * SI = dyn_cast < StoreInst > ( LI -> user_back ( ) ) ) { if ( SI -> getOperand ( ) != LI ) continue ; AggrLoads . push_back ( LI ) ; } } else if ( MemIntrinsic * IntrCall = dyn_cast < MemIntrinsic > ( II ) ) { if ( ConstantInt * LenCI = dyn_cast < ConstantInt > ( IntrCall -> getLength ( ) ) ) { if ( LenCI -> getZExtValue ( ) >= MaxAggrCopySize ) { MemCalls . push_back ( IntrCall ) ; } } else { MemCalls . push_back ( IntrCall ) ; } } } } if ( AggrLoads . size ( ) == && MemCalls . size ( ) == ) { return false ; } for ( LoadInst * LI : AggrLoads ) { StoreInst * SI = dyn_cast < StoreInst > ( * LI -> user_begin ( ) ) ; Value * SrcAddr = LI -> getOperand ( ) ; Value * DstAddr = SI -> getOperand ( ) ; unsigned NumLoads = DL . getTypeStoreSize ( LI -> getType ( ) ) ; Value * CopyLen = ConstantInt :: get ( Type :: getInt32Ty ( Context ) , NumLoads ) ; convertMemCpyToLoop ( SI , SrcAddr , DstAddr , CopyLen , LI -> isVolatile ( ) , SI -> isVolatile ( ) , Context , F ) ; SI -> eraseFromParent ( ) ; LI -> eraseFromParent ( ) ; } for ( MemIntrinsic * MemCall : MemCalls ) {" LLVM,NVPTX,1366,"Predict the next statement of this code snippet: BasicBlockPass * llvm :: createLowerAllocaPass ( ) { return new LowerAlloca ( ) ;" LLVM,NVPTX,1367,"Predict the next statement of this code snippet: BasicBlockPass * llvm :: createLowerAllocaPass ( ) {" LLVM,NVPTX,1368,"Predict the next statement of this code snippet: LowerAlloca ( ) : BasicBlockPass ( ID ) {" LLVM,NVPTX,1369,"Predict the next statement of this code snippet: LowerAlloca ( ) : BasicBlockPass ( ID ) {" LLVM,NVPTX,1370,"Predict the next statement of this code snippet: NewASCToGeneric -> insertAfter ( NewASCToLocal ) ; for ( Value :: use_iterator UI = allocaInst -> use_begin ( ) , UE = allocaInst -> use_end ( ) ; UI != UE ; ) { const auto & AllocaUse = * UI ++ ; auto LI = dyn_cast < LoadInst > ( AllocaUse . getUser ( ) ) ; if ( LI && LI -> getPointerOperand ( ) == allocaInst && ! LI -> isVolatile ( ) ) { LI -> setOperand ( LI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto SI = dyn_cast < StoreInst > ( AllocaUse . getUser ( ) ) ; if ( SI && SI -> getPointerOperand ( ) == allocaInst && ! SI -> isVolatile ( ) ) { SI -> setOperand ( SI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto GI = dyn_cast < GetElementPtrInst > ( AllocaUse . getUser ( ) ) ; if ( GI && GI -> getPointerOperand ( ) == allocaInst ) { GI -> setOperand ( GI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto BI = dyn_cast < BitCastInst > ( AllocaUse . getUser ( ) ) ; if ( BI && BI -> getOperand ( ) == allocaInst ) { BI -> setOperand ( , NewASCToGeneric ) ;" LLVM,NVPTX,1371,"Predict the next statement of this code snippet: UI != UE ; ) { const auto & AllocaUse = * UI ++ ; auto LI = dyn_cast < LoadInst > ( AllocaUse . getUser ( ) ) ; if ( LI && LI -> getPointerOperand ( ) == allocaInst && ! LI -> isVolatile ( ) ) { LI -> setOperand ( LI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto SI = dyn_cast < StoreInst > ( AllocaUse . getUser ( ) ) ; if ( SI && SI -> getPointerOperand ( ) == allocaInst && ! SI -> isVolatile ( ) ) { SI -> setOperand ( SI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ;" LLVM,NVPTX,1372,"Predict the next statement of this code snippet: return new LowerAlloca ( ) ;" LLVM,NVPTX,1373,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1374,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1375,"Predict the next statement of this code snippet: LowerAlloca ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1376,"Predict the next statement of this code snippet: LowerAlloca ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1377,"Predict the next statement of this code snippet: bool Changed = false ; for ( auto & BB : F ) for ( auto & I : BB ) { if ( auto allocaInst = dyn_cast < AllocaInst > ( & I ) ) { Changed = true ; auto ETy = cast < PointerType > ( allocaInst -> getType ( ) ) -> getElementType ( ) ; auto LocalAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_LOCAL ) ; auto NewASCToLocal = new AddrSpaceCastInst ( allocaInst , LocalAddrTy , ) ; auto GenericAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_GENERIC ) ; auto NewASCToGeneric = new AddrSpaceCastInst ( NewASCToLocal , GenericAddrTy , ) ; NewASCToLocal -> insertAfter ( allocaInst ) ; NewASCToGeneric -> insertAfter ( NewASCToLocal ) ; for ( Value :: use_iterator UI = allocaInst -> use_begin ( ) , UE = allocaInst -> use_end ( ) ; UI != UE ; ) { const auto & AllocaUse = * UI ++ ; auto LI = dyn_cast < LoadInst > ( AllocaUse . getUser ( ) ) ; if ( LI && LI -> getPointerOperand ( ) == allocaInst && ! LI -> isVolatile ( ) ) { LI -> setOperand ( LI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto SI = dyn_cast < StoreInst > ( AllocaUse . getUser ( ) ) ; if ( SI && SI -> getPointerOperand ( ) == allocaInst && ! SI -> isVolatile ( ) ) { SI -> setOperand ( SI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto GI = dyn_cast < GetElementPtrInst > ( AllocaUse . getUser ( ) ) ; if ( GI && GI -> getPointerOperand ( ) == allocaInst ) { GI -> setOperand ( GI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto BI = dyn_cast < BitCastInst > ( AllocaUse . getUser ( ) ) ; if ( BI && BI -> getOperand ( ) == allocaInst ) {" LLVM,NVPTX,1378,"Predict the next statement of this code snippet: UI != UE ; ) { const auto & AllocaUse = * UI ++ ; auto LI = dyn_cast < LoadInst > ( AllocaUse . getUser ( ) ) ; if ( LI && LI -> getPointerOperand ( ) == allocaInst && ! LI -> isVolatile ( ) ) { LI -> setOperand ( LI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto SI = dyn_cast < StoreInst > ( AllocaUse . getUser ( ) ) ; if ( SI && SI -> getPointerOperand ( ) == allocaInst && ! SI -> isVolatile ( ) ) { SI -> setOperand ( SI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto GI = dyn_cast < GetElementPtrInst > ( AllocaUse . getUser ( ) ) ; if ( GI && GI -> getPointerOperand ( ) == allocaInst ) { GI -> setOperand ( GI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ;" LLVM,NVPTX,1379,"Predict the next statement of this code snippet: if ( skipBasicBlock ( BB ) ) return false ; bool Changed = false ; for ( auto & I : BB ) { if ( auto allocaInst = dyn_cast < AllocaInst > ( & I ) ) { Changed = true ; auto PTy = dyn_cast < PointerType > ( allocaInst -> getType ( ) ) ; auto ETy = PTy -> getElementType ( ) ; auto LocalAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_LOCAL ) ; auto NewASCToLocal = new AddrSpaceCastInst ( allocaInst , LocalAddrTy , ) ; auto GenericAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_GENERIC ) ; auto NewASCToGeneric = new AddrSpaceCastInst ( NewASCToLocal , GenericAddrTy , ) ; NewASCToLocal -> insertAfter ( allocaInst ) ; NewASCToGeneric -> insertAfter ( NewASCToLocal ) ; for ( Value :: use_iterator UI = allocaInst -> use_begin ( ) , UE = allocaInst -> use_end ( ) ; UI != UE ; ) { const auto & AllocaUse = * UI ++ ; auto LI = dyn_cast < LoadInst > ( AllocaUse . getUser ( ) ) ; if ( LI && LI -> getPointerOperand ( ) == allocaInst && ! LI -> isVolatile ( ) ) { LI -> setOperand ( LI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto SI = dyn_cast < StoreInst > ( AllocaUse . getUser ( ) ) ; if ( SI && SI -> getPointerOperand ( ) == allocaInst && ! SI -> isVolatile ( ) ) { SI -> setOperand ( SI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; }" LLVM,NVPTX,1380,"Predict the next statement of this code snippet: Changed = true ; auto ETy = allocaInst -> getAllocatedType ( ) ; auto LocalAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_LOCAL ) ; auto NewASCToLocal = new AddrSpaceCastInst ( allocaInst , LocalAddrTy , ) ; auto GenericAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_GENERIC ) ; auto NewASCToGeneric = new AddrSpaceCastInst ( NewASCToLocal , GenericAddrTy , ) ; NewASCToLocal -> insertAfter ( allocaInst ) ; NewASCToGeneric -> insertAfter ( NewASCToLocal ) ; for ( Use & AllocaUse : llvm :: make_early_inc_range ( allocaInst -> uses ( ) ) ) { auto LI = dyn_cast < LoadInst > ( AllocaUse . getUser ( ) ) ; if ( LI && LI -> getPointerOperand ( ) == allocaInst && ! LI -> isVolatile ( ) ) { LI -> setOperand ( LI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto SI = dyn_cast < StoreInst > ( AllocaUse . getUser ( ) ) ; if ( SI && SI -> getPointerOperand ( ) == allocaInst && ! SI -> isVolatile ( ) ) { SI -> setOperand ( SI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto GI = dyn_cast < GetElementPtrInst > ( AllocaUse . getUser ( ) ) ; if ( GI && GI -> getPointerOperand ( ) == allocaInst ) { GI -> setOperand ( GI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto BI = dyn_cast < BitCastInst > ( AllocaUse . getUser ( ) ) ; if ( BI && BI -> getOperand ( ) == allocaInst ) { BI -> setOperand ( , NewASCToGeneric ) ;" LLVM,NVPTX,1381,"Predict the next statement of this code snippet: if ( skipFunction ( F ) ) return false ; bool Changed = false ; for ( auto & BB : F ) for ( auto & I : BB ) { if ( auto allocaInst = dyn_cast < AllocaInst > ( & I ) ) { Changed = true ; auto ETy = allocaInst -> getAllocatedType ( ) ; auto LocalAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_LOCAL ) ; auto NewASCToLocal = new AddrSpaceCastInst ( allocaInst , LocalAddrTy , ) ; auto GenericAddrTy = PointerType :: get ( ETy , ADDRESS_SPACE_GENERIC ) ; auto NewASCToGeneric = new AddrSpaceCastInst ( NewASCToLocal , GenericAddrTy , ) ; NewASCToLocal -> insertAfter ( allocaInst ) ; NewASCToGeneric -> insertAfter ( NewASCToLocal ) ; for ( Value :: use_iterator UI = allocaInst -> use_begin ( ) , UE = allocaInst -> use_end ( ) ; UI != UE ; ) { const auto & AllocaUse = * UI ++ ; auto LI = dyn_cast < LoadInst > ( AllocaUse . getUser ( ) ) ; if ( LI && LI -> getPointerOperand ( ) == allocaInst && ! LI -> isVolatile ( ) ) { LI -> setOperand ( LI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto SI = dyn_cast < StoreInst > ( AllocaUse . getUser ( ) ) ; if ( SI && SI -> getPointerOperand ( ) == allocaInst && ! SI -> isVolatile ( ) ) { SI -> setOperand ( SI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto GI = dyn_cast < GetElementPtrInst > ( AllocaUse . getUser ( ) ) ; if ( GI && GI -> getPointerOperand ( ) == allocaInst ) { GI -> setOperand ( GI -> getPointerOperandIndex ( ) , NewASCToGeneric ) ; continue ; } auto BI = dyn_cast < BitCastInst > ( AllocaUse . getUser ( ) ) ;" LLVM,NVPTX,1382,"Predict the next statement of this code snippet: static void convertToParamAS ( Value * OldUser , Value * Param ) { Instruction * I = dyn_cast < Instruction > ( OldUser ) ; assert ( I && ) ; struct IP { Instruction * OldInstruction ; Value * NewParam ; } ; SmallVector < IP > ItemsToConvert = { { I , Param } } ; SmallVector < Instruction * > InstructionsToDelete ; auto CloneInstInParamAS = [ ] ( const IP & I ) -> Value * { if ( auto * LI = dyn_cast < LoadInst > ( I . OldInstruction ) ) { LI -> setOperand ( , I . NewParam ) ; return LI ; } if ( auto * GEP = dyn_cast < GetElementPtrInst > ( I . OldInstruction ) ) { SmallVector < Value * , > Indices ( GEP -> indices ( ) ) ; auto * NewGEP = GetElementPtrInst :: Create ( GEP -> getSourceElementType ( ) , I . NewParam , Indices , GEP -> getName ( ) , GEP ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; return NewGEP ; } if ( auto * BC = dyn_cast < BitCastInst > ( I . OldInstruction ) ) { auto * NewBCType = PointerType :: getWithSamePointeeType ( cast < PointerType > ( BC -> getType ( ) ) , ADDRESS_SPACE_PARAM ) ; return BitCastInst :: Create ( BC -> getOpcode ( ) , I . NewParam , NewBCType , BC -> getName ( ) , BC ) ; } if ( auto * ASC = dyn_cast < AddrSpaceCastInst > ( I . OldInstruction ) ) { assert ( ASC -> getDestAddressSpace ( ) == ADDRESS_SPACE_PARAM ) ; ( void ) ASC ; return I . NewParam ; } llvm_unreachable ( ) ; } ; while ( ! ItemsToConvert . empty ( ) ) { IP I = ItemsToConvert . pop_back_val ( ) ; Value * NewInst = CloneInstInParamAS ( I ) ; if ( NewInst && NewInst != I . OldInstruction ) { llvm :: for_each ( I . OldInstruction -> users ( ) , [ NewInst , & ItemsToConvert ] ( Value * V ) { ItemsToConvert . push_back ( { cast < Instruction > ( V ) , NewInst } ) ;" LLVM,NVPTX,1383,"Predict the next statement of this code snippet: FunctionPass * llvm :: createLowerArgsPass ( const TargetMachine * TM ) { return new LowerArgs ( TM ) ;" LLVM,NVPTX,1384,"Predict the next statement of this code snippet: return new LowerArgs ( TM ) ;" LLVM,NVPTX,1385,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,NVPTX,1386,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,NVPTX,1387,"Predict the next statement of this code snippet: SmallVector < Value * , > ValuesToCheck = { Start } ; auto IsALoadChainInstr = [ ] ( Value * V ) -> bool { if ( isa < GetElementPtrInst > ( V ) || isa < BitCastInst > ( V ) || isa < LoadInst > ( V ) ) return true ; if ( auto * ASC = dyn_cast < AddrSpaceCastInst > ( V ) ) { if ( ASC -> getDestAddressSpace ( ) == ADDRESS_SPACE_PARAM ) return true ; } return false ; } ; while ( ! ValuesToCheck . empty ( ) ) { Value * V = ValuesToCheck . pop_back_val ( ) ; if ( ! IsALoadChainInstr ( V ) ) { LLVM_DEBUG ( dbgs ( ) << << * Arg << << * V << ) ; ( void ) Arg ; return false ; } if ( ! isa < LoadInst > ( V ) ) llvm :: append_range ( ValuesToCheck , V -> users ( ) ) ; }" LLVM,NVPTX,1388,"Predict the next statement of this code snippet: InsertPt = ++ cast < Instruction > ( Ptr ) -> getIterator ( ) ; assert ( InsertPt != InsertPt -> getParent ( ) -> end ( ) && ) ; } Instruction * PtrInGlobal = new AddrSpaceCastInst ( Ptr , PointerType :: getWithSamePointeeType ( cast < PointerType > ( Ptr -> getType ( ) ) , ADDRESS_SPACE_GLOBAL ) , Ptr -> getName ( ) , & * InsertPt ) ;" LLVM,NVPTX,1389,"Predict the next statement of this code snippet: BasicBlock :: iterator InsertPt ; if ( Argument * Arg = dyn_cast < Argument > ( Ptr ) ) { InsertPt = Arg -> getParent ( ) -> getEntryBlock ( ) . begin ( ) ; } else { InsertPt = ++ cast < Instruction > ( Ptr ) -> getIterator ( ) ; assert ( InsertPt != InsertPt -> getParent ( ) -> end ( ) && ) ; } Instruction * PtrInGlobal = new AddrSpaceCastInst ( Ptr , PointerType :: getWithSamePointeeType ( cast < PointerType > ( Ptr -> getType ( ) ) , ADDRESS_SPACE_GLOBAL ) , Ptr -> getName ( ) , & * InsertPt ) ; Value * PtrInGeneric = new AddrSpaceCastInst ( PtrInGlobal , Ptr -> getType ( ) , Ptr -> getName ( ) , & * InsertPt ) ; Ptr -> replaceAllUsesWith ( PtrInGeneric ) ; PtrInGlobal -> setOperand ( , Ptr ) ;" LLVM,NVPTX,1390,"Predict the next statement of this code snippet: LowerArgs ( const TargetMachine * TM = nullptr ) : FunctionPass ( ID ) , TM ( TM ) {" LLVM,NVPTX,1391,"Predict the next statement of this code snippet: LowerArgs ( const TargetMachine * TM = nullptr ) : FunctionPass ( ID ) , TM ( TM ) {" LLVM,NVPTX,1392,"Predict the next statement of this code snippet: for ( Argument & Arg : F . args ( ) ) if ( Arg . getType ( ) -> isPointerTy ( ) && Arg . hasByValAttr ( ) ) handleByValParam ( & Arg ) ; return true ;" LLVM,NVPTX,1393,"Predict the next statement of this code snippet: bool LowerArgs :: runOnFunction ( Function & F ) { return isKernelFunction ( F ) ? runOnKernelFunction ( F ) : runOnDeviceFunction ( F ) ;" LLVM,NVPTX,1394,"Predict the next statement of this code snippet: return isKernelFunction ( F ) ? runOnKernelFunction ( F ) : runOnDeviceFunction ( F ) ;" LLVM,NVPTX,1395,"Predict the next statement of this code snippet: bool LowerArgs :: runOnKernelFunction ( Function & F ) { if ( TM && TM -> getDrvInterface ( ) == ) { for ( auto & B : F ) { for ( auto & I : B ) { if ( LoadInst * LI = dyn_cast < LoadInst > ( & I ) ) { if ( LI -> getType ( ) -> isPointerTy ( ) ) { Value * UO = getUnderlyingObject ( LI -> getPointerOperand ( ) ) ; if ( Argument * Arg = dyn_cast < Argument > ( UO ) ) { if ( Arg -> hasByValAttr ( ) ) { markPointerAsGlobal ( LI ) ;" LLVM,NVPTX,1396,"Predict the next statement of this code snippet: AllocaInst * AllocA = new AllocaInst ( StructType , AS , Arg -> getName ( ) , FirstInst ) ; AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) ) ) ; Arg -> replaceAllUsesWith ( AllocA ) ; Value * ArgInParam = new AddrSpaceCastInst ( Arg , PointerType :: get ( StructType , ADDRESS_SPACE_PARAM ) , Arg -> getName ( ) , FirstInst ) ;" LLVM,NVPTX,1397,"Predict the next statement of this code snippet: void LowerArgs :: handleByValParam ( Argument * Arg ) { Function * Func = Arg -> getParent ( ) ; Instruction * FirstInst = & ( Func -> getEntryBlock ( ) . front ( ) ) ; PointerType * PType = dyn_cast < PointerType > ( Arg -> getType ( ) ) ;" LLVM,NVPTX,1398,"Predict the next statement of this code snippet: AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) + ) ) ; Arg -> replaceAllUsesWith ( AllocA ) ; Value * ArgInParam = new AddrSpaceCastInst ( Arg , PointerType :: get ( StructType , ADDRESS_SPACE_PARAM ) , Arg -> getName ( ) , FirstInst ) ;" LLVM,NVPTX,1399,"Predict the next statement of this code snippet: void LowerArgs :: handleByValParam ( Argument * Arg ) { Function * Func = Arg -> getParent ( ) ; Instruction * FirstInst = & ( Func -> getEntryBlock ( ) . front ( ) ) ; PointerType * PType = dyn_cast < PointerType > ( Arg -> getType ( ) ) ; assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ; unsigned AS = Func -> getParent ( ) -> getDataLayout ( ) . getAllocaAddrSpace ( ) ; AllocaInst * AllocA = new AllocaInst ( StructType , AS , Arg -> getName ( ) , FirstInst ) ; AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) + ) ) ; Arg -> replaceAllUsesWith ( AllocA ) ; Value * ArgInParam = new AddrSpaceCastInst ( Arg , PointerType :: get ( StructType , ADDRESS_SPACE_PARAM ) , Arg -> getName ( ) , FirstInst ) ;" LLVM,NVPTX,1400,"Predict the next statement of this code snippet: auto IsALoadChain = [ & ] ( Value * Start ) { SmallVector < Value * , > ValuesToCheck = { Start } ; auto IsALoadChainInstr = [ ] ( Value * V ) -> bool { if ( isa < GetElementPtrInst > ( V ) || isa < BitCastInst > ( V ) || isa < LoadInst > ( V ) ) return true ; if ( auto * ASC = dyn_cast < AddrSpaceCastInst > ( V ) ) { if ( ASC -> getDestAddressSpace ( ) == ADDRESS_SPACE_PARAM ) return true ; } return false ; } ; while ( ! ValuesToCheck . empty ( ) ) { Value * V = ValuesToCheck . pop_back_val ( ) ; if ( ! IsALoadChainInstr ( V ) ) { LLVM_DEBUG ( dbgs ( ) << << * Arg << << * V << ) ; ( void ) Arg ;" LLVM,NVPTX,1401,"Predict the next statement of this code snippet: auto IsALoadChainInstr = [ ] ( Value * V ) -> bool { if ( isa < GetElementPtrInst > ( V ) || isa < BitCastInst > ( V ) || isa < LoadInst > ( V ) ) return true ; if ( auto * ASC = dyn_cast < AddrSpaceCastInst > ( V ) ) { if ( ASC -> getDestAddressSpace ( ) == ADDRESS_SPACE_PARAM ) return true ; } return false ; } ; while ( ! ValuesToCheck . empty ( ) ) { Value * V = ValuesToCheck . pop_back_val ( ) ; if ( ! IsALoadChainInstr ( V ) ) { LLVM_DEBUG ( dbgs ( ) << << * Arg << << * V << ) ; ( void ) Arg ; return false ; } if ( ! isa < LoadInst > ( V ) ) llvm :: append_range ( ValuesToCheck , V -> users ( ) ) ; } return true ; } ; if ( llvm :: all_of ( Arg -> users ( ) , IsALoadChain ) ) { SmallVector < User * , > UsersToUpdate ( Arg -> users ( ) ) ; Value * ArgInParamAS = new AddrSpaceCastInst ( Arg , PointerType :: get ( StructType , ADDRESS_SPACE_PARAM ) , Arg -> getName ( ) , FirstInst ) ; llvm :: for_each ( UsersToUpdate , [ ArgInParamAS ] ( Value * V ) { convertToParamAS ( V , ArgInParamAS ) ; } ) ; LLVM_DEBUG ( dbgs ( ) << << * Arg << ) ; return ; } const DataLayout & DL = Func -> getParent ( ) -> getDataLayout ( ) ; unsigned AS = DL . getAllocaAddrSpace ( ) ;" LLVM,NVPTX,1402,"Predict the next statement of this code snippet: Function * Func = Arg -> getParent ( ) ; Instruction * FirstInst = & ( Func -> getEntryBlock ( ) . front ( ) ) ; PointerType * PType = dyn_cast < PointerType > ( Arg -> getType ( ) ) ; assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ; const DataLayout & DL = Func -> getParent ( ) -> getDataLayout ( ) ; unsigned AS = DL . getAllocaAddrSpace ( ) ; AllocaInst * AllocA = new AllocaInst ( StructType , AS , Arg -> getName ( ) , FirstInst ) ;" LLVM,NVPTX,1403,"Predict the next statement of this code snippet: if ( LoadInst * LI = dyn_cast < LoadInst > ( & I ) ) { if ( LI -> getType ( ) -> isPointerTy ( ) ) { Value * UO = getUnderlyingObject ( LI -> getPointerOperand ( ) ) ; if ( Argument * Arg = dyn_cast < Argument > ( UO ) ) { if ( Arg -> hasByValAttr ( ) ) { markPointerAsGlobal ( LI ) ; } } } } } } } for ( Argument & Arg : F . args ( ) ) {" LLVM,NVPTX,1404,"Predict the next statement of this code snippet: for ( Argument & Arg : F . args ( ) ) { if ( Arg . getType ( ) -> isPointerTy ( ) ) { if ( Arg . hasByValAttr ( ) ) handleByValParam ( & Arg ) ; else if ( TM && TM -> getDrvInterface ( ) == ) markPointerAsGlobal ( & Arg ) ; } }" LLVM,NVPTX,1405,"Predict the next statement of this code snippet: Type * StructType = PType -> getElementType ( ) ; unsigned AS = Func -> getParent ( ) -> getDataLayout ( ) . getAllocaAddrSpace ( ) ; AllocaInst * AllocA = new AllocaInst ( StructType , AS , Arg -> getName ( ) , FirstInst ) ; AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) ) ) ; Arg -> replaceAllUsesWith ( AllocA ) ;" LLVM,NVPTX,1406,"Predict the next statement of this code snippet: void LowerArgs :: handleByValParam ( Argument * Arg ) { Function * Func = Arg -> getParent ( ) ; Instruction * FirstInst = & ( Func -> getEntryBlock ( ) . front ( ) ) ; PointerType * PType = dyn_cast < PointerType > ( Arg -> getType ( ) ) ; assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ;" LLVM,NVPTX,1407,"Predict the next statement of this code snippet: Function * Func = Arg -> getParent ( ) ; Instruction * FirstInst = & ( Func -> getEntryBlock ( ) . front ( ) ) ; PointerType * PType = dyn_cast < PointerType > ( Arg -> getType ( ) ) ; assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ; const DataLayout & DL = Func -> getParent ( ) -> getDataLayout ( ) ;" LLVM,NVPTX,1408,"Predict the next statement of this code snippet: if ( auto * GEP = dyn_cast < GetElementPtrInst > ( I . OldInstruction ) ) { SmallVector < Value * , > Indices ( GEP -> indices ( ) ) ; auto * NewGEP = GetElementPtrInst :: Create ( nullptr , I . NewParam , Indices , GEP -> getName ( ) , GEP ) ; NewGEP -> setIsInBounds ( GEP -> isInBounds ( ) ) ; return NewGEP ; } if ( auto * BC = dyn_cast < BitCastInst > ( I . OldInstruction ) ) { auto * NewBCType = BC -> getType ( ) -> getPointerElementType ( ) -> getPointerTo ( ADDRESS_SPACE_PARAM ) ; return BitCastInst :: Create ( BC -> getOpcode ( ) , I . NewParam , NewBCType , BC -> getName ( ) , BC ) ; } if ( auto * ASC = dyn_cast < AddrSpaceCastInst > ( I . OldInstruction ) ) { assert ( ASC -> getDestAddressSpace ( ) == ADDRESS_SPACE_PARAM ) ; ( void ) ASC ; return I . NewParam ; } llvm_unreachable ( ) ; } ; while ( ! ItemsToConvert . empty ( ) ) { IP I = ItemsToConvert . pop_back_val ( ) ; Value * NewInst = CloneInstInParamAS ( I ) ; if ( NewInst && NewInst != I . OldInstruction ) { llvm :: for_each ( I . OldInstruction -> users ( ) , [ NewInst , & ItemsToConvert ] ( Value * V ) { ItemsToConvert . push_back ( { cast < Instruction > ( V ) , NewInst } ) ; } ) ; InstructionsToDelete . push_back ( I . OldInstruction ) ; } }" LLVM,NVPTX,1409,"Predict the next statement of this code snippet: const char * getPassName ( ) const override { return ;" LLVM,NVPTX,1410,"Predict the next statement of this code snippet: const char * getPassName ( ) const override { return ;" LLVM,NVPTX,1411,"Predict the next statement of this code snippet: assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ; AllocaInst * AllocA = new AllocaInst ( StructType , Arg -> getName ( ) , FirstInst ) ; AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) + ) ) ;" LLVM,NVPTX,1412,"Predict the next statement of this code snippet: Instruction * FirstInst = & ( Func -> getEntryBlock ( ) . front ( ) ) ; PointerType * PType = dyn_cast < PointerType > ( Arg -> getType ( ) ) ; assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ; AllocaInst * AllocA = new AllocaInst ( StructType , Arg -> getName ( ) , FirstInst ) ; AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) + ) ) ; Arg -> replaceAllUsesWith ( AllocA ) ; Value * ArgInParam = new AddrSpaceCastInst ( Arg , PointerType :: get ( StructType , ADDRESS_SPACE_PARAM ) , Arg -> getName ( ) , FirstInst ) ; LoadInst * LI = new LoadInst ( ArgInParam , Arg -> getName ( ) , FirstInst ) ; new StoreInst ( LI , AllocA , FirstInst ) ;" LLVM,NVPTX,1413,"Predict the next statement of this code snippet: void LowerArgs :: markPointerAsGlobal ( Value * Ptr ) { if ( Ptr -> getType ( ) -> getPointerAddressSpace ( ) == ADDRESS_SPACE_GLOBAL ) return ; BasicBlock :: iterator InsertPt ; if ( Argument * Arg = dyn_cast < Argument > ( Ptr ) ) { InsertPt = Arg -> getParent ( ) -> getEntryBlock ( ) . begin ( ) ; } else { InsertPt = ++ cast < Instruction > ( Ptr ) -> getIterator ( ) ; assert ( InsertPt != InsertPt -> getParent ( ) -> end ( ) && ) ; } Instruction * PtrInGlobal = new AddrSpaceCastInst ( Ptr , PointerType :: get ( Ptr -> getType ( ) -> getPointerElementType ( ) , ADDRESS_SPACE_GLOBAL ) , Ptr -> getName ( ) , & * InsertPt ) ; Value * PtrInGeneric = new AddrSpaceCastInst ( PtrInGlobal , Ptr -> getType ( ) , Ptr -> getName ( ) , & * InsertPt ) ; Ptr -> replaceAllUsesWith ( PtrInGeneric ) ; PtrInGlobal -> setOperand ( , Ptr ) ;" LLVM,NVPTX,1414,"Predict the next statement of this code snippet: InsertPt = ++ cast < Instruction > ( Ptr ) -> getIterator ( ) ; assert ( InsertPt != InsertPt -> getParent ( ) -> end ( ) && ) ; } Instruction * PtrInGlobal = new AddrSpaceCastInst ( Ptr , PointerType :: get ( Ptr -> getType ( ) -> getPointerElementType ( ) , ADDRESS_SPACE_GLOBAL ) , Ptr -> getName ( ) , & * InsertPt ) ; Value * PtrInGeneric = new AddrSpaceCastInst ( PtrInGlobal , Ptr -> getType ( ) , Ptr -> getName ( ) , & * InsertPt ) ;" LLVM,NVPTX,1415,"Predict the next statement of this code snippet: for ( Argument & Arg : F . args ( ) ) if ( Arg . getType ( ) -> isPointerTy ( ) && Arg . hasByValAttr ( ) ) handleByValParam ( & Arg ) ;" LLVM,NVPTX,1416,"Predict the next statement of this code snippet: } } } } } for ( Argument & Arg : F . args ( ) ) { if ( Arg . getType ( ) -> isPointerTy ( ) ) { if ( Arg . hasByValAttr ( ) ) handleByValParam ( & Arg ) ; else if ( TM && TM -> getDrvInterface ( ) == ) markPointerAsGlobal ( & Arg ) ; }" LLVM,NVPTX,1417,"Predict the next statement of this code snippet: Instruction * ArgInGlobal = new AddrSpaceCastInst ( Arg , PointerType :: get ( Arg -> getType ( ) -> getPointerElementType ( ) , ADDRESS_SPACE_GLOBAL ) , Arg -> getName ( ) , FirstInst ) ; Value * ArgInGeneric = new AddrSpaceCastInst ( ArgInGlobal , Arg -> getType ( ) , Arg -> getName ( ) , FirstInst ) ;" LLVM,NVPTX,1418,"Predict the next statement of this code snippet: Value * ArgInGeneric = new AddrSpaceCastInst ( ArgInGlobal , Arg -> getType ( ) , Arg -> getName ( ) , FirstInst ) ; Arg -> replaceAllUsesWith ( ArgInGeneric ) ; ArgInGlobal -> setOperand ( , Arg ) ;" LLVM,NVPTX,1419,"Predict the next statement of this code snippet: if ( Arg . getType ( ) -> isPointerTy ( ) ) { if ( Arg . hasByValAttr ( ) ) handleByValParam ( & Arg ) ; else if ( TM && TM -> getDrvInterface ( ) == ) handlePointerParam ( & Arg ) ; }" LLVM,NVPTX,1420,"Predict the next statement of this code snippet: void LowerKernelArgs :: handlePointerParam ( Argument * Arg ) { assert ( ! Arg -> hasByValAttr ( ) && ) ;" LLVM,NVPTX,1421,"Predict the next statement of this code snippet: if ( Ptr -> getType ( ) -> getPointerAddressSpace ( ) == ADDRESS_SPACE_GLOBAL ) return ; BasicBlock :: iterator InsertPt ; if ( Argument * Arg = dyn_cast < Argument > ( Ptr ) ) { InsertPt = Arg -> getParent ( ) -> getEntryBlock ( ) . begin ( ) ;" LLVM,NVPTX,1422,"Predict the next statement of this code snippet: return new LowerKernelArgs ( TM ) ;" LLVM,NVPTX,1423,"Predict the next statement of this code snippet: assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ; AllocaInst * AllocA = new AllocaInst ( StructType , Arg -> getName ( ) , FirstInst ) ; AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) + ) ) ; Arg -> replaceAllUsesWith ( AllocA ) ;" LLVM,NVPTX,1424,"Predict the next statement of this code snippet: Arg -> replaceAllUsesWith ( AllocA ) ; Value * ArgInParam = new AddrSpaceCastInst ( Arg , PointerType :: get ( StructType , ADDRESS_SPACE_PARAM ) , Arg -> getName ( ) , FirstInst ) ; LoadInst * LI = new LoadInst ( ArgInParam , Arg -> getName ( ) , FirstInst ) ;" LLVM,NVPTX,1425,"Predict the next statement of this code snippet: LowerKernelArgs ( const TargetMachine * TM = nullptr ) : FunctionPass ( ID ) , TM ( TM ) {" LLVM,NVPTX,1426,"Predict the next statement of this code snippet: LowerKernelArgs ( const TargetMachine * TM = nullptr ) : FunctionPass ( ID ) , TM ( TM ) {" LLVM,NVPTX,1427,"Predict the next statement of this code snippet: Value * UO = GetUnderlyingObject ( LI -> getPointerOperand ( ) , F . getParent ( ) -> getDataLayout ( ) ) ; if ( Argument * Arg = dyn_cast < Argument > ( UO ) ) { if ( Arg -> hasByValAttr ( ) ) { markPointerAsGlobal ( LI ) ; } } } } } } } for ( Argument & Arg : F . args ( ) ) { if ( Arg . getType ( ) -> isPointerTy ( ) ) { if ( Arg . hasByValAttr ( ) ) handleByValParam ( & Arg ) ; else if ( TM && TM -> getDrvInterface ( ) == ) markPointerAsGlobal ( & Arg ) ; }" LLVM,NVPTX,1428,"Predict the next statement of this code snippet: return new LowerStructArgs ( ) ;" LLVM,NVPTX,1429,"Predict the next statement of this code snippet: return new LowerStructArgs ( ) ;" LLVM,NVPTX,1430,"Predict the next statement of this code snippet: Type :: getInt8PtrTy ( Func -> getParent ( ) -> getContext ( ) , ADDRESS_SPACE_PARAM ) , Type :: getInt8PtrTy ( Func -> getParent ( ) -> getContext ( ) , ADDRESS_SPACE_GENERIC ) } ; Function * CvtFunc = ( Func -> getParent ( ) , , CvtTypes ) ; Value * BitcastArgs [ ] = { new BitCastInst ( Arg , Type :: getInt8PtrTy ( Func -> getParent ( ) -> getContext ( ) , ADDRESS_SPACE_GENERIC ) , Arg -> getName ( ) , FirstInst ) } ;" LLVM,NVPTX,1431,"Predict the next statement of this code snippet: Function * Func = Arg -> getParent ( ) ; Instruction * FirstInst = & ( Func -> getEntryBlock ( ) . front ( ) ) ; PointerType * PType = dyn_cast < PointerType > ( Arg -> getType ( ) ) ; assert ( PType && ) ; Type * StructType = PType -> getElementType ( ) ; AllocaInst * AllocA = new AllocaInst ( StructType , Arg -> getName ( ) , FirstInst ) ; AllocA -> setAlignment ( Func -> getParamAlignment ( Arg -> getArgNo ( ) + ) ) ; Arg -> replaceAllUsesWith ( AllocA ) ; Type * CvtTypes [ ] = { Type :: getInt8PtrTy ( Func -> getParent ( ) -> getContext ( ) , ADDRESS_SPACE_PARAM ) , Type :: getInt8PtrTy ( Func -> getParent ( ) -> getContext ( ) , ADDRESS_SPACE_GENERIC ) } ; Function * CvtFunc = ( Func -> getParent ( ) , , CvtTypes ) ; Value * BitcastArgs [ ] = { new BitCastInst ( Arg , Type :: getInt8PtrTy ( Func -> getParent ( ) -> getContext ( ) , ADDRESS_SPACE_GENERIC ) , Arg -> getName ( ) , FirstInst ) } ;" LLVM,NVPTX,1432,"Predict the next statement of this code snippet: if ( Arg . getType ( ) -> isPointerTy ( ) && Arg . hasByValAttr ( ) ) { handleParam ( & Arg ) ; } }" LLVM,NVPTX,1433,"Predict the next statement of this code snippet: if ( Arg . getType ( ) -> isPointerTy ( ) && Arg . hasByValAttr ( ) ) { handleParam ( & Arg ) ; } }" LLVM,NVPTX,1434,"Predict the next statement of this code snippet: LowerStructArgs ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1435,"Predict the next statement of this code snippet: LowerStructArgs ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1436,"Predict the next statement of this code snippet: bool LowerStructArgs :: runOnFunction ( Function & F ) { if ( ! isKernelFunction ( F ) ) return false ; handleStructPtrArgs ( F ) ;" LLVM,NVPTX,1437,"Predict the next statement of this code snippet: assert ( ImageHandleList . size ( ) > Idx && ) ; return ImageHandleList [ Idx ] . c_str ( ) ;" LLVM,NVPTX,1438,"Predict the next statement of this code snippet: assert ( ImageHandleList . size ( ) > Idx && ) ; return ImageHandleList [ Idx ] . c_str ( ) ;" LLVM,NVPTX,1439,"Predict the next statement of this code snippet: for ( unsigned i = , e = ImageHandleList . size ( ) ; i != e ; ++ i ) if ( ImageHandleList [ i ] == std :: string ( Symbol ) ) return i ; ImageHandleList . push_back ( Symbol ) ;" LLVM,NVPTX,1440,"Predict the next statement of this code snippet: MachineFunctionInfo ( MachineFunction & MF ) {" LLVM,NVPTX,1441,"Predict the next statement of this code snippet: MachineFunctionInfo ( MachineFunction & MF ) {" LLVM,NVPTX,1442,"Predict the next statement of this code snippet: Data8bitsDirective = ; Data16bitsDirective = nullptr ; Data32bitsDirective = ; Data64bitsDirective = ; ZeroDirective = ; AsciiDirective = nullptr ; AscizDirective = nullptr ; SupportsQuotedNames = false ; SupportsExtendedDwarfLocDirective = false ; SupportsSignedData = false ; PrivateGlobalPrefix = ; PrivateLabelPrefix = PrivateGlobalPrefix ; WeakDirective = ;" LLVM,NVPTX,1443,"Predict the next statement of this code snippet: bool shouldOmitSectionDirective ( StringRef SectionName ) const override {" LLVM,NVPTX,1444,"Predict the next statement of this code snippet: bool shouldOmitSectionDirective ( StringRef SectionName ) const override {" LLVM,NVPTX,1445,"Predict the next statement of this code snippet: HasFunctionAlignment = false ; HasDotTypeDotSizeDirective = false ; HiddenDeclarationVisibilityAttr = HiddenVisibilityAttr = MCSA_Invalid ; ProtectedVisibilityAttr = MCSA_Invalid ; Data8bitsDirective = ; Data16bitsDirective = nullptr ; Data32bitsDirective = ; Data64bitsDirective = ; ZeroDirective = ; AsciiDirective = nullptr ; AscizDirective = nullptr ;" LLVM,NVPTX,1446,"Predict the next statement of this code snippet: SupportsDebugInformation = true ; HasFunctionAlignment = false ; HasDotTypeDotSizeDirective = false ; HiddenDeclarationVisibilityAttr = HiddenVisibilityAttr = MCSA_Invalid ; ProtectedVisibilityAttr = MCSA_Invalid ; Data8bitsDirective = ; Data16bitsDirective = nullptr ;" LLVM,NVPTX,1447,"Predict the next statement of this code snippet: Triple TheTriple ( TT ) ; if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) { PointerSize = CalleeSaveStackSlotSize = ; } CommentString = ; PrivateGlobalPrefix = ;" LLVM,NVPTX,1448,"Predict the next statement of this code snippet: MCAsmInfo :: MCAsmInfo ( const Triple & TheTriple , const MCTargetOptions & Options ) { if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) { CodePointerSize = CalleeSaveStackSlotSize = ; } CommentString = ;" LLVM,NVPTX,1449,"Predict the next statement of this code snippet: SupportsDebugInformation = CompileForDebugging ; HasFunctionAlignment = false ; HasDotTypeDotSizeDirective = false ; HiddenDeclarationVisibilityAttr = HiddenVisibilityAttr = MCSA_Invalid ; ProtectedVisibilityAttr = MCSA_Invalid ; Data8bitsDirective = ; Data16bitsDirective = ; Data32bitsDirective = ; Data64bitsDirective = ; ZeroDirective = ; AsciiDirective = ; AscizDirective = ; WeakDirective = ; GlobalDirective = ;" LLVM,NVPTX,1450,"Predict the next statement of this code snippet: if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) { PointerSize = CalleeSaveStackSlotSize = ; } CommentString = ; HasSingleParameterDotFile = false ; InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasFunctionAlignment = false ; HasDotTypeDotSizeDirective = false ; Data8bitsDirective = ;" LLVM,NVPTX,1451,"Predict the next statement of this code snippet: CommentString = ; PrivateGlobalPrefix = ; AllowPeriodsInName = false ; HasSetDirective = false ; HasSingleParameterDotFile = false ; InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasDotTypeDotSizeDirective = false ; Data8bitsDirective = ; Data16bitsDirective = ; Data32bitsDirective = ; Data64bitsDirective = ; PrivateGlobalPrefix = ; ZeroDirective = ; AsciiDirective = ;" LLVM,NVPTX,1452,"Predict the next statement of this code snippet: InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasFunctionAlignment = false ; HasDotTypeDotSizeDirective = false ; Data8bitsDirective = ; Data16bitsDirective = ; Data32bitsDirective = ; Data64bitsDirective = ; ZeroDirective = ; AsciiDirective = ; AscizDirective = ; WeakDirective = ;" LLVM,NVPTX,1453,"Predict the next statement of this code snippet: MCAsmInfo :: MCAsmInfo ( StringRef TT ) { Triple TheTriple ( TT ) ; if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) { PointerSize = CalleeSaveStackSlotSize = ; } CommentString = ; HasSingleParameterDotFile = false ; InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasFunctionAlignment = false ;" LLVM,NVPTX,1454,"Predict the next statement of this code snippet: InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasDotTypeDotSizeDirective = false ; Data8bitsDirective = ; Data16bitsDirective = ; Data32bitsDirective = ;" LLVM,NVPTX,1455,"Predict the next statement of this code snippet: Triple TheTriple ( TT ) ; if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) { PointerSize = CalleeSaveStackSlotSize = ; } CommentString = ; HasSingleParameterDotFile = false ; InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasDotTypeDotSizeDirective = false ;" LLVM,NVPTX,1456,"Predict the next statement of this code snippet: InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasFunctionAlignment = false ; HasDotTypeDotSizeDirective = false ; HiddenDeclarationVisibilityAttr = HiddenVisibilityAttr = MCSA_Invalid ; ProtectedVisibilityAttr = MCSA_Invalid ; Data8bitsDirective = ; Data16bitsDirective = ; Data32bitsDirective = ; Data64bitsDirective = ;" LLVM,NVPTX,1457,"Predict the next statement of this code snippet: if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) { PointerSize = CalleeSaveStackSlotSize = ; } CommentString = ; HasSetDirective = false ; HasSingleParameterDotFile = false ; InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasDotTypeDotSizeDirective = false ; Data8bitsDirective = ;" LLVM,NVPTX,1458,"Predict the next statement of this code snippet: Triple TheTriple ( TT ) ; if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) { PointerSize = CalleeSaveStackSlotSize = ; } CommentString = ; HasSetDirective = false ; HasSingleParameterDotFile = false ; InlineAsmStart = ;" LLVM,NVPTX,1459,"Predict the next statement of this code snippet: CommentString = ; PrivateGlobalPrefix = ; AllowPeriodsInName = false ; HasSetDirective = false ; HasSingleParameterDotFile = false ; InlineAsmStart = ; InlineAsmEnd = ; SupportsDebugInformation = CompileForDebugging ; HasDotTypeDotSizeDirective = false ; Data8bitsDirective = ;" LLVM,NVPTX,1460,"Predict the next statement of this code snippet: if ( TheTriple . getArch ( ) == Triple :: nvptx64 ) PointerSize = ; CommentString = ; PrivateGlobalPrefix = ; AllowPeriodsInName = false ; HasSetDirective = false ; HasSingleParameterDotFile = false ;" LLVM,NVPTX,1461,"Predict the next statement of this code snippet: ProtectedVisibilityAttr = MCSA_Invalid ; Data8bitsDirective = ; Data16bitsDirective = nullptr ; Data32bitsDirective = ; Data64bitsDirective = ; ZeroDirective = ; AsciiDirective = nullptr ; AscizDirective = nullptr ; SupportsQuotedNames = false ; SupportsExtendedDwarfLocDirective = false ; SupportsSignedData = false ; WeakDirective = ; GlobalDirective = ;" LLVM,NVPTX,1462,"Predict the next statement of this code snippet: void MCAsmInfo :: anchor ( ) {" LLVM,NVPTX,1463,"Predict the next statement of this code snippet: void MCAsmInfo :: anchor ( ) {" LLVM,NVPTX,1464,"Predict the next statement of this code snippet: HasDotTypeDotSizeDirective = false ; Data8bitsDirective = ; Data16bitsDirective = ; Data32bitsDirective = ; Data64bitsDirective = ; ZeroDirective = ; AsciiDirective = ;" LLVM,NVPTX,1465,"Predict the next statement of this code snippet: return E -> getKind ( ) == MCExpr :: Target ;" LLVM,NVPTX,1466,"Predict the next statement of this code snippet: return create ( VK__DOUBLE_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1467,"Predict the next statement of this code snippet: return create ( VK__DOUBLE_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1468,"Predict the next statement of this code snippet: bool evaluateAsRelocatableImpl ( MCValue & Res , const MCAsmLayout * Layout , const MCFixup * Fixup ) const override {" LLVM,NVPTX,1469,"Predict the next statement of this code snippet: return nullptr ;" LLVM,NVPTX,1470,"Predict the next statement of this code snippet: void fixELFSymbolsInTLSFixups ( MCAssembler & Asm ) const override {" LLVM,NVPTX,1471,"Predict the next statement of this code snippet: void fixELFSymbolsInTLSFixups ( MCAssembler & Asm ) const override {" LLVM,NVPTX,1472,"Predict the next statement of this code snippet: return Flt ;" LLVM,NVPTX,1473,"Predict the next statement of this code snippet: APFloat getAPFloat ( ) const { return Flt ;" LLVM,NVPTX,1474,"Predict the next statement of this code snippet: VariantKind getKind ( ) const {" LLVM,NVPTX,1475,"Predict the next statement of this code snippet: return Kind ;" LLVM,NVPTX,1476,"Predict the next statement of this code snippet: return SymExpr ;" LLVM,NVPTX,1477,"Predict the next statement of this code snippet: return SymExpr ;" LLVM,NVPTX,1478,"Predict the next statement of this code snippet: explicit FloatMCExpr ( VariantKind Kind , APFloat Flt ) : Kind ( Kind ) , Flt ( Flt ) {" LLVM,NVPTX,1479,"Predict the next statement of this code snippet: explicit FloatMCExpr ( VariantKind Kind , APFloat Flt ) : Kind ( Kind ) , Flt ( Flt ) {" LLVM,NVPTX,1480,"Predict the next statement of this code snippet: explicit GenericMCSymbolRefExpr ( const MCSymbolRefExpr * _SymExpr ) : SymExpr ( _SymExpr ) {" LLVM,NVPTX,1481,"Predict the next statement of this code snippet: explicit GenericMCSymbolRefExpr ( const MCSymbolRefExpr * _SymExpr ) : SymExpr ( _SymExpr ) {" LLVM,NVPTX,1482,"Predict the next statement of this code snippet: const GenericMCSymbolRefExpr * GenericMCSymbolRefExpr :: create ( const MCSymbolRefExpr * SymExpr , MCContext & Ctx ) {" LLVM,NVPTX,1483,"Predict the next statement of this code snippet: static const FloatMCExpr * createConstantFPDouble ( const APFloat & Flt , MCContext & Ctx ) { return create ( VK__DOUBLE_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1484,"Predict the next statement of this code snippet: return create ( VK__HALF_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1485,"Predict the next statement of this code snippet: static const FloatMCExpr * createConstantFPSingle ( const APFloat & Flt , MCContext & Ctx ) { return create ( VK__SINGLE_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1486,"Predict the next statement of this code snippet: static const FloatMCExpr * createConstantFPSingle ( const APFloat & Flt , MCContext & Ctx ) { return create ( VK__SINGLE_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1487,"Predict the next statement of this code snippet: explicit FloatMCExpr ( VariantKind Kind , APFloat Flt ) : Kind ( Kind ) , Flt ( std :: move ( Flt ) ) {" LLVM,NVPTX,1488,"Predict the next statement of this code snippet: explicit FloatMCExpr ( VariantKind Kind , APFloat Flt ) : Kind ( Kind ) , Flt ( std :: move ( Flt ) ) {" LLVM,NVPTX,1489,"Predict the next statement of this code snippet: return nullptr ;" LLVM,NVPTX,1490,"Predict the next statement of this code snippet: MCSection * findAssociatedSection ( ) const override {" LLVM,NVPTX,1491,"Predict the next statement of this code snippet: const FloatMCExpr * FloatMCExpr :: create ( VariantKind Kind , APFloat Flt , MCContext & Ctx ) { return new ( Ctx ) FloatMCExpr ( Kind , Flt ) ;" LLVM,NVPTX,1492,"Predict the next statement of this code snippet: void GenericMCSymbolRefExpr :: printImpl ( raw_ostream & OS ) const { OS << << * SymExpr << ;" LLVM,NVPTX,1493,"Predict the next statement of this code snippet: OS << << * SymExpr << ;" LLVM,NVPTX,1494,"Predict the next statement of this code snippet: bool EvaluateAsRelocatableImpl ( MCValue & Res , const MCAsmLayout * Layout , const MCFixup * Fixup ) const override { return false ;" LLVM,NVPTX,1495,"Predict the next statement of this code snippet: APInt API = APF . bitcastToAPInt ( ) ; std :: string HexStr ( utohexstr ( API . getZExtValue ( ) ) ) ; if ( HexStr . length ( ) < NumHex ) OS << std :: string ( NumHex - HexStr . length ( ) , '0' ) ; OS << utohexstr ( API . getZExtValue ( ) ) ;" LLVM,NVPTX,1496,"Predict the next statement of this code snippet: bool Ignored ; unsigned NumHex ; APFloat APF = getAPFloat ( ) ; switch ( Kind ) { default : llvm_unreachable ( ) ; case VK__HALF_PREC_FLOAT : OS << ; NumHex = ; APF . convert ( APFloat :: IEEEhalf ( ) , APFloat :: rmNearestTiesToEven , & Ignored ) ; break ; case VK__SINGLE_PREC_FLOAT : OS << ; NumHex = ; APF . convert ( APFloat :: IEEEsingle ( ) , APFloat :: rmNearestTiesToEven , & Ignored ) ; break ; case VK__DOUBLE_PREC_FLOAT : OS << ; NumHex = ; APF . convert ( APFloat :: IEEEdouble ( ) , APFloat :: rmNearestTiesToEven , & Ignored ) ; break ; } APInt API = APF . bitcastToAPInt ( ) ; std :: string HexStr ( utohexstr ( API . getZExtValue ( ) ) ) ; if ( HexStr . length ( ) < NumHex ) OS << std :: string ( NumHex - HexStr . length ( ) , '0' ) ;" LLVM,NVPTX,1497,"Predict the next statement of this code snippet: return new ( Ctx ) FloatMCExpr ( Kind , Flt ) ;" LLVM,NVPTX,1498,"Predict the next statement of this code snippet: return new ( Ctx ) FloatMCExpr ( Kind , Flt ) ;" LLVM,NVPTX,1499,"Predict the next statement of this code snippet: return Create ( VK__DOUBLE_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1500,"Predict the next statement of this code snippet: return Create ( VK__SINGLE_PREC_FLOAT , Flt , Ctx ) ;" LLVM,NVPTX,1501,"Predict the next statement of this code snippet: bool EvaluateAsRelocatableImpl ( MCValue & Res , const MCAsmLayout * Layout ) const override { return false ;" LLVM,NVPTX,1502,"Predict the next statement of this code snippet: const MCSection * FindAssociatedSection ( ) const override {" LLVM,NVPTX,1503,"Predict the next statement of this code snippet: return nullptr ;" LLVM,NVPTX,1504,"Predict the next statement of this code snippet: explicit FloatMCExpr ( VariantKind _Kind , APFloat _Flt ) : Kind ( _Kind ) , Flt ( _Flt ) {" LLVM,NVPTX,1505,"Predict the next statement of this code snippet: explicit FloatMCExpr ( VariantKind _Kind , APFloat _Flt ) : Kind ( _Kind ) , Flt ( _Flt ) {" LLVM,NVPTX,1506,"Predict the next statement of this code snippet: NumHex = ; APF . convert ( APFloat :: IEEEdouble , APFloat :: rmNearestTiesToEven , & Ignored ) ; break ; } APInt API = APF . bitcastToAPInt ( ) ; std :: string HexStr ( utohexstr ( API . getZExtValue ( ) ) ) ; if ( HexStr . length ( ) < NumHex ) OS << std :: string ( NumHex - HexStr . length ( ) , '0' ) ;" LLVM,NVPTX,1507,"Predict the next statement of this code snippet: NumHex = ; APF . convert ( APFloat :: IEEEsingle , APFloat :: rmNearestTiesToEven , & Ignored ) ; break ; case VK__DOUBLE_PREC_FLOAT : OS << ; NumHex = ; APF . convert ( APFloat :: IEEEdouble , APFloat :: rmNearestTiesToEven , & Ignored ) ; break ; } APInt API = APF . bitcastToAPInt ( ) ;" LLVM,NVPTX,1508,"Predict the next statement of this code snippet: static MCInstPrinter * createMCInstPrinter ( const Triple & T , unsigned SyntaxVariant , const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) {" LLVM,NVPTX,1509,"Predict the next statement of this code snippet: static MCInstPrinter * createMCInstPrinter ( const Triple & T , unsigned SyntaxVariant , const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI ) { if ( SyntaxVariant == ) return new InstPrinter ( MAI , MII , MRI ) ;" LLVM,NVPTX,1510,"Predict the next statement of this code snippet: InitMCRegisterInfo ( X , ) ; return X ;" LLVM,NVPTX,1511,"Predict the next statement of this code snippet: InitMCRegisterInfo ( X , ) ;" LLVM,NVPTX,1512,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( const Triple & TT , StringRef CPU , StringRef FS ) {" LLVM,NVPTX,1513,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( const Triple & TT , StringRef CPU , StringRef FS ) {" LLVM,NVPTX,1514,"Predict the next statement of this code snippet: RegisterMCAsmInfo < MCAsmInfo > X ( * T ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createTargetAsmStreamer ) ;" LLVM,NVPTX,1515,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; TargetRegistry :: RegisterAsmTargetStreamer ( * T , createTargetAsmStreamer ) ;" LLVM,NVPTX,1516,"Predict the next statement of this code snippet: MCRegisterInfo * X = new MCRegisterInfo ( ) ;" LLVM,NVPTX,1517,"Predict the next statement of this code snippet: MCRegisterInfo * X = new MCRegisterInfo ( ) ;" LLVM,NVPTX,1518,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ;" LLVM,NVPTX,1519,"Predict the next statement of this code snippet: MCCodeGenInfo * X = new MCCodeGenInfo ( ) ; X -> initMCCodeGenInfo ( Reloc :: Default , CM , OL ) ;" LLVM,NVPTX,1520,"Predict the next statement of this code snippet: static MCCodeGenInfo * createMCCodeGenInfo ( StringRef TT , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) { MCCodeGenInfo * X = new MCCodeGenInfo ( ) ;" LLVM,NVPTX,1521,"Predict the next statement of this code snippet: if ( SyntaxVariant == ) return new InstPrinter ( MAI , MII , MRI , STI ) ; return ;" LLVM,NVPTX,1522,"Predict the next statement of this code snippet: static MCInstPrinter * createMCInstPrinter ( const Target & T , unsigned SyntaxVariant , const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI , const MCSubtargetInfo & STI ) {" LLVM,NVPTX,1523,"Predict the next statement of this code snippet: void LLVMInitializeTargetMC ( ) { for ( Target * T : { & TheTarget32 , & TheTarget64 } ) { RegisterMCAsmInfo < MCAsmInfo > X ( * T ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ;" LLVM,NVPTX,1524,"Predict the next statement of this code snippet: void LLVMInitializeTargetMC ( ) { for ( Target * T : { & getTheTarget32 ( ) , & getTheTarget64 ( ) } ) { RegisterMCAsmInfo < MCAsmInfo > X ( * T ) ; TargetRegistry :: RegisterMCInstrInfo ( * T , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( * T , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( * T , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCInstPrinter ( * T , createMCInstPrinter ) ; }" LLVM,NVPTX,1525,"Predict the next statement of this code snippet: static MCCodeGenInfo * createMCCodeGenInfo ( StringRef TT , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) { MCCodeGenInfo * X = new MCCodeGenInfo ( ) ; X -> InitMCCodeGenInfo ( RM , CM , OL ) ; return X ;" LLVM,NVPTX,1526,"Predict the next statement of this code snippet: InitMCSubtargetInfo ( X , TT , CPU , FS ) ; return X ;" LLVM,NVPTX,1527,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCCodeGenInfo ( TheTarget32 , createMCCodeGenInfo ) ; TargetRegistry :: RegisterMCCodeGenInfo ( TheTarget64 , createMCCodeGenInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget32 , createMCInstrInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget64 , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget32 , createMCRegisterInfo ) ;" LLVM,NVPTX,1528,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCCodeGenInfo ( TheTarget64 , createMCCodeGenInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget32 , createMCInstrInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget64 , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget32 , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget64 , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( TheTarget32 , createMCSubtargetInfo ) ; TargetRegistry :: RegisterMCSubtargetInfo ( TheTarget64 , createMCSubtargetInfo ) ;" LLVM,NVPTX,1529,"Predict the next statement of this code snippet: X -> InitMCCodeGenInfo ( RM , CM , OL ) ; return X ;" LLVM,NVPTX,1530,"Predict the next statement of this code snippet: static MCInstPrinter * createMCInstPrinter ( const Target & T , unsigned SyntaxVariant , const MCAsmInfo & MAI , const MCInstrInfo & MII , const MCRegisterInfo & MRI , const MCSubtargetInfo & STI ) { if ( SyntaxVariant == ) return new InstPrinter ( MAI , MII , MRI , STI ) ; return nullptr ;" LLVM,NVPTX,1531,"Predict the next statement of this code snippet: if ( SyntaxVariant == ) return new InstPrinter ( MAI , MII , MRI , STI ) ; return nullptr ;" LLVM,NVPTX,1532,"Predict the next statement of this code snippet: static MCInstrInfo * createMCInstrInfo ( ) { MCInstrInfo * X = new MCInstrInfo ( ) ; InitMCInstrInfo ( X ) ; return X ;" LLVM,NVPTX,1533,"Predict the next statement of this code snippet: static MCInstrInfo * createMCInstrInfo ( ) {" LLVM,NVPTX,1534,"Predict the next statement of this code snippet: MCRegisterInfo * X = new MCRegisterInfo ( ) ; InitMCRegisterInfo ( X , ) ; return X ;" LLVM,NVPTX,1535,"Predict the next statement of this code snippet: InitMCRegisterInfo ( X , ) ;" LLVM,NVPTX,1536,"Predict the next statement of this code snippet: static MCSubtargetInfo * createMCSubtargetInfo ( StringRef TT , StringRef CPU , StringRef FS ) {" LLVM,NVPTX,1537,"Predict the next statement of this code snippet: TargetRegistry :: RegisterMCCodeGenInfo ( TheTarget64 , createMCCodeGenInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget32 , createMCInstrInfo ) ; TargetRegistry :: RegisterMCInstrInfo ( TheTarget64 , createMCInstrInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget32 , createMCRegisterInfo ) ; TargetRegistry :: RegisterMCRegInfo ( TheTarget64 , createMCRegisterInfo ) ;" LLVM,NVPTX,1538,"Predict the next statement of this code snippet: auto & MF = * MBB . getParent ( ) ; const auto & MRI = MF . getRegInfo ( ) ; const TargetInstrInfo * TII = MF . getSubtarget ( ) . getInstrInfo ( ) ; auto & Prev = * MRI . getUniqueVRegDef ( Root . getOperand ( ) . getReg ( ) ) ;" LLVM,NVPTX,1539,"Predict the next statement of this code snippet: MachineInstrBuilder MIB = BuildMI ( MF , Root . getDebugLoc ( ) , TII -> get ( Prev . getOpcode ( ) ) , Root . getOperand ( ) . getReg ( ) ) . addReg ( ) . addOperand ( Prev . getOperand ( ) ) ; MBB . insert ( ( MachineBasicBlock :: iterator ) & Root , MIB ) ; if ( MRI . hasOneNonDBGUse ( Prev . getOperand ( ) . getReg ( ) ) ) {" LLVM,NVPTX,1540,"Predict the next statement of this code snippet: auto & MF = * MBB . getParent ( ) ; if ( Root . getOpcode ( ) != && Root . getOpcode ( ) != ) return false ; auto & Op = Root . getOperand ( ) ; const auto & MRI = MF . getRegInfo ( ) ; MachineInstr * GenericAddrDef = nullptr ; if ( Op . isReg ( ) && TargetRegisterInfo :: isVirtualRegister ( Op . getReg ( ) ) ) { GenericAddrDef = MRI . getUniqueVRegDef ( Op . getReg ( ) ) ; } if ( ! GenericAddrDef || GenericAddrDef -> getParent ( ) != & MBB || ( GenericAddrDef -> getOpcode ( ) != && GenericAddrDef -> getOpcode ( ) != ) ) { return false ; } auto & BaseAddrOp = GenericAddrDef -> getOperand ( ) ; if ( BaseAddrOp . isReg ( ) && BaseAddrOp . getReg ( ) == ) { return true ; }" LLVM,NVPTX,1541,"Predict the next statement of this code snippet: if ( isCVTAToLocalCombinationCandidate ( MI ) ) { CombineCVTAToLocal ( MI ) ; Changed = true ; } } } const auto & MRI = MF . getRegInfo ( ) ; if ( MRI . use_empty ( ) ) { if ( auto MI = MRI . getUniqueVRegDef ( ) ) { MI -> eraseFromParentAndMarkDBGValuesForRemoval ( ) ; }" LLVM,NVPTX,1542,"Predict the next statement of this code snippet: static void CombineCVTAToLocal ( MachineInstr & Root ) { auto & MBB = * Root . getParent ( ) ; auto & MF = * MBB . getParent ( ) ; const auto & MRI = MF . getRegInfo ( ) ;" LLVM,NVPTX,1543,"Predict the next statement of this code snippet: const TargetInstrInfo * TII = MF . getSubtarget ( ) . getInstrInfo ( ) ; auto & Prev = * MRI . getUniqueVRegDef ( Root . getOperand ( ) . getReg ( ) ) ; MachineInstrBuilder MIB = BuildMI ( MF , Root . getDebugLoc ( ) , TII -> get ( Prev . getOpcode ( ) ) , Root . getOperand ( ) . getReg ( ) ) . addReg ( ) . add ( Prev . getOperand ( ) ) ; MBB . insert ( ( MachineBasicBlock :: iterator ) & Root , MIB ) ; if ( MRI . hasOneNonDBGUse ( Prev . getOperand ( ) . getReg ( ) ) ) { Prev . eraseFromParentAndMarkDBGValuesForRemoval ( ) ;" LLVM,NVPTX,1544,"Predict the next statement of this code snippet: auto BlockIter = MBB . begin ( ) ; while ( BlockIter != MBB . end ( ) ) { auto & MI = * BlockIter ++ ; if ( isCVTAToLocalCombinationCandidate ( MI ) ) { CombineCVTAToLocal ( MI ) ; Changed = true ; } } } const auto & MRI = MF . getRegInfo ( ) ; if ( MRI . use_empty ( ) ) { if ( auto MI = MRI . getUniqueVRegDef ( ) ) { MI -> eraseFromParentAndMarkDBGValuesForRemoval ( ) ;" LLVM,NVPTX,1545,"Predict the next statement of this code snippet: auto BlockIter = MBB . begin ( ) ; while ( BlockIter != MBB . end ( ) ) { auto & MI = * BlockIter ++ ; if ( isCVTAToLocalCombinationCandidate ( MI ) ) {" LLVM,NVPTX,1546,"Predict the next statement of this code snippet: } const auto & MRI = MF . getRegInfo ( ) ; if ( MRI . use_empty ( ) ) { if ( auto MI = MRI . getUniqueVRegDef ( ) ) { MI -> eraseFromParentAndMarkDBGValuesForRemoval ( ) ;" LLVM,NVPTX,1547,"Predict the next statement of this code snippet: auto & MBB = * Root . getParent ( ) ; auto & MF = * MBB . getParent ( ) ; if ( Root . getOpcode ( ) != && Root . getOpcode ( ) != ) return false ; auto & Op = Root . getOperand ( ) ;" LLVM,NVPTX,1548,"Predict the next statement of this code snippet: auto & MBB = * Root . getParent ( ) ; auto & MF = * MBB . getParent ( ) ; const auto & MRI = MF . getRegInfo ( ) ; const TargetInstrInfo * TII = MF . getSubtarget ( ) . getInstrInfo ( ) ; auto & Prev = * MRI . getUniqueVRegDef ( Root . getOperand ( ) . getReg ( ) ) ; const RegisterInfo * NRI = MF . getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; MachineInstrBuilder MIB = BuildMI ( MF , Root . getDebugLoc ( ) , TII -> get ( Prev . getOpcode ( ) ) , Root . getOperand ( ) . getReg ( ) ) . addReg ( NRI -> getFrameLocalRegister ( MF ) ) . add ( Prev . getOperand ( ) ) ; MBB . insert ( ( MachineBasicBlock :: iterator ) & Root , MIB ) ; if ( MRI . hasOneNonDBGUse ( Prev . getOperand ( ) . getReg ( ) ) ) {" LLVM,NVPTX,1549,"Predict the next statement of this code snippet: Changed = true ; } } } const RegisterInfo * NRI = MF . getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; const auto & MRI = MF . getRegInfo ( ) ; if ( MRI . use_empty ( NRI -> getFrameRegister ( MF ) ) ) {" LLVM,NVPTX,1550,"Predict the next statement of this code snippet: Changed = true ; } } } const RegisterInfo * NRI = MF . getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; const auto & MRI = MF . getRegInfo ( ) ; if ( MRI . use_empty ( NRI -> getFrameRegister ( MF ) ) ) { if ( auto MI = MRI . getUniqueVRegDef ( NRI -> getFrameRegister ( MF ) ) ) { MI -> eraseFromParent ( ) ;" LLVM,NVPTX,1551,"Predict the next statement of this code snippet: auto & Prev = * MRI . getUniqueVRegDef ( Root . getOperand ( ) . getReg ( ) ) ; const RegisterInfo * NRI = MF . getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; MachineInstrBuilder MIB = BuildMI ( MF , Root . getDebugLoc ( ) , TII -> get ( Prev . getOpcode ( ) ) , Root . getOperand ( ) . getReg ( ) ) . addReg ( NRI -> getFrameLocalRegister ( MF ) ) . add ( Prev . getOperand ( ) ) ; MBB . insert ( ( MachineBasicBlock :: iterator ) & Root , MIB ) ; if ( MRI . hasOneNonDBGUse ( Prev . getOperand ( ) . getReg ( ) ) ) { Prev . eraseFromParentAndMarkDBGValuesForRemoval ( ) ; }" LLVM,NVPTX,1552,"Predict the next statement of this code snippet: MachineInstrBuilder MIB = BuildMI ( MF , Root . getDebugLoc ( ) , TII -> get ( Prev . getOpcode ( ) ) , Root . getOperand ( ) . getReg ( ) ) . addReg ( NRI -> getFrameLocalRegister ( MF ) ) . add ( Prev . getOperand ( ) ) ;" LLVM,NVPTX,1553,"Predict the next statement of this code snippet: MachineFunctionPass * llvm :: createPeephole ( ) { return new Peephole ( ) ;" LLVM,NVPTX,1554,"Predict the next statement of this code snippet: return new Peephole ( ) ;" LLVM,NVPTX,1555,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,NVPTX,1556,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,NVPTX,1557,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,NVPTX,1558,"Predict the next statement of this code snippet: const auto & MRI = MF . getRegInfo ( ) ; MachineInstr * GenericAddrDef = nullptr ; if ( Op . isReg ( ) && Register :: isVirtualRegister ( Op . getReg ( ) ) ) { GenericAddrDef = MRI . getUniqueVRegDef ( Op . getReg ( ) ) ; } if ( ! GenericAddrDef || GenericAddrDef -> getParent ( ) != & MBB || ( GenericAddrDef -> getOpcode ( ) != && GenericAddrDef -> getOpcode ( ) != ) ) { return false ; } const RegisterInfo * NRI = MF . getSubtarget < Subtarget > ( ) . getRegisterInfo ( ) ; auto & BaseAddrOp = GenericAddrDef -> getOperand ( ) ; if ( BaseAddrOp . isReg ( ) && BaseAddrOp . getReg ( ) == NRI -> getFrameRegister ( MF ) ) { return true ;" LLVM,NVPTX,1559,"Predict the next statement of this code snippet: MachineInstr * GenericAddrDef = nullptr ; if ( Op . isReg ( ) && Register :: isVirtualRegister ( Op . getReg ( ) ) ) { GenericAddrDef = MRI . getUniqueVRegDef ( Op . getReg ( ) ) ; } if ( ! GenericAddrDef || GenericAddrDef -> getParent ( ) != & MBB || ( GenericAddrDef -> getOpcode ( ) != && GenericAddrDef -> getOpcode ( ) != ) ) {" LLVM,NVPTX,1560,"Predict the next statement of this code snippet: if ( skipFunction ( MF . getFunction ( ) ) ) return false ; bool Changed = false ; for ( auto & MBB : MF ) { auto BlockIter = MBB . begin ( ) ; while ( BlockIter != MBB . end ( ) ) { auto & MI = * BlockIter ++ ; if ( isCVTAToLocalCombinationCandidate ( MI ) ) {" LLVM,NVPTX,1561,"Predict the next statement of this code snippet: MaxAlign = std :: max ( MaxAlign , Align ) ; Offset = ( Offset + Align - ) / Align * Align ; if ( StackGrowsDown ) { DEBUG ( dbgs ( ) << << FrameIdx << << - Offset << ) ; MFI -> setObjectOffset ( FrameIdx , - Offset ) ; } else { DEBUG ( dbgs ( ) << << FrameIdx << << Offset << ) ; MFI -> setObjectOffset ( FrameIdx , Offset ) ;" LLVM,NVPTX,1562,"Predict the next statement of this code snippet: unsigned MaxAlign = MFI -> getMaxAlignment ( ) ; if ( MFI -> getUseLocalStackAllocationBlock ( ) ) { unsigned Align = MFI -> getLocalFrameMaxAlign ( ) ; Offset = ( Offset + Align - ) / Align * Align ; DEBUG ( dbgs ( ) << << Offset << ) ; for ( unsigned i = , e = MFI -> getLocalFrameObjectCount ( ) ; i != e ; ++ i ) { std :: pair < int , int64_t > Entry = MFI -> getLocalFrameObjectMap ( i ) ; int64_t FIOffset = ( StackGrowsDown ? - Offset : Offset ) + Entry . second ; DEBUG ( dbgs ( ) << << Entry . first << << FIOffset << ) ; MFI -> setObjectOffset ( Entry . first , FIOffset ) ; } Offset += MFI -> getLocalFrameSize ( ) ; MaxAlign = std :: max ( Align , MaxAlign ) ; } for ( unsigned i = , e = MFI -> getObjectIndexEnd ( ) ; i != e ; ++ i ) { if ( MFI -> isObjectPreAllocated ( i ) && MFI -> getUseLocalStackAllocationBlock ( ) ) continue ; if ( MFI -> isDeadObjectIndex ( i ) ) continue ; AdjustStackOffset ( MFI , i , StackGrowsDown , Offset , MaxAlign ) ;" LLVM,NVPTX,1563,"Predict the next statement of this code snippet: for ( unsigned i = , e = MFI -> getLocalFrameObjectCount ( ) ; i != e ; ++ i ) { std :: pair < int , int64_t > Entry = MFI -> getLocalFrameObjectMap ( i ) ; int64_t FIOffset = ( StackGrowsDown ? - Offset : Offset ) + Entry . second ; DEBUG ( dbgs ( ) << << Entry . first << << FIOffset << ) ; MFI -> setObjectOffset ( Entry . first , FIOffset ) ; } Offset += MFI -> getLocalFrameSize ( ) ; MaxAlign = std :: max ( Align , MaxAlign ) ; } for ( unsigned i = , e = MFI -> getObjectIndexEnd ( ) ; i != e ; ++ i ) { if ( MFI -> isObjectPreAllocated ( i ) && MFI -> getUseLocalStackAllocationBlock ( ) ) continue ; if ( MFI -> isDeadObjectIndex ( i ) ) continue ; AdjustStackOffset ( MFI , i , StackGrowsDown , Offset , MaxAlign ) ; } if ( ! TFI . targetHandlesStackFrameRounding ( ) ) { if ( MFI -> adjustsStack ( ) && TFI . hasReservedCallFrame ( Fn ) ) Offset += MFI -> getMaxCallFrameSize ( ) ; unsigned StackAlign ; if ( MFI -> adjustsStack ( ) || MFI -> hasVarSizedObjects ( ) || ( RegInfo -> needsStackRealignment ( Fn ) && MFI -> getObjectIndexEnd ( ) != ) ) StackAlign = TFI . getStackAlignment ( ) ;" LLVM,NVPTX,1564,"Predict the next statement of this code snippet: MachineFunctionPass * llvm :: createPrologEpilogPass ( ) { return new PrologEpilogPass ( ) ;" LLVM,NVPTX,1565,"Predict the next statement of this code snippet: PrologEpilogPass ( ) : MachineFunctionPass ( ID ) {" LLVM,NVPTX,1566,"Predict the next statement of this code snippet: PrologEpilogPass ( ) : MachineFunctionPass ( ID ) {" LLVM,NVPTX,1567,"Predict the next statement of this code snippet: const TargetSubtargetInfo & STI = MF . getSubtarget ( ) ; const TargetFrameLowering & TFI = * STI . getFrameLowering ( ) ; const TargetRegisterInfo & TRI = * STI . getRegisterInfo ( ) ; bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineFunction :: iterator BB = MF . begin ( ) , E = MF . end ( ) ; BB != E ; ++ BB ) { for ( MachineBasicBlock :: iterator I = BB -> begin ( ) ; I != BB -> end ( ) ; ++ I ) {" LLVM,NVPTX,1568,"Predict the next statement of this code snippet: if ( StackGrowsDown ) Offset += MFI . getObjectSize ( FrameIdx ) ; unsigned Align = MFI . getObjectAlignment ( FrameIdx ) ; MaxAlign = std :: max ( MaxAlign , Align ) ; Offset = ( Offset + Align - ) / Align * Align ; if ( StackGrowsDown ) { LLVM_DEBUG ( dbgs ( ) << << FrameIdx << << - Offset << ) ; MFI . setObjectOffset ( FrameIdx , - Offset ) ; } else {" LLVM,NVPTX,1569,"Predict the next statement of this code snippet: Offset = ( Offset + Align - ) / Align * Align ; if ( StackGrowsDown ) { LLVM_DEBUG ( dbgs ( ) << << FrameIdx << << - Offset << ) ; MFI . setObjectOffset ( FrameIdx , - Offset ) ; } else { LLVM_DEBUG ( dbgs ( ) << << FrameIdx << << Offset << ) ; MFI . setObjectOffset ( FrameIdx , Offset ) ;" LLVM,NVPTX,1570,"Predict the next statement of this code snippet: for ( int i = MFI . getObjectIndexBegin ( ) ; i != ; ++ i ) { int64_t FixedOff ; if ( StackGrowsDown ) { FixedOff = - MFI . getObjectOffset ( i ) ; } else { FixedOff = MFI . getObjectOffset ( i ) + MFI . getObjectSize ( i ) ; } if ( FixedOff > Offset ) Offset = FixedOff ; } unsigned MaxAlign = MFI . getMaxAlignment ( ) ; if ( MFI . getUseLocalStackAllocationBlock ( ) ) { unsigned Align = MFI . getLocalFrameMaxAlign ( ) ; Offset = ( Offset + Align - ) / Align * Align ; LLVM_DEBUG ( dbgs ( ) << << Offset << ) ; for ( unsigned i = , e = MFI . getLocalFrameObjectCount ( ) ; i != e ; ++ i ) { std :: pair < int , int64_t > Entry = MFI . getLocalFrameObjectMap ( i ) ; int64_t FIOffset = ( StackGrowsDown ? - Offset : Offset ) + Entry . second ; LLVM_DEBUG ( dbgs ( ) << << Entry . first << << FIOffset << ) ; MFI . setObjectOffset ( Entry . first , FIOffset ) ; } Offset += MFI . getLocalFrameSize ( ) ; MaxAlign = std :: max ( Align , MaxAlign ) ; }" LLVM,NVPTX,1571,"Predict the next statement of this code snippet: } } TFI . emitPrologue ( MF , MF . front ( ) ) ; for ( MachineFunction :: iterator I = MF . begin ( ) , E = MF . end ( ) ; I != E ; ++ I ) { if ( I -> isReturnBlock ( ) ) TFI . emitEpilogue ( MF , * I ) ; }" LLVM,NVPTX,1572,"Predict the next statement of this code snippet: } } TFI . emitPrologue ( MF , MF . front ( ) ) ; for ( MachineFunction :: iterator I = MF . begin ( ) , E = MF . end ( ) ; I != E ; ++ I ) { if ( I -> isReturnBlock ( ) ) TFI . emitEpilogue ( MF , * I ) ; }" LLVM,NVPTX,1573,"Predict the next statement of this code snippet: if ( StackGrowsDown ) Offset += MFI . getObjectSize ( FrameIdx ) ; unsigned Align = MFI . getObjectAlignment ( FrameIdx ) ; MaxAlign = std :: max ( MaxAlign , Align ) ; Offset = ( Offset + Align - ) / Align * Align ; if ( StackGrowsDown ) { DEBUG ( dbgs ( ) << << FrameIdx << << - Offset << ) ; MFI . setObjectOffset ( FrameIdx , - Offset ) ;" LLVM,NVPTX,1574,"Predict the next statement of this code snippet: MFI . setObjectOffset ( FrameIdx , - Offset ) ; } else { DEBUG ( dbgs ( ) << << FrameIdx << << Offset << ) ; MFI . setObjectOffset ( FrameIdx , Offset ) ; Offset += MFI . getObjectSize ( FrameIdx ) ; }" LLVM,NVPTX,1575,"Predict the next statement of this code snippet: const TargetRegisterInfo * RegInfo = Fn . getSubtarget ( ) . getRegisterInfo ( ) ; bool StackGrowsDown = TFI . getStackGrowthDirection ( ) == TargetFrameLowering :: StackGrowsDown ; MachineFrameInfo & MFI = Fn . getFrameInfo ( ) ; int LocalAreaOffset = TFI . getOffsetOfLocalArea ( ) ; if ( StackGrowsDown ) LocalAreaOffset = - LocalAreaOffset ; assert ( LocalAreaOffset >= && ) ; int64_t Offset = LocalAreaOffset ; for ( int i = MFI . getObjectIndexBegin ( ) ; i != ; ++ i ) { int64_t FixedOff ; if ( StackGrowsDown ) { FixedOff = - MFI . getObjectOffset ( i ) ; } else { FixedOff = MFI . getObjectOffset ( i ) + MFI . getObjectSize ( i ) ; } if ( FixedOff > Offset ) Offset = FixedOff ; } unsigned MaxAlign = MFI . getMaxAlignment ( ) ; if ( MFI . getUseLocalStackAllocationBlock ( ) ) { unsigned Align = MFI . getLocalFrameMaxAlign ( ) ; Offset = ( Offset + Align - ) / Align * Align ; DEBUG ( dbgs ( ) << << Offset << ) ; for ( unsigned i = , e = MFI . getLocalFrameObjectCount ( ) ; i != e ; ++ i ) { std :: pair < int , int64_t > Entry = MFI . getLocalFrameObjectMap ( i ) ; int64_t FIOffset = ( StackGrowsDown ? - Offset : Offset ) + Entry . second ; DEBUG ( dbgs ( ) << << Entry . first << << FIOffset << ) ; MFI . setObjectOffset ( Entry . first , FIOffset ) ; } Offset += MFI . getLocalFrameSize ( ) ; MaxAlign = std :: max ( Align , MaxAlign ) ; } for ( unsigned i = , e = MFI . getObjectIndexEnd ( ) ; i != e ; ++ i ) { if ( MFI . isObjectPreAllocated ( i ) && MFI . getUseLocalStackAllocationBlock ( ) ) continue ; if ( MFI . isDeadObjectIndex ( i ) ) continue ; AdjustStackOffset ( MFI , i , StackGrowsDown , Offset , MaxAlign ) ; } if ( ! TFI . targetHandlesStackFrameRounding ( ) ) { if ( MFI . adjustsStack ( ) && TFI . hasReservedCallFrame ( Fn ) ) Offset += MFI . getMaxCallFrameSize ( ) ;" LLVM,NVPTX,1576,"Predict the next statement of this code snippet: for ( MachineInstr & MI : MBB ) { for ( unsigned i = , e = MI . getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI . getOperand ( i ) . isFI ( ) ) continue ; if ( MI . isDebugValue ( ) ) { assert ( i == && ) ; unsigned Reg ; int64_t Offset = TFI . getFrameIndexReference ( MF , MI . getOperand ( ) . getIndex ( ) , Reg ) ; MI . getOperand ( ) . ChangeToRegister ( Reg , false ) ; MI . getOperand ( ) . setIsDebug ( ) ; auto * DIExpr = DIExpression :: prepend ( MI . getDebugExpression ( ) , DIExpression :: NoDeref , Offset ) ; MI . getOperand ( ) . setMetadata ( DIExpr ) ; continue ; } TRI . eliminateFrameIndex ( MI , , i , nullptr ) ; Modified = true ; } } } TFI . emitPrologue ( MF , MF . front ( ) ) ; for ( MachineFunction :: iterator I = MF . begin ( ) , E = MF . end ( ) ; I != E ; ++ I ) { if ( I -> isReturnBlock ( ) ) TFI . emitEpilogue ( MF , * I ) ; }" LLVM,NVPTX,1577,"Predict the next statement of this code snippet: MaxAlign = std :: max ( MaxAlign , Alignment ) ; Offset = alignTo ( Offset , Alignment ) ; if ( StackGrowsDown ) {" LLVM,NVPTX,1578,"Predict the next statement of this code snippet: if ( MI . isDebugValue ( ) ) { assert ( i == && ) ; Register Reg ; int64_t Offset = TFI . getFrameIndexReference ( MF , MI . getOperand ( ) . getIndex ( ) , Reg ) . getFixed ( ) ; MI . getOperand ( ) . ChangeToRegister ( Reg , false ) ; MI . getOperand ( ) . setIsDebug ( ) ; auto * DIExpr = DIExpression :: prepend ( MI . getDebugExpression ( ) , DIExpression :: ApplyOffset , Offset ) ;" LLVM,NVPTX,1579,"Predict the next statement of this code snippet: const TargetSubtargetInfo & STI = MF . getSubtarget ( ) ; const TargetFrameLowering & TFI = * STI . getFrameLowering ( ) ; const TargetRegisterInfo & TRI = * STI . getRegisterInfo ( ) ; bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineBasicBlock & MBB : MF ) { for ( MachineInstr & MI : MBB ) { for ( unsigned i = , e = MI . getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI . getOperand ( i ) . isFI ( ) ) continue ; if ( MI . isDebugValue ( ) ) { assert ( i == && ) ; unsigned Reg ; int64_t Offset = TFI . getFrameIndexReference ( MF , MI . getOperand ( ) . getIndex ( ) , Reg ) ; MI . getOperand ( ) . ChangeToRegister ( Reg , false ) ; MI . getOperand ( ) . setIsDebug ( ) ; auto * DIExpr = DIExpression :: prepend ( MI . getDebugExpression ( ) , DIExpression :: ApplyOffset , Offset ) ; MI . getOperand ( ) . setMetadata ( DIExpr ) ; continue ; } TRI . eliminateFrameIndex ( MI , , i , nullptr ) ; Modified = true ; } }" LLVM,NVPTX,1580,"Predict the next statement of this code snippet: bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineBasicBlock & MBB : MF ) { for ( MachineInstr & MI : MBB ) { for ( unsigned i = , e = MI . getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI . getOperand ( i ) . isFI ( ) ) continue ; if ( MI . isDebugValue ( ) ) { assert ( i == && ) ; Register Reg ; int64_t Offset = TFI . getFrameIndexReference ( MF , MI . getOperand ( ) . getIndex ( ) , Reg ) ; MI . getOperand ( ) . ChangeToRegister ( Reg , false ) ; MI . getOperand ( ) . setIsDebug ( ) ; auto * DIExpr = DIExpression :: prepend ( MI . getDebugExpression ( ) , DIExpression :: ApplyOffset , Offset ) ; MI . getOperand ( ) . setMetadata ( DIExpr ) ; continue ;" LLVM,NVPTX,1581,"Predict the next statement of this code snippet: const TargetRegisterInfo & TRI = * STI . getRegisterInfo ( ) ; bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineBasicBlock & MBB : MF ) { for ( MachineInstr & MI : MBB ) { for ( unsigned i = , e = MI . getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI . getOperand ( i ) . isFI ( ) ) continue ; if ( MI . isDebugValue ( ) ) { assert ( i == && ) ; Register Reg ; int64_t Offset = TFI . getFrameIndexReference ( MF , MI . getOperand ( ) . getIndex ( ) , Reg ) ; MI . getOperand ( ) . ChangeToRegister ( Reg , false ) ; MI . getOperand ( ) . setIsDebug ( ) ; auto * DIExpr = DIExpression :: prepend ( MI . getDebugExpression ( ) , DIExpression :: ApplyOffset , Offset ) ; MI . getOperand ( ) . setMetadata ( DIExpr ) ;" LLVM,NVPTX,1582,"Predict the next statement of this code snippet: const TargetFrameLowering & TFI = * TM . getFrameLowering ( ) ; const TargetRegisterInfo & TRI = * TM . getRegisterInfo ( ) ; bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineFunction :: iterator BB = MF . begin ( ) , E = MF . end ( ) ; BB != E ; ++ BB ) { for ( MachineBasicBlock :: iterator I = BB -> begin ( ) ; I != BB -> end ( ) ; ++ I ) { MachineInstr * MI = I ; for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI -> getOperand ( i ) . isFI ( ) ) continue ;" LLVM,NVPTX,1583,"Predict the next statement of this code snippet: bool PrologEpilogPass :: runOnMachineFunction ( MachineFunction & MF ) { const TargetSubtargetInfo & STI = MF . getSubtarget ( ) ; const TargetFrameLowering & TFI = * STI . getFrameLowering ( ) ; const TargetRegisterInfo & TRI = * STI . getRegisterInfo ( ) ; bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineFunction :: iterator BB = MF . begin ( ) , E = MF . end ( ) ; BB != E ; ++ BB ) { for ( MachineBasicBlock :: iterator I = BB -> begin ( ) ; I != BB -> end ( ) ; ++ I ) { MachineInstr * MI = I ; for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI -> getOperand ( i ) . isFI ( ) ) continue ; TRI . eliminateFrameIndex ( MI , , i , nullptr ) ; Modified = true ; }" LLVM,NVPTX,1584,"Predict the next statement of this code snippet: } TFI . emitPrologue ( MF , MF . front ( ) ) ; for ( MachineFunction :: iterator I = MF . begin ( ) , E = MF . end ( ) ; I != E ; ++ I ) { if ( ! I -> empty ( ) && I -> back ( ) . isReturn ( ) ) TFI . emitEpilogue ( MF , * I ) ; }" LLVM,NVPTX,1585,"Predict the next statement of this code snippet: bool PrologEpilogPass :: runOnMachineFunction ( MachineFunction & MF ) { const TargetSubtargetInfo & STI = MF . getSubtarget ( ) ; const TargetFrameLowering & TFI = * STI . getFrameLowering ( ) ; const TargetRegisterInfo & TRI = * STI . getRegisterInfo ( ) ; bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineFunction :: iterator BB = MF . begin ( ) , E = MF . end ( ) ; BB != E ; ++ BB ) { for ( MachineBasicBlock :: iterator I = BB -> begin ( ) ; I != BB -> end ( ) ; ++ I ) { MachineInstr * MI = I ; for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI -> getOperand ( i ) . isFI ( ) ) continue ; TRI . eliminateFrameIndex ( MI , , i , nullptr ) ; Modified = true ; } } } TFI . emitPrologue ( MF ) ;" LLVM,NVPTX,1586,"Predict the next statement of this code snippet: const TargetRegisterInfo & TRI = * STI . getRegisterInfo ( ) ; bool Modified = false ; calculateFrameObjectOffsets ( MF ) ; for ( MachineFunction :: iterator BB = MF . begin ( ) , E = MF . end ( ) ; BB != E ; ++ BB ) { for ( MachineBasicBlock :: iterator I = BB -> begin ( ) ; I != BB -> end ( ) ; ++ I ) { MachineInstr * MI = I ; for ( unsigned i = , e = MI -> getNumOperands ( ) ; i != e ; ++ i ) {" LLVM,NVPTX,1587,"Predict the next statement of this code snippet: void PrologEpilogPass :: calculateFrameObjectOffsets ( MachineFunction & Fn ) { const TargetFrameLowering & TFI = * Fn . getSubtarget ( ) . getFrameLowering ( ) ; const TargetRegisterInfo * RegInfo = Fn . getSubtarget ( ) . getRegisterInfo ( ) ; bool StackGrowsDown = TFI . getStackGrowthDirection ( ) == TargetFrameLowering :: StackGrowsDown ; MachineFrameInfo & MFI = Fn . getFrameInfo ( ) ; int LocalAreaOffset = TFI . getOffsetOfLocalArea ( ) ; if ( StackGrowsDown ) LocalAreaOffset = - LocalAreaOffset ; assert ( LocalAreaOffset >= && ) ; int64_t Offset = LocalAreaOffset ; for ( int i = MFI . getObjectIndexBegin ( ) ; i != ; ++ i ) { int64_t FixedOff ; if ( StackGrowsDown ) { FixedOff = - MFI . getObjectOffset ( i ) ; } else { FixedOff = MFI . getObjectOffset ( i ) + MFI . getObjectSize ( i ) ; } if ( FixedOff > Offset ) Offset = FixedOff ; } unsigned MaxAlign = MFI . getMaxAlignment ( ) ; if ( MFI . getUseLocalStackAllocationBlock ( ) ) {" LLVM,NVPTX,1588,"Predict the next statement of this code snippet: for ( unsigned i = , e = MI . getNumOperands ( ) ; i != e ; ++ i ) { if ( ! MI . getOperand ( i ) . isFI ( ) ) continue ; if ( MI . isDebugValue ( ) ) { assert ( i == && ) ; Register Reg ; int64_t Offset = TFI . getFrameIndexReference ( MF , MI . getOperand ( ) . getIndex ( ) , Reg ) ; MI . getOperand ( ) . ChangeToRegister ( Reg , false ) ; MI . getOperand ( ) . setIsDebug ( ) ;" LLVM,NVPTX,1589,"Predict the next statement of this code snippet: int64_t Offset = LocalAreaOffset ; for ( int i = MFI . getObjectIndexBegin ( ) ; i != ; ++ i ) { int64_t FixedOff ; if ( StackGrowsDown ) { FixedOff = - MFI . getObjectOffset ( i ) ; } else { FixedOff = MFI . getObjectOffset ( i ) + MFI . getObjectSize ( i ) ; } if ( FixedOff > Offset ) Offset = FixedOff ; } Align MaxAlign = MFI . getMaxAlign ( ) ; if ( MFI . getUseLocalStackAllocationBlock ( ) ) { Align Alignment = MFI . getLocalFrameMaxAlign ( ) ; Offset = alignTo ( Offset , Alignment ) ; LLVM_DEBUG ( dbgs ( ) << << Offset << ) ; for ( unsigned i = , e = MFI . getLocalFrameObjectCount ( ) ; i != e ; ++ i ) { std :: pair < int , int64_t > Entry = MFI . getLocalFrameObjectMap ( i ) ; int64_t FIOffset = ( StackGrowsDown ? - Offset : Offset ) + Entry . second ; LLVM_DEBUG ( dbgs ( ) << << Entry . first << << FIOffset << ) ; MFI . setObjectOffset ( Entry . first , FIOffset ) ; } Offset += MFI . getLocalFrameSize ( ) ; MaxAlign = std :: max ( Alignment , MaxAlign ) ; } for ( unsigned i = , e = MFI . getObjectIndexEnd ( ) ; i != e ; ++ i ) { if ( MFI . isObjectPreAllocated ( i ) && MFI . getUseLocalStackAllocationBlock ( ) ) continue ; if ( MFI . isDeadObjectIndex ( i ) ) continue ; AdjustStackOffset ( MFI , i , StackGrowsDown , Offset , MaxAlign ) ; } if ( ! TFI . targetHandlesStackFrameRounding ( ) ) {" LLVM,NVPTX,1590,"Predict the next statement of this code snippet: MachineOperand & Op = MI . getOperand ( i ) ; assert ( MI . isDebugOperand ( & Op ) && ) ; Register Reg ; auto Offset = TFI . getFrameIndexReference ( MF , Op . getIndex ( ) , Reg ) ; Op . ChangeToRegister ( Reg , false ) ; const DIExpression * DIExpr = MI . getDebugExpression ( ) ; if ( MI . isNonListDebugValue ( ) ) { DIExpr = TRI . prependOffsetExpression ( MI . getDebugExpression ( ) , DIExpression :: ApplyOffset , Offset ) ; } else { SmallVector < uint64_t , > Ops ;" LLVM,NVPTX,1591,"Predict the next statement of this code snippet: DEBUG ( dbgs ( ) << << Offset << ) ; for ( unsigned i = , e = MFI -> getLocalFrameObjectCount ( ) ; i != e ; ++ i ) { std :: pair < int , int64_t > Entry = MFI -> getLocalFrameObjectMap ( i ) ; int64_t FIOffset = ( StackGrowsDown ? - Offset : Offset ) + Entry . second ; DEBUG ( dbgs ( ) << << Entry . first << << FIOffset << ) ; MFI -> setObjectOffset ( Entry . first , FIOffset ) ; } Offset += MFI -> getLocalFrameSize ( ) ; MaxAlign = std :: max ( Align , MaxAlign ) ; } for ( unsigned i = , e = MFI -> getObjectIndexEnd ( ) ; i != e ; ++ i ) { if ( MFI -> isObjectPreAllocated ( i ) && MFI -> getUseLocalStackAllocationBlock ( ) ) continue ; if ( MFI -> isDeadObjectIndex ( i ) ) continue ; AdjustStackOffset ( MFI , i , StackGrowsDown , Offset , MaxAlign ) ; } if ( ! TFI . targetHandlesStackFrameRounding ( ) ) { if ( MFI -> adjustsStack ( ) && TFI . hasReservedCallFrame ( Fn ) ) Offset += MFI -> getMaxCallFrameSize ( ) ; unsigned StackAlign ; if ( MFI -> adjustsStack ( ) || MFI -> hasVarSizedObjects ( ) || ( RegInfo -> needsStackRealignment ( Fn ) && MFI -> getObjectIndexEnd ( ) != ) ) StackAlign = TFI . getStackAlignment ( ) ; else StackAlign = TFI . getTransientStackAlignment ( ) ; StackAlign = std :: max ( StackAlign , MaxAlign ) ; unsigned AlignMask = StackAlign - ; Offset = ( Offset + AlignMask ) & ~ uint64_t ( AlignMask ) ; } int64_t StackSize = Offset - LocalAreaOffset ; MFI -> setStackSize ( StackSize ) ;" LLVM,NVPTX,1592,"Predict the next statement of this code snippet: return new ProxyRegErasure ( ) ;" LLVM,NVPTX,1593,"Predict the next statement of this code snippet: MachineFunctionPass * llvm :: createProxyRegErasurePass ( ) { return new ProxyRegErasure ( ) ;" LLVM,NVPTX,1594,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override { return ;" LLVM,NVPTX,1595,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1596,"Predict the next statement of this code snippet: initializeProxyRegErasurePass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1597,"Predict the next statement of this code snippet: void ProxyRegErasure :: replaceMachineInstructionUsage ( MachineFunction & MF , MachineInstr & MI ) { auto & InOp = * MI . uses ( ) . begin ( ) ; auto & OutOp = * MI . defs ( ) . begin ( ) ; assert ( InOp . isReg ( ) && ) ; assert ( OutOp . isReg ( ) && ) ; for ( auto & BB : MF ) { for ( auto & I : BB ) { replaceRegisterUsage ( I , OutOp , InOp ) ; } }" LLVM,NVPTX,1598,"Predict the next statement of this code snippet: void ProxyRegErasure :: replaceRegisterUsage ( MachineInstr & Instr , MachineOperand & From , MachineOperand & To ) { for ( auto & Op : Instr . uses ( ) ) {" LLVM,NVPTX,1599,"Predict the next statement of this code snippet: void ProxyRegErasure :: replaceRegisterUsage ( MachineInstr & Instr , MachineOperand & From , MachineOperand & To ) {" LLVM,NVPTX,1600,"Predict the next statement of this code snippet: for ( auto & BB : MF ) { for ( auto & MI : BB ) { switch ( MI . getOpcode ( ) ) { case : case : case : case :" LLVM,NVPTX,1601,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : replaceMachineInstructionUsage ( MF , MI ) ; RemoveList . push_back ( & MI ) ; break ; } } }" LLVM,NVPTX,1602,"Predict the next statement of this code snippet: return getStrPool ( ) -> getManagedString ( O . str ( ) . c_str ( ) ) -> c_str ( ) ;" LLVM,NVPTX,1603,"Predict the next statement of this code snippet: return const_cast < ManagedStringPool * > ( & ManagedStrPool ) ;" LLVM,NVPTX,1604,"Predict the next statement of this code snippet: int Offset = MF . getFrameInfo ( ) . getObjectOffset ( FrameIndex ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ;" LLVM,NVPTX,1605,"Predict the next statement of this code snippet: return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) {" LLVM,NVPTX,1606,"Predict the next statement of this code snippet: } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) {" LLVM,NVPTX,1607,"Predict the next statement of this code snippet: if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ;" LLVM,NVPTX,1608,"Predict the next statement of this code snippet: if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ;" LLVM,NVPTX,1609,"Predict the next statement of this code snippet: if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; return ;" LLVM,NVPTX,1610,"Predict the next statement of this code snippet: Register RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const {" LLVM,NVPTX,1611,"Predict the next statement of this code snippet: const TargetRegisterClass * const * RegisterInfo :: getCalleeSavedRegClasses ( const MachineFunction * MF ) const { static const TargetRegisterClass * const CalleeSavedRegClasses [ ] = { } ; return CalleeSavedRegClasses ;" LLVM,NVPTX,1612,"Predict the next statement of this code snippet: const TargetRegisterClass * const * RegisterInfo :: getCalleeSavedRegClasses ( const MachineFunction * MF ) const { static const TargetRegisterClass * const CalleeSavedRegClasses [ ] = { } ; return CalleeSavedRegClasses ;" LLVM,NVPTX,1613,"Predict the next statement of this code snippet: const uint16_t * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const { static const uint16_t CalleeSavedRegs [ ] = { } ;" LLVM,NVPTX,1614,"Predict the next statement of this code snippet: static const uint16_t CalleeSavedRegs [ ] = { } ; return CalleeSavedRegs ;" LLVM,NVPTX,1615,"Predict the next statement of this code snippet: int RegisterInfo :: getDwarfRegNum ( unsigned RegNum , bool isEH ) const { return ;" LLVM,NVPTX,1616,"Predict the next statement of this code snippet: int RegisterInfo :: getDwarfRegNum ( unsigned RegNum , bool isEH ) const { return ;" LLVM,NVPTX,1617,"Predict the next statement of this code snippet: std :: string getRegClassName ( TargetRegisterClass const * RC ) { if ( RC == & ) { return ; } if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else {" LLVM,NVPTX,1618,"Predict the next statement of this code snippet: unsigned RegisterInfo :: getRARegister ( ) const {" LLVM,NVPTX,1619,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const TargetInstrInfo & tii , const Subtarget & st ) : GenRegisterInfo ( ) , Is64Bit ( st . is64Bit ( ) ) {" LLVM,NVPTX,1620,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const TargetInstrInfo & tii , const Subtarget & st ) : GenRegisterInfo ( ) , Is64Bit ( st . is64Bit ( ) ) {" LLVM,NVPTX,1621,"Predict the next statement of this code snippet: MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; int Offset = MF . getFrameInfo ( ) -> getObjectOffset ( FrameIndex ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( , false ) ;" LLVM,NVPTX,1622,"Predict the next statement of this code snippet: const TargetRegisterClass * const * RegisterInfo :: getCalleeSavedRegClasses ( const MachineFunction * MF ) const {" LLVM,NVPTX,1623,"Predict the next statement of this code snippet: getDwarfRegNum ( unsigned RegNum , bool isEH ) const {" LLVM,NVPTX,1624,"Predict the next statement of this code snippet: std :: string getRegClassName ( TargetRegisterClass const * RC ) { if ( RC == & ) { return ; } if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ;" LLVM,NVPTX,1625,"Predict the next statement of this code snippet: else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ;" LLVM,NVPTX,1626,"Predict the next statement of this code snippet: return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) {" LLVM,NVPTX,1627,"Predict the next statement of this code snippet: std :: string getRegClassStr ( TargetRegisterClass const * RC ) { if ( RC == & ) { return ; } if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) {" LLVM,NVPTX,1628,"Predict the next statement of this code snippet: int Offset = MF . getFrameInfo ( ) -> getObjectOffset ( FrameIndex ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ;" LLVM,NVPTX,1629,"Predict the next statement of this code snippet: int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; int Offset = MF . getFrameInfo ( ) -> getObjectOffset ( FrameIndex ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( , false ) ; MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset ) ;" LLVM,NVPTX,1630,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * MF ) const { static const MCPhysReg CalleeSavedRegs [ ] = { } ; return CalleeSavedRegs ;" LLVM,NVPTX,1631,"Predict the next statement of this code snippet: unsigned RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const {" LLVM,NVPTX,1632,"Predict the next statement of this code snippet: unsigned RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const { return ;" LLVM,NVPTX,1633,"Predict the next statement of this code snippet: if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ;" LLVM,NVPTX,1634,"Predict the next statement of this code snippet: if ( RC == & ) { return ; } if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else { return ; }" LLVM,NVPTX,1635,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & st ) : GenRegisterInfo ( ) , Is64Bit ( st . is64Bit ( ) ) {" LLVM,NVPTX,1636,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( const Subtarget & st ) : GenRegisterInfo ( ) , Is64Bit ( st . is64Bit ( ) ) {" LLVM,NVPTX,1637,"Predict the next statement of this code snippet: const TargetRegisterClass * const * RegisterInfo :: getCalleeSavedRegClasses ( const MachineFunction * MF ) const { static const TargetRegisterClass * const CalleeSavedRegClasses [ ] = { nullptr } ;" LLVM,NVPTX,1638,"Predict the next statement of this code snippet: eliminateCallFramePseudoInstr ( MachineFunction & MF , MachineBasicBlock & MBB , MachineBasicBlock :: iterator I ) const { MBB . erase ( I ) ;" LLVM,NVPTX,1639,"Predict the next statement of this code snippet: assert ( i < MI . getNumOperands ( ) && ) ; } int FrameIndex = MI . getOperand ( i ) . getIndex ( ) ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; int Offset = MF . getFrameInfo ( ) -> getObjectOffset ( FrameIndex ) + MI . getOperand ( i + ) . getImm ( ) ; MI . getOperand ( i ) . ChangeToRegister ( , false ) ; MI . getOperand ( i + ) . ChangeToImmediate ( Offset ) ;" LLVM,NVPTX,1640,"Predict the next statement of this code snippet: eliminateFrameIndex ( MachineBasicBlock :: iterator II , int SPAdj , RegScavenger * RS ) const { assert ( SPAdj == && ) ; unsigned i = ; MachineInstr & MI = * II ; while ( ! MI . getOperand ( i ) . isFI ( ) ) { ++ i ; assert ( i < MI . getNumOperands ( ) && ) ; } int FrameIndex = MI . getOperand ( i ) . getIndex ( ) ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; int Offset = MF . getFrameInfo ( ) -> getObjectOffset ( FrameIndex ) + MI . getOperand ( i + ) . getImm ( ) ; MI . getOperand ( i ) . ChangeToRegister ( , false ) ;" LLVM,NVPTX,1641,"Predict the next statement of this code snippet: if ( RC -> getID ( ) == ) return ( & ) ; if ( RC -> getID ( ) == ) return ( & ) ; if ( RC -> getID ( ) == ) return ( & ) ; if ( RC -> getID ( ) == ) return ( & ) ; if ( RC -> getID ( ) == ) return ( & ) ; if ( RC -> getID ( ) == ) return ( & ) ; if ( RC -> getID ( ) == ) return ( & ) ; if ( RC -> getID ( ) == ) return ( & ) ;" LLVM,NVPTX,1642,"Predict the next statement of this code snippet: if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ;" LLVM,NVPTX,1643,"Predict the next statement of this code snippet: if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ; if ( RC -> getID ( ) == ) return getRegClassName ( & ) ;" LLVM,NVPTX,1644,"Predict the next statement of this code snippet: } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ;" LLVM,NVPTX,1645,"Predict the next statement of this code snippet: return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) {" LLVM,NVPTX,1646,"Predict the next statement of this code snippet: if ( RC -> getID ( ) == ) return ; if ( RC -> getID ( ) == ) return ; if ( RC -> getID ( ) == ) return ; if ( RC -> getID ( ) == ) return ; llvm_unreachable ( ) ;" LLVM,NVPTX,1647,"Predict the next statement of this code snippet: if ( RC -> getID ( ) == ) return true ; if ( RC -> getID ( ) == ) return true ; if ( RC -> getID ( ) == ) return true ; if ( RC -> getID ( ) == ) return true ; if ( RC -> getID ( ) == ) return true ;" LLVM,NVPTX,1648,"Predict the next statement of this code snippet: return ; } if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) { return ; } else if ( RC == & ) {" LLVM,NVPTX,1649,"Predict the next statement of this code snippet: void RegisterInfo :: eliminateFrameIndex ( MachineBasicBlock :: iterator II , int SPAdj , unsigned FIOperandNum , RegScavenger * RS ) const { assert ( SPAdj == && ) ; MachineInstr & MI = * II ; int FrameIndex = MI . getOperand ( FIOperandNum ) . getIndex ( ) ; MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; int Offset = MF . getFrameInfo ( ) . getObjectOffset ( FrameIndex ) + MI . getOperand ( FIOperandNum + ) . getImm ( ) ; MI . getOperand ( FIOperandNum ) . ChangeToRegister ( getFrameRegister ( MF ) , false ) ; MI . getOperand ( FIOperandNum + ) . ChangeToImmediate ( Offset ) ;" LLVM,NVPTX,1650,"Predict the next statement of this code snippet: const MCPhysReg * RegisterInfo :: getCalleeSavedRegs ( const MachineFunction * ) const {" LLVM,NVPTX,1651,"Predict the next statement of this code snippet: const TargetMachine & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ;" LLVM,NVPTX,1652,"Predict the next statement of this code snippet: const TargetMachine & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return TM . is64Bit ( ) ? : ;" LLVM,NVPTX,1653,"Predict the next statement of this code snippet: const TargetMachine & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ;" LLVM,NVPTX,1654,"Predict the next statement of this code snippet: Register RegisterInfo :: getFrameRegister ( const MachineFunction & MF ) const { const TargetMachine & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; return TM . is64Bit ( ) ? : ;" LLVM,NVPTX,1655,"Predict the next statement of this code snippet: if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ;" LLVM,NVPTX,1656,"Predict the next statement of this code snippet: if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ;" LLVM,NVPTX,1657,"Predict the next statement of this code snippet: if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ; if ( RC == & ) return ;" LLVM,NVPTX,1658,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( ) : GenRegisterInfo ( ) {" LLVM,NVPTX,1659,"Predict the next statement of this code snippet: RegisterInfo :: RegisterInfo ( ) : GenRegisterInfo ( ) {" LLVM,NVPTX,1660,"Predict the next statement of this code snippet: StringRef getPassName ( ) const override {" LLVM,NVPTX,1661,"Predict the next statement of this code snippet: case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { MachineOperand & TexHandle = MI . getOperand ( ) ; MachineOperand & SampHandle = MI . getOperand ( ) ; replaceImageHandle ( TexHandle , MF ) ; replaceImageHandle ( SampHandle , MF ) ; return true ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { MachineOperand & SurfHandle = MI . getOperand ( ) ; replaceImageHandle ( SurfHandle , MF ) ; return true ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { MachineOperand & SurfHandle = MI . getOperand ( ) ; replaceImageHandle ( SurfHandle , MF ) ; return true ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : { MachineOperand & SurfHandle = MI . getOperand ( ) ; replaceImageHandle ( SurfHandle , MF ) ; return true ; } case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case : case :" LLVM,NVPTX,1662,"Predict the next statement of this code snippet: InstrsToRemove . insert ( & TexHandleDef ) ; break ; } case : { assert ( TexHandleDef . getOperand ( ) . isGlobal ( ) && ) ; const GlobalValue * GV = TexHandleDef . getOperand ( ) . getGlobal ( ) ; assert ( GV -> hasName ( ) && ) ; Op . ChangeToImmediate ( MFI -> getImageHandleSymbolIndex ( GV -> getName ( ) . data ( ) ) ) ; InstrsToRemove . insert ( & TexHandleDef ) ; break ; } default :" LLVM,NVPTX,1663,"Predict the next statement of this code snippet: const MCInstrDesc & MCID = MI . getDesc ( ) ; const InstrInfo * TII = MF . getSubtarget < Subtarget > ( ) . getInstrInfo ( ) ; if ( MCID . TSFlags & ) { MachineOperand & TexHandle = MI . getOperand ( ) ; if ( replaceImageHandle ( TexHandle , MF ) ) MI . setDesc ( TII -> get ( texRegisterToIndexOpcode ( MI . getOpcode ( ) ) ) ) ; if ( ! ( MCID . TSFlags & ) ) { MachineOperand & SampHandle = MI . getOperand ( ) ; if ( replaceImageHandle ( SampHandle , MF ) ) MI . setDesc ( TII -> get ( samplerRegisterToIndexOpcode ( MI . getOpcode ( ) ) ) ) ; } return true ; } else if ( MCID . TSFlags & ) { unsigned VecSize = << ( ( ( MCID . TSFlags & ) >> ) - ) ; MachineOperand & SurfHandle = MI . getOperand ( VecSize ) ; if ( replaceImageHandle ( SurfHandle , MF ) ) MI . setDesc ( TII -> get ( suldRegisterToIndexOpcode ( MI . getOpcode ( ) ) ) ) ; return true ; } else if ( MCID . TSFlags & ) { MachineOperand & SurfHandle = MI . getOperand ( ) ; if ( replaceImageHandle ( SurfHandle , MF ) ) MI . setDesc ( TII -> get ( sustRegisterToIndexOpcode ( MI . getOpcode ( ) ) ) ) ; return true ; } else if ( MCID . TSFlags & ) { MachineOperand & Handle = MI . getOperand ( ) ; if ( replaceImageHandle ( Handle , MF ) ) MI . setDesc ( TII -> get ( queryRegisterToIndexOpcode ( MI . getOpcode ( ) ) ) ) ;" LLVM,NVPTX,1664,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case : return ; case :" LLVM,NVPTX,1665,"Predict the next statement of this code snippet: unsigned Idx ; if ( findIndexForHandle ( Op , MF , Idx ) ) { Op . ChangeToImmediate ( Idx ) ; return true ; } return false ;" LLVM,NVPTX,1666,"Predict the next statement of this code snippet: bool Changed = false ; InstrsToRemove . clear ( ) ; for ( MachineBasicBlock & MBB : MF ) for ( MachineInstr & MI : MBB ) Changed |= processInstr ( MI ) ; for ( MachineInstr * MI : InstrsToRemove ) MI -> eraseFromParent ( ) ;" LLVM,NVPTX,1667,"Predict the next statement of this code snippet: bool ReplaceImageHandles :: runOnMachineFunction ( MachineFunction & MF ) { bool Changed = false ; InstrsToRemove . clear ( ) ; for ( MachineBasicBlock & MBB : MF ) for ( MachineInstr & MI : MBB ) Changed |= processInstr ( MI ) ; for ( MachineInstr * MI : InstrsToRemove ) MI -> eraseFromParent ( ) ; return Changed ;" LLVM,NVPTX,1668,"Predict the next statement of this code snippet: switch ( TexHandleDef . getOpcode ( ) ) { case : { const TargetMachine & TM = static_cast < const TargetMachine & > ( MF . getTarget ( ) ) ; if ( TM . getDrvInterface ( ) == ) { return false ; } assert ( TexHandleDef . getOperand ( ) . isSymbol ( ) && ) ; StringRef Sym = TexHandleDef . getOperand ( ) . getSymbolName ( ) ; std :: string ParamBaseName = MF . getName ( ) ; ParamBaseName += ; assert ( Sym . startswith ( ParamBaseName ) && ) ;" LLVM,NVPTX,1669,"Predict the next statement of this code snippet: assert ( TexHandleDef . getOperand ( ) . isGlobal ( ) && ) ; const GlobalValue * GV = TexHandleDef . getOperand ( ) . getGlobal ( ) ; assert ( GV -> hasName ( ) && ) ; InstrsToRemove . insert ( & TexHandleDef ) ; Idx = MFI -> getImageHandleSymbolIndex ( GV -> getName ( ) . data ( ) ) ; return true ; } case : case TargetOpcode :: COPY : { bool Res = findIndexForHandle ( TexHandleDef . getOperand ( ) , MF , Idx ) ; if ( Res ) { InstrsToRemove . insert ( & TexHandleDef ) ; } return Res ;" LLVM,NVPTX,1670,"Predict the next statement of this code snippet: const char * getPassName ( ) const override {" LLVM,NVPTX,1671,"Predict the next statement of this code snippet: InstrsToRemove . clear ( ) ; for ( MachineBasicBlock & MBB : MF ) for ( MachineInstr & MI : MBB ) Changed |= processInstr ( MI ) ;" LLVM,NVPTX,1672,"Predict the next statement of this code snippet: return new ReplaceImageHandles ( ) ;" LLVM,NVPTX,1673,"Predict the next statement of this code snippet: MachineFunctionPass * llvm :: createReplaceImageHandlesPass ( ) { return new ReplaceImageHandles ( ) ;" LLVM,NVPTX,1674,"Predict the next statement of this code snippet: bool ReplaceImageHandles :: findIndexForHandle ( MachineOperand & Op , MachineFunction & MF , unsigned & Idx ) { const MachineRegisterInfo & MRI = MF . getRegInfo ( ) ; MachineFunctionInfo * MFI = MF . getInfo < MachineFunctionInfo > ( ) ; assert ( Op . isReg ( ) && ) ; MachineInstr & TexHandleDef = * MRI . getVRegDef ( Op . getReg ( ) ) ; switch ( TexHandleDef . getOpcode ( ) ) { case : { const Subtarget & ST = MF . getTarget ( ) . getSubtarget < Subtarget > ( ) ; if ( ST . getDrvInterface ( ) == ) { return false ; } assert ( TexHandleDef . getOperand ( ) . isSymbol ( ) && ) ; StringRef Sym = TexHandleDef . getOperand ( ) . getSymbolName ( ) ; std :: string ParamBaseName = MF . getName ( ) ; ParamBaseName += ; assert ( Sym . startswith ( ParamBaseName ) && ) ; unsigned Param = atoi ( Sym . data ( ) + ParamBaseName . size ( ) ) ; std :: string NewSym ; raw_string_ostream NewSymStr ( NewSym ) ; NewSymStr << MF . getFunction ( ) -> getName ( ) << << Param ; InstrsToRemove . insert ( & TexHandleDef ) ; Idx = MFI -> getImageHandleSymbolIndex ( NewSymStr . str ( ) . c_str ( ) ) ; return true ; } case : { assert ( TexHandleDef . getOperand ( ) . isGlobal ( ) && ) ; const GlobalValue * GV = TexHandleDef . getOperand ( ) . getGlobal ( ) ; assert ( GV -> hasName ( ) && ) ; InstrsToRemove . insert ( & TexHandleDef ) ; Idx = MFI -> getImageHandleSymbolIndex ( GV -> getName ( ) . data ( ) ) ; return true ; } case : case TargetOpcode :: COPY : { bool Res = findIndexForHandle ( TexHandleDef . getOperand ( ) , MF , Idx ) ; if ( Res ) { InstrsToRemove . insert ( & TexHandleDef ) ; } return Res ; } default : llvm_unreachable ( ) ; }" LLVM,NVPTX,1675,"Predict the next statement of this code snippet: virtual const char * getPassName ( ) const { return ;" LLVM,NVPTX,1676,"Predict the next statement of this code snippet: virtual const char * getPassName ( ) const {" LLVM,NVPTX,1677,"Predict the next statement of this code snippet: ReplaceImageHandles :: ReplaceImageHandles ( ) : MachineFunctionPass ( ID ) {" LLVM,NVPTX,1678,"Predict the next statement of this code snippet: ReplaceImageHandles :: ReplaceImageHandles ( ) : MachineFunctionPass ( ID ) {" LLVM,NVPTX,1679,"Predict the next statement of this code snippet: bool ReplaceImageHandles :: processInstr ( MachineInstr & MI ) { MachineFunction & MF = * MI . getParent ( ) -> getParent ( ) ; const MCInstrDesc & MCID = MI . getDesc ( ) ; if ( MCID . TSFlags & ) { MachineOperand & TexHandle = MI . getOperand ( ) ; replaceImageHandle ( TexHandle , MF ) ; if ( ! ( MCID . TSFlags & ) ) { MachineOperand & SampHandle = MI . getOperand ( ) ; replaceImageHandle ( SampHandle , MF ) ; } return true ; } else if ( MCID . TSFlags & ) { unsigned VecSize = << ( ( ( MCID . TSFlags & ) >> ) - ) ; MachineOperand & SurfHandle = MI . getOperand ( VecSize ) ; replaceImageHandle ( SurfHandle , MF ) ; return true ; } else if ( MCID . TSFlags & ) { MachineOperand & SurfHandle = MI . getOperand ( ) ; replaceImageHandle ( SurfHandle , MF ) ;" LLVM,NVPTX,1680,"Predict the next statement of this code snippet: void ReplaceImageHandles ::" LLVM,NVPTX,1681,"Predict the next statement of this code snippet: unsigned Idx ;" LLVM,NVPTX,1682,"Predict the next statement of this code snippet: for ( MachineFunction :: iterator BI = MF . begin ( ) , BE = MF . end ( ) ; BI != BE ; ++ BI ) { for ( MachineBasicBlock :: iterator I = ( * BI ) . begin ( ) , E = ( * BI ) . end ( ) ; I != E ; ++ I ) {" LLVM,NVPTX,1683,"Predict the next statement of this code snippet: Section ( SectionVariant V , SectionKind K ) : MCSection ( V , K , nullptr ) {" LLVM,NVPTX,1684,"Predict the next statement of this code snippet: Section ( SectionVariant V , SectionKind K ) : MCSection ( V , K , nullptr ) {" LLVM,NVPTX,1685,"Predict the next statement of this code snippet: void PrintSwitchToSection ( const MCAsmInfo & MAI , const Triple & T , raw_ostream & OS , const MCExpr * Subsection ) const override {" LLVM,NVPTX,1686,"Predict the next statement of this code snippet: void PrintSwitchToSection ( const MCAsmInfo & MAI , const Triple & T , raw_ostream & OS , const MCExpr * Subsection ) const override {" LLVM,NVPTX,1687,"Predict the next statement of this code snippet: virtual bool isBaseAddressKnownZero ( ) const {" LLVM,NVPTX,1688,"Predict the next statement of this code snippet: virtual bool isVirtualSection ( ) const {" LLVM,NVPTX,1689,"Predict the next statement of this code snippet: virtual void PrintSwitchToSection ( const MCAsmInfo & MAI , raw_ostream & OS ) const {" LLVM,NVPTX,1690,"Predict the next statement of this code snippet: virtual void PrintSwitchToSection ( const MCAsmInfo & MAI , raw_ostream & OS ) const {" LLVM,NVPTX,1691,"Predict the next statement of this code snippet: return false ;" LLVM,NVPTX,1692,"Predict the next statement of this code snippet: ~ Section ( ) {" LLVM,NVPTX,1693,"Predict the next statement of this code snippet: ~ Section ( ) {" LLVM,NVPTX,1694,"Predict the next statement of this code snippet: virtual std :: string getLabelBeginName ( ) const {" LLVM,NVPTX,1695,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1696,"Predict the next statement of this code snippet: virtual void PrintSwitchToSection ( const MCAsmInfo & MAI , raw_ostream & OS , const MCExpr * Subsection ) const {" LLVM,NVPTX,1697,"Predict the next statement of this code snippet: virtual void PrintSwitchToSection ( const MCAsmInfo & MAI , raw_ostream & OS , const MCExpr * Subsection ) const {" LLVM,NVPTX,1698,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1699,"Predict the next statement of this code snippet: std :: string getLabelBeginName ( ) const override { return ;" LLVM,NVPTX,1700,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1701,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,1702,"Predict the next statement of this code snippet: return true ;" LLVM,NVPTX,1703,"Predict the next statement of this code snippet: bool isBaseAddressKnownZero ( ) const override { return true ;" LLVM,NVPTX,1704,"Predict the next statement of this code snippet: Section ( SectionVariant V , SectionKind K ) : MCSection ( V , K ) {" LLVM,NVPTX,1705,"Predict the next statement of this code snippet: Section ( SectionVariant V , SectionKind K ) : MCSection ( V , K ) {" LLVM,NVPTX,1706,"Predict the next statement of this code snippet: void PrintSwitchToSection ( const MCAsmInfo & MAI , raw_ostream & OS , const MCExpr * Subsection ) const override {" LLVM,NVPTX,1707,"Predict the next statement of this code snippet: void PrintSwitchToSection ( const MCAsmInfo & MAI , raw_ostream & OS , const MCExpr * Subsection ) const override {" LLVM,NVPTX,1708,"Predict the next statement of this code snippet: return false ;" LLVM,NVPTX,1709,"Predict the next statement of this code snippet: return false ;" LLVM,NVPTX,1710,"Predict the next statement of this code snippet: virtual ~ Section ( ) {" LLVM,NVPTX,1711,"Predict the next statement of this code snippet: virtual ~ Section ( ) {" LLVM,NVPTX,1712,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const { AU . addPreserved ( ) ; AU . addPreserved < MachineFunctionAnalysis > ( ) ;" LLVM,NVPTX,1713,"Predict the next statement of this code snippet: return new SplitBBatBar ( ) ;" LLVM,NVPTX,1714,"Predict the next statement of this code snippet: AU . addPreserved < MachineFunctionAnalysis > ( ) ;" LLVM,NVPTX,1715,"Predict the next statement of this code snippet: virtual const char * getPassName ( ) const { return ;" LLVM,NVPTX,1716,"Predict the next statement of this code snippet: SplitBBatBar ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1717,"Predict the next statement of this code snippet: SplitBBatBar ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,1718,"Predict the next statement of this code snippet: BasicBlock :: iterator IB = BI -> begin ( ) ; BasicBlock :: iterator II = IB ; BasicBlock :: iterator IE = BI -> end ( ) ; while ( II != IE ) { if ( IntrinsicInst * inst = dyn_cast < IntrinsicInst > ( II ) ) { id = inst -> getIntrinsicID ( ) ; if ( llvm :: isBarrierIntrinsic ( id ) ) { if ( II != IB ) SplitPoints . push_back ( II ) ; II ++ ; if ( ( II != IE ) && ( ! II -> isTerminator ( ) ) ) { SplitPoints . push_back ( II ) ; II ++ ; } continue ; } } II ++ ; } } for ( unsigned i = ; i != SplitPoints . size ( ) ; i ++ ) { changed = true ;" LLVM,NVPTX,1719,"Predict the next statement of this code snippet: return hasFP16Math ( ) && NoF16Math == false ;" LLVM,NVPTX,1720,"Predict the next statement of this code snippet: TargetName = std :: string ( CPU . empty ( ) ? : CPU ) ; ParseSubtargetFeatures ( TargetName , TargetName , FS ) ;" LLVM,NVPTX,1721,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) {" LLVM,NVPTX,1722,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) {" LLVM,NVPTX,1723,"Predict the next statement of this code snippet: void Subtarget :: anchor ( ) {" LLVM,NVPTX,1724,"Predict the next statement of this code snippet: void Subtarget :: anchor ( ) {" LLVM,NVPTX,1725,"Predict the next statement of this code snippet: const TargetFrameLowering * getFrameLowering ( ) const override { return & FrameLowering ;" LLVM,NVPTX,1726,"Predict the next statement of this code snippet: const TargetFrameLowering * getFrameLowering ( ) const override {" LLVM,NVPTX,1727,"Predict the next statement of this code snippet: const InstrInfo * getInstrInfo ( ) const override { return & InstrInfo ;" LLVM,NVPTX,1728,"Predict the next statement of this code snippet: const RegisterInfo * getRegisterInfo ( ) const override { return & InstrInfo . getRegisterInfo ( ) ;" LLVM,NVPTX,1729,"Predict the next statement of this code snippet: const TargetSelectionDAGInfo * getSelectionDAGInfo ( ) const override {" LLVM,NVPTX,1730,"Predict the next statement of this code snippet: unsigned int getSmVersion ( ) const {" LLVM,NVPTX,1731,"Predict the next statement of this code snippet: return & TLInfo ;" LLVM,NVPTX,1732,"Predict the next statement of this code snippet: return & TLInfo ;" LLVM,NVPTX,1733,"Predict the next statement of this code snippet: std :: string getTargetName ( ) const { return TargetName ;" LLVM,NVPTX,1734,"Predict the next statement of this code snippet: std :: string getTargetName ( ) const { return TargetName ;" LLVM,NVPTX,1735,"Predict the next statement of this code snippet: bool hasAtomRedG64 ( ) const { return SmVersion >= ;" LLVM,NVPTX,1736,"Predict the next statement of this code snippet: bool hasAtomRedGen32 ( ) const { return SmVersion >= ;" LLVM,NVPTX,1737,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1738,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1739,"Predict the next statement of this code snippet: bool hasAtomRedS32 ( ) const { return SmVersion >= ;" LLVM,NVPTX,1740,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1741,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1742,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1743,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1744,"Predict the next statement of this code snippet: bool hasDouble ( ) const { return SmVersion >= ;" LLVM,NVPTX,1745,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1746,"Predict the next statement of this code snippet: bool hasFMAF64 ( ) const {" LLVM,NVPTX,1747,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1748,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1749,"Predict the next statement of this code snippet: if ( TM . getDrvInterface ( ) == ) return ( SmVersion >= ) ;" LLVM,NVPTX,1750,"Predict the next statement of this code snippet: bool hasLDU ( ) const {" LLVM,NVPTX,1751,"Predict the next statement of this code snippet: return hasHWROT32 ( ) || hasSWROT32 ( ) ;" LLVM,NVPTX,1752,"Predict the next statement of this code snippet: inline bool hasROT64 ( ) const {" LLVM,NVPTX,1753,"Predict the next statement of this code snippet: inline bool hasSWROT32 ( ) const {" LLVM,NVPTX,1754,"Predict the next statement of this code snippet: inline bool hasSWROT32 ( ) const {" LLVM,NVPTX,1755,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1756,"Predict the next statement of this code snippet: if ( CPU . empty ( ) && FS . size ( ) ) llvm_unreachable ( ) ; TargetName = CPU . empty ( ) ? : CPU ; ParseSubtargetFeatures ( TargetName , FS ) ; if ( PTXVersion == ) { PTXVersion = ; } return * this ;" LLVM,NVPTX,1757,"Predict the next statement of this code snippet: ParseSubtargetFeatures ( TargetName , FS ) ; if ( PTXVersion == ) { PTXVersion = ; } return * this ;" LLVM,NVPTX,1758,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , InstrInfo ( ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) , FrameLowering ( ) {" LLVM,NVPTX,1759,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , InstrInfo ( ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) , FrameLowering ( ) {" LLVM,NVPTX,1760,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1761,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1762,"Predict the next statement of this code snippet: return false ;" LLVM,NVPTX,1763,"Predict the next statement of this code snippet: inline bool hasHWROT32 ( ) const { return false ;" LLVM,NVPTX,1764,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1765,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1766,"Predict the next statement of this code snippet: return true ;" LLVM,NVPTX,1767,"Predict the next statement of this code snippet: drvInterface = DriverInterface ; std :: string defCPU = ; ParseSubtargetFeatures ( ( CPU . empty ( ) ? defCPU : CPU ) , FS ) ; if ( FS . empty ( ) && CPU . empty ( ) ) TargetName = defCPU ; else if ( ! CPU . empty ( ) ) TargetName = CPU ; else llvm_unreachable ( ) ; if ( PTXVersion == ) { PTXVersion = ;" LLVM,NVPTX,1768,"Predict the next statement of this code snippet: bool hasAtomScope ( ) const { return HasAtomScope ;" LLVM,NVPTX,1769,"Predict the next statement of this code snippet: bool hasImageHandles ( ) const { if ( getDrvInterface ( ) == ) return ( SmVersion >= ) ; return false ;" LLVM,NVPTX,1770,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , InstrInfo ( ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) , FrameLowering ( ) {" LLVM,NVPTX,1771,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const Triple & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , InstrInfo ( ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) , FrameLowering ( ) {" LLVM,NVPTX,1772,"Predict the next statement of this code snippet: const char * p ; if ( is64Bit ( ) ) p = ; else p = ;" LLVM,NVPTX,1773,"Predict the next statement of this code snippet: if ( is64Bit ( ) ) p = ;" LLVM,NVPTX,1774,"Predict the next statement of this code snippet: inline bool hasROT32 ( ) const {" LLVM,NVPTX,1775,"Predict the next statement of this code snippet: else drvInterface = ; std :: string defCPU = ; ParseSubtargetFeatures ( ( CPU . empty ( ) ? defCPU : CPU ) , FS ) ; if ( FS . empty ( ) && CPU . empty ( ) ) TargetName = defCPU ; else if ( ! CPU . empty ( ) ) TargetName = CPU ; else llvm_unreachable ( ) ; if ( PTXVersion == ) {" LLVM,NVPTX,1776,"Predict the next statement of this code snippet: std :: string defCPU = ; ParseSubtargetFeatures ( ( CPU . empty ( ) ? defCPU : CPU ) , FS ) ; if ( FS . empty ( ) && CPU . empty ( ) ) TargetName = defCPU ; else if ( ! CPU . empty ( ) ) TargetName = CPU ; else llvm_unreachable ( ) ; if ( PTXVersion == ) { PTXVersion = ;" LLVM,NVPTX,1777,"Predict the next statement of this code snippet: TargetName = std :: string ( CPU . empty ( ) ? : CPU ) ; ParseSubtargetFeatures ( TargetName , FS ) ; if ( PTXVersion == ) {" LLVM,NVPTX,1778,"Predict the next statement of this code snippet: TargetName = std :: string ( CPU . empty ( ) ? : CPU ) ; ParseSubtargetFeatures ( TargetName , FS ) ; if ( PTXVersion == ) { PTXVersion = ; }" LLVM,NVPTX,1779,"Predict the next statement of this code snippet: const SelectionDAGTargetInfo * getSelectionDAGInfo ( ) const override {" LLVM,NVPTX,1780,"Predict the next statement of this code snippet: const SelectionDAGTargetInfo * getSelectionDAGInfo ( ) const override {" LLVM,NVPTX,1781,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1782,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1783,"Predict the next statement of this code snippet: bool hasAtomMinMax64 ( ) const {" LLVM,NVPTX,1784,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1785,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1786,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1787,"Predict the next statement of this code snippet: bool hasFP16Math ( ) const {" LLVM,NVPTX,1788,"Predict the next statement of this code snippet: std :: string defCPU = ; if ( FS . empty ( ) && CPU . empty ( ) ) TargetName = defCPU ; else if ( ! CPU . empty ( ) ) TargetName = CPU ; else llvm_unreachable ( ) ; SmVersion = atoi ( TargetName . c_str ( ) + ) ;" LLVM,NVPTX,1789,"Predict the next statement of this code snippet: drvInterface = DriverInterface ; std :: string defCPU = ; if ( FS . empty ( ) && CPU . empty ( ) ) TargetName = defCPU ; else if ( ! CPU . empty ( ) ) TargetName = CPU ; else llvm_unreachable ( ) ; SmVersion = atoi ( TargetName . c_str ( ) + ) ;" LLVM,NVPTX,1790,"Predict the next statement of this code snippet: if ( PTXVersion == ) { PTXVersion = ; }" LLVM,NVPTX,1791,"Predict the next statement of this code snippet: return & DL ;" LLVM,NVPTX,1792,"Predict the next statement of this code snippet: const DataLayout * getDataLayout ( ) const override { return & DL ;" LLVM,NVPTX,1793,"Predict the next statement of this code snippet: return SmVersion >= ;" LLVM,NVPTX,1794,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const std :: string & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , InstrInfo ( ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) , TSInfo ( TM . getDataLayout ( ) ) , FrameLowering ( ) {" LLVM,NVPTX,1795,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const std :: string & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM ) : GenSubtargetInfo ( TT , CPU , FS ) , PTXVersion ( ) , SmVersion ( ) , TM ( TM ) , InstrInfo ( ) , TLInfo ( TM , initializeSubtargetDependencies ( CPU , FS ) ) , TSInfo ( TM . getDataLayout ( ) ) , FrameLowering ( ) {" LLVM,NVPTX,1796,"Predict the next statement of this code snippet: Subtarget :: Subtarget ( const std :: string & TT , const std :: string & CPU , const std :: string & FS , const TargetMachine & TM , bool is64Bit ) : GenSubtargetInfo ( TT , CPU , FS ) , Is64Bit ( is64Bit ) , PTXVersion ( ) , SmVersion ( ) , InstrInfo ( initializeSubtargetDependencies ( CPU , FS ) ) , TLInfo ( ( const TargetMachine & ) TM , * this ) , TSInfo ( TM . getDataLayout ( ) ) , FrameLowering ( * this ) { Triple T ( TT ) ; if ( T . getOS ( ) == Triple :: NVCL ) drvInterface = ; else drvInterface = ;" LLVM,NVPTX,1797,"Predict the next statement of this code snippet: std :: string Ret = ; if ( ! is64Bit ) Ret += ; Ret += ;" LLVM,NVPTX,1798,"Predict the next statement of this code snippet: return & DL ;" LLVM,NVPTX,1799,"Predict the next statement of this code snippet: const DataLayout * getDataLayout ( ) const {" LLVM,NVPTX,1800,"Predict the next statement of this code snippet: return drvInterface ;" LLVM,NVPTX,1801,"Predict the next statement of this code snippet: return drvInterface ;" LLVM,NVPTX,1802,"Predict the next statement of this code snippet: return & FrameLowering ;" LLVM,NVPTX,1803,"Predict the next statement of this code snippet: return & InstrInfo . getRegisterInfo ( ) ;" LLVM,NVPTX,1804,"Predict the next statement of this code snippet: return & InstrInfo . getRegisterInfo ( ) ;" LLVM,NVPTX,1805,"Predict the next statement of this code snippet: return & TSInfo ;" LLVM,NVPTX,1806,"Predict the next statement of this code snippet: return & TSInfo ;" LLVM,NVPTX,1807,"Predict the next statement of this code snippet: return & TLInfo ;" LLVM,NVPTX,1808,"Predict the next statement of this code snippet: return false ;" LLVM,NVPTX,1809,"Predict the next statement of this code snippet: return Is64Bit ;" LLVM,NVPTX,1810,"Predict the next statement of this code snippet: bool is64Bit ( ) const { return Is64Bit ;" LLVM,NVPTX,1811,"Predict the next statement of this code snippet: static Target TheTarget32 ; return TheTarget32 ;" LLVM,NVPTX,1812,"Predict the next statement of this code snippet: static Target TheTarget64 ;" LLVM,NVPTX,1813,"Predict the next statement of this code snippet: void LLVMInitializeTargetInfo ( ) { RegisterTarget < Triple :: nvptx > X ( getTheTarget32 ( ) , , , ) ;" LLVM,NVPTX,1814,"Predict the next statement of this code snippet: RegisterTarget < Triple :: nvptx64 > Y ( getTheTarget64 ( ) , , ) ;" LLVM,NVPTX,1815,"Predict the next statement of this code snippet: RegisterTarget < Triple :: nvptx > X ( getTheTarget32 ( ) , , , ) ; RegisterTarget < Triple :: nvptx64 > Y ( getTheTarget64 ( ) , , , ) ;" LLVM,NVPTX,1816,"Predict the next statement of this code snippet: RegisterTarget < Triple :: nvptx64 > Y ( getTheTarget64 ( ) , , , ) ;" LLVM,NVPTX,1817,"Predict the next statement of this code snippet: void LLVMInitializeTargetInfo ( ) { RegisterTarget < Triple :: nvptx > X ( TheTarget32 , , ) ;" LLVM,NVPTX,1818,"Predict the next statement of this code snippet: RegisterTarget < Triple :: nvptx > X ( TheTarget32 , , ) ; RegisterTarget < Triple :: nvptx64 > Y ( TheTarget64 , , ) ;" LLVM,NVPTX,1819,"Predict the next statement of this code snippet: addPass ( createInferAddressSpacesPass ( ) ) ;" LLVM,NVPTX,1820,"Predict the next statement of this code snippet: void PassConfig :: addAddressSpaceInferencePasses ( ) { addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ; addPass ( createInferAddressSpacesPass ( ) ) ; addPass ( createAtomicLowerPass ( ) ) ;" LLVM,NVPTX,1821,"Predict the next statement of this code snippet: void PassConfig :: addFastRegAlloc ( ) {" LLVM,NVPTX,1822,"Predict the next statement of this code snippet: disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRAMachineSinkingID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ;" LLVM,NVPTX,1823,"Predict the next statement of this code snippet: printAndVerify ( ) ; if ( addILPOpts ( ) ) printAndVerify ( ) ; addPass ( & EarlyMachineLICMID ) ; addPass ( & MachineCSEID ) ; addPass ( & MachineSinkingID ) ; printAndVerify ( ) ; addPass ( & PeepholeOptimizerID ) ; printAndVerify ( ) ;" LLVM,NVPTX,1824,"Predict the next statement of this code snippet: addPass ( & LiveVariablesID ) ; addPass ( & MachineLoopInfoID ) ; addPass ( & PHIEliminationID ) ; addPass ( & TwoAddressInstructionPassID ) ;" LLVM,NVPTX,1825,"Predict the next statement of this code snippet: addPass ( createPrologEpilogPass ( ) ) ;" LLVM,NVPTX,1826,"Predict the next statement of this code snippet: if ( getOptLevel ( ) != CodeGenOpt :: None ) { addPass ( createPeephole ( ) ) ;" LLVM,NVPTX,1827,"Predict the next statement of this code snippet: addPass ( createProxyRegErasurePass ( ) ) ;" LLVM,NVPTX,1828,"Predict the next statement of this code snippet: void PassConfig :: addPreRegAlloc ( ) {" LLVM,NVPTX,1829,"Predict the next statement of this code snippet: bool addRegAssignAndRewriteFast ( ) override { llvm_unreachable ( ) ;" LLVM,NVPTX,1830,"Predict the next statement of this code snippet: llvm_unreachable ( ) ;" LLVM,NVPTX,1831,"Predict the next statement of this code snippet: addPass ( createSeparateConstOffsetFromGEPPass ( ) ) ; addPass ( createSpeculativeExecutionPass ( ) ) ; addPass ( createStraightLineStrengthReducePass ( ) ) ; addEarlyCSEOrGVNPass ( ) ;" LLVM,NVPTX,1832,"Predict the next statement of this code snippet: addPass ( createSeparateConstOffsetFromGEPPass ( ) ) ; addPass ( createSpeculativeExecutionPass ( ) ) ; addPass ( createStraightLineStrengthReducePass ( ) ) ; addEarlyCSEOrGVNPass ( ) ; addPass ( createNaryReassociatePass ( ) ) ; addPass ( createEarlyCSEPass ( ) ) ;" LLVM,NVPTX,1833,"Predict the next statement of this code snippet: void TargetMachine :: adjustPassManager ( PassManagerBuilder & Builder ) { Builder . addExtension ( PassManagerBuilder :: EP_EarlyAsPossible , [ & ] ( const PassManagerBuilder & , legacy :: PassManagerBase & PM ) {" LLVM,NVPTX,1834,"Predict the next statement of this code snippet: static std :: string computeDataLayout ( bool is64Bit , bool UseShortPointers ) {" LLVM,NVPTX,1835,"Predict the next statement of this code snippet: if ( ! is64Bit ) Ret += ;" LLVM,NVPTX,1836,"Predict the next statement of this code snippet: TargetPassConfig * TargetMachine :: createPassConfig ( PassManagerBase & PM ) {" LLVM,NVPTX,1837,"Predict the next statement of this code snippet: return new PassConfig ( * this , PM ) ;" LLVM,NVPTX,1838,"Predict the next statement of this code snippet: TargetTransformInfo TargetMachine :: getTargetTransformInfo ( const Function & F ) { return TargetTransformInfo ( TTIImpl ( this , F ) ) ;" LLVM,NVPTX,1839,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine32 > X ( getTheTarget32 ( ) ) ; RegisterTargetMachine < TargetMachine64 > Y ( getTheTarget64 ( ) ) ; PassRegistry & PR = * PassRegistry :: getPassRegistry ( ) ; initializeNVVMReflectPass ( PR ) ; initializeNVVMIntrRangePass ( PR ) ; initializeGenericToNVVMPass ( PR ) ; initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ; initializeAtomicLowerPass ( PR ) ; initializeLowerArgsPass ( PR ) ; initializeLowerAllocaPass ( PR ) ; initializeLowerAggrCopiesPass ( PR ) ; initializeProxyRegErasurePass ( PR ) ;" LLVM,NVPTX,1840,"Predict the next statement of this code snippet: PassConfig ( TargetMachine & TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,NVPTX,1841,"Predict the next statement of this code snippet: PassConfig ( TargetMachine & TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,NVPTX,1842,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1843,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1844,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1845,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1846,"Predict the next statement of this code snippet: PB . registerPipelineStartEPCallback ( [ this ] ( ModulePassManager & PM , OptimizationLevel Level ) { FunctionPassManager FPM ; FPM . addPass ( NVVMReflectPass ( Subtarget . getSmVersion ( ) ) ) ; PM . addPass ( createModuleToFunctionPassAdaptor ( std :: move ( FPM ) ) ) ; } ) ;" LLVM,NVPTX,1847,"Predict the next statement of this code snippet: void PassConfig :: addEarlyCSEOrGVNPass ( ) {" LLVM,NVPTX,1848,"Predict the next statement of this code snippet: if ( getOptLevel ( ) == CodeGenOpt :: Aggressive ) addPass ( createGVNPass ( ) ) ; else addPass ( createEarlyCSEPass ( ) ) ;" LLVM,NVPTX,1849,"Predict the next statement of this code snippet: void PassConfig :: addFastRegAlloc ( FunctionPass * RegAllocPass ) { assert ( ! RegAllocPass && ) ; addPass ( & PHIEliminationID ) ; addPass ( & TwoAddressInstructionPassID ) ;" LLVM,NVPTX,1850,"Predict the next statement of this code snippet: addPass ( createISelDag ( getTargetMachine ( ) , getOptLevel ( ) ) ) ; if ( ! ST . hasImageHandles ( ) ) addPass ( createReplaceImageHandlesPass ( ) ) ;" LLVM,NVPTX,1851,"Predict the next statement of this code snippet: addPass ( createISelDag ( getTargetMachine ( ) , getOptLevel ( ) ) ) ; if ( ! ST . hasImageHandles ( ) ) addPass ( createReplaceImageHandlesPass ( ) ) ; return false ;" LLVM,NVPTX,1852,"Predict the next statement of this code snippet: disablePass ( & MachineCopyPropagationID ) ; disablePass ( & TailDuplicateID ) ; addPass ( createNVVMReflectPass ( ) ) ; addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerKernelArgsPass ( & getTargetMachine ( ) ) ) ; addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ; addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createDeadCodeEliminationPass ( ) ) ; addPass ( createSeparateConstOffsetFromGEPPass ( ) ) ; addPass ( createSpeculativeExecutionPass ( ) ) ; addPass ( createStraightLineStrengthReducePass ( ) ) ; addEarlyCSEOrGVNPass ( ) ; addPass ( createNaryReassociatePass ( ) ) ; addPass ( createEarlyCSEPass ( ) ) ; TargetPassConfig :: addIRPasses ( ) ;" LLVM,NVPTX,1853,"Predict the next statement of this code snippet: printAndVerify ( ) ; if ( addILPOpts ( ) ) printAndVerify ( ) ; addPass ( & MachineLICMID ) ; addPass ( & MachineCSEID ) ; addPass ( & MachineSinkingID ) ; printAndVerify ( ) ; addPass ( & PeepholeOptimizerID ) ; printAndVerify ( ) ;" LLVM,NVPTX,1854,"Predict the next statement of this code snippet: assert ( ! RegAllocPass && ) ; addPass ( & ProcessImplicitDefsID ) ; addPass ( & LiveVariablesID ) ; addPass ( & MachineLoopInfoID ) ; addPass ( & PHIEliminationID ) ; addPass ( & TwoAddressInstructionPassID ) ; addPass ( & RegisterCoalescerID ) ;" LLVM,NVPTX,1855,"Predict the next statement of this code snippet: if ( addPass ( & MachineSchedulerID ) ) printAndVerify ( ) ; addPass ( & StackSlotColoringID ) ; printAndVerify ( ) ;" LLVM,NVPTX,1856,"Predict the next statement of this code snippet: addPass ( createPrologEpilogPass ( ) , false ) ;" LLVM,NVPTX,1857,"Predict the next statement of this code snippet: void TargetMachine64 :: anchor ( ) {" LLVM,NVPTX,1858,"Predict the next statement of this code snippet: void TargetMachine64 :: anchor ( ) {" LLVM,NVPTX,1859,"Predict the next statement of this code snippet: PassConfig * PassConfig = new PassConfig ( this , PM ) ; return PassConfig ;" LLVM,NVPTX,1860,"Predict the next statement of this code snippet: return nullptr ;" LLVM,NVPTX,1861,"Predict the next statement of this code snippet: return nullptr ;" LLVM,NVPTX,1862,"Predict the next statement of this code snippet: TargetMachine & getTargetMachine ( ) const { return getTM < TargetMachine > ( ) ;" LLVM,NVPTX,1863,"Predict the next statement of this code snippet: return TargetTransformInfo ( TTIImpl ( this , F ) ) ;" LLVM,NVPTX,1864,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ; PassRegistry & PR = * PassRegistry :: getPassRegistry ( ) ; initializeNVVMReflectPass ( PR ) ;" LLVM,NVPTX,1865,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ; PassRegistry & PR = * PassRegistry :: getPassRegistry ( ) ; initializeNVVMReflectPass ( PR ) ; initializeGenericToNVVMPass ( PR ) ; initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ; initializeFavorNonGenericAddrSpacesPass ( PR ) ; initializeLowerKernelArgsPass ( PR ) ; initializeLowerAllocaPass ( PR ) ;" LLVM,NVPTX,1866,"Predict the next statement of this code snippet: PassConfig ( TargetMachine * TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,NVPTX,1867,"Predict the next statement of this code snippet: PassConfig ( TargetMachine * TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {" LLVM,NVPTX,1868,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1869,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1870,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1871,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1872,"Predict the next statement of this code snippet: TargetMachine :: ~ TargetMachine ( ) {" LLVM,NVPTX,1873,"Predict the next statement of this code snippet: TargetMachine :: ~ TargetMachine ( ) {" LLVM,NVPTX,1874,"Predict the next statement of this code snippet: addPass ( createISelDag ( getTargetMachine ( ) , getOptLevel ( ) ) ) ; addPass ( createVectorElementizePass ( getTargetMachine ( ) ) ) ; return false ;" LLVM,NVPTX,1875,"Predict the next statement of this code snippet: TargetLoweringObjectFile * getObjFileLowering ( ) const override { return TLOF . get ( ) ;" LLVM,NVPTX,1876,"Predict the next statement of this code snippet: TargetLoweringObjectFile * getObjFileLowering ( ) const override { return TLOF . get ( ) ;" LLVM,NVPTX,1877,"Predict the next statement of this code snippet: return & Subtarget ;" LLVM,NVPTX,1878,"Predict the next statement of this code snippet: bool is64Bit ( ) const {" LLVM,NVPTX,1879,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ; RegisterMCAsmInfo < MCAsmInfo > A ( TheTarget32 ) ;" LLVM,NVPTX,1880,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ;" LLVM,NVPTX,1881,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DL ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) , STTI ( & TLInfo ) , VTTI ( & TLInfo ) {" LLVM,NVPTX,1882,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DL ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) , STTI ( & TLInfo ) , VTTI ( & TLInfo ) {" LLVM,NVPTX,1883,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1884,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1885,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1886,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1887,"Predict the next statement of this code snippet: addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ;" LLVM,NVPTX,1888,"Predict the next statement of this code snippet: void PassConfig :: addAddressSpaceInferencePasses ( ) { addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ;" LLVM,NVPTX,1889,"Predict the next statement of this code snippet: disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; addPass ( createNVVMReflectPass ( ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ;" LLVM,NVPTX,1890,"Predict the next statement of this code snippet: addPass ( createPrologEpilogPass ( ) , false ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addPass ( createPeephole ( ) ) ;" LLVM,NVPTX,1891,"Predict the next statement of this code snippet: addPass ( createPrologEpilogPass ( ) , false ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) {" LLVM,NVPTX,1892,"Predict the next statement of this code snippet: PM . add ( createNVVMReflectPass ( ) ) ;" LLVM,NVPTX,1893,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine32 > X ( getTheTarget32 ( ) ) ; RegisterTargetMachine < TargetMachine64 > Y ( getTheTarget64 ( ) ) ; PassRegistry & PR = * PassRegistry :: getPassRegistry ( ) ; initializeNVVMReflectPass ( PR ) ; initializeNVVMIntrRangePass ( PR ) ; initializeGenericToNVVMPass ( PR ) ; initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ;" LLVM,NVPTX,1894,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1895,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1896,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1897,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1898,"Predict the next statement of this code snippet: addPass ( createISelDag ( getTargetMachine ( ) , getOptLevel ( ) ) ) ; return false ;" LLVM,NVPTX,1899,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DL ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) {" LLVM,NVPTX,1900,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DL ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) {" LLVM,NVPTX,1901,"Predict the next statement of this code snippet: virtual bool addPassesToEmitMachineCode ( PassManagerBase & , JITCodeEmitter & , bool = true ) {" LLVM,NVPTX,1902,"Predict the next statement of this code snippet: virtual bool addPassesToEmitMC ( PassManagerBase & , MCContext * & , raw_ostream & , bool = true ) {" LLVM,NVPTX,1903,"Predict the next statement of this code snippet: virtual const DataLayout * getDataLayout ( ) const {" LLVM,NVPTX,1904,"Predict the next statement of this code snippet: return & FrameLowering ;" LLVM,NVPTX,1905,"Predict the next statement of this code snippet: virtual const TargetFrameLowering * getFrameLowering ( ) const {" LLVM,NVPTX,1906,"Predict the next statement of this code snippet: virtual const InstrInfo * getInstrInfo ( ) const { return & InstrInfo ;" LLVM,NVPTX,1907,"Predict the next statement of this code snippet: virtual const InstrInfo * getInstrInfo ( ) const {" LLVM,NVPTX,1908,"Predict the next statement of this code snippet: ManagedStringPool * getManagedStrPool ( ) const {" LLVM,NVPTX,1909,"Predict the next statement of this code snippet: ManagedStringPool * getManagedStrPool ( ) const { return const_cast < ManagedStringPool * > ( & ManagedStrPool ) ;" LLVM,NVPTX,1910,"Predict the next statement of this code snippet: switch ( II -> getIntrinsicID ( ) ) { case : return std :: make_pair ( II -> getArgOperand ( ) , llvm :: ADDRESS_SPACE_CONST ) ; case : return std :: make_pair ( II -> getArgOperand ( ) , llvm :: ADDRESS_SPACE_GLOBAL ) ; case :" LLVM,NVPTX,1911,"Predict the next statement of this code snippet: virtual const RegisterInfo * getRegisterInfo ( ) const { return & ( InstrInfo . getRegisterInfo ( ) ) ;" LLVM,NVPTX,1912,"Predict the next statement of this code snippet: return & STTI ;" LLVM,NVPTX,1913,"Predict the next statement of this code snippet: return & STTI ;" LLVM,NVPTX,1914,"Predict the next statement of this code snippet: virtual const TargetSelectionDAGInfo * getSelectionDAGInfo ( ) const {" LLVM,NVPTX,1915,"Predict the next statement of this code snippet: virtual const Subtarget * getSubtargetImpl ( ) const {" LLVM,NVPTX,1916,"Predict the next statement of this code snippet: virtual const Subtarget * getSubtargetImpl ( ) const {" LLVM,NVPTX,1917,"Predict the next statement of this code snippet: return const_cast < TargetLowering * > ( & TLInfo ) ;" LLVM,NVPTX,1918,"Predict the next statement of this code snippet: virtual const VectorTargetTransformInfo * getVectorTargetTransformInfo ( ) const {" LLVM,NVPTX,1919,"Predict the next statement of this code snippet: virtual const VectorTargetTransformInfo * getVectorTargetTransformInfo ( ) const { return & VTTI ;" LLVM,NVPTX,1920,"Predict the next statement of this code snippet: addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ;" LLVM,NVPTX,1921,"Predict the next statement of this code snippet: void PassConfig :: addAddressSpaceInferencePasses ( ) { addPass ( createSROAPass ( ) ) ;" LLVM,NVPTX,1922,"Predict the next statement of this code snippet: void TargetMachine :: addEarlyAsPossiblePasses ( PassManagerBase & PM ) { PM . add ( createNVVMReflectPass ( ) ) ; PM . add ( createNVVMIntrRangePass ( Subtarget . getSmVersion ( ) ) ) ;" LLVM,NVPTX,1923,"Predict the next statement of this code snippet: PM . add ( createNVVMReflectPass ( ) ) ;" LLVM,NVPTX,1924,"Predict the next statement of this code snippet: bool addPassesToEmitMC ( PassManagerBase & , MCContext * & , raw_pwrite_stream & , bool = true ) override {" LLVM,NVPTX,1925,"Predict the next statement of this code snippet: TargetPassConfig * TargetMachine :: createPassConfig ( PassManagerBase & PM ) {" LLVM,NVPTX,1926,"Predict the next statement of this code snippet: return new PassConfig ( this , PM ) ;" LLVM,NVPTX,1927,"Predict the next statement of this code snippet: return false ;" LLVM,NVPTX,1928,"Predict the next statement of this code snippet: initializeNVVMIntrRangePass ( PR ) ; initializeGenericToNVVMPass ( PR ) ; initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ; initializeInferAddressSpacesPass ( PR ) ; initializeLowerArgsPass ( PR ) ; initializeLowerAllocaPass ( PR ) ; initializeLowerAggrCopiesPass ( PR ) ;" LLVM,NVPTX,1929,"Predict the next statement of this code snippet: bool useShortPointers ( ) const {" LLVM,NVPTX,1930,"Predict the next statement of this code snippet: if ( ! is64Bit ) Ret += ;" LLVM,NVPTX,1931,"Predict the next statement of this code snippet: static CodeModel :: Model getEffectiveCodeModel ( Optional < CodeModel :: Model > CM ) { if ( CM ) return * CM ;" LLVM,NVPTX,1932,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) { disablePass ( & PrologEpilogCodeInserterID ) ; disablePass ( & MachineCopyPropagationID ) ; disablePass ( & BranchFolderPassID ) ; disablePass ( & TailDuplicateID ) ; addPass ( createImageOptimizerPass ( ) ) ; TargetPassConfig :: addIRPasses ( ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ;" LLVM,NVPTX,1933,"Predict the next statement of this code snippet: void PassConfig :: addPostRegAlloc ( ) { addPass ( createPrologEpilogPass ( ) , false ) ;" LLVM,NVPTX,1934,"Predict the next statement of this code snippet: addPass ( createPrologEpilogPass ( ) , false ) ;" LLVM,NVPTX,1935,"Predict the next statement of this code snippet: TargetIRAnalysis TargetMachine :: getTargetIRAnalysis ( ) { return TargetIRAnalysis ( [ this ] ( Function & ) { return TargetTransformInfo ( TTIImpl ( this ) ) ; } ) ;" LLVM,NVPTX,1936,"Predict the next statement of this code snippet: TargetIRAnalysis TargetMachine :: getTargetIRAnalysis ( ) { return TargetIRAnalysis ( [ this ] ( Function & ) { return TargetTransformInfo ( TTIImpl ( this ) ) ; } ) ;" LLVM,NVPTX,1937,"Predict the next statement of this code snippet: initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeGenericToNVVMPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeAssignValidGlobalNamesPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1938,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ; initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1939,"Predict the next statement of this code snippet: return const_cast < TargetLowering * > ( & TLInfo ) ;" LLVM,NVPTX,1940,"Predict the next statement of this code snippet: TargetLowering * getTargetLowering ( ) const override {" LLVM,NVPTX,1941,"Predict the next statement of this code snippet: addPass ( createAllocaHoisting ( ) ) ; addPass ( createISelDag ( getTargetMachine ( ) , getOptLevel ( ) ) ) ;" LLVM,NVPTX,1942,"Predict the next statement of this code snippet: addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createSeparateConstOffsetFromGEPPass ( ) ) ; if ( getOptLevel ( ) == CodeGenOpt :: Aggressive ) addPass ( createGVNPass ( ) ) ;" LLVM,NVPTX,1943,"Predict the next statement of this code snippet: addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createSeparateConstOffsetFromGEPPass ( ) ) ; if ( getOptLevel ( ) == CodeGenOpt :: Aggressive ) addPass ( createGVNPass ( ) ) ;" LLVM,NVPTX,1944,"Predict the next statement of this code snippet: addPass ( createPrologEpilogPass ( ) ) ; return false ;" LLVM,NVPTX,1945,"Predict the next statement of this code snippet: return false ;" LLVM,NVPTX,1946,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ; initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1947,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1948,"Predict the next statement of this code snippet: TargetMachine32 :: TargetMachine32 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , false ) {" LLVM,NVPTX,1949,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1950,"Predict the next statement of this code snippet: TargetMachine64 :: TargetMachine64 ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL ) : TargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL , true ) {" LLVM,NVPTX,1951,"Predict the next statement of this code snippet: disablePass ( & MachineCopyPropagationID ) ; disablePass ( & TailDuplicateID ) ; disablePass ( & StackMapLivenessID ) ; disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRAMachineSinkingID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ;" LLVM,NVPTX,1952,"Predict the next statement of this code snippet: bool addRegAssignmentOptimized ( ) override {" LLVM,NVPTX,1953,"Predict the next statement of this code snippet: initializeNVVMIntrRangePass ( PR ) ; initializeGenericToNVVMPass ( PR ) ; initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ; initializeLowerArgsPass ( PR ) ; initializeLowerAllocaPass ( PR ) ; initializeLowerAggrCopiesPass ( PR ) ; initializeProxyRegErasurePass ( PR ) ;" LLVM,NVPTX,1954,"Predict the next statement of this code snippet: initializeAssignValidGlobalNamesPass ( PR ) ; initializeLowerArgsPass ( PR ) ; initializeLowerAllocaPass ( PR ) ; initializeLowerAggrCopiesPass ( PR ) ; initializeProxyRegErasurePass ( PR ) ;" LLVM,NVPTX,1955,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , computeDataLayout ( is64bit , UseShortPointersOpt ) , TT , CPU , FS , Options , Reloc :: PIC_ , getEffectiveCodeModel ( CM , CodeModel :: Small ) , OL ) , is64bit ( is64bit ) , UseShortPointers ( UseShortPointersOpt ) , TLOF ( llvm :: make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) {" LLVM,NVPTX,1956,"Predict the next statement of this code snippet: disablePass ( & PrologEpilogCodeInserterID ) ; disablePass ( & MachineCopyPropagationID ) ; disablePass ( & BranchFolderPassID ) ; disablePass ( & TailDuplicateID ) ; addPass ( createImageOptimizerPass ( ) ) ; TargetPassConfig :: addIRPasses ( ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ;" LLVM,NVPTX,1957,"Predict the next statement of this code snippet: if ( ! ST . is64Bit ( ) ) Ret += ;" LLVM,NVPTX,1958,"Predict the next statement of this code snippet: disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addAddressSpaceInferencePasses ( ) ;" LLVM,NVPTX,1959,"Predict the next statement of this code snippet: disablePass ( & StackMapLivenessID ) ; disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRAMachineSinkingID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addAddressSpaceInferencePasses ( ) ; addStraightLineScalarOptimizationPasses ( ) ; } addPass ( createAtomicExpandPass ( ) ) ; TargetPassConfig :: addIRPasses ( ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addEarlyCSEOrGVNPass ( ) ; if ( ! DisableLoadStoreVectorizer ) addPass ( createLoadStoreVectorizerPass ( ) ) ; addPass ( createSROAPass ( ) ) ;" LLVM,NVPTX,1960,"Predict the next statement of this code snippet: TargetTransformInfo TargetMachine :: getTargetTransformInfo ( const Function & F ) const {" LLVM,NVPTX,1961,"Predict the next statement of this code snippet: TargetTransformInfo TargetMachine :: getTargetTransformInfo ( const Function & F ) const {" LLVM,NVPTX,1962,"Predict the next statement of this code snippet: disablePass ( & PrologEpilogCodeInserterID ) ; disablePass ( & MachineCopyPropagationID ) ; disablePass ( & BranchFolderPassID ) ; disablePass ( & TailDuplicateID ) ; addPass ( createImageOptimizerPass ( ) ) ; TargetPassConfig :: addIRPasses ( ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerKernelArgsPass ( & getTargetMachine ( ) ) ) ;" LLVM,NVPTX,1963,"Predict the next statement of this code snippet: return TargetTransformInfo ( TTIImpl ( this , F ) ) ;" LLVM,NVPTX,1964,"Predict the next statement of this code snippet: return TargetIRAnalysis ( [ this ] ( Function & F ) { return TargetTransformInfo ( TTIImpl ( this , F ) ) ; } ) ;" LLVM,NVPTX,1965,"Predict the next statement of this code snippet: initializeAssignValidGlobalNamesPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeFavorNonGenericAddrSpacesPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeLowerKernelArgsPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1966,"Predict the next statement of this code snippet: if ( UseInferAddressSpaces ) { addPass ( createInferAddressSpacesPass ( ) ) ; } else {" LLVM,NVPTX,1967,"Predict the next statement of this code snippet: addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ;" LLVM,NVPTX,1968,"Predict the next statement of this code snippet: initializeNVVMReflectPass ( PR ) ; initializeNVVMIntrRangePass ( PR ) ; initializeGenericToNVVMPass ( PR ) ; initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ; initializeFavorNonGenericAddrSpacesPass ( PR ) ; initializeInferAddressSpacesPass ( PR ) ; initializeLowerArgsPass ( PR ) ; initializeLowerAllocaPass ( PR ) ;" LLVM,NVPTX,1969,"Predict the next statement of this code snippet: initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ; initializeFavorNonGenericAddrSpacesPass ( PR ) ; initializeInferAddressSpacesPass ( PR ) ; initializeLowerArgsPass ( PR ) ;" LLVM,NVPTX,1970,"Predict the next statement of this code snippet: void TargetMachine :: registerPassBuilderCallbacks ( PassBuilder & PB ) { PB . registerPipelineParsingCallback ( [ ] ( StringRef PassName , FunctionPassManager & PM , ArrayRef < PassBuilder :: PipelineElement > ) { if ( PassName == ) { PM . addPass ( NVVMReflectPass ( ) ) ; return true ; } if ( PassName == ) { PM . addPass ( NVVMIntrRangePass ( ) ) ; return true ; }" LLVM,NVPTX,1971,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ; initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1972,"Predict the next statement of this code snippet: assert ( ! RegAllocPass && ) ; addPass ( & StrongPHIEliminationID ) ;" LLVM,NVPTX,1973,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) { disablePass ( & PrologEpilogCodeInserterID ) ; disablePass ( & MachineCopyPropagationID ) ; disablePass ( & BranchFolderPassID ) ; TargetPassConfig :: addIRPasses ( ) ; addPass ( createGenericToNVVMPass ( ) ) ;" LLVM,NVPTX,1974,"Predict the next statement of this code snippet: disablePass ( & PrologEpilogCodeInserterID ) ; disablePass ( & MachineCopyPropagationID ) ;" LLVM,NVPTX,1975,"Predict the next statement of this code snippet: FunctionPass * PassConfig :: createTargetRegisterAllocator ( bool ) { return ;" LLVM,NVPTX,1976,"Predict the next statement of this code snippet: return & DataLayout ;" LLVM,NVPTX,1977,"Predict the next statement of this code snippet: RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ; RegisterMCAsmInfo < MCAsmInfo > A ( TheTarget32 ) ; RegisterMCAsmInfo < MCAsmInfo > B ( TheTarget64 ) ; initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeGenericToNVVMPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1978,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DL ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) {" LLVM,NVPTX,1979,"Predict the next statement of this code snippet: addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerKernelArgsPass ( & getTargetMachine ( ) ) ) ; addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createDeadCodeEliminationPass ( ) ) ;" LLVM,NVPTX,1980,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ;" LLVM,NVPTX,1981,"Predict the next statement of this code snippet: initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeGenericToNVVMPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeAllocaHoistingPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1982,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , computeDataLayout ( is64bit ) , TT , CPU , FS , Options , RM , CM , OL ) , is64bit ( is64bit ) , TLOF ( make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { if ( Triple ( TT ) . getOS ( ) == Triple :: NVCL ) drvInterface = ; else drvInterface = ;" LLVM,NVPTX,1983,"Predict the next statement of this code snippet: void TargetMachine :: addAnalysisPasses ( PassManagerBase & PM ) { PM . add ( createBasicTargetTransformInfoPass ( this ) ) ;" LLVM,NVPTX,1984,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , TLOF ( make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this , is64bit ) {" LLVM,NVPTX,1985,"Predict the next statement of this code snippet: disablePass ( & TailDuplicateID ) ; disablePass ( & StackMapLivenessID ) ; disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRAMachineSinkingID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; addPass ( createNVVMReflectPass ( ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ;" LLVM,NVPTX,1986,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , computeDataLayout ( is64bit ) , TT , CPU , FS , Options , Reloc :: PIC_ , getEffectiveCodeModel ( CM ) , OL ) , is64bit ( is64bit ) , TLOF ( llvm :: make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { if ( TT . getOS ( ) == Triple :: NVCL ) drvInterface = ; else drvInterface = ;" LLVM,NVPTX,1987,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , computeDataLayout ( is64bit , UseShortPointersOpt ) , TT , CPU , FS , Options , Reloc :: PIC_ , getEffectiveCodeModel ( CM ) , OL ) , is64bit ( is64bit ) , UseShortPointers ( UseShortPointersOpt ) , TLOF ( llvm :: make_unique < TargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) {" LLVM,NVPTX,1988,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) { TargetPassConfig :: addIRPasses ( ) ;" LLVM,NVPTX,1989,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DL ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) {" LLVM,NVPTX,1990,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DL ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) {" LLVM,NVPTX,1991,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DataLayout ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) {" LLVM,NVPTX,1992,"Predict the next statement of this code snippet: TargetMachine :: TargetMachine ( const Target & T , StringRef TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Reloc :: Model RM , CodeModel :: Model CM , CodeGenOpt :: Level OL , bool is64bit ) : LLVMTargetMachine ( T , TT , CPU , FS , Options , RM , CM , OL ) , Subtarget ( TT , CPU , FS , is64bit ) , DataLayout ( Subtarget . getDataLayout ( ) ) , InstrInfo ( * this ) , TLInfo ( * this ) , TSInfo ( * this ) , FrameLowering ( * this , is64bit ) {" LLVM,NVPTX,1993,"Predict the next statement of this code snippet: initializeAllocaHoistingPass ( * PassRegistry :: getPassRegistry ( ) ) ; initializeAssignValidGlobalNamesPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,1994,"Predict the next statement of this code snippet: disablePass ( & MachineCopyPropagationID ) ; disablePass ( & BranchFolderPassID ) ; disablePass ( & TailDuplicateID ) ; TargetPassConfig :: addIRPasses ( ) ;" LLVM,NVPTX,1995,"Predict the next statement of this code snippet: disablePass ( & MachineCopyPropagationID ) ; disablePass ( & BranchFolderPassID ) ;" LLVM,NVPTX,1996,"Predict the next statement of this code snippet: addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerKernelArgsPass ( & getTargetMachine ( ) ) ) ; addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ; addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createDeadCodeEliminationPass ( ) ) ; addPass ( createSeparateConstOffsetFromGEPPass ( ) ) ; addPass ( createSpeculativeExecutionPass ( ) ) ; addPass ( createStraightLineStrengthReducePass ( ) ) ; addEarlyCSEOrGVNPass ( ) ;" LLVM,NVPTX,1997,"Predict the next statement of this code snippet: disablePass ( & MachineCopyPropagationID ) ; disablePass ( & TailDuplicateID ) ; addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerKernelArgsPass ( & getTargetMachine ( ) ) ) ; addPass ( createSROAPass ( ) ) ; addPass ( createLowerAllocaPass ( ) ) ; addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createDeadCodeEliminationPass ( ) ) ; addPass ( createSeparateConstOffsetFromGEPPass ( ) ) ; addPass ( createSpeculativeExecutionPass ( ) ) ;" LLVM,NVPTX,1998,"Predict the next statement of this code snippet: void PassConfig :: addIRPasses ( ) { disablePass ( & PrologEpilogCodeInserterID ) ; disablePass ( & MachineCopyPropagationID ) ; disablePass ( & TailDuplicateID ) ; disablePass ( & StackMapLivenessID ) ; disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; addPass ( createNVVMReflectPass ( ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ;" LLVM,NVPTX,1999,"Predict the next statement of this code snippet: void LLVMInitializeTarget ( ) { RegisterTargetMachine < TargetMachine32 > X ( TheTarget32 ) ; RegisterTargetMachine < TargetMachine64 > Y ( TheTarget64 ) ;" LLVM,NVPTX,2000,"Predict the next statement of this code snippet: disablePass ( & PostRAMachineSinkingID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getTM < TargetMachine > ( ) . getTargetTriple ( ) . getOS ( ) == Triple :: CUDA ) { addPass ( createGlobalOffsetPass ( ) ) ; addPass ( createLocalAccessorToSharedMemoryPass ( ) ) ; } if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) {" LLVM,NVPTX,2001,"Predict the next statement of this code snippet: disablePass ( & StackMapLivenessID ) ; disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRAMachineSinkingID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getTM < TargetMachine > ( ) . getTargetTriple ( ) . getOS ( ) == Triple :: CUDA ) { addPass ( createGlobalOffsetPass ( ) ) ; addPass ( createLocalAccessorToSharedMemoryPass ( ) ) ; } if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ;" LLVM,NVPTX,2002,"Predict the next statement of this code snippet: PassRegistry & PR = * PassRegistry :: getPassRegistry ( ) ; initializeNVVMReflectPass ( PR ) ; initializeNVVMIntrRangePass ( PR ) ; initializeGenericToNVVMPass ( PR ) ; initializeAllocaHoistingPass ( PR ) ; initializeAssignValidGlobalNamesPass ( PR ) ; initializeAtomicLowerPass ( PR ) ;" LLVM,NVPTX,2003,"Predict the next statement of this code snippet: disablePass ( & MachineCopyPropagationID ) ; disablePass ( & TailDuplicateID ) ; disablePass ( & StackMapLivenessID ) ; disablePass ( & LiveDebugValuesID ) ; disablePass ( & PostRAMachineSinkingID ) ; disablePass ( & PostRASchedulerID ) ; disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getTM < TargetMachine > ( ) . getTargetTriple ( ) . getOS ( ) == Triple :: CUDA && getTM < TargetMachine > ( ) . getTargetTriple ( ) . getEnvironment ( ) == Triple :: SYCLDevice ) { addPass ( createLocalAccessorToSharedMemoryPass ( ) ) ; } if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addAddressSpaceInferencePasses ( ) ; addStraightLineScalarOptimizationPasses ( ) ; } TargetPassConfig :: addIRPasses ( ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addEarlyCSEOrGVNPass ( ) ;" LLVM,NVPTX,2004,"Predict the next statement of this code snippet: disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getTM < TargetMachine > ( ) . getTargetTriple ( ) . getOS ( ) == Triple :: CUDA && getTM < TargetMachine > ( ) . getTargetTriple ( ) . getEnvironment ( ) == Triple :: SYCLDevice ) {" LLVM,NVPTX,2005,"Predict the next statement of this code snippet: PassRegistry & PR = * PassRegistry :: getPassRegistry ( ) ; initializeNVVMReflectPass ( PR ) ; initializeNVVMIntrRangePass ( PR ) ; initializeGenericToNVVMPass ( PR ) ;" LLVM,NVPTX,2006,"Predict the next statement of this code snippet: disablePass ( & PrologEpilogCodeInserterID ) ; disablePass ( & MachineCopyPropagationID ) ; disablePass ( & TailDuplicateID ) ; addPass ( createNVVMReflectPass ( ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ;" LLVM,NVPTX,2007,"Predict the next statement of this code snippet: disablePass ( & TailDuplicateID ) ; addPass ( createNVVMReflectPass ( ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addMemorySpaceInferencePasses ( ) ; addStraightLineScalarOptimizationPasses ( ) ;" LLVM,NVPTX,2008,"Predict the next statement of this code snippet: addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createDeadCodeEliminationPass ( ) ) ;" LLVM,NVPTX,2009,"Predict the next statement of this code snippet: addPass ( createLowerAllocaPass ( ) ) ; addPass ( createFavorNonGenericAddrSpacesPass ( ) ) ; addPass ( createDeadCodeEliminationPass ( ) ) ;" LLVM,NVPTX,2010,"Predict the next statement of this code snippet: disablePass ( & FuncletLayoutID ) ; disablePass ( & PatchableFunctionID ) ; disablePass ( & ShrinkWrapID ) ; const Subtarget & ST = * getTM < TargetMachine > ( ) . getSubtargetImpl ( ) ; addPass ( createNVVMReflectPass ( ST . getSmVersion ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) addPass ( createImageOptimizerPass ( ) ) ; addPass ( createAssignValidGlobalNamesPass ( ) ) ; addPass ( createGenericToNVVMPass ( ) ) ; addPass ( createLowerArgsPass ( & getTargetMachine ( ) ) ) ; if ( getOptLevel ( ) != CodeGenOpt :: None ) { addAddressSpaceInferencePasses ( ) ; addStraightLineScalarOptimizationPasses ( ) ; } TargetPassConfig :: addIRPasses ( ) ;" LLVM,NVPTX,2011,"Predict the next statement of this code snippet: bool addPassesToEmitMachineCode ( PassManagerBase & , JITCodeEmitter & , bool = true ) override {" LLVM,NVPTX,2012,"Predict the next statement of this code snippet: bool addPassesToEmitMachineCode ( PassManagerBase & , JITCodeEmitter & , bool = true ) override { return true ;" LLVM,NVPTX,2013,"Predict the next statement of this code snippet: return getSubtargetImpl ( ) -> getFrameLowering ( ) ;" LLVM,NVPTX,2014,"Predict the next statement of this code snippet: return getSubtargetImpl ( ) -> getInstrInfo ( ) ;" LLVM,NVPTX,2015,"Predict the next statement of this code snippet: const InstrInfo * getInstrInfo ( ) const override {" LLVM,NVPTX,2016,"Predict the next statement of this code snippet: return const_cast < ManagedStringPool * > ( & ManagedStrPool ) ;" LLVM,NVPTX,2017,"Predict the next statement of this code snippet: ManagedStringPool * getManagedStrPool ( ) const { return const_cast < ManagedStringPool * > ( & ManagedStrPool ) ;" LLVM,NVPTX,2018,"Predict the next statement of this code snippet: return getSubtargetImpl ( ) -> getRegisterInfo ( ) ;" LLVM,NVPTX,2019,"Predict the next statement of this code snippet: return getSubtargetImpl ( ) -> getSelectionDAGInfo ( ) ;" LLVM,NVPTX,2020,"Predict the next statement of this code snippet: return getSubtargetImpl ( ) -> getSelectionDAGInfo ( ) ;" LLVM,NVPTX,2021,"Predict the next statement of this code snippet: const Subtarget * getSubtargetImpl ( ) const override {" LLVM,NVPTX,2022,"Predict the next statement of this code snippet: return & Subtarget ;" LLVM,NVPTX,2023,"Predict the next statement of this code snippet: const TargetLowering * getTargetLowering ( ) const override {" LLVM,NVPTX,2024,"Predict the next statement of this code snippet: const TargetLowering * getTargetLowering ( ) const override {" LLVM,NVPTX,2025,"Predict the next statement of this code snippet: DataSection = new Section ( MCSection :: SV_ELF , SectionKind :: getData ( ) ) ; BSSSection = new Section ( MCSection :: SV_ELF , SectionKind :: getBSS ( ) ) ; ReadOnlySection = new Section ( MCSection :: SV_ELF , SectionKind :: getReadOnly ( ) ) ; StaticCtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; StaticDtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; LSDASection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; EHFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfAbbrevSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfInfoSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfLineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfPubTypesSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ;" LLVM,NVPTX,2026,"Predict the next statement of this code snippet: TargetLoweringObjectFile :: Initialize ( ctx , TM ) ; TextSection = new Section ( MCSection :: SV_ELF , SectionKind :: getText ( ) ) ; DataSection = new Section ( MCSection :: SV_ELF , SectionKind :: getData ( ) ) ; BSSSection = new Section ( MCSection :: SV_ELF , SectionKind :: getBSS ( ) ) ; ReadOnlySection = new Section ( MCSection :: SV_ELF , SectionKind :: getReadOnly ( ) ) ; StaticCtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; StaticDtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; LSDASection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; EHFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfAbbrevSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfInfoSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfLineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfPubTypesSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfDebugInlineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ;" LLVM,NVPTX,2027,"Predict the next statement of this code snippet: StaticDtorSection = nullptr ; LSDASection = nullptr ; EHFrameSection = nullptr ; DwarfAbbrevSection = nullptr ; DwarfInfoSection = nullptr ; DwarfLineSection = nullptr ; DwarfFrameSection = nullptr ; DwarfPubTypesSection = nullptr ; DwarfDebugInlineSection = nullptr ; DwarfStrSection = nullptr ; DwarfLocSection = nullptr ; DwarfARangesSection = nullptr ;" LLVM,NVPTX,2028,"Predict the next statement of this code snippet: MCSection * getExplicitSectionGlobal ( const GlobalObject * GO , SectionKind Kind , const TargetMachine & TM ) const override { return DataSection ;" LLVM,NVPTX,2029,"Predict the next statement of this code snippet: MCSection * getExplicitSectionGlobal ( const GlobalObject * GO , SectionKind Kind , const TargetMachine & TM ) const override {" LLVM,NVPTX,2030,"Predict the next statement of this code snippet: MCSection * getSectionForConstant ( const DataLayout & DL , SectionKind Kind , const Constant * C , Align & Alignment ) const override {" LLVM,NVPTX,2031,"Predict the next statement of this code snippet: MCSection * getSectionForConstant ( const DataLayout & DL , SectionKind Kind , const Constant * C , Align & Alignment ) const override {" LLVM,NVPTX,2032,"Predict the next statement of this code snippet: TargetLoweringObjectFile :: Initialize ( ctx , TM ) ;" LLVM,NVPTX,2033,"Predict the next statement of this code snippet: TargetObjectFile ( ) : TargetLoweringObjectFile ( ) {" LLVM,NVPTX,2034,"Predict the next statement of this code snippet: TargetObjectFile ( ) : TargetLoweringObjectFile ( ) {" LLVM,NVPTX,2035,"Predict the next statement of this code snippet: EHFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfAbbrevSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfInfoSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfLineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfPubTypesSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfDebugInlineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ;" LLVM,NVPTX,2036,"Predict the next statement of this code snippet: BSSSection = nullptr ; ReadOnlySection = nullptr ; StaticCtorSection = nullptr ; StaticDtorSection = nullptr ; LSDASection = nullptr ; EHFrameSection = nullptr ; DwarfAbbrevSection = nullptr ; DwarfInfoSection = nullptr ; DwarfLineSection = nullptr ; DwarfFrameSection = nullptr ; DwarfPubTypesSection = nullptr ; DwarfDebugInlineSection = nullptr ; DwarfStrSection = nullptr ;" LLVM,NVPTX,2037,"Predict the next statement of this code snippet: StaticCtorSection = ; StaticDtorSection = ; LSDASection = ; EHFrameSection = ; DwarfAbbrevSection = ; DwarfInfoSection = ; DwarfLineSection = ; DwarfFrameSection = ; DwarfPubTypesSection = ; DwarfDebugInlineSection = ; DwarfStrSection = ; DwarfLocSection = ; DwarfARangesSection = ; DwarfRangesSection = ;" LLVM,NVPTX,2038,"Predict the next statement of this code snippet: MCSection * getSectionForConstant ( const DataLayout & DL , SectionKind Kind , const Constant * C , unsigned & Align , const GlobalObject * GO ) const override {" LLVM,NVPTX,2039,"Predict the next statement of this code snippet: MCSection * getSectionForConstant ( SectionKind Kind , const Constant * C ) const override { return ReadOnlySection ;" LLVM,NVPTX,2040,"Predict the next statement of this code snippet: DataSection = new Section ( MCSection :: SV_ELF , SectionKind :: getDataRel ( ) ) ; BSSSection = new Section ( MCSection :: SV_ELF , SectionKind :: getBSS ( ) ) ; ReadOnlySection = new Section ( MCSection :: SV_ELF , SectionKind :: getReadOnly ( ) ) ; StaticCtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; StaticDtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; LSDASection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ;" LLVM,NVPTX,2041,"Predict the next statement of this code snippet: virtual const MCSection * getExplicitSectionGlobal ( const GlobalValue * GV , SectionKind Kind , Mangler * Mang , const TargetMachine & TM ) const { return DataSection ;" LLVM,NVPTX,2042,"Predict the next statement of this code snippet: virtual const MCSection * getSectionForConstant ( SectionKind Kind ) const { return ReadOnlySection ;" LLVM,NVPTX,2043,"Predict the next statement of this code snippet: DwarfAbbrevSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfInfoSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfLineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfPubTypesSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfDebugInlineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfStrSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfLocSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfARangesSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ;" LLVM,NVPTX,2044,"Predict the next statement of this code snippet: TargetObjectFile ( ) {" LLVM,NVPTX,2045,"Predict the next statement of this code snippet: TargetObjectFile ( ) {" LLVM,NVPTX,2046,"Predict the next statement of this code snippet: delete DwarfFrameSection ; delete DwarfPubTypesSection ; delete DwarfDebugInlineSection ; delete DwarfStrSection ; delete DwarfLocSection ; delete DwarfARangesSection ; delete DwarfRangesSection ;" LLVM,NVPTX,2047,"Predict the next statement of this code snippet: delete EHFrameSection ; delete DwarfAbbrevSection ; delete DwarfInfoSection ; delete DwarfLineSection ; delete DwarfFrameSection ; delete DwarfPubTypesSection ; delete DwarfDebugInlineSection ;" LLVM,NVPTX,2048,"Predict the next statement of this code snippet: ReadOnlySection = new Section ( MCSection :: SV_ELF , SectionKind :: getReadOnly ( ) ) ; StaticCtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; StaticDtorSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; LSDASection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; EHFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfAbbrevSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfInfoSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfLineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfFrameSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfPubTypesSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfDebugInlineSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ; DwarfStrSection = new Section ( MCSection :: SV_ELF , SectionKind :: getMetadata ( ) ) ;" LLVM,NVPTX,2049,"Predict the next statement of this code snippet: const MCSection * getSectionForConstant ( SectionKind Kind , const Constant * C ) const override { return ReadOnlySection ;" LLVM,NVPTX,2050,"Predict the next statement of this code snippet: const MCSection * getExplicitSectionGlobal ( const GlobalValue * GV , SectionKind Kind , Mangler & Mang , const TargetMachine & TM ) const override { return DataSection ;" LLVM,NVPTX,2051,"Predict the next statement of this code snippet: const MCSection * getExplicitSectionGlobal ( const GlobalValue * GV , SectionKind Kind , Mangler & Mang , const TargetMachine & TM ) const override {" LLVM,NVPTX,2052,"Predict the next statement of this code snippet: const MCSection * getSectionForConstant ( SectionKind Kind ) const override { return ReadOnlySection ;" LLVM,NVPTX,2053,"Predict the next statement of this code snippet: const MCSection * getSectionForConstant ( SectionKind Kind ) const override { return ReadOnlySection ;" LLVM,NVPTX,2054,"Predict the next statement of this code snippet: BSSSection = nullptr ; ReadOnlySection = nullptr ; StaticCtorSection = nullptr ; StaticDtorSection = nullptr ; LSDASection = nullptr ; EHFrameSection = nullptr ; DwarfAbbrevSection = nullptr ; DwarfInfoSection = nullptr ; DwarfLineSection = nullptr ; DwarfFrameSection = nullptr ;" LLVM,NVPTX,2055,"Predict the next statement of this code snippet: OS << ; Section -> PrintSwitchToSection ( * getStreamer ( ) . getContext ( ) . getAsmInfo ( ) , FI -> getTargetTriple ( ) , OS , SubSection ) ; OS << ; }" LLVM,NVPTX,2056,"Predict the next statement of this code snippet: assert ( ! SubSection && ) ; const MCObjectFileInfo * FI = getStreamer ( ) . getContext ( ) . getObjectFileInfo ( ) ; if ( isDwarfSection ( FI , CurSection ) ) OS << ; if ( isDwarfSection ( FI , Section ) ) { outputDwarfFileDirectives ( ) ; OS << ;" LLVM,NVPTX,2057,"Predict the next statement of this code snippet: DwarfFiles . emplace_back ( Directive ) ;" LLVM,NVPTX,2058,"Predict the next statement of this code snippet: DwarfFiles . emplace_back ( Directive ) ;" LLVM,NVPTX,2059,"Predict the next statement of this code snippet: const MCAsmInfo * MAI = Streamer . getContext ( ) . getAsmInfo ( ) ; const char * Directive = MAI -> getData8bitsDirective ( ) ; unsigned NumElements = Data . size ( ) ; const unsigned MaxLen = ; unsigned NumChunks = + ( ( NumElements - ) / MaxLen ) ; for ( unsigned I = ; I < NumChunks ; ++ I ) { SmallString < > Str ; raw_svector_ostream OS ( Str ) ; const char * Label = Directive ; for ( auto It = std :: next ( Data . bytes_begin ( ) , I * MaxLen ) , End = ( I == NumChunks - ) ? Data . bytes_end ( ) : std :: next ( Data . bytes_begin ( ) , ( I + ) * MaxLen ) ; It != End ; ++ It ) { OS << Label << ( unsigned ) * It ; if ( Label == Directive ) Label = ; } Streamer . EmitRawText ( OS . str ( ) ) ;" LLVM,NVPTX,2060,"Predict the next statement of this code snippet: if ( ! Section || Section -> getKind ( ) . isText ( ) || Section -> getKind ( ) . isWriteable ( ) ) return false ; return Section == FI -> getDwarfAbbrevSection ( ) || Section == FI -> getDwarfInfoSection ( ) || Section == FI -> getDwarfMacinfoSection ( ) || Section == FI -> getDwarfFrameSection ( ) || Section == FI -> getDwarfAddrSection ( ) || Section == FI -> getDwarfRangesSection ( ) || Section == FI -> getDwarfARangesSection ( ) || Section == FI -> getDwarfLocSection ( ) || Section == FI -> getDwarfStrSection ( ) || Section == FI -> getDwarfLineSection ( ) || Section == FI -> getDwarfStrOffSection ( ) || Section == FI -> getDwarfLineStrSection ( ) || Section == FI -> getDwarfPubNamesSection ( ) || Section == FI -> getDwarfPubTypesSection ( ) || Section == FI -> getDwarfSwiftASTSection ( ) || Section == FI -> getDwarfTypesDWOSection ( ) || Section == FI -> getDwarfAbbrevDWOSection ( ) || Section == FI -> getDwarfAccelObjCSection ( ) || Section == FI -> getDwarfAccelNamesSection ( ) || Section == FI -> getDwarfAccelTypesSection ( ) || Section == FI -> getDwarfAccelNamespaceSection ( ) || Section == FI -> getDwarfLocDWOSection ( ) || Section == FI -> getDwarfStrDWOSection ( ) || Section == FI -> getDwarfCUIndexSection ( ) || Section == FI -> getDwarfInfoDWOSection ( ) || Section == FI -> getDwarfLineDWOSection ( ) || Section == FI -> getDwarfTUIndexSection ( ) || Section == FI -> getDwarfStrOffDWOSection ( ) || Section == FI -> getDwarfDebugNamesSection ( ) || Section == FI -> getDwarfDebugInlineSection ( ) || Section == FI -> getDwarfGnuPubNamesSection ( ) || Section == FI -> getDwarfGnuPubTypesSection ( ) ;" LLVM,NVPTX,2061,"Predict the next statement of this code snippet: static bool isDwarfSection ( const MCObjectFileInfo * FI , const MCSection * Section ) { if ( ! Section || Section -> getKind ( ) . isText ( ) || Section -> getKind ( ) . isWriteable ( ) ) return false ; return Section == FI -> getDwarfAbbrevSection ( ) || Section == FI -> getDwarfInfoSection ( ) || Section == FI -> getDwarfMacinfoSection ( ) || Section == FI -> getDwarfFrameSection ( ) || Section == FI -> getDwarfAddrSection ( ) || Section == FI -> getDwarfRangesSection ( ) || Section == FI -> getDwarfARangesSection ( ) || Section == FI -> getDwarfLocSection ( ) || Section == FI -> getDwarfStrSection ( ) || Section == FI -> getDwarfLineSection ( ) || Section == FI -> getDwarfStrOffSection ( ) || Section == FI -> getDwarfLineStrSection ( ) || Section == FI -> getDwarfPubNamesSection ( ) || Section == FI -> getDwarfPubTypesSection ( ) || Section == FI -> getDwarfSwiftASTSection ( ) || Section == FI -> getDwarfTypesDWOSection ( ) || Section == FI -> getDwarfAbbrevDWOSection ( ) || Section == FI -> getDwarfAccelObjCSection ( ) || Section == FI -> getDwarfAccelNamesSection ( ) || Section == FI -> getDwarfAccelTypesSection ( ) || Section == FI -> getDwarfAccelNamespaceSection ( ) || Section == FI -> getDwarfLocDWOSection ( ) || Section == FI -> getDwarfStrDWOSection ( ) || Section == FI -> getDwarfCUIndexSection ( ) || Section == FI -> getDwarfInfoDWOSection ( ) || Section == FI -> getDwarfLineDWOSection ( ) || Section == FI -> getDwarfTUIndexSection ( ) || Section == FI -> getDwarfStrOffDWOSection ( ) || Section == FI -> getDwarfDebugNamesSection ( ) || Section == FI -> getDwarfDebugInlineSection ( ) || Section == FI -> getDwarfGnuPubNamesSection ( ) || Section == FI -> getDwarfGnuPubTypesSection ( ) ;" LLVM,NVPTX,2062,"Predict the next statement of this code snippet: TargetStreamer :: TargetStreamer ( MCStreamer & S ) : MCTargetStreamer ( S ) {" LLVM,NVPTX,2063,"Predict the next statement of this code snippet: TargetStreamer :: TargetStreamer ( MCStreamer & S ) : MCTargetStreamer ( S ) {" LLVM,NVPTX,2064,"Predict the next statement of this code snippet: if ( isDwarfSection ( FI , CurSection ) ) OS << ; if ( isDwarfSection ( FI , Section ) ) { for ( const std :: string & S : DwarfFiles ) getStreamer ( ) . EmitRawText ( S . data ( ) ) ;" LLVM,NVPTX,2065,"Predict the next statement of this code snippet: DwarfFiles . clear ( ) ; OS << ; Section -> PrintSwitchToSection ( * getStreamer ( ) . getContext ( ) . getAsmInfo ( ) , FI -> getTargetTriple ( ) , OS , SubSection ) ; OS << ; }" LLVM,NVPTX,2066,"Predict the next statement of this code snippet: if ( isDwarfSection ( FI , CurSection ) ) OS << ; if ( isDwarfSection ( FI , Section ) ) { outputDwarfFileDirectives ( ) ; OS << ; Section -> PrintSwitchToSection ( * getStreamer ( ) . getContext ( ) . getAsmInfo ( ) , FI -> getTargetTriple ( ) , OS , SubSection ) ; OS << ;" LLVM,NVPTX,2067,"Predict the next statement of this code snippet: void TargetStreamer :: changeSection ( const MCSection * CurSection , MCSection * Section , const MCExpr * SubSection , raw_ostream & OS ) { assert ( ! SubSection && ) ; const MCObjectFileInfo * FI = getStreamer ( ) . getContext ( ) . getObjectFileInfo ( ) ; if ( isDwarfSection ( FI , CurSection ) ) OS << ; if ( isDwarfSection ( FI , Section ) ) { outputDwarfFileDirectives ( ) ;" LLVM,NVPTX,2068,"Predict the next statement of this code snippet: void TargetStreamer :: closeLastSection ( ) { if ( HasSections ) getStreamer ( ) . EmitRawText ( ) ;" LLVM,NVPTX,2069,"Predict the next statement of this code snippet: outputDwarfFileDirectives ( ) ; OS << ;" LLVM,NVPTX,2070,"Predict the next statement of this code snippet: void TargetStreamer :: outputDwarfFileDirectives ( ) {" LLVM,NVPTX,2071,"Predict the next statement of this code snippet: void TargetStreamer :: outputDwarfFileDirectives ( ) {" LLVM,NVPTX,2072,"Predict the next statement of this code snippet: void TargetStreamer :: emitRawBytes ( StringRef Data ) { MCTargetStreamer :: emitRawBytes ( Data ) ; const MCAsmInfo * MAI = Streamer . getContext ( ) . getAsmInfo ( ) ; const char * Directive = MAI -> getData8bitsDirective ( ) ; unsigned NumElements = Data . size ( ) ; const unsigned MaxLen = ; unsigned NumChunks = + ( ( NumElements - ) / MaxLen ) ; for ( unsigned I = ; I < NumChunks ; ++ I ) { SmallString < > Str ;" LLVM,NVPTX,2073,"Predict the next statement of this code snippet: if ( isDwarfSection ( FI , CurSection ) ) OS << ; if ( isDwarfSection ( FI , Section ) ) { outputDwarfFileDirectives ( ) ; OS << ; Section -> PrintSwitchToSection ( * getStreamer ( ) . getContext ( ) . getAsmInfo ( ) , getStreamer ( ) . getContext ( ) . getTargetTriple ( ) , OS , SubSection ) ;" LLVM,NVPTX,2074,"Predict the next statement of this code snippet: void TargetStreamer :: closeLastSection ( ) {" LLVM,NVPTX,2075,"Predict the next statement of this code snippet: void TargetStreamer :: closeLastSection ( ) { if ( HasSections ) getStreamer ( ) . emitRawText ( ) ;" LLVM,NVPTX,2076,"Predict the next statement of this code snippet: void TargetStreamer :: emitRawBytes ( StringRef Data ) { MCTargetStreamer :: emitRawBytes ( Data ) ; const MCAsmInfo * MAI = Streamer . getContext ( ) . getAsmInfo ( ) ; const char * Directive = MAI -> getData8bitsDirective ( ) ; unsigned NumElements = Data . size ( ) ; const unsigned MaxLen = ; unsigned NumChunks = + ( ( NumElements - ) / MaxLen ) ; for ( unsigned I = ; I < NumChunks ; ++ I ) { SmallString < > Str ; raw_svector_ostream OS ( Str ) ; const char * Label = Directive ; for ( auto It = std :: next ( Data . bytes_begin ( ) , I * MaxLen ) , End = ( I == NumChunks - ) ? Data . bytes_end ( ) : std :: next ( Data . bytes_begin ( ) , ( I + ) * MaxLen ) ; It != End ; ++ It ) {" LLVM,NVPTX,2077,"Predict the next statement of this code snippet: const MCAsmInfo * MAI = Streamer . getContext ( ) . getAsmInfo ( ) ; const char * Directive = MAI -> getData8bitsDirective ( ) ; unsigned NumElements = Data . size ( ) ; const unsigned MaxLen = ; unsigned NumChunks = + ( ( NumElements - ) / MaxLen ) ; for ( unsigned I = ; I < NumChunks ; ++ I ) { SmallString < > Str ; raw_svector_ostream OS ( Str ) ; const char * Label = Directive ; for ( auto It = std :: next ( Data . bytes_begin ( ) , I * MaxLen ) , End = ( I == NumChunks - ) ? Data . bytes_end ( ) : std :: next ( Data . bytes_begin ( ) , ( I + ) * MaxLen ) ;" LLVM,NVPTX,2078,"Predict the next statement of this code snippet: for ( const std :: string & S : DwarfFiles ) getStreamer ( ) . emitRawText ( S ) ;" LLVM,NVPTX,2079,"Predict the next statement of this code snippet: void TargetStreamer :: outputDwarfFileDirectives ( ) { for ( const std :: string & S : DwarfFiles ) getStreamer ( ) . emitRawText ( S ) ;" LLVM,NVPTX,2080,"Predict the next statement of this code snippet: case : case : case : case : case : if ( LT . second . SimpleTy == ) return * LT . first ; return BaseT :: getArithmeticInstrCost ( Opcode , Ty , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ;" LLVM,NVPTX,2081,"Predict the next statement of this code snippet: void TTIImpl :: getUnrollingPreferences ( Loop * L , ScalarEvolution & SE , TTI :: UnrollingPreferences & UP ) {" LLVM,NVPTX,2082,"Predict the next statement of this code snippet: TTIImpl ( TTIImpl && Arg ) : BaseT ( std :: move ( static_cast < BaseT & > ( Arg ) ) ) , ST ( std :: move ( Arg . ST ) ) , TLI ( std :: move ( Arg . TLI ) ) {" LLVM,NVPTX,2083,"Predict the next statement of this code snippet: TTIImpl ( TTIImpl && Arg ) : BaseT ( std :: move ( static_cast < BaseT & > ( Arg ) ) ) , ST ( std :: move ( Arg . ST ) ) , TLI ( std :: move ( Arg . TLI ) ) {" LLVM,NVPTX,2084,"Predict the next statement of this code snippet: static bool readsLaneId ( const IntrinsicInst * II ) { return II -> getIntrinsicID ( ) == ;" LLVM,NVPTX,2085,"Predict the next statement of this code snippet: bool isLegalToVectorizeLoadChain ( unsigned ChainSizeInBytes , Align Alignment , unsigned AddrSpace ) const {" LLVM,NVPTX,2086,"Predict the next statement of this code snippet: bool isLegalToVectorizeStoreChain ( unsigned ChainSizeInBytes , Align Alignment , unsigned AddrSpace ) const {" LLVM,NVPTX,2087,"Predict the next statement of this code snippet: InstructionCost TTIImpl :: getArithmeticInstrCost ( unsigned Opcode , Type * Ty , TTI :: TargetCostKind CostKind , TTI :: OperandValueKind Opd1Info , TTI :: OperandValueKind Opd2Info , TTI :: OperandValueProperties Opd1PropInfo , TTI :: OperandValueProperties Opd2PropInfo , ArrayRef < const Value * > Args , const Instruction * CxtI ) { std :: pair < InstructionCost , MVT > LT = TLI -> getTypeLegalizationCost ( DL , Ty ) ; int ISD = TLI -> InstructionOpcodeToISD ( Opcode ) ; switch ( ISD ) {" LLVM,NVPTX,2088,"Predict the next statement of this code snippet: int ISD = TLI -> InstructionOpcodeToISD ( Opcode ) ; switch ( ISD ) { default : return BaseT :: getArithmeticInstrCost ( Opcode , Ty , CostKind , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ; case : case : case : case : case : if ( LT . second . SimpleTy == ) return * LT . first ; return BaseT :: getArithmeticInstrCost ( Opcode , Ty , CostKind , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ; }" LLVM,NVPTX,2089,"Predict the next statement of this code snippet: void TTIImpl :: getPeelingPreferences ( Loop * L , ScalarEvolution & SE , TTI :: PeelingPreferences & PP ) {" LLVM,NVPTX,2090,"Predict the next statement of this code snippet: TypeSize getRegisterBitWidth ( TargetTransformInfo :: RegisterKind K ) const {" LLVM,NVPTX,2091,"Predict the next statement of this code snippet: UP . Partial = UP . Runtime = true ;" LLVM,NVPTX,2092,"Predict the next statement of this code snippet: if ( Instruction * I = simplifyNvvmIntrinsic ( & II , IC ) ) { return I ; } return None ;" LLVM,NVPTX,2093,"Predict the next statement of this code snippet: SimplifyAction ( SpecialCase Special , FtzRequirementTy FtzReq ) : Special ( Special ) , FtzRequirement ( FtzReq ) {" LLVM,NVPTX,2094,"Predict the next statement of this code snippet: SimplifyAction ( SpecialCase Special , FtzRequirementTy FtzReq ) : Special ( Special ) , FtzRequirement ( FtzReq ) {" LLVM,NVPTX,2095,"Predict the next statement of this code snippet: explicit TTIImpl ( const TargetMachine * TM ) : BaseT ( TM ) , ST ( TM -> getSubtargetImpl ( ) ) , TLI ( ST -> getTargetLowering ( ) ) {" LLVM,NVPTX,2096,"Predict the next statement of this code snippet: explicit TTIImpl ( const TargetMachine * TM ) : BaseT ( TM ) , ST ( TM -> getSubtargetImpl ( ) ) , TLI ( ST -> getTargetLowering ( ) ) {" LLVM,NVPTX,2097,"Predict the next statement of this code snippet: SimplifyAction ( IID , FtzRequirementTy FtzReq ) : IID ( IID ) , FtzRequirement ( FtzReq ) {" LLVM,NVPTX,2098,"Predict the next statement of this code snippet: SimplifyAction ( IID , FtzRequirementTy FtzReq ) : IID ( IID ) , FtzRequirement ( FtzReq ) {" LLVM,NVPTX,2099,"Predict the next statement of this code snippet: case : return { , FTZ_MustBeOff } ; case : return { , FTZ_MustBeOn } ; case : return { , FTZ_Any } ; case : return { , FTZ_MustBeOff } ; case : return { , FTZ_MustBeOn } ; case : return { , FTZ_Any } ; case : return { , FTZ_MustBeOff } ; case : return { , FTZ_MustBeOn } ; case : return { , FTZ_Any } ; case : return { , FTZ_MustBeOff } ; case : return { , FTZ_MustBeOn } ; case : return { , FTZ_Any } ; case : return { , FTZ_MustBeOff } ; case : return { , FTZ_MustBeOn } ; case : return { , FTZ_Any } ; case : return { , FTZ_Any } ; case : return { , FTZ_MustBeOff } ; case : return { , FTZ_MustBeOn } ; case : return { , FTZ_Any } ; case : return { , FTZ_MustBeOff } ; case : return { , FTZ_MustBeOn } ; case : case : case : case : return { Instruction :: FPToSI } ; case : case : case : case : return { Instruction :: FPToUI } ; case : case : case : case : return { Instruction :: SIToFP } ; case : case : case : case : return { Instruction :: UIToFP } ; case : return { Instruction :: FAdd , FTZ_Any } ; case : return { Instruction :: FAdd , FTZ_MustBeOff } ; case : return { Instruction :: FAdd , FTZ_MustBeOn } ; case : return { Instruction :: FMul , FTZ_Any } ; case : return { Instruction :: FMul , FTZ_MustBeOff } ; case : return { Instruction :: FMul , FTZ_MustBeOn } ; case :" LLVM,NVPTX,2100,"Predict the next statement of this code snippet: return BaseT :: getArithmeticInstrCost ( Opcode , Ty , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ; case : case : case : case : case : if ( LT . second . SimpleTy == ) return * LT . first ; return BaseT :: getArithmeticInstrCost ( Opcode , Ty , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ;" LLVM,NVPTX,2101,"Predict the next statement of this code snippet: int ISD = TLI -> InstructionOpcodeToISD ( Opcode ) ; switch ( ISD ) { default : return BaseT :: getArithmeticInstrCost ( Opcode , Ty , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ; case : case : case : case :" LLVM,NVPTX,2102,"Predict the next statement of this code snippet: int ISD = TLI -> InstructionOpcodeToISD ( Opcode ) ; switch ( ISD ) { default : return BaseT :: getArithmeticInstrCost ( Opcode , Ty , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ; case : case : case :" LLVM,NVPTX,2103,"Predict the next statement of this code snippet: case : case : case : case : return { Instruction :: FPToUI } ; case : case : case : case : return { Instruction :: SIToFP } ; case : case : case : case : return { Instruction :: UIToFP } ; case : return { Instruction :: FAdd , FTZ_Any } ; case : return { Instruction :: FAdd , FTZ_MustBeOff } ; case : return { Instruction :: FAdd , FTZ_MustBeOn } ; case : return { Instruction :: FMul , FTZ_Any } ; case : return { Instruction :: FMul , FTZ_MustBeOff } ; case : return { Instruction :: FMul , FTZ_MustBeOn } ; case : return { Instruction :: FDiv , FTZ_Any } ; case : return { Instruction :: FDiv , FTZ_MustBeOff } ; case : return { Instruction :: FDiv , FTZ_MustBeOn } ; case : return { SPC_Reciprocal , FTZ_Any } ; case : return { SPC_Reciprocal , FTZ_MustBeOff } ; case : return { SPC_Reciprocal , FTZ_MustBeOn } ; default : return { } ; } } ( ) ; if ( Action . FtzRequirement != FTZ_Any ) { StringRef Attr = II -> getFunction ( ) -> getFnAttribute ( ) . getValueAsString ( ) ; DenormalMode Mode = parseDenormalFPAttribute ( Attr ) ; bool FtzEnabled = Mode . Output != DenormalMode :: IEEE ; if ( FtzEnabled != ( Action . FtzRequirement == FTZ_MustBeOn ) ) return nullptr ; } if ( Action . IID ) { SmallVector < Value * , > Args ( II -> args ( ) ) ; Type * Tys [ ] = { II -> getArgOperand ( ) -> getType ( ) } ; return CallInst :: Create ( ( II -> getModule ( ) , * Action . IID , Tys ) , Args ) ; } if ( Action . BinaryOp ) return BinaryOperator :: Create ( * Action . BinaryOp , II -> getArgOperand ( ) , II -> getArgOperand ( ) , II -> getName ( ) ) ; if ( Action . CastOp ) return CastInst :: Create ( * Action . CastOp , II -> getArgOperand ( ) , II -> getType ( ) , II -> getName ( ) ) ; if ( ! Action . Special ) return nullptr ;" LLVM,NVPTX,2104,"Predict the next statement of this code snippet: bool canHaveNonUndefGlobalInitializerInAddressSpace ( unsigned AS ) const {" LLVM,NVPTX,2105,"Predict the next statement of this code snippet: bool canHaveNonUndefGlobalInitializerInAddressSpace ( unsigned AS ) const { return AS != AddressSpace :: ADDRESS_SPACE_SHARED && AS != AddressSpace :: ADDRESS_SPACE_LOCAL && AS != ADDRESS_SPACE_PARAM ;" LLVM,NVPTX,2106,"Predict the next statement of this code snippet: ImmutablePass * llvm :: createTargetTransformInfoPass ( const TargetMachine * TM ) {" LLVM,NVPTX,2107,"Predict the next statement of this code snippet: void * getAdjustedAnalysisPointer ( const void * ID ) override { if ( ID == & TargetTransformInfo :: ID ) return ( TargetTransformInfo * ) this ; return this ;" LLVM,NVPTX,2108,"Predict the next statement of this code snippet: void getAnalysisUsage ( AnalysisUsage & AU ) const override {" LLVM,NVPTX,2109,"Predict the next statement of this code snippet: TargetTransformInfo :: getAnalysisUsage ( AU ) ;" LLVM,NVPTX,2110,"Predict the next statement of this code snippet: case : case : case : case : if ( LT . second . SimpleTy == ) return * LT . first ; return TargetTransformInfo :: getArithmeticInstrCost ( Opcode , Ty , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ;" LLVM,NVPTX,2111,"Predict the next statement of this code snippet: int ISD = TLI -> InstructionOpcodeToISD ( Opcode ) ; switch ( ISD ) { default : return TargetTransformInfo :: getArithmeticInstrCost ( Opcode , Ty , Opd1Info , Opd2Info , Opd1PropInfo , Opd2PropInfo ) ; case : case : case : case :" LLVM,NVPTX,2112,"Predict the next statement of this code snippet: bool TTI :: hasBranchDivergence ( ) const {" LLVM,NVPTX,2113,"Predict the next statement of this code snippet: bool TTI :: hasBranchDivergence ( ) const {" LLVM,NVPTX,2114,"Predict the next statement of this code snippet: void initializePass ( ) override { pushTTIStack ( this ) ;" LLVM,NVPTX,2115,"Predict the next statement of this code snippet: TTI ( const TargetMachine * TM ) : ImmutablePass ( ID ) , TLI ( TM -> getSubtargetImpl ( ) -> getTargetLowering ( ) ) { initializeTTIPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,2116,"Predict the next statement of this code snippet: bool areInlineCompatible ( const Function * Caller , const Function * Callee ) const {" LLVM,NVPTX,2117,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,2118,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,2119,"Predict the next statement of this code snippet: unsigned getNumberOfRegisters ( bool Vector ) const {" LLVM,NVPTX,2120,"Predict the next statement of this code snippet: unsigned getNumberOfRegisters ( bool Vector ) const { return ;" LLVM,NVPTX,2121,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,2122,"Predict the next statement of this code snippet: BaseT :: getUnrollingPreferences ( L , UP ) ; UP . Partial = UP . Runtime = true ;" LLVM,NVPTX,2123,"Predict the next statement of this code snippet: void TTIImpl :: getUnrollingPreferences ( Loop * L , TTI :: UnrollingPreferences & UP ) { BaseT :: getUnrollingPreferences ( L , UP ) ; UP . Partial = UP . Runtime = true ;" LLVM,NVPTX,2124,"Predict the next statement of this code snippet: bool isLegalToVectorizeLoadChain ( unsigned ChainSizeInBytes , unsigned Alignment , unsigned AddrSpace ) const {" LLVM,NVPTX,2125,"Predict the next statement of this code snippet: bool isLegalToVectorizeStoreChain ( unsigned ChainSizeInBytes , unsigned Alignment , unsigned AddrSpace ) const { return isLegalToVectorizeLoadChain ( ChainSizeInBytes , Alignment , AddrSpace ) ;" LLVM,NVPTX,2126,"Predict the next statement of this code snippet: bool isLegalToVectorizeStoreChain ( unsigned ChainSizeInBytes , unsigned Alignment , unsigned AddrSpace ) const {" LLVM,NVPTX,2127,"Predict the next statement of this code snippet: static bool isNVVMAtomic ( const IntrinsicInst * II ) { switch ( II -> getIntrinsicID ( ) ) { default : return false ; case : case :" LLVM,NVPTX,2128,"Predict the next statement of this code snippet: union { uint64_t x ; char a [ ] ; } temp64 ; temp64 . x = ; for ( unsigned i = , e = strlen ( str ) ; i != e ; ++ i ) temp64 . a [ i ] = str [ e - - i ] ; char encoded [ ] ;" LLVM,NVPTX,2129,"Predict the next statement of this code snippet: assert ( retval == && ) ; assert ( nbytes <= && ) ; temp64 . x = ; for ( int i = ; i < nbytes ; ++ i ) temp64 . a [ i ] = encoded [ i ] ;" LLVM,NVPTX,2130,"Predict the next statement of this code snippet: std :: lock_guard < sys :: Mutex > Guard ( Lock ) ; annotationCache -> erase ( Mod ) ;" LLVM,NVPTX,2131,"Predict the next statement of this code snippet: if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ;" LLVM,NVPTX,2132,"Predict the next statement of this code snippet: else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; if ( ( * annotationCache ) [ m ] [ gv ] . find ( prop ) == ( * annotationCache ) [ m ] [ gv ] . end ( ) ) return false ;" LLVM,NVPTX,2133,"Predict the next statement of this code snippet: bool getMaxNReg ( const Function & F , unsigned & x ) {" LLVM,NVPTX,2134,"Predict the next statement of this code snippet: return findOneNVVMAnnotation ( & F , , x ) ;" LLVM,NVPTX,2135,"Predict the next statement of this code snippet: bool getMaxNTIDx ( const Function & F , unsigned & x ) { return findOneNVVMAnnotation ( & F , , x ) ;" LLVM,NVPTX,2136,"Predict the next statement of this code snippet: return findOneNVVMAnnotation ( & F , , y ) ;" LLVM,NVPTX,2137,"Predict the next statement of this code snippet: bool getMaxNTIDy ( const Function & F , unsigned & y ) { return findOneNVVMAnnotation ( & F , , y ) ;" LLVM,NVPTX,2138,"Predict the next statement of this code snippet: return findOneNVVMAnnotation ( & F , , x ) ;" LLVM,NVPTX,2139,"Predict the next statement of this code snippet: bool getMinCTASm ( const Function & F , unsigned & x ) { return findOneNVVMAnnotation ( & F , , x ) ;" LLVM,NVPTX,2140,"Predict the next statement of this code snippet: bool getReqNTIDx ( const Function & F , unsigned & x ) {" LLVM,NVPTX,2141,"Predict the next statement of this code snippet: bool getReqNTIDx ( const Function & F , unsigned & x ) {" LLVM,NVPTX,2142,"Predict the next statement of this code snippet: return findOneNVVMAnnotation ( & F , , y ) ;" LLVM,NVPTX,2143,"Predict the next statement of this code snippet: return findOneNVVMAnnotation ( & F , , z ) ;" LLVM,NVPTX,2144,"Predict the next statement of this code snippet: return findOneNVVMAnnotation ( & F , , z ) ;" LLVM,NVPTX,2145,"Predict the next statement of this code snippet: std :: string getSamplerName ( const Value & val ) {" LLVM,NVPTX,2146,"Predict the next statement of this code snippet: assert ( val . hasName ( ) && ) ;" LLVM,NVPTX,2147,"Predict the next statement of this code snippet: assert ( val . hasName ( ) && ) ; return std :: string ( val . getName ( ) ) ;" LLVM,NVPTX,2148,"Predict the next statement of this code snippet: return std :: string ( val . getName ( ) ) ;" LLVM,NVPTX,2149,"Predict the next statement of this code snippet: bool isImage ( const Value & val ) {" LLVM,NVPTX,2150,"Predict the next statement of this code snippet: return isImageReadOnly ( val ) || isImageWriteOnly ( val ) || isImageReadWrite ( val ) ;" LLVM,NVPTX,2151,"Predict the next statement of this code snippet: if ( findAllNVVMAnnotation ( func , , annot ) ) { if ( is_contained ( annot , arg -> getArgNo ( ) ) ) return true ; } } return false ;" LLVM,NVPTX,2152,"Predict the next statement of this code snippet: bool isImageReadOnly ( const Value & val ) { if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ; std :: vector < unsigned > annot ; if ( findAllNVVMAnnotation ( func , , annot ) ) { if ( is_contained ( annot , arg -> getArgNo ( ) ) ) return true ; } } return false ;" LLVM,NVPTX,2153,"Predict the next statement of this code snippet: const Function * func = arg -> getParent ( ) ; std :: vector < unsigned > annot ;" LLVM,NVPTX,2154,"Predict the next statement of this code snippet: bool isImageReadWrite ( const Value & val ) { if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ; std :: vector < unsigned > annot ; if ( findAllNVVMAnnotation ( func , , annot ) ) { if ( is_contained ( annot , arg -> getArgNo ( ) ) ) return true ; } }" LLVM,NVPTX,2155,"Predict the next statement of this code snippet: bool isImageWriteOnly ( const Value & val ) {" LLVM,NVPTX,2156,"Predict the next statement of this code snippet: return F . getCallingConv ( ) == CallingConv :: PTX_Kernel ; } return ( x == ) ;" LLVM,NVPTX,2157,"Predict the next statement of this code snippet: if ( findOneNVVMAnnotation ( gv , , annot ) ) { assert ( ( annot == ) && ) ; return true ; } }" LLVM,NVPTX,2158,"Predict the next statement of this code snippet: if ( const GlobalValue * gv = dyn_cast < GlobalValue > ( & val ) ) { unsigned annot ; if ( findOneNVVMAnnotation ( gv , AnnotationName , annot ) ) { assert ( ( annot == ) && ) ; return true ; } } if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ;" LLVM,NVPTX,2159,"Predict the next statement of this code snippet: if ( findOneNVVMAnnotation ( gv , AnnotationName , annot ) ) { assert ( ( annot == ) && ) ; return true ; } } if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ;" LLVM,NVPTX,2160,"Predict the next statement of this code snippet: bool isSurface ( const Value & val ) { if ( const GlobalValue * gv = dyn_cast < GlobalValue > ( & val ) ) { unsigned annot ;" LLVM,NVPTX,2161,"Predict the next statement of this code snippet: if ( findOneNVVMAnnotation ( gv , , annot ) ) { assert ( ( annot == ) && ) ; return true ; }" LLVM,NVPTX,2162,"Predict the next statement of this code snippet: void llvm :: dumpBlock ( Value * v , char * blockName ) { Function * F = getParentFunction ( v ) ; if ( ! F ) return ; for ( Function :: iterator it = F -> begin ( ) , ie = F -> end ( ) ; it != ie ; ++ it ) { BasicBlock * B = & * it ; if ( strcmp ( B -> getName ( ) . data ( ) , blockName ) == ) { B -> dump ( ) ; return ; } }" LLVM,NVPTX,2163,"Predict the next statement of this code snippet: NamedMDNode * NMD = m -> getNamedMetadata ( llvm :: NamedMDForAnnotations ) ; if ( ! NMD ) return ; key_val_pair_t tmp ; for ( unsigned i = , e = NMD -> getNumOperands ( ) ; i != e ; ++ i ) { const MDNode * elem = NMD -> getOperand ( i ) ; Value * entity = elem -> getOperand ( ) ;" LLVM,NVPTX,2164,"Predict the next statement of this code snippet: if ( ! entity ) continue ; if ( entity != gv ) continue ; cacheAnnotationFromMD ( elem , tmp ) ; } if ( tmp . empty ( ) ) return ;" LLVM,NVPTX,2165,"Predict the next statement of this code snippet: for ( Function :: iterator it = F -> begin ( ) , ie = F -> end ( ) ; it != ie ; ++ it ) {" LLVM,NVPTX,2166,"Predict the next statement of this code snippet: for ( Function :: iterator it = F -> begin ( ) , ie = F -> end ( ) ; it != ie ; ++ it ) { BasicBlock * B = it ; if ( strcmp ( B -> getName ( ) . data ( ) , blockName ) == ) { B -> dump ( ) ; return ; } }" LLVM,NVPTX,2167,"Predict the next statement of this code snippet: if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ;" LLVM,NVPTX,2168,"Predict the next statement of this code snippet: bool llvm :: findAllNVVMAnnotation ( const GlobalValue * gv , std :: string prop , std :: vector < unsigned > & retval ) { const Module * m = gv -> getParent ( ) ; if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; if ( ( * annotationCache ) [ m ] [ gv ] . find ( prop ) == ( * annotationCache ) [ m ] [ gv ] . end ( ) ) return false ; retval = ( * annotationCache ) [ m ] [ gv ] [ prop ] ; return true ;" LLVM,NVPTX,2169,"Predict the next statement of this code snippet: const Module * m = gv -> getParent ( ) ; if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; if ( ( * annotationCache ) [ m ] [ gv ] . find ( prop ) == ( * annotationCache ) [ m ] [ gv ] . end ( ) ) return false ;" LLVM,NVPTX,2170,"Predict the next statement of this code snippet: bool llvm :: getAlign ( const CallInst & I , unsigned index , unsigned & align ) { if ( MDNode * alignNode = I . getMetadata ( ) ) { for ( int i = , n = alignNode -> getNumOperands ( ) ; i < n ; i ++ ) { if ( const ConstantInt * CI = dyn_cast < ConstantInt > ( alignNode -> getOperand ( i ) ) ) { unsigned v = CI -> getZExtValue ( ) ;" LLVM,NVPTX,2171,"Predict the next statement of this code snippet: bool llvm :: getMaxNTIDx ( const Function & F , unsigned & x ) { return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MAXNTID_X ] , x ) ) ;" LLVM,NVPTX,2172,"Predict the next statement of this code snippet: return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MAXNTID_X ] , x ) ) ;" LLVM,NVPTX,2173,"Predict the next statement of this code snippet: bool llvm :: getMaxNTIDy ( const Function & F , unsigned & y ) { return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MAXNTID_Y ] , y ) ) ;" LLVM,NVPTX,2174,"Predict the next statement of this code snippet: bool llvm :: getMaxNTIDz ( const Function & F , unsigned & z ) {" LLVM,NVPTX,2175,"Predict the next statement of this code snippet: return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MINNCTAPERSM ] , x ) ) ;" LLVM,NVPTX,2176,"Predict the next statement of this code snippet: if ( Instruction * I = dyn_cast < Instruction > ( v ) ) return I -> getParent ( ) ; return ;" LLVM,NVPTX,2177,"Predict the next statement of this code snippet: BasicBlock * llvm :: getParentBlock ( Value * v ) { if ( BasicBlock * B = dyn_cast < BasicBlock > ( v ) ) return B ; if ( Instruction * I = dyn_cast < Instruction > ( v ) ) return I -> getParent ( ) ; return ;" LLVM,NVPTX,2178,"Predict the next statement of this code snippet: if ( Function * F = dyn_cast < Function > ( v ) ) return F ; if ( Instruction * I = dyn_cast < Instruction > ( v ) ) return I -> getParent ( ) -> getParent ( ) ; if ( BasicBlock * B = dyn_cast < BasicBlock > ( v ) ) return B -> getParent ( ) ;" LLVM,NVPTX,2179,"Predict the next statement of this code snippet: bool llvm :: getReqNTIDx ( const Function & F , unsigned & x ) {" LLVM,NVPTX,2180,"Predict the next statement of this code snippet: return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_REQNTID_Y ] , y ) ) ;" LLVM,NVPTX,2181,"Predict the next statement of this code snippet: bool llvm :: getReqNTIDy ( const Function & F , unsigned & y ) {" LLVM,NVPTX,2182,"Predict the next statement of this code snippet: bool llvm :: getReqNTIDz ( const Function & F , unsigned & z ) {" LLVM,NVPTX,2183,"Predict the next statement of this code snippet: bool llvm :: getReqNTIDz ( const Function & F , unsigned & z ) {" LLVM,NVPTX,2184,"Predict the next statement of this code snippet: return llvm :: isImageReadOnly ( val ) || llvm :: isImageWriteOnly ( val ) ;" LLVM,NVPTX,2185,"Predict the next statement of this code snippet: bool llvm :: isImageReadOnly ( const llvm :: Value & val ) { if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ;" LLVM,NVPTX,2186,"Predict the next statement of this code snippet: if ( llvm :: findAllNVVMAnnotation ( func , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISWRITEONLY_IMAGE_PARAM ] , annot ) ) { if ( std :: find ( annot . begin ( ) , annot . end ( ) , arg -> getArgNo ( ) ) != annot . end ( ) ) return true ; } }" LLVM,NVPTX,2187,"Predict the next statement of this code snippet: if ( retval == false ) { if ( F . getCallingConv ( ) == llvm :: CallingConv :: PTX_Kernel ) return true ;" LLVM,NVPTX,2188,"Predict the next statement of this code snippet: assert ( ( annot == ) && ) ; return true ; } } if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ; std :: vector < unsigned > annot ; if ( llvm :: findAllNVVMAnnotation ( func , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISSAMPLER ] , annot ) ) { if ( std :: find ( annot . begin ( ) , annot . end ( ) , arg -> getArgNo ( ) ) != annot . end ( ) ) return true ;" LLVM,NVPTX,2189,"Predict the next statement of this code snippet: bool llvm :: isSurface ( const llvm :: Value & val ) { if ( const GlobalValue * gv = dyn_cast < GlobalValue > ( & val ) ) { unsigned annot ; if ( llvm :: findOneNVVMAnnotation ( gv , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISSURFACE ] , annot ) ) {" LLVM,NVPTX,2190,"Predict the next statement of this code snippet: if ( const GlobalValue * gv = dyn_cast < GlobalValue > ( & val ) ) { unsigned annot ; if ( llvm :: findOneNVVMAnnotation ( gv , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISTEXTURE ] , annot ) ) { assert ( ( annot == ) && ) ; return true ; } }" LLVM,NVPTX,2191,"Predict the next statement of this code snippet: NamedMDNode * NMD = m -> getNamedMetadata ( ) ; if ( ! NMD ) return ; key_val_pair_t tmp ; for ( unsigned i = , e = NMD -> getNumOperands ( ) ; i != e ; ++ i ) { const MDNode * elem = NMD -> getOperand ( i ) ; GlobalValue * entity = mdconst :: dyn_extract_or_null < GlobalValue > ( elem -> getOperand ( ) ) ; if ( ! entity ) continue ; if ( entity != gv ) continue ; cacheAnnotationFromMD ( elem , tmp ) ; } if ( tmp . empty ( ) ) return ; if ( ( * annotationCache ) . find ( m ) != ( * annotationCache ) . end ( ) ) ( * annotationCache ) [ m ] [ gv ] = std :: move ( tmp ) ; else { global_val_annot_t tmp1 ; tmp1 [ gv ] = std :: move ( tmp ) ;" LLVM,NVPTX,2192,"Predict the next statement of this code snippet: if ( ( * annotationCache ) . find ( m ) != ( * annotationCache ) . end ( ) ) ( * annotationCache ) [ m ] [ gv ] = std :: move ( tmp ) ; else { global_val_annot_t tmp1 ; tmp1 [ gv ] = std :: move ( tmp ) ;" LLVM,NVPTX,2193,"Predict the next statement of this code snippet: bool findAllNVVMAnnotation ( const GlobalValue * gv , const std :: string & prop , std :: vector < unsigned > & retval ) { MutexGuard Guard ( Lock ) ; const Module * m = gv -> getParent ( ) ; if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ;" LLVM,NVPTX,2194,"Predict the next statement of this code snippet: if ( ( * annotationCache ) [ m ] [ gv ] . find ( prop ) == ( * annotationCache ) [ m ] [ gv ] . end ( ) ) return false ; retval = ( * annotationCache ) [ m ] [ gv ] [ prop ] [ ] ;" LLVM,NVPTX,2195,"Predict the next statement of this code snippet: if ( ! retval ) return false ; for ( int i = , e = Vs . size ( ) ; i < e ; i ++ ) { unsigned v = Vs [ i ] ; if ( ( v >> ) == index ) { align = v & ;" LLVM,NVPTX,2196,"Predict the next statement of this code snippet: assert ( val . hasName ( ) && ) ;" LLVM,NVPTX,2197,"Predict the next statement of this code snippet: std :: string getTextureName ( const Value & val ) { assert ( val . hasName ( ) && ) ; return val . getName ( ) ;" LLVM,NVPTX,2198,"Predict the next statement of this code snippet: assert ( val . hasName ( ) && ) ; return val . getName ( ) ;" LLVM,NVPTX,2199,"Predict the next statement of this code snippet: const MDNode * elem = NMD -> getOperand ( i ) ; Value * entity = elem -> getOperand ( ) ; if ( ! entity ) continue ; if ( entity != gv ) continue ; cacheAnnotationFromMD ( elem , tmp ) ; } if ( tmp . empty ( ) ) return ; if ( ( * annotationCache ) . find ( m ) != ( * annotationCache ) . end ( ) ) ( * annotationCache ) [ m ] [ gv ] = tmp ; else { global_val_annot_t tmp1 ; tmp1 [ gv ] = tmp ; ( * annotationCache ) [ m ] = tmp1 ;" LLVM,NVPTX,2200,"Predict the next statement of this code snippet: for ( unsigned i = , e = NMD -> getNumOperands ( ) ; i != e ; ++ i ) { const MDNode * elem = NMD -> getOperand ( i ) ; Value * entity = elem -> getOperand ( ) ; if ( ! entity ) continue ; if ( entity != gv ) continue ; cacheAnnotationFromMD ( elem , tmp ) ; } if ( tmp . empty ( ) ) return ; if ( ( * annotationCache ) . find ( m ) != ( * annotationCache ) . end ( ) ) ( * annotationCache ) [ m ] [ gv ] = tmp ; else { global_val_annot_t tmp1 ;" LLVM,NVPTX,2201,"Predict the next statement of this code snippet: for ( int i = , n = alignNode -> getNumOperands ( ) ; i < n ; i ++ ) { if ( const ConstantInt * CI = dyn_cast < ConstantInt > ( alignNode -> getOperand ( i ) ) ) { unsigned v = CI -> getZExtValue ( ) ; if ( ( v >> ) == index ) { align = v & ; return true ; } if ( ( v >> ) > index ) { return false ; } }" LLVM,NVPTX,2202,"Predict the next statement of this code snippet: bool llvm :: isBarrierIntrinsic ( id ) { if ( ( id == ) || ( id == ) || ( id == ) || ( id == ) || ( id == ) ) return true ; return false ;" LLVM,NVPTX,2203,"Predict the next statement of this code snippet: if ( F . getCallingConv ( ) == llvm :: CallingConv :: PTX_Kernel ) return true ; else return false ; } return ( x == ) ;" LLVM,NVPTX,2204,"Predict the next statement of this code snippet: bool llvm :: isKernelFunction ( const Function & F ) { unsigned x = ; bool retval = llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISKERNEL_FUNCTION ] , x ) ; if ( retval == false ) { if ( F . getCallingConv ( ) == llvm :: CallingConv :: PTX_Kernel ) return true ;" LLVM,NVPTX,2205,"Predict the next statement of this code snippet: if ( id == || id == || id == || id == || id == || id == || id == || id == || id == ) { return true ;" LLVM,NVPTX,2206,"Predict the next statement of this code snippet: bool llvm :: findAllNVVMAnnotation ( const GlobalValue * gv , const std :: string & prop , std :: vector < unsigned > & retval ) { MutexGuard Guard ( Lock ) ; const Module * m = gv -> getParent ( ) ; if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ;" LLVM,NVPTX,2207,"Predict the next statement of this code snippet: else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ;" LLVM,NVPTX,2208,"Predict the next statement of this code snippet: MutexGuard Guard ( Lock ) ; const Module * m = gv -> getParent ( ) ; if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; if ( ( * annotationCache ) [ m ] [ gv ] . find ( prop ) == ( * annotationCache ) [ m ] [ gv ] . end ( ) ) return false ; retval = ( * annotationCache ) [ m ] [ gv ] [ prop ] [ ] ;" LLVM,NVPTX,2209,"Predict the next statement of this code snippet: if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ;" LLVM,NVPTX,2210,"Predict the next statement of this code snippet: std :: vector < unsigned > annot ; if ( llvm :: findAllNVVMAnnotation ( func , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISREADONLY_IMAGE_PARAM ] , annot ) ) { if ( is_contained ( annot , arg -> getArgNo ( ) ) ) return true ; } } return false ;" LLVM,NVPTX,2211,"Predict the next statement of this code snippet: const Function * func = arg -> getParent ( ) ; std :: vector < unsigned > annot ; if ( llvm :: findAllNVVMAnnotation ( func , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISREADWRITE_IMAGE_PARAM ] , annot ) ) { if ( is_contained ( annot , arg -> getArgNo ( ) ) ) return true ; }" LLVM,NVPTX,2212,"Predict the next statement of this code snippet: const Function * func = arg -> getParent ( ) ; std :: vector < unsigned > annot ;" LLVM,NVPTX,2213,"Predict the next statement of this code snippet: unsigned annot ; if ( llvm :: findOneNVVMAnnotation ( gv , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISSAMPLER ] , annot ) ) { assert ( ( annot == ) && ) ; return true ; } } if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ;" LLVM,NVPTX,2214,"Predict the next statement of this code snippet: if ( ! NMD ) return ; key_val_pair_t tmp ; for ( unsigned i = , e = NMD -> getNumOperands ( ) ; i != e ; ++ i ) { const MDNode * elem = NMD -> getOperand ( i ) ; Value * entity = elem -> getOperand ( ) ; if ( ! entity ) continue ;" LLVM,NVPTX,2215,"Predict the next statement of this code snippet: Value * entity = elem -> getOperand ( ) ; if ( ! entity ) continue ; if ( entity != gv ) continue ; cacheAnnotationFromMD ( elem , tmp ) ; } if ( tmp . empty ( ) ) return ; if ( ( * annotationCache ) . find ( m ) != ( * annotationCache ) . end ( ) ) ( * annotationCache ) [ m ] [ gv ] = std :: move ( tmp ) ; else { global_val_annot_t tmp1 ;" LLVM,NVPTX,2216,"Predict the next statement of this code snippet: bool llvm :: getAlign ( const CallInst & I , unsigned index , unsigned & align ) { if ( MDNode * alignNode = I . getMDNode ( ) ) {" LLVM,NVPTX,2217,"Predict the next statement of this code snippet: bool llvm :: getAlign ( const CallInst & I , unsigned index , unsigned & align ) { if ( MDNode * alignNode = I . getMDNode ( ) ) { for ( int i = , n = alignNode -> getNumOperands ( ) ; i < n ; i ++ ) { if ( const ConstantInt * CI = dyn_cast < ConstantInt > ( alignNode -> getOperand ( i ) ) ) { unsigned v = CI -> getZExtValue ( ) ; if ( ( v >> ) == index ) {" LLVM,NVPTX,2218,"Predict the next statement of this code snippet: assert ( ( md -> getNumOperands ( ) % ) == && ) ; for ( unsigned i = , e = md -> getNumOperands ( ) ; i != e ; i += ) {" LLVM,NVPTX,2219,"Predict the next statement of this code snippet: assert ( prop && ) ; ConstantInt * Val = dyn_cast < ConstantInt > ( md -> getOperand ( i + ) ) ; assert ( Val && ) ; std :: string keyname = prop -> getString ( ) . str ( ) ; if ( retval . find ( keyname ) != retval . end ( ) ) retval [ keyname ] . push_back ( Val -> getZExtValue ( ) ) ; else {" LLVM,NVPTX,2220,"Predict the next statement of this code snippet: continue ; } } else if ( const GEPOperator * GEP = dyn_cast < GEPOperator > ( V ) ) { V = GEP -> getPointerOperand ( ) -> stripPointerCasts ( ) ; continue ; } else if ( const PHINode * PN = dyn_cast < PHINode > ( V ) ) { if ( V != V2 && processed . find ( V ) != processed . end ( ) ) return NULL ; processed . insert ( PN ) ; const Value * common = ; for ( unsigned i = ; i != PN -> getNumIncomingValues ( ) ; ++ i ) { const Value * pv = PN -> getIncomingValue ( i ) ; const Value * base = skipPointerTransfer ( pv , processed ) ; if ( base ) { if ( common == ) common = base ; else if ( common != base ) return PN ; } } if ( common == ) return PN ; V = common ; } break ; } return V ;" LLVM,NVPTX,2221,"Predict the next statement of this code snippet: } else if ( const GEPOperator * GEP = dyn_cast < GEPOperator > ( V ) ) { V = GEP -> getPointerOperand ( ) -> stripPointerCasts ( ) ; continue ; } else if ( const PHINode * PN = dyn_cast < PHINode > ( V ) ) { if ( V != V2 && processed . find ( V ) != processed . end ( ) ) return NULL ; processed . insert ( PN ) ; const Value * common = ; for ( unsigned i = ; i != PN -> getNumIncomingValues ( ) ; ++ i ) { const Value * pv = PN -> getIncomingValue ( i ) ; const Value * base = skipPointerTransfer ( pv , processed ) ; if ( base ) { if ( common == ) common = base ; else if ( common != base ) return PN ; } } if ( common == ) return PN ;" LLVM,NVPTX,2222,"Predict the next statement of this code snippet: if ( tmp . empty ( ) ) return ; if ( ( * annotationCache ) . find ( m ) != ( * annotationCache ) . end ( ) ) ( * annotationCache ) [ m ] [ gv ] = std :: move ( tmp ) ; else { global_val_annot_t tmp1 ; tmp1 [ gv ] = std :: move ( tmp ) ;" LLVM,NVPTX,2223,"Predict the next statement of this code snippet: void llvm :: dumpBlock ( Value * v , char * blockName ) { Function * F = getParentFunction ( v ) ;" LLVM,NVPTX,2224,"Predict the next statement of this code snippet: Function * F = getParentFunction ( v ) ; if ( ! F ) return ;" LLVM,NVPTX,2225,"Predict the next statement of this code snippet: Instruction * I = getInst ( base , instName ) ;" LLVM,NVPTX,2226,"Predict the next statement of this code snippet: void llvm :: dumpInst ( Value * base , char * instName ) { Instruction * I = getInst ( base , instName ) ;" LLVM,NVPTX,2227,"Predict the next statement of this code snippet: void llvm :: dumpInstRec ( Value * v ) { std :: set < Instruction * > visited ; dumpInstRec ( v , & visited ) ;" LLVM,NVPTX,2228,"Predict the next statement of this code snippet: dumpInstRec ( v , & visited ) ;" LLVM,NVPTX,2229,"Predict the next statement of this code snippet: I -> getParent ( ) -> dump ( ) ; return ; } if ( BasicBlock * B = dyn_cast < BasicBlock > ( v ) ) { B -> getParent ( ) -> dump ( ) ; return ; } if ( Function * F = dyn_cast < Function > ( v ) ) { F -> getParent ( ) -> dump ( ) ; return ;" LLVM,NVPTX,2230,"Predict the next statement of this code snippet: if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ;" LLVM,NVPTX,2231,"Predict the next statement of this code snippet: else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; if ( ( * annotationCache ) [ m ] [ gv ] . find ( prop ) == ( * annotationCache ) [ m ] [ gv ] . end ( ) ) return false ; retval = ( * annotationCache ) [ m ] [ gv ] [ prop ] [ ] ;" LLVM,NVPTX,2232,"Predict the next statement of this code snippet: bool llvm :: findOneNVVMAnnotation ( const GlobalValue * gv , std :: string prop , unsigned & retval ) { MutexGuard Guard ( Lock ) ; const Module * m = gv -> getParent ( ) ; if ( ( * annotationCache ) . find ( m ) == ( * annotationCache ) . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; else if ( ( * annotationCache ) [ m ] . find ( gv ) == ( * annotationCache ) [ m ] . end ( ) ) cacheAnnotationFromMD ( m , gv ) ; if ( ( * annotationCache ) [ m ] [ gv ] . find ( prop ) == ( * annotationCache ) [ m ] [ gv ] . end ( ) ) return false ; retval = ( * annotationCache ) [ m ] [ gv ] [ prop ] [ ] ; return true ;" LLVM,NVPTX,2233,"Predict the next statement of this code snippet: if ( const ConstantInt * CI = mdconst :: dyn_extract < ConstantInt > ( alignNode -> getOperand ( i ) ) ) { unsigned v = CI -> getZExtValue ( ) ; if ( ( v >> ) == index ) { align = v & ; return true ; } if ( ( v >> ) > index ) { return false ;" LLVM,NVPTX,2234,"Predict the next statement of this code snippet: for ( inst_iterator it = inst_begin ( F ) , ie = inst_end ( F ) ; it != ie ; ++ it ) { Instruction * I = & * it ;" LLVM,NVPTX,2235,"Predict the next statement of this code snippet: return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MAXNTID_X ] , x ) ) ;" LLVM,NVPTX,2236,"Predict the next statement of this code snippet: return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MAXNTID_Y ] , y ) ) ;" LLVM,NVPTX,2237,"Predict the next statement of this code snippet: bool llvm :: getMaxNTIDy ( const Function & F , unsigned & y ) {" LLVM,NVPTX,2238,"Predict the next statement of this code snippet: bool llvm :: getMaxNTIDz ( const Function & F , unsigned & z ) {" LLVM,NVPTX,2239,"Predict the next statement of this code snippet: bool llvm :: getMaxNTIDz ( const Function & F , unsigned & z ) { return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MAXNTID_Z ] , z ) ) ;" LLVM,NVPTX,2240,"Predict the next statement of this code snippet: bool llvm :: getMinCTASm ( const Function & F , unsigned & x ) { return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MINNCTAPERSM ] , x ) ) ;" LLVM,NVPTX,2241,"Predict the next statement of this code snippet: bool llvm :: getMinCTASm ( const Function & F , unsigned & x ) {" LLVM,NVPTX,2242,"Predict the next statement of this code snippet: if ( BasicBlock * B = dyn_cast < BasicBlock > ( v ) ) return B ;" LLVM,NVPTX,2243,"Predict the next statement of this code snippet: if ( BasicBlock * B = dyn_cast < BasicBlock > ( v ) ) return B -> getParent ( ) ;" LLVM,NVPTX,2244,"Predict the next statement of this code snippet: bool llvm :: getReqNTIDx ( const Function & F , unsigned & x ) {" LLVM,NVPTX,2245,"Predict the next statement of this code snippet: bool llvm :: getReqNTIDz ( const Function & F , unsigned & z ) { return ( llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_REQNTID_Z ] , z ) ) ;" LLVM,NVPTX,2246,"Predict the next statement of this code snippet: std :: string llvm :: getSurfaceName ( const llvm :: Value & val ) {" LLVM,NVPTX,2247,"Predict the next statement of this code snippet: std :: string llvm :: getSurfaceName ( const llvm :: Value & val ) {" LLVM,NVPTX,2248,"Predict the next statement of this code snippet: return ( id == ) || ( id == ) || ( id == ) || ( id == ) || ( id == ) ;" LLVM,NVPTX,2249,"Predict the next statement of this code snippet: if ( const Argument * arg = dyn_cast < Argument > ( & val ) ) { const Function * func = arg -> getParent ( ) ; std :: vector < unsigned > annot ; if ( llvm :: findAllNVVMAnnotation ( func , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISREADONLY_IMAGE_PARAM ] , annot ) ) { if ( std :: find ( annot . begin ( ) , annot . end ( ) , arg -> getArgNo ( ) ) != annot . end ( ) ) return true ;" LLVM,NVPTX,2250,"Predict the next statement of this code snippet: std :: vector < unsigned > annot ; if ( llvm :: findAllNVVMAnnotation ( func , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISREADWRITE_IMAGE_PARAM ] , annot ) ) {" LLVM,NVPTX,2251,"Predict the next statement of this code snippet: if ( std :: find ( annot . begin ( ) , annot . end ( ) , arg -> getArgNo ( ) ) != annot . end ( ) ) return true ; } } return false ;" LLVM,NVPTX,2252,"Predict the next statement of this code snippet: unsigned x = ; bool retval = llvm :: findOneNVVMAnnotation ( & F , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISKERNEL_FUNCTION ] , x ) ; if ( ! retval ) { return F . getCallingConv ( ) == llvm :: CallingConv :: PTX_Kernel ; } return ( x == ) ;" LLVM,NVPTX,2253,"Predict the next statement of this code snippet: unsigned annot ; if ( llvm :: findOneNVVMAnnotation ( gv , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_MANAGED ] , annot ) ) { assert ( ( annot == ) && ) ;" LLVM,NVPTX,2254,"Predict the next statement of this code snippet: return id == || id == || id == || id == || id == || id == || id == || id == || id == ;" LLVM,NVPTX,2255,"Predict the next statement of this code snippet: std :: vector < unsigned > annot ; if ( llvm :: findAllNVVMAnnotation ( func , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISSAMPLER ] , annot ) ) { if ( std :: find ( annot . begin ( ) , annot . end ( ) , arg -> getArgNo ( ) ) != annot . end ( ) ) return true ; } }" LLVM,NVPTX,2256,"Predict the next statement of this code snippet: if ( llvm :: findOneNVVMAnnotation ( gv , llvm :: PropertyAnnotationNames [ llvm :: PROPERTY_ISTEXTURE ] , annot ) ) { assert ( ( annot == ) && ) ; return true ; }" LLVM,NVPTX,2257,"Predict the next statement of this code snippet: Result . push_back ( A ) ;" LLVM,NVPTX,2258,"Predict the next statement of this code snippet: V = GEP -> getPointerOperand ( ) -> stripPointerCasts ( ) ; continue ; } else if ( const PHINode * PN = dyn_cast < PHINode > ( V ) ) { if ( V != V2 && processed . find ( V ) != processed . end ( ) ) return nullptr ; processed . insert ( PN ) ; const Value * common = nullptr ; for ( unsigned i = ; i != PN -> getNumIncomingValues ( ) ; ++ i ) { const Value * pv = PN -> getIncomingValue ( i ) ; const Value * base = skipPointerTransfer ( pv , processed ) ; if ( base ) { if ( ! common ) common = base ; else if ( common != base ) return PN ; } } if ( ! common ) return PN ; V = common ; } break ; }" LLVM,NVPTX,2259,"Predict the next statement of this code snippet: temp64 . x = ; for ( unsigned i = , e = strlen ( str ) ; i != e ; ++ i ) temp64 . a [ i ] = str [ e - - i ] ; char encoded [ ] ; int nbytes ; int retval = encode_leb128 ( temp64 . x , & nbytes , encoded , ) ; ( void ) retval ;" LLVM,NVPTX,2260,"Predict the next statement of this code snippet: bool isParamLoad ( const MachineInstr * MI ) { if ( ( MI -> getOpcode ( ) != ) && ( MI -> getOpcode ( ) != ) ) return false ; if ( MI -> getOperand ( ) . isImm ( ) == false ) return false ;" LLVM,NVPTX,2261,"Predict the next statement of this code snippet: case : return ; case : return ; case : return ; case : return ; } llvm_unreachable ( ) ;" LLVM,NVPTX,2262,"Predict the next statement of this code snippet: initializeNVVMIntrRangePass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,2263,"Predict the next statement of this code snippet: NVVMIntrRangePass :: NVVMIntrRangePass ( ) : NVVMIntrRangePass ( NVVMIntrRangeSM ) {" LLVM,NVPTX,2264,"Predict the next statement of this code snippet: NVVMIntrRangePass :: NVVMIntrRangePass ( ) : NVVMIntrRangePass ( NVVMIntrRangeSM ) {" LLVM,NVPTX,2265,"Predict the next statement of this code snippet: return runNVVMIntrRange ( F , SmVersion ) ? PreservedAnalyses :: none ( ) : PreservedAnalyses :: all ( ) ;" LLVM,NVPTX,2266,"Predict the next statement of this code snippet: return runNVVMIntrRange ( F , SmVersion ) ? PreservedAnalyses :: none ( ) : PreservedAnalyses :: all ( ) ;" LLVM,NVPTX,2267,"Predict the next statement of this code snippet: Changed |= addRangeMetadata ( , MaxBlockSize . z + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . x , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . y , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . z , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . x + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . y + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . z + , Call ) ; break ; case : Changed |= addRangeMetadata ( , + , Call ) ; break ; case : Changed |= addRangeMetadata ( , , Call ) ; break ; default : break ; } } } return Changed ;" LLVM,NVPTX,2268,"Predict the next statement of this code snippet: bool NVVMIntrRange :: runOnFunction ( Function & F ) {" LLVM,NVPTX,2269,"Predict the next statement of this code snippet: bool NVVMIntrRange :: runOnFunction ( Function & F ) {" LLVM,NVPTX,2270,"Predict the next statement of this code snippet: static bool addRangeMetadata ( uint64_t Low , uint64_t High , CallInst * C ) { LLVMContext & Context = C -> getParent ( ) -> getContext ( ) ; IntegerType * Int32Ty = Type :: getInt32Ty ( Context ) ;" LLVM,NVPTX,2271,"Predict the next statement of this code snippet: case : case : Changed |= addRangeMetadata ( , MaxBlockSize . x , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . y , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . z , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . x + , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . y + , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . z + , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxGridSize . x , Call ) ; break ;" LLVM,NVPTX,2272,"Predict the next statement of this code snippet: switch ( Callee -> getIntrinsicID ( ) ) { case : case : Changed |= addRangeMetadata ( , MaxBlockSize . x , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . y , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . z , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . x + , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . y + , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxBlockSize . z + , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxGridSize . x , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxGridSize . y , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxGridSize . z , Call ) ; break ; case : case : Changed |= addRangeMetadata ( , MaxGridSize . x + , Call ) ; break ; case :" LLVM,NVPTX,2273,"Predict the next statement of this code snippet: Metadata * LowAndHigh [ ] = { ConstantAsMetadata :: get ( ConstantInt :: get ( Int32Ty , Low ) ) , ConstantAsMetadata :: get ( ConstantInt :: get ( Int32Ty , High ) ) } ; C -> setMetadata ( LLVMContext :: MD_range , MDNode :: get ( Context , LowAndHigh ) ) ;" LLVM,NVPTX,2274,"Predict the next statement of this code snippet: MaxBlockSize . y = ; MaxBlockSize . z = ; MaxGridSize . x = SmVersion >= ? : ; MaxGridSize . y = ; MaxGridSize . z = ; initializeNVVMIntrRangePass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,2275,"Predict the next statement of this code snippet: Changed |= addRangeMetadata ( , MaxBlockSize . z + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . x , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . y , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . z , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . x + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . y + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . z + , Call ) ; break ; case : Changed |= addRangeMetadata ( , + , Call ) ; break ; case : Changed |= addRangeMetadata ( , , Call ) ;" LLVM,NVPTX,2276,"Predict the next statement of this code snippet: case : Changed |= addRangeMetadata ( , MaxGridSize . x , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . y , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . z , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . x + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . y + , Call ) ; break ; case : Changed |= addRangeMetadata ( , MaxGridSize . z + , Call ) ; break ; case : Changed |= addRangeMetadata ( , + , Call ) ; break ; case : Changed |= addRangeMetadata ( , , Call ) ;" LLVM,NVPTX,2277,"Predict the next statement of this code snippet: NVVMReflect ( ) : FunctionPass ( ID ) {" LLVM,NVPTX,2278,"Predict the next statement of this code snippet: bool NVVMReflect :: runOnFunction ( Function & F ) { if ( ! NVVMReflectEnabled ) return false ; if ( F . getName ( ) == NVVM_REFLECT_FUNCTION ) { assert ( F . isDeclaration ( ) && ) ; assert ( F . getReturnType ( ) -> isIntegerTy ( ) && ) ; return false ; } SmallVector < Instruction * , > ToRemove ; for ( Instruction & I : instructions ( F ) ) { CallInst * Call = dyn_cast < CallInst > ( & I ) ; if ( ! Call ) continue ; Function * Callee = Call -> getCalledFunction ( ) ; if ( ! Callee || ( Callee -> getName ( ) != NVVM_REFLECT_FUNCTION && Callee -> getIntrinsicID ( ) != ) ) continue ; assert ( Call -> getNumOperands ( ) == && ) ; const Value * Str = Call -> getArgOperand ( ) ; if ( const CallInst * ConvCall = dyn_cast < CallInst > ( Str ) ) { Str = ConvCall -> getArgOperand ( ) ; } assert ( isa < ConstantExpr > ( Str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Value * Operand = cast < Constant > ( Sym ) -> getOperand ( ) ; if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( Operand ) ) { assert ( GV -> hasInitializer ( ) && ) ; const Constant * Initializer = GV -> getInitializer ( ) ; Operand = Initializer ; } assert ( isa < ConstantDataSequential > ( Operand ) && ) ; assert ( cast < ConstantDataSequential > ( Operand ) -> isCString ( ) && ) ; StringRef ReflectArg = cast < ConstantDataSequential > ( Operand ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; LLVM_DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( ReflectArg == ) { if ( auto * Flag = mdconst :: extract_or_null < ConstantInt > ( F . getParent ( ) -> getModuleFlag ( ) ) ) ReflectVal = Flag -> getSExtValue ( ) ;" LLVM,NVPTX,2279,"Predict the next statement of this code snippet: CallInst * Call = dyn_cast < CallInst > ( & I ) ; if ( ! Call ) continue ; Function * Callee = Call -> getCalledFunction ( ) ; if ( ! Callee || ( Callee -> getName ( ) != NVVM_REFLECT_FUNCTION && Callee -> getIntrinsicID ( ) != ) ) continue ; assert ( Call -> getNumOperands ( ) == && ) ; const Value * Str = Call -> getArgOperand ( ) ; if ( const CallInst * ConvCall = dyn_cast < CallInst > ( Str ) ) { Str = ConvCall -> getArgOperand ( ) ; } assert ( isa < ConstantExpr > ( Str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ;" LLVM,NVPTX,2280,"Predict the next statement of this code snippet: NVVMReflect ( const StringMap < int > & Mapping ) : ModulePass ( ID ) , ReflectFunction ( nullptr ) {" LLVM,NVPTX,2281,"Predict the next statement of this code snippet: assert ( ReflectFunction -> isDeclaration ( ) && ) ; assert ( ReflectFunction -> getReturnType ( ) -> isIntegerTy ( ) && ) ; std :: vector < Instruction * > ToRemove ; for ( User * U : ReflectFunction -> users ( ) ) { assert ( isa < CallInst > ( U ) && ) ; CallInst * Reflect = cast < CallInst > ( U ) ; assert ( ( Reflect -> getNumOperands ( ) == ) && ) ; const Value * conv = Reflect -> getArgOperand ( ) ; assert ( isa < CallInst > ( conv ) && ) ; const CallInst * ConvCall = cast < CallInst > ( conv ) ; const Value * str = ConvCall -> getArgOperand ( ) ; assert ( isa < ConstantExpr > ( str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ;" LLVM,NVPTX,2282,"Predict the next statement of this code snippet: return new NVVMReflect ( SmVersion ) ;" LLVM,NVPTX,2283,"Predict the next statement of this code snippet: return new NVVMReflect ( SmVersion ) ;" LLVM,NVPTX,2284,"Predict the next statement of this code snippet: explicit NVVMReflect ( unsigned int Sm ) : FunctionPass ( ID ) , SmVersion ( Sm ) { initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,2285,"Predict the next statement of this code snippet: NVVMReflectPass :: NVVMReflectPass ( ) : NVVMReflectPass ( ) {" LLVM,NVPTX,2286,"Predict the next statement of this code snippet: NVVMReflectPass :: NVVMReflectPass ( ) : NVVMReflectPass ( ) {" LLVM,NVPTX,2287,"Predict the next statement of this code snippet: bool NVVMReflect :: runOnFunction ( Function & F ) {" LLVM,NVPTX,2288,"Predict the next statement of this code snippet: } assert ( isa < ConstantExpr > ( Str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Value * Operand = cast < Constant > ( Sym ) -> getOperand ( ) ; if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( Operand ) ) { assert ( GV -> hasInitializer ( ) && ) ; const Constant * Initializer = GV -> getInitializer ( ) ; Operand = Initializer ; } assert ( isa < ConstantDataSequential > ( Operand ) && ) ; assert ( cast < ConstantDataSequential > ( Operand ) -> isCString ( ) && ) ; std :: string ReflectArg = cast < ConstantDataSequential > ( Operand ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( VarMap . find ( ReflectArg ) != VarMap . end ( ) ) {" LLVM,NVPTX,2289,"Predict the next statement of this code snippet: const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Value * Operand = cast < Constant > ( Sym ) -> getOperand ( ) ; if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( Operand ) ) { assert ( GV -> hasInitializer ( ) && ) ; const Constant * Initializer = GV -> getInitializer ( ) ; Operand = Initializer ; } assert ( isa < ConstantDataSequential > ( Operand ) && ) ; assert ( cast < ConstantDataSequential > ( Operand ) -> isCString ( ) && ) ; std :: string ReflectArg = cast < ConstantDataSequential > ( Operand ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( VarMap . find ( ReflectArg ) != VarMap . end ( ) ) {" LLVM,NVPTX,2290,"Predict the next statement of this code snippet: const Value * Str = Call -> getArgOperand ( ) ; if ( const CallInst * ConvCall = dyn_cast < CallInst > ( Str ) ) { Str = ConvCall -> getArgOperand ( ) ; } assert ( isa < ConstantExpr > ( Str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Value * Operand = cast < Constant > ( Sym ) -> getOperand ( ) ; if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( Operand ) ) { assert ( GV -> hasInitializer ( ) && ) ; const Constant * Initializer = GV -> getInitializer ( ) ; Operand = Initializer ; } assert ( isa < ConstantDataSequential > ( Operand ) && ) ; assert ( cast < ConstantDataSequential > ( Operand ) -> isCString ( ) && ) ; StringRef ReflectArg = cast < ConstantDataSequential > ( Operand ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ;" LLVM,NVPTX,2291,"Predict the next statement of this code snippet: assert ( isa < ConstantDataSequential > ( Operand ) && ) ; assert ( cast < ConstantDataSequential > ( Operand ) -> isCString ( ) && ) ; StringRef ReflectArg = cast < ConstantDataSequential > ( Operand ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( ReflectArg == ) { if ( auto * Flag = mdconst :: extract_or_null < ConstantInt > ( F . getParent ( ) -> getModuleFlag ( ) ) ) ReflectVal = Flag -> getSExtValue ( ) ; } Call -> replaceAllUsesWith ( ConstantInt :: get ( Call -> getType ( ) , ReflectVal ) ) ; ToRemove . push_back ( Call ) ; }" LLVM,NVPTX,2292,"Predict the next statement of this code snippet: assert ( Call -> getNumOperands ( ) == && ) ; const Value * Str = Call -> getArgOperand ( ) ; if ( const CallInst * ConvCall = dyn_cast < CallInst > ( Str ) ) { Str = ConvCall -> getArgOperand ( ) ; } assert ( isa < ConstantExpr > ( Str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Value * Operand = cast < Constant > ( Sym ) -> getOperand ( ) ; if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( Operand ) ) { assert ( GV -> hasInitializer ( ) && ) ; const Constant * Initializer = GV -> getInitializer ( ) ; Operand = Initializer ; } assert ( isa < ConstantDataSequential > ( Operand ) && ) ; assert ( cast < ConstantDataSequential > ( Operand ) -> isCString ( ) && ) ; StringRef ReflectArg = cast < ConstantDataSequential > ( Operand ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; LLVM_DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( ReflectArg == ) { if ( auto * Flag = mdconst :: extract_or_null < ConstantInt > ( F . getParent ( ) -> getModuleFlag ( ) ) ) ReflectVal = Flag -> getSExtValue ( ) ; } else if ( ReflectArg == ) { ReflectVal = SmVersion * ; } Call -> replaceAllUsesWith ( ConstantInt :: get ( Call -> getType ( ) , ReflectVal ) ) ;" LLVM,NVPTX,2293,"Predict the next statement of this code snippet: NVVMReflect ( const StringMap < int > & Mapping ) : ModulePass ( ID ) , ReflectFunction ( ) { initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,2294,"Predict the next statement of this code snippet: assert ( ReflectFunction -> getReturnType ( ) -> isIntegerTy ( ) && ) ; std :: vector < Instruction * > ToRemove ; for ( Value :: use_iterator I = ReflectFunction -> use_begin ( ) , E = ReflectFunction -> use_end ( ) ; I != E ; ++ I ) { assert ( isa < CallInst > ( * I ) && ) ; CallInst * Reflect = cast < CallInst > ( * I ) ; assert ( ( Reflect -> getNumOperands ( ) == ) && ) ; const Value * conv = Reflect -> getArgOperand ( ) ; assert ( isa < CallInst > ( conv ) && ) ; const CallInst * ConvCall = cast < CallInst > ( conv ) ; const Value * str = ConvCall -> getArgOperand ( ) ; assert ( isa < ConstantExpr > ( str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Constant * SymStr = cast < Constant > ( Sym ) ; assert ( isa < ConstantDataSequential > ( SymStr -> getOperand ( ) ) && ) ; assert ( cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> isCString ( ) && ) ; std :: string ReflectArg = cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> getAsString ( ) ;" LLVM,NVPTX,2295,"Predict the next statement of this code snippet: } SmallVector < Instruction * , > ToRemove ; for ( Instruction & I : instructions ( F ) ) { CallInst * Call = dyn_cast < CallInst > ( & I ) ; if ( ! Call ) continue ; Function * Callee = Call -> getCalledFunction ( ) ; if ( ! Callee || ( Callee -> getName ( ) != NVVM_REFLECT_FUNCTION && Callee -> getIntrinsicID ( ) != ) ) continue ; assert ( Call -> getNumOperands ( ) == && ) ; const Value * Str = Call -> getArgOperand ( ) ; if ( const CallInst * ConvCall = dyn_cast < CallInst > ( Str ) ) { Str = ConvCall -> getArgOperand ( ) ; } assert ( isa < ConstantExpr > ( Str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ;" LLVM,NVPTX,2296,"Predict the next statement of this code snippet: return new NVVMReflect ( Mapping ) ;" LLVM,NVPTX,2297,"Predict the next statement of this code snippet: initializeNVVMReflectPass ( * PassRegistry :: getPassRegistry ( ) ) ;" LLVM,NVPTX,2298,"Predict the next statement of this code snippet: if ( F . getName ( ) == NVVM_REFLECT_FUNCTION ) { assert ( F . isDeclaration ( ) && ) ; assert ( F . getReturnType ( ) -> isIntegerTy ( ) && ) ; return false ; } SmallVector < Instruction * , > ToRemove ; for ( Instruction & I : instructions ( F ) ) { CallInst * Call = dyn_cast < CallInst > ( & I ) ; if ( ! Call ) continue ; Function * Callee = Call -> getCalledFunction ( ) ; if ( ! Callee || ( Callee -> getName ( ) != NVVM_REFLECT_FUNCTION && Callee -> getIntrinsicID ( ) != ) ) continue ; assert ( Call -> getNumOperands ( ) == && ) ; const Value * Str = Call -> getArgOperand ( ) ; if ( const CallInst * ConvCall = dyn_cast < CallInst > ( Str ) ) { Str = ConvCall -> getArgOperand ( ) ; } assert ( isa < ConstantExpr > ( Str ) && ) ; const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Value * Operand = cast < Constant > ( Sym ) -> getOperand ( ) ; if ( const GlobalVariable * GV = dyn_cast < GlobalVariable > ( Operand ) ) { assert ( GV -> hasInitializer ( ) && ) ; const Constant * Initializer = GV -> getInitializer ( ) ; Operand = Initializer ; }" LLVM,NVPTX,2299,"Predict the next statement of this code snippet: StringRef ( ReflectList [ i ] ) . split ( NameValList , ',' ) ; for ( unsigned j = , ej = NameValList . size ( ) ; j != ej ; ++ j ) { SmallVector < StringRef , > NameValPair ; NameValList [ j ] . split ( NameValPair , '=' ) ; assert ( NameValPair . size ( ) == && ) ; std :: stringstream ValStream ( NameValPair [ ] ) ; int Val ; ValStream >> Val ; assert ( ( ! ( ValStream . fail ( ) ) ) && ) ; VarMap [ NameValPair [ ] ] = Val ;" LLVM,NVPTX,2300,"Predict the next statement of this code snippet: assert ( isa < Constant > ( Sym ) && ) ; const Constant * SymStr = cast < Constant > ( Sym ) ; assert ( isa < ConstantDataSequential > ( SymStr -> getOperand ( ) ) && ) ; assert ( cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> isCString ( ) && ) ; std :: string ReflectArg = cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( VarMap . find ( ReflectArg ) != VarMap . end ( ) ) { ReflectVal = VarMap [ ReflectArg ] ; } Reflect -> replaceAllUsesWith ( ConstantInt :: get ( Reflect -> getType ( ) , ReflectVal ) ) ; ToRemove . push_back ( Reflect ) ; } if ( ToRemove . size ( ) == ) return false ;" LLVM,NVPTX,2301,"Predict the next statement of this code snippet: const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Constant * SymStr = cast < Constant > ( Sym ) ; assert ( isa < ConstantDataSequential > ( SymStr -> getOperand ( ) ) && ) ; assert ( cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> isCString ( ) && ) ; std :: string ReflectArg = cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( VarMap . find ( ReflectArg ) != VarMap . end ( ) ) { ReflectVal = VarMap [ ReflectArg ] ; } Reflect -> replaceAllUsesWith ( ConstantInt :: get ( Reflect -> getType ( ) , ReflectVal ) ) ; ToRemove . push_back ( Reflect ) ; }" LLVM,NVPTX,2302,"Predict the next statement of this code snippet: assert ( cast < ConstantDataSequential > ( Operand ) -> isCString ( ) && ) ; StringRef ReflectArg = cast < ConstantDataSequential > ( Operand ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; LLVM_DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( ReflectArg == ) { if ( auto * Flag = mdconst :: extract_or_null < ConstantInt > ( F . getParent ( ) -> getModuleFlag ( ) ) ) ReflectVal = Flag -> getSExtValue ( ) ; } else if ( ReflectArg == ) { ReflectVal = SmVersion * ; } Call -> replaceAllUsesWith ( ConstantInt :: get ( Call -> getType ( ) , ReflectVal ) ) ; ToRemove . push_back ( Call ) ;" LLVM,NVPTX,2303,"Predict the next statement of this code snippet: return new NVVMReflect ( Mapping ) ;" LLVM,NVPTX,2304,"Predict the next statement of this code snippet: AU . setPreservesAll ( ) ;" LLVM,NVPTX,2305,"Predict the next statement of this code snippet: assert ( isa < ConstantDataSequential > ( SymStr -> getOperand ( ) ) && ) ; assert ( cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> isCString ( ) && ) ; std :: string ReflectArg = cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( VarMap . find ( ReflectArg ) != VarMap . end ( ) ) { ReflectVal = VarMap [ ReflectArg ] ; } Reflect -> replaceAllUsesWith ( ConstantInt :: get ( Reflect -> getType ( ) , ReflectVal ) ) ; ToRemove . push_back ( Reflect ) ; } if ( ToRemove . size ( ) == ) return false ; for ( unsigned i = , e = ToRemove . size ( ) ; i != e ; ++ i ) ToRemove [ i ] -> eraseFromParent ( ) ; return true ;" LLVM,NVPTX,2306,"Predict the next statement of this code snippet: const ConstantExpr * GEP = cast < ConstantExpr > ( Str ) ; const Value * Sym = GEP -> getOperand ( ) ; assert ( isa < Constant > ( Sym ) && ) ; const Constant * SymStr = cast < Constant > ( Sym ) ; assert ( isa < ConstantDataSequential > ( SymStr -> getOperand ( ) ) && ) ; assert ( cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> isCString ( ) && ) ; std :: string ReflectArg = cast < ConstantDataSequential > ( SymStr -> getOperand ( ) ) -> getAsString ( ) ; ReflectArg = ReflectArg . substr ( , ReflectArg . size ( ) - ) ; DEBUG ( dbgs ( ) << << ReflectArg << ) ; int ReflectVal = ; if ( VarMap . find ( ReflectArg ) != VarMap . end ( ) ) { ReflectVal = VarMap [ ReflectArg ] ; } Reflect -> replaceAllUsesWith ( ConstantInt :: get ( Reflect -> getType ( ) , ReflectVal ) ) ; ToRemove . push_back ( Reflect ) ; } if ( ToRemove . size ( ) == ) return false ; for ( unsigned i = , e = ToRemove . size ( ) ; i != e ; ++ i ) ToRemove [ i ] -> eraseFromParent ( ) ; return true ;" LLVM,NVPTX,2307,"Predict the next statement of this code snippet: for ( StringMap < int > :: const_iterator I = Mapping . begin ( ) , E = Mapping . end ( ) ;" LLVM,NVPTX,2308,"Predict the next statement of this code snippet: std :: string Name ; Type * Tys [ ] ; Type * I8Ty = Type :: getInt8Ty ( M . getContext ( ) ) ; Function * ReflectFunction ; for ( unsigned i = ; i != ; ++ i ) { Tys [ ] = PointerType :: get ( I8Ty , i ) ; Name = ( , Tys ) ; ReflectFunction = M . getFunction ( Name ) ; if ( ReflectFunction != ) { Res |= handleFunction ( ReflectFunction ) ; }" LLVM,NVPTX,2309,"Predict the next statement of this code snippet: for ( unsigned i = ; i != ; ++ i ) { Tys [ ] = PointerType :: get ( I8Ty , i ) ; Name = ( , Tys ) ; ReflectFunction = M . getFunction ( Name ) ; if ( ReflectFunction != ) { Res |= handleFunction ( ReflectFunction ) ; } } ReflectFunction = M . getFunction ( NVVM_REFLECT_FUNCTION ) ; if ( ReflectFunction != ) Res |= handleFunction ( ReflectFunction ) ;" LLVM,NVPTX,2310,"Predict the next statement of this code snippet: SmallVector < StringRef , > NameValPair ; NameValList [ j ] . split ( NameValPair , ) ; assert ( NameValPair . size ( ) == && ) ; std :: stringstream ValStream ( NameValPair [ ] ) ; int Val ; ValStream >> Val ;" LLVM,NVPTX,2311,"Predict the next statement of this code snippet: MachineBasicBlock * BB = & * BI ; for ( MachineBasicBlock :: iterator II = BB -> begin ( ) , IE = BB -> end ( ) ; II != IE ; ++ II ) { MachineInstr * Instr = & * II ; if ( ( Instr -> getOpcode ( ) == TargetOpcode :: PHI ) || ( Instr -> getOpcode ( ) == TargetOpcode :: DBG_VALUE ) ) continue ; bool needsReplacement = false ; for ( unsigned i = , e = Instr -> getNumOperands ( ) ; i != e ; ++ i ) { MachineOperand oper = Instr -> getOperand ( i ) ; if ( ! oper . isReg ( ) ) continue ; if ( oper . isDef ( ) ) continue ; if ( ! RegInfo -> isVirtualRegister ( oper . getReg ( ) ) ) continue ; MachineInstr * defInstr = MRI -> getVRegDef ( oper . getReg ( ) ) ; if ( ! defInstr ) continue ; if ( ! isSimpleMove ( defInstr ) ) continue ; MachineOperand defSrc = defInstr -> getOperand ( ) ; if ( ! defSrc . isReg ( ) ) continue ; if ( ! RegInfo -> isVirtualRegister ( defSrc . getReg ( ) ) ) continue ; needsReplacement = true ; } if ( ! needsReplacement ) continue ; numReplacements ++ ; std :: vector < MachineOperand > operands ; for ( unsigned i = , e = Instr -> getNumOperands ( ) ; i != e ; ++ i ) { MachineOperand oper = Instr -> getOperand ( i ) ; bool flag = false ; do {" LLVM,NVPTX,2312,"Predict the next statement of this code snippet: for ( unsigned j = , e = copy -> getNumOperands ( ) ; j != e ; ++ j ) { MachineOperand oper = copy -> getOperand ( j ) ; allOperands . push_back ( oper ) ; if ( oper . isReg ( ) ) isDef . push_back ( oper . isDef ( ) ) ; else isDef . push_back ( false ) ; } for ( unsigned j = , e = copy -> getNumOperands ( ) ; j != e ; ++ j ) copy -> RemoveOperand ( ) ; copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( Instr ) ) ) ; for ( unsigned j = , e = allOperands . size ( ) ; j != e ; ++ j ) { MachineOperand oper = allOperands [ j ] ; if ( oper . isReg ( ) ) { unsigned regnum = oper . getReg ( ) ; if ( isVectorRegister ( regnum ) ) { SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy . addReg ( scalarRegs [ i ] , getDefRegState ( isDef [ j ] ) ) ; }" LLVM,NVPTX,2313,"Predict the next statement of this code snippet: } if ( ISVECDEST ( Instr ) ) { createVecDest ( F , Instr , copies ) ; return ; } if ( ISVECBUILD ( Instr ) ) { createVecBuild ( F , Instr , copies ) ; return ; } unsigned numcopies = numCopiesNeeded ( Instr ) ; for ( unsigned i = ; i < numcopies ; ++ i ) copies . push_back ( F . CloneMachineInstr ( Instr ) ) ; for ( unsigned i = ; i < numcopies ; ++ i ) { MachineInstrBuilder copy ( F , copies [ i ] ) ; std :: vector < MachineOperand > allOperands ; std :: vector < bool > isDef ; for ( unsigned j = , e = copy -> getNumOperands ( ) ; j != e ; ++ j ) { MachineOperand oper = copy -> getOperand ( j ) ; allOperands . push_back ( oper ) ; if ( oper . isReg ( ) ) isDef . push_back ( oper . isDef ( ) ) ; else isDef . push_back ( false ) ; } for ( unsigned j = , e = copy -> getNumOperands ( ) ; j != e ; ++ j ) copy -> RemoveOperand ( ) ; copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( Instr ) ) ) ; for ( unsigned j = , e = allOperands . size ( ) ; j != e ; ++ j ) { MachineOperand oper = allOperands [ j ] ; if ( oper . isReg ( ) ) { unsigned regnum = oper . getReg ( ) ; if ( isVectorRegister ( regnum ) ) { SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy . addReg ( scalarRegs [ i ] , getDefRegState ( isDef [ j ] ) ) ; } else copy . addOperand ( oper ) ;" LLVM,NVPTX,2314,"Predict the next statement of this code snippet: copies . push_back ( F . CloneMachineInstr ( Instr ) ) ; MachineInstrBuilder copy ( F , copies [ ] ) ; copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( copy ) ) ) ; MachineOperand dest = copy -> getOperand ( ) ; unsigned regnum = dest . getReg ( ) ; SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy -> RemoveOperand ( ) ; std :: vector < MachineOperand > otherOperands ; for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) otherOperands . push_back ( copy -> getOperand ( i ) ) ; for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) copy -> RemoveOperand ( ) ; for ( unsigned i = , e = scalarRegs . size ( ) ; i != e ; ++ i ) copy . addReg ( scalarRegs [ i ] , RegState :: Define ) ; for ( unsigned i = , e = otherOperands . size ( ) ; i != e ; ++ i ) copy . addOperand ( otherOperands [ i ] ) ;" LLVM,NVPTX,2315,"Predict the next statement of this code snippet: copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( copy ) ) ) ; MachineOperand dest = copy -> getOperand ( ) ; unsigned regnum = dest . getReg ( ) ; SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy -> RemoveOperand ( ) ; std :: vector < MachineOperand > otherOperands ;" LLVM,NVPTX,2316,"Predict the next statement of this code snippet: unsigned regnum = src . getReg ( ) ; SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy -> RemoveOperand ( ) ; std :: vector < MachineOperand > otherOperands ; for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) otherOperands . push_back ( copy -> getOperand ( i ) ) ; for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) copy -> RemoveOperand ( ) ; for ( unsigned i = , e = scalarRegs . size ( ) ; i != e ; ++ i ) copy . addReg ( scalarRegs [ i ] ) ;" LLVM,NVPTX,2317,"Predict the next statement of this code snippet: unsigned destregnum = Instr -> getOperand ( ) . getReg ( ) ; SmallVector < unsigned , > dest = getScalarRegisters ( destregnum ) ; DebugLoc DL = Instr -> getDebugLoc ( ) ; for ( unsigned i = ; i < numcopies ; i ++ ) copies . push_back ( BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) . addOperand ( Instr -> getOperand ( + i ) ) ) ;" LLVM,NVPTX,2318,"Predict the next statement of this code snippet: void VectorElementize :: createVecBuild ( MachineFunction & F , MachineInstr * Instr , std :: vector < MachineInstr * > & copies ) { unsigned numcopies = numCopiesNeeded ( Instr ) ;" LLVM,NVPTX,2319,"Predict the next statement of this code snippet: copies . push_back ( F . CloneMachineInstr ( Instr ) ) ; MachineInstrBuilder copy ( F , copies [ ] ) ; copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( copy ) ) ) ; MachineOperand dest = copy -> getOperand ( ) ; unsigned regnum = dest . getReg ( ) ; SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ;" LLVM,NVPTX,2320,"Predict the next statement of this code snippet: SmallVector < unsigned , > src = getScalarRegisters ( srcregnum ) ; MachineOperand which = Instr -> getOperand ( ) ; assert ( which . isImm ( ) && ) ;" LLVM,NVPTX,2321,"Predict the next statement of this code snippet: MachineInstrBuilder copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) ; MachineOperand which = Instr -> getOperand ( + i ) ; assert ( which . isImm ( ) && ) ; int src = which . getImm ( ) ; int elem = src % numcopies ; if ( which . getImm ( ) < numcopies ) copy . addReg ( src1 [ elem ] ) ; else copy . addReg ( src2 [ elem ] ) ;" LLVM,NVPTX,2322,"Predict the next statement of this code snippet: if ( ! RegInfo -> isVirtualRegister ( defSrc . getReg ( ) ) ) continue ; needsReplacement = true ; } if ( ! needsReplacement ) continue ; numReplacements ++ ; std :: vector < MachineOperand > operands ; for ( unsigned i = , e = Instr -> getNumOperands ( ) ; i != e ; ++ i ) { MachineOperand oper = Instr -> getOperand ( i ) ; bool flag = false ; do { if ( ! ( oper . isReg ( ) ) ) break ; if ( oper . isDef ( ) ) break ; if ( ! ( RegInfo -> isVirtualRegister ( oper . getReg ( ) ) ) ) break ; MachineInstr * defInstr = MRI -> getVRegDef ( oper . getReg ( ) ) ; if ( ! ( isSimpleMove ( defInstr ) ) ) break ; MachineOperand defSrc = defInstr -> getOperand ( ) ; if ( ! ( defSrc . isReg ( ) ) ) break ; if ( ! ( RegInfo -> isVirtualRegister ( defSrc . getReg ( ) ) ) ) break ; operands . push_back ( defSrc ) ; flag = true ; } while ( ) ; if ( flag == false ) operands . push_back ( oper ) ; } for ( unsigned i = , e = Instr -> getNumOperands ( ) ; i != e ; ++ i ) Instr -> RemoveOperand ( ) ; for ( unsigned i = , e = operands . size ( ) ; i != e ; ++ i ) Instr -> addOperand ( operands [ i ] ) ;" LLVM,NVPTX,2323,"Predict the next statement of this code snippet: if ( ISVECEXTRACT ( Instr ) ) { createVecExtract ( F , Instr , copies ) ; return ; } if ( ISVECINSERT ( Instr ) ) { createVecInsert ( F , Instr , copies ) ; return ; } if ( ISVECDEST ( Instr ) ) { createVecDest ( F , Instr , copies ) ; return ; } if ( ISVECBUILD ( Instr ) ) { createVecBuild ( F , Instr , copies ) ; return ; } unsigned numcopies = numCopiesNeeded ( Instr ) ; for ( unsigned i = ; i < numcopies ; ++ i ) copies . push_back ( F . CloneMachineInstr ( Instr ) ) ; for ( unsigned i = ; i < numcopies ; ++ i ) { MachineInstr * copy = copies [ i ] ; std :: vector < MachineOperand > allOperands ; std :: vector < bool > isDef ; for ( unsigned j = , e = copy -> getNumOperands ( ) ; j != e ; ++ j ) { MachineOperand oper = copy -> getOperand ( j ) ; allOperands . push_back ( oper ) ; if ( oper . isReg ( ) ) isDef . push_back ( oper . isDef ( ) ) ; else isDef . push_back ( false ) ; }" LLVM,NVPTX,2324,"Predict the next statement of this code snippet: void VectorElementize :: createLoadCopy ( MachineFunction & F , MachineInstr * Instr , std :: vector < MachineInstr * > & copies ) { copies . push_back ( F . CloneMachineInstr ( Instr ) ) ; MachineInstr * copy = copies [ ] ; copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( copy ) ) ) ; MachineOperand dest = copy -> getOperand ( ) ;" LLVM,NVPTX,2325,"Predict the next statement of this code snippet: for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) copy -> RemoveOperand ( ) ; for ( unsigned i = , e = scalarRegs . size ( ) ; i != e ; ++ i ) { copy -> addOperand ( MachineOperand :: CreateReg ( scalarRegs [ i ] , true ) ) ; } for ( unsigned i = , e = otherOperands . size ( ) ; i != e ; ++ i ) copy -> addOperand ( otherOperands [ i ] ) ;" LLVM,NVPTX,2326,"Predict the next statement of this code snippet: for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) copy -> RemoveOperand ( ) ; for ( unsigned i = , e = scalarRegs . size ( ) ; i != e ; ++ i ) copy -> addOperand ( MachineOperand :: CreateReg ( scalarRegs [ i ] , false ) ) ; for ( unsigned i = , e = otherOperands . size ( ) ; i != e ; ++ i ) copy -> addOperand ( otherOperands [ i ] ) ;" LLVM,NVPTX,2327,"Predict the next statement of this code snippet: void VectorElementize :: createStoreCopy ( MachineFunction & F , MachineInstr * Instr , std :: vector < MachineInstr * > & copies ) { copies . push_back ( F . CloneMachineInstr ( Instr ) ) ; MachineInstr * copy = copies [ ] ; copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( copy ) ) ) ; MachineOperand src = copy -> getOperand ( ) ; unsigned regnum = src . getReg ( ) ; SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy -> RemoveOperand ( ) ;" LLVM,NVPTX,2328,"Predict the next statement of this code snippet: unsigned numcopies = numCopiesNeeded ( Instr ) ; unsigned destregnum = Instr -> getOperand ( ) . getReg ( ) ; SmallVector < unsigned , > dest = getScalarRegisters ( destregnum ) ; DebugLoc DL = Instr -> getDebugLoc ( ) ; for ( unsigned i = ; i < numcopies ; i ++ ) { MachineInstr * copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) ;" LLVM,NVPTX,2329,"Predict the next statement of this code snippet: unsigned numcopies = numCopiesNeeded ( Instr ) ; unsigned destregnum = Instr -> getOperand ( ) . getReg ( ) ; SmallVector < unsigned , > dest = getScalarRegisters ( destregnum ) ; DebugLoc DL = Instr -> getDebugLoc ( ) ; for ( unsigned i = ; i < numcopies ; i ++ ) { MachineInstr * copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) ; copy -> addOperand ( Instr -> getOperand ( + i ) ) ; copies . push_back ( copy ) ; }" LLVM,NVPTX,2330,"Predict the next statement of this code snippet: void VectorElementize :: createVecDest ( MachineFunction & F , MachineInstr * Instr , std :: vector < MachineInstr * > & copies ) { copies . push_back ( F . CloneMachineInstr ( Instr ) ) ; MachineInstr * copy = copies [ ] ; copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( copy ) ) ) ; MachineOperand dest = copy -> getOperand ( ) ; unsigned regnum = dest . getReg ( ) ; SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy -> RemoveOperand ( ) ;" LLVM,NVPTX,2331,"Predict the next statement of this code snippet: copy -> setDesc ( InstrInfo -> get ( getScalarVersion ( copy ) ) ) ; MachineOperand dest = copy -> getOperand ( ) ; unsigned regnum = dest . getReg ( ) ; SmallVector < unsigned , > scalarRegs = getScalarRegisters ( regnum ) ; copy -> RemoveOperand ( ) ; std :: vector < MachineOperand > otherOperands ; for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) otherOperands . push_back ( copy -> getOperand ( i ) ) ; for ( unsigned i = , e = copy -> getNumOperands ( ) ; i != e ; ++ i ) copy -> RemoveOperand ( ) ; for ( unsigned i = , e = scalarRegs . size ( ) ; i != e ; ++ i ) copy -> addOperand ( MachineOperand :: CreateReg ( scalarRegs [ i ] , true ) ) ;" LLVM,NVPTX,2332,"Predict the next statement of this code snippet: unsigned srcregnum = Instr -> getOperand ( ) . getReg ( ) ; SmallVector < unsigned , > src = getScalarRegisters ( srcregnum ) ; MachineOperand which = Instr -> getOperand ( ) ; assert ( which . isImm ( ) && ) ; DebugLoc DL = Instr -> getDebugLoc ( ) ; MachineInstr * copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , Instr -> getOperand ( ) . getReg ( ) ) ; copy -> addOperand ( MachineOperand :: CreateReg ( src [ which . getImm ( ) ] , false ) ) ;" LLVM,NVPTX,2333,"Predict the next statement of this code snippet: void VectorElementize :: createVecInsert ( MachineFunction & F , MachineInstr * Instr , std :: vector < MachineInstr * > & copies ) { unsigned numcopies = numCopiesNeeded ( Instr ) ; unsigned destregnum = Instr -> getOperand ( ) . getReg ( ) ; unsigned srcregnum = Instr -> getOperand ( ) . getReg ( ) ; SmallVector < unsigned , > dest = getScalarRegisters ( destregnum ) ; SmallVector < unsigned , > src = getScalarRegisters ( srcregnum ) ; MachineOperand which = Instr -> getOperand ( ) ; assert ( which . isImm ( ) && ) ; unsigned int elem = which . getImm ( ) ; DebugLoc DL = Instr -> getDebugLoc ( ) ; for ( unsigned i = ; i < numcopies ; i ++ ) { MachineInstr * copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) ; if ( i != elem ) copy -> addOperand ( MachineOperand :: CreateReg ( src [ i ] , false ) ) ; else copy -> addOperand ( Instr -> getOperand ( ) ) ;" LLVM,NVPTX,2334,"Predict the next statement of this code snippet: DebugLoc DL = Instr -> getDebugLoc ( ) ; for ( unsigned i = ; i < numcopies ; i ++ ) { MachineInstr * copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) ; if ( i != elem ) copy -> addOperand ( MachineOperand :: CreateReg ( src [ i ] , false ) ) ;" LLVM,NVPTX,2335,"Predict the next statement of this code snippet: MachineInstr * copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) ; MachineOperand which = Instr -> getOperand ( + i ) ; assert ( which . isImm ( ) && ) ; int src = which . getImm ( ) ; int elem = src % numcopies ; if ( which . getImm ( ) < numcopies ) copy -> addOperand ( MachineOperand :: CreateReg ( src1 [ elem ] , false ) ) ;" LLVM,NVPTX,2336,"Predict the next statement of this code snippet: SmallVector < unsigned , > src2 = getScalarRegisters ( src2regnum ) ; DebugLoc DL = Instr -> getDebugLoc ( ) ; for ( unsigned i = ; i < numcopies ; i ++ ) { MachineInstr * copy = BuildMI ( F , DL , InstrInfo -> get ( getScalarVersion ( Instr ) ) , dest [ i ] ) ; MachineOperand which = Instr -> getOperand ( + i ) ; assert ( which . isImm ( ) && ) ; int src = which . getImm ( ) ; int elem = src % numcopies ; if ( which . getImm ( ) < numcopies ) copy -> addOperand ( MachineOperand :: CreateReg ( src1 [ elem ] , false ) ) ;" LLVM,NVPTX,2337,"Predict the next statement of this code snippet: return new VectorElementize ( tm ) ;" LLVM,NVPTX,2338,"Predict the next statement of this code snippet: if ( ! isVectorInstr ( Instr ) ) continue ; copies . clear ( ) ; createCopies ( F , Instr , copies ) ; for ( unsigned i = , e = copies . size ( ) ; i != e ; ++ i ) BB -> insert ( II , copies [ i ] ) ; assert ( ( copies . size ( ) > ) && ) ; toRemove . push_back ( Instr ) ;" LLVM,NVPTX,2339,"Predict the next statement of this code snippet: if ( ! isVectorInstr ( Instr ) ) continue ; copies . clear ( ) ; createCopies ( F , Instr , copies ) ; for ( unsigned i = , e = copies . size ( ) ; i != e ; ++ i ) BB -> insert ( II , copies [ i ] ) ;" LLVM,NVPTX,2340,"Predict the next statement of this code snippet: return ;" LLVM,NVPTX,2341,"Predict the next statement of this code snippet: getScalarRegClass ( const TargetRegisterClass * RC ) { assert ( isVectorRegClass ( RC ) && ) ; return getElemClass ( RC ) ;" LLVM,NVPTX,2342,"Predict the next statement of this code snippet: const TargetRegisterClass * vecClass = MRI -> getRegClass ( regnum ) ; const TargetRegisterClass * scalarClass = getScalarRegClass ( vecClass ) ; SmallVector < unsigned , > temp ; for ( unsigned i = , e = getVectorSize ( vecClass ) ; i != e ; ++ i ) temp . push_back ( MRI -> createVirtualRegister ( scalarClass ) ) ; VectorToScalarMap [ regnum ] = temp ; }" LLVM,NVPTX,2343,"Predict the next statement of this code snippet: MachineOperand dest = mi -> getOperand ( ) ; return isVectorRegister ( dest . getReg ( ) ) ; }" LLVM,NVPTX,2344,"Predict the next statement of this code snippet: const TargetRegisterClass * RC = MRI -> getRegClass ( reg ) ;" LLVM,NVPTX,2345,"Predict the next statement of this code snippet: bool VectorElementize :: isVectorRegister ( unsigned reg ) { const TargetRegisterClass * RC = MRI -> getRegClass ( reg ) ;" LLVM,NVPTX,2346,"Predict the next statement of this code snippet: MachineOperand oper = Instr -> getOperand ( i ) ; if ( ! oper . isReg ( ) ) continue ; if ( ! oper . isDef ( ) ) continue ; def = i ; numDefs ++ ; } assert ( ( numDefs <= ) && ) ; if ( numDefs == ) { unsigned regnum = Instr -> getOperand ( def ) . getReg ( ) ; if ( ISVECEXTRACT ( Instr ) ) regnum = Instr -> getOperand ( ) . getReg ( ) ; return getVectorSize ( MRI -> getRegClass ( regnum ) ) ; } else if ( numDefs == ) {" LLVM,NVPTX,2347,"Predict the next statement of this code snippet: if ( ! oper . isDef ( ) ) continue ; def = i ; numDefs ++ ; } assert ( ( numDefs <= ) && ) ; if ( numDefs == ) { unsigned regnum = Instr -> getOperand ( def ) . getReg ( ) ; if ( ISVECEXTRACT ( Instr ) ) regnum = Instr -> getOperand ( ) . getReg ( ) ; return getVectorSize ( MRI -> getRegClass ( regnum ) ) ; } else if ( numDefs == ) { assert ( ISVECSTORE ( Instr ) && ) ; unsigned regnum = Instr -> getOperand ( ) . getReg ( ) ; return getVectorSize ( MRI -> getRegClass ( regnum ) ) ; }" LLVM,NVPTX,2348,"Predict the next statement of this code snippet: assert ( RegInfo -> isVirtualRegister ( dest . getReg ( ) ) && ) ; if ( MRI -> use_empty ( dest . getReg ( ) ) ) { deadMoves . push_back ( Instr ) ; } } } for ( unsigned i = , e = deadMoves . size ( ) ; i != e ; ++ i ) F . DeleteMachineInstr ( deadMoves [ i ] -> getParent ( ) -> remove ( deadMoves [ i ] ) ) ; return deadMoves . size ( ) ;" LLVM,NVPTX,2349,"Predict the next statement of this code snippet: elementize ( F ) ; if ( RemoveRedundantMoves ) while ( ) { if ( copyProp ( F ) == ) break ; removeDeadMoves ( F ) ; } return true ;" LLVM,NVPTX,2350,"Predict the next statement of this code snippet: RegInfo = TM . getRegisterInfo ( ) ; InstrInfo = TM . getInstrInfo ( ) ; VectorToScalarMap . clear ( ) ; elementize ( F ) ; if ( RemoveRedundantMoves ) while ( ) { if ( copyProp ( F ) == ) break ; removeDeadMoves ( F ) ; }" LLVM,NVPTX,2351,"Predict the next statement of this code snippet: VectorElementize ( TargetMachine & tm ) : MachineFunctionPass ( ID ) , TM ( tm ) {" LLVM,NVPTX,2352,"Predict the next statement of this code snippet: VectorElementize ( TargetMachine & tm ) : MachineFunctionPass ( ID ) , TM ( tm ) {"