rust/compiler
Jacob Pratt 0de2341fef
Rollup merge of #136217 - taiki-e:csky-asm-flags, r=Amanieu
Mark condition/carry bit as clobbered in C-SKY inline assembly

C-SKY's compare and some arithmetic/logical instructions modify condition/carry bit (C) in PSR, but there is currently no way to mark it as clobbered in `asm!`.

This PR marks it as clobbered except when [`options(preserves_flags)`](https://doc.rust-lang.org/reference/inline-assembly.html#r-asm.options.supported-options.preserves_flags) is used.

Refs:
- Section 1.3 "Programming model" and Section 1.3.5 "Condition/carry bit" in CSKY Architecture user_guide:
  9f7121f7d4/CSKY%20Architecture%20user_guide.pdf

  > Under user mode, condition/carry bit (C) is located in the lowest bit of PSR, and it can be
accessed and changed by common user instructions. It is the only data bit that can be visited
under user mode in PSR.

  > Condition or carry bit represents the result after one operation. Condition/carry bit can be
clearly set according to the results of compare instructions or unclearly set as some
high-precision arithmetic or logical instructions. In addition, special instructions such as
DEC[GT,LT,NE] and XTRB[0-3] will influence the value of condition/carry bit.

- Register definition in LLVM:
  https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/CSKY/CSKYRegisterInfo.td#L88

cc ```@Dirreke``` ([target maintainer](aa6f5ab18e/src/doc/rustc/src/platform-support/csky-unknown-linux-gnuabiv2.md (target-maintainers)))

r? ```@Amanieu```

```@rustbot``` label +O-csky +A-inline-assembly
2025-02-12 20:09:58 -05:00
..
rustc
rustc_abi compiler: remove rustc_abi::lookup and AbiUnsupported 2025-02-11 20:18:01 -08:00
rustc_arena Add inherent versions of MaybeUninit methods for slices 2025-01-11 23:57:00 -05:00
rustc_ast Add a TyPat in the AST to reuse the generic arg lowering logic 2025-02-11 08:51:05 +00:00
rustc_ast_ir
rustc_ast_lowering Rollup merge of #136901 - workingjubilee:stabilize-externabi-hashing-forever, r=compiler-errors 2025-02-12 20:30:55 +01:00
rustc_ast_passes compiler: remove rustc_target reexport of rustc_abi::HashStableContext 2025-02-11 18:55:48 -08:00
rustc_ast_pretty Add a TyPat in the AST to reuse the generic arg lowering logic 2025-02-11 08:51:05 +00:00
rustc_attr_data_structures rustc_allowed_through_unstable_modules: require deprecation message 2025-02-02 12:36:12 +01:00
rustc_attr_parsing Rustfmt 2025-02-08 22:12:13 +00:00
rustc_baked_icu_data
rustc_borrowck Deeply normalize signature in new solver 2025-02-11 19:24:07 +00:00
rustc_builtin_macros Rollup merge of #136646 - oli-obk:pattern-types-ast, r=BoxyUwU 2025-02-12 06:07:37 +01:00
rustc_codegen_cranelift Rollup merge of #136714 - tgross35:update-builtins, r=tgross35 2025-02-10 16:38:26 +01:00
rustc_codegen_gcc cg_gcc: stop caring about compiling for unknown targets 2025-02-10 11:19:02 -08:00
rustc_codegen_llvm Rollup merge of #136217 - taiki-e:csky-asm-flags, r=Amanieu 2025-02-12 20:09:58 -05:00
rustc_codegen_ssa Rollup merge of #134090 - veluca93:stable-tf11, r=oli-obk 2025-02-12 20:09:56 -05:00
rustc_const_eval Rollup merge of #136833 - workingjubilee:let-the-impossible-be-impossible, r=compiler-errors 2025-02-11 18:04:44 +01:00
rustc_data_structures Rustfmt 2025-02-08 22:12:13 +00:00
rustc_driver
rustc_driver_impl compiler: compare and hash ExternAbi like its string 2025-02-11 20:18:01 -08:00
rustc_error_codes fix the error code document 2025-02-10 04:36:49 +08:00
rustc_error_messages tree-wide: parallel: Fully removed all Lrc, replaced with Arc 2025-02-03 13:25:57 +03:00
rustc_errors compiler: replace ExternAbi::name calls with formatters 2025-02-11 19:42:47 -08:00
rustc_expand Rollup merge of #136107 - dingxiangfei2009:coerce-pointee-wellformed, r=compiler-errors 2025-02-11 02:53:42 +01:00
rustc_feature Rollup merge of #134090 - veluca93:stable-tf11, r=oli-obk 2025-02-12 20:09:56 -05:00
rustc_fluent_macro
rustc_fs_util
rustc_graphviz Rustfmt 2025-02-08 22:12:13 +00:00
rustc_hir compiler: remove rustc_target reexport of rustc_abi::HashStableContext 2025-02-11 18:55:48 -08:00
rustc_hir_analysis Rollup merge of #135841 - oli-obk:push-qxlnokwrkkym, r=compiler-errors 2025-02-12 20:09:57 -05:00
rustc_hir_pretty Rustfmt 2025-02-08 22:12:13 +00:00
rustc_hir_typeck Explain that in paths generics can't be set on both the enum and the variant 2025-02-11 23:30:07 +00:00
rustc_incremental Rustfmt 2025-02-08 22:12:13 +00:00
rustc_index Rustfmt 2025-02-08 22:12:13 +00:00
rustc_index_macros
rustc_infer Rustfmt 2025-02-08 22:12:13 +00:00
rustc_interface Auto merge of #136751 - bjorn3:update_rustfmt, r=Mark-Simulacrum 2025-02-09 15:44:16 +00:00
rustc_lexer Rustfmt 2025-02-08 22:12:13 +00:00
rustc_lint Rollup merge of #136900 - workingjubilee:format-externabi-directly, r=oli-obk 2025-02-12 10:46:40 +01:00
rustc_lint_defs Rollup merge of #135964 - ehuss:cenum_impl_drop_cast, r=Nadrieril 2025-02-05 19:09:33 +08:00
rustc_llvm Rollup merge of #136419 - EnzymeAD:autodiff-tests, r=onur-ozkan,jieyouxu 2025-02-10 16:38:23 +01:00
rustc_log Avoid naming variables str 2025-01-07 14:30:02 +02:00
rustc_macros Rustfmt 2025-02-08 22:12:13 +00:00
rustc_metadata Rustfmt 2025-02-08 22:12:13 +00:00
rustc_middle Rollup merge of #136907 - workingjubilee:middle-errors-cleanup, r=compiler-errors 2025-02-12 20:30:55 +01:00
rustc_mir_build Rustfmt 2025-02-08 22:12:13 +00:00
rustc_mir_dataflow Rustfmt 2025-02-08 22:12:13 +00:00
rustc_mir_transform compiler: replace ExternAbi::name calls with formatters 2025-02-11 19:42:47 -08:00
rustc_monomorphize Auto merge of #136751 - bjorn3:update_rustfmt, r=Mark-Simulacrum 2025-02-09 15:44:16 +00:00
rustc_next_trait_solver Rustfmt 2025-02-08 22:12:13 +00:00
rustc_parse Stop using span hack for contracts feature gating 2025-02-10 19:51:26 +00:00
rustc_parse_format Rustfmt 2025-02-08 22:12:13 +00:00
rustc_passes Rollup merge of #136833 - workingjubilee:let-the-impossible-be-impossible, r=compiler-errors 2025-02-11 18:04:44 +01:00
rustc_pattern_analysis Get rid of mir::Const::from_ty_const 2025-01-20 04:26:44 +00:00
rustc_privacy Make comma separated lists of anything easier to make for errors 2025-01-31 20:36:44 +00:00
rustc_query_impl Removed dependency on the field-offset crate. 2025-02-05 17:56:06 +01:00
rustc_query_system compiler: remove rustc_target reexport of rustc_abi::HashStableContext 2025-02-11 18:55:48 -08:00
rustc_resolve Rollup merge of #136646 - oli-obk:pattern-types-ast, r=BoxyUwU 2025-02-12 06:07:37 +01:00
rustc_sanitizers check the types in ty::Value to value conversion 2025-01-30 18:13:16 +01:00
rustc_serialize
rustc_session Rollup merge of #135285 - tbu-:pr_fix_typo4, r=GuillaumeGomez 2025-02-11 18:04:22 +01:00
rustc_smir Rustfmt 2025-02-08 22:12:13 +00:00
rustc_span Rollup merge of #136584 - oli-obk:pattern-types-generic, r=BoxyUwU 2025-02-11 02:53:44 +01:00
rustc_symbol_mangling compiler: remove AbiDatas 2025-02-11 20:18:01 -08:00
rustc_target Rollup merge of #136901 - workingjubilee:stabilize-externabi-hashing-forever, r=compiler-errors 2025-02-12 20:30:55 +01:00
rustc_trait_selection Rollup merge of #136838 - compiler-errors:escaping-unsize, r=fmease 2025-02-12 20:30:52 +01:00
rustc_traits Auto merge of #136011 - compiler-errors:query-norm-vaniquishes-us, r=jackh726 2025-01-29 02:12:12 +00:00
rustc_transmute transmutability: fix ICE when passing wrong ADT to ASSUME 2025-02-08 05:44:29 +01:00
rustc_ty_utils compiler: die immediately instead of handling unknown target codegen 2025-02-10 11:04:31 -08:00
rustc_type_ir Simplify intra-crate qualifiers. 2025-02-11 14:59:13 +11:00
rustc_type_ir_macros Rustfmt 2025-02-08 22:12:13 +00:00
stable_mir occured -> occurred 2025-02-08 22:28:21 +00:00