brintos

brintos / llvm-project-archived public Read only

0
0
Text · 132.4 KiB · fad5169 Raw
4764 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -riscv-disable-using-constant-pool-for-large-ints -verify-machineinstrs < %s \3; RUN:   | FileCheck %s -check-prefix=RV32I4; RUN: llc -mtriple=riscv32 -riscv-disable-using-constant-pool-for-large-ints -mattr=+experimental-xqcili \5; RUN:   -verify-machineinstrs < %s | FileCheck %s -check-prefix=RV32IXQCILI6; RUN: llc -mtriple=riscv64 -riscv-disable-using-constant-pool-for-large-ints -verify-machineinstrs < %s \7; RUN:   | FileCheck %s -check-prefixes=RV64I,RV64-NOPOOL8; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \9; RUN:   | FileCheck %s -check-prefixes=RV64I,RV64I-POOL10; RUN: llc -mtriple=riscv64 -riscv-disable-using-constant-pool-for-large-ints -mattr=+zba \11; RUN:   -verify-machineinstrs < %s | FileCheck %s -check-prefix=RV64IZBA12; RUN: llc -mtriple=riscv64 -riscv-disable-using-constant-pool-for-large-ints -mattr=+zbb \13; RUN:   -verify-machineinstrs < %s | FileCheck %s -check-prefix=RV64IZBB14; RUN: llc -mtriple=riscv64 -riscv-disable-using-constant-pool-for-large-ints -mattr=+zbs \15; RUN:   -verify-machineinstrs < %s | FileCheck %s -check-prefix=RV64IZBS16; RUN: llc -mtriple=riscv64 -riscv-disable-using-constant-pool-for-large-ints -mattr=+xtheadbb \17; RUN:   -verify-machineinstrs < %s | FileCheck %s -check-prefix=RV64IXTHEADBB18 19; RUN: llc -mtriple=riscv32 -riscv-disable-using-constant-pool-for-large-ints -verify-machineinstrs < %s \20; RUN:   -riscv-use-rematerializable-movimm | FileCheck %s -check-prefix=RV32-REMAT21; RUN: llc -mtriple=riscv64 -riscv-disable-using-constant-pool-for-large-ints -verify-machineinstrs < %s \22; RUN:   -riscv-use-rematerializable-movimm | FileCheck %s -check-prefix=RV64-REMAT23 24; Materializing constants25 26; TODO: It would be preferable if anyext constant returns were sign rather27; than zero extended. See PR39092. For now, mark returns as explicitly signext28; (this matches what Clang would generate for equivalent C/C++ anyway).29 30define signext i32 @zero() nounwind {31; RV32I-LABEL: zero:32; RV32I:       # %bb.0:33; RV32I-NEXT:    li a0, 034; RV32I-NEXT:    ret35;36; RV32IXQCILI-LABEL: zero:37; RV32IXQCILI:       # %bb.0:38; RV32IXQCILI-NEXT:    li a0, 039; RV32IXQCILI-NEXT:    ret40;41; RV64I-LABEL: zero:42; RV64I:       # %bb.0:43; RV64I-NEXT:    li a0, 044; RV64I-NEXT:    ret45;46; RV64IZBA-LABEL: zero:47; RV64IZBA:       # %bb.0:48; RV64IZBA-NEXT:    li a0, 049; RV64IZBA-NEXT:    ret50;51; RV64IZBB-LABEL: zero:52; RV64IZBB:       # %bb.0:53; RV64IZBB-NEXT:    li a0, 054; RV64IZBB-NEXT:    ret55;56; RV64IZBS-LABEL: zero:57; RV64IZBS:       # %bb.0:58; RV64IZBS-NEXT:    li a0, 059; RV64IZBS-NEXT:    ret60;61; RV64IXTHEADBB-LABEL: zero:62; RV64IXTHEADBB:       # %bb.0:63; RV64IXTHEADBB-NEXT:    li a0, 064; RV64IXTHEADBB-NEXT:    ret65;66; RV32-REMAT-LABEL: zero:67; RV32-REMAT:       # %bb.0:68; RV32-REMAT-NEXT:    li a0, 069; RV32-REMAT-NEXT:    ret70;71; RV64-REMAT-LABEL: zero:72; RV64-REMAT:       # %bb.0:73; RV64-REMAT-NEXT:    li a0, 074; RV64-REMAT-NEXT:    ret75  ret i32 076}77 78define signext i32 @pos_small() nounwind {79; RV32I-LABEL: pos_small:80; RV32I:       # %bb.0:81; RV32I-NEXT:    li a0, 204782; RV32I-NEXT:    ret83;84; RV32IXQCILI-LABEL: pos_small:85; RV32IXQCILI:       # %bb.0:86; RV32IXQCILI-NEXT:    li a0, 204787; RV32IXQCILI-NEXT:    ret88;89; RV64I-LABEL: pos_small:90; RV64I:       # %bb.0:91; RV64I-NEXT:    li a0, 204792; RV64I-NEXT:    ret93;94; RV64IZBA-LABEL: pos_small:95; RV64IZBA:       # %bb.0:96; RV64IZBA-NEXT:    li a0, 204797; RV64IZBA-NEXT:    ret98;99; RV64IZBB-LABEL: pos_small:100; RV64IZBB:       # %bb.0:101; RV64IZBB-NEXT:    li a0, 2047102; RV64IZBB-NEXT:    ret103;104; RV64IZBS-LABEL: pos_small:105; RV64IZBS:       # %bb.0:106; RV64IZBS-NEXT:    li a0, 2047107; RV64IZBS-NEXT:    ret108;109; RV64IXTHEADBB-LABEL: pos_small:110; RV64IXTHEADBB:       # %bb.0:111; RV64IXTHEADBB-NEXT:    li a0, 2047112; RV64IXTHEADBB-NEXT:    ret113;114; RV32-REMAT-LABEL: pos_small:115; RV32-REMAT:       # %bb.0:116; RV32-REMAT-NEXT:    li a0, 2047117; RV32-REMAT-NEXT:    ret118;119; RV64-REMAT-LABEL: pos_small:120; RV64-REMAT:       # %bb.0:121; RV64-REMAT-NEXT:    li a0, 2047122; RV64-REMAT-NEXT:    ret123  ret i32 2047124}125 126define signext i32 @neg_small() nounwind {127; RV32I-LABEL: neg_small:128; RV32I:       # %bb.0:129; RV32I-NEXT:    li a0, -2048130; RV32I-NEXT:    ret131;132; RV32IXQCILI-LABEL: neg_small:133; RV32IXQCILI:       # %bb.0:134; RV32IXQCILI-NEXT:    li a0, -2048135; RV32IXQCILI-NEXT:    ret136;137; RV64I-LABEL: neg_small:138; RV64I:       # %bb.0:139; RV64I-NEXT:    li a0, -2048140; RV64I-NEXT:    ret141;142; RV64IZBA-LABEL: neg_small:143; RV64IZBA:       # %bb.0:144; RV64IZBA-NEXT:    li a0, -2048145; RV64IZBA-NEXT:    ret146;147; RV64IZBB-LABEL: neg_small:148; RV64IZBB:       # %bb.0:149; RV64IZBB-NEXT:    li a0, -2048150; RV64IZBB-NEXT:    ret151;152; RV64IZBS-LABEL: neg_small:153; RV64IZBS:       # %bb.0:154; RV64IZBS-NEXT:    li a0, -2048155; RV64IZBS-NEXT:    ret156;157; RV64IXTHEADBB-LABEL: neg_small:158; RV64IXTHEADBB:       # %bb.0:159; RV64IXTHEADBB-NEXT:    li a0, -2048160; RV64IXTHEADBB-NEXT:    ret161;162; RV32-REMAT-LABEL: neg_small:163; RV32-REMAT:       # %bb.0:164; RV32-REMAT-NEXT:    li a0, -2048165; RV32-REMAT-NEXT:    ret166;167; RV64-REMAT-LABEL: neg_small:168; RV64-REMAT:       # %bb.0:169; RV64-REMAT-NEXT:    li a0, -2048170; RV64-REMAT-NEXT:    ret171  ret i32 -2048172}173 174define signext i32 @pos_i32() nounwind {175; RV32I-LABEL: pos_i32:176; RV32I:       # %bb.0:177; RV32I-NEXT:    lui a0, 423811178; RV32I-NEXT:    addi a0, a0, -1297179; RV32I-NEXT:    ret180;181; RV32IXQCILI-LABEL: pos_i32:182; RV32IXQCILI:       # %bb.0:183; RV32IXQCILI-NEXT:    qc.e.li a0, 1735928559184; RV32IXQCILI-NEXT:    ret185;186; RV64I-LABEL: pos_i32:187; RV64I:       # %bb.0:188; RV64I-NEXT:    lui a0, 423811189; RV64I-NEXT:    addi a0, a0, -1297190; RV64I-NEXT:    ret191;192; RV64IZBA-LABEL: pos_i32:193; RV64IZBA:       # %bb.0:194; RV64IZBA-NEXT:    lui a0, 423811195; RV64IZBA-NEXT:    addi a0, a0, -1297196; RV64IZBA-NEXT:    ret197;198; RV64IZBB-LABEL: pos_i32:199; RV64IZBB:       # %bb.0:200; RV64IZBB-NEXT:    lui a0, 423811201; RV64IZBB-NEXT:    addi a0, a0, -1297202; RV64IZBB-NEXT:    ret203;204; RV64IZBS-LABEL: pos_i32:205; RV64IZBS:       # %bb.0:206; RV64IZBS-NEXT:    lui a0, 423811207; RV64IZBS-NEXT:    addi a0, a0, -1297208; RV64IZBS-NEXT:    ret209;210; RV64IXTHEADBB-LABEL: pos_i32:211; RV64IXTHEADBB:       # %bb.0:212; RV64IXTHEADBB-NEXT:    lui a0, 423811213; RV64IXTHEADBB-NEXT:    addi a0, a0, -1297214; RV64IXTHEADBB-NEXT:    ret215;216; RV32-REMAT-LABEL: pos_i32:217; RV32-REMAT:       # %bb.0:218; RV32-REMAT-NEXT:    lui a0, 423811219; RV32-REMAT-NEXT:    addi a0, a0, -1297220; RV32-REMAT-NEXT:    ret221;222; RV64-REMAT-LABEL: pos_i32:223; RV64-REMAT:       # %bb.0:224; RV64-REMAT-NEXT:    lui a0, 423811225; RV64-REMAT-NEXT:    addi a0, a0, -1297226; RV64-REMAT-NEXT:    ret227  ret i32 1735928559228}229 230define signext i32 @neg_i32() nounwind {231; RV32I-LABEL: neg_i32:232; RV32I:       # %bb.0:233; RV32I-NEXT:    lui a0, 912092234; RV32I-NEXT:    addi a0, a0, -273235; RV32I-NEXT:    ret236;237; RV32IXQCILI-LABEL: neg_i32:238; RV32IXQCILI:       # %bb.0:239; RV32IXQCILI-NEXT:    qc.e.li a0, -559038737240; RV32IXQCILI-NEXT:    ret241;242; RV64I-LABEL: neg_i32:243; RV64I:       # %bb.0:244; RV64I-NEXT:    lui a0, 912092245; RV64I-NEXT:    addi a0, a0, -273246; RV64I-NEXT:    ret247;248; RV64IZBA-LABEL: neg_i32:249; RV64IZBA:       # %bb.0:250; RV64IZBA-NEXT:    lui a0, 912092251; RV64IZBA-NEXT:    addi a0, a0, -273252; RV64IZBA-NEXT:    ret253;254; RV64IZBB-LABEL: neg_i32:255; RV64IZBB:       # %bb.0:256; RV64IZBB-NEXT:    lui a0, 912092257; RV64IZBB-NEXT:    addi a0, a0, -273258; RV64IZBB-NEXT:    ret259;260; RV64IZBS-LABEL: neg_i32:261; RV64IZBS:       # %bb.0:262; RV64IZBS-NEXT:    lui a0, 912092263; RV64IZBS-NEXT:    addi a0, a0, -273264; RV64IZBS-NEXT:    ret265;266; RV64IXTHEADBB-LABEL: neg_i32:267; RV64IXTHEADBB:       # %bb.0:268; RV64IXTHEADBB-NEXT:    lui a0, 912092269; RV64IXTHEADBB-NEXT:    addi a0, a0, -273270; RV64IXTHEADBB-NEXT:    ret271;272; RV32-REMAT-LABEL: neg_i32:273; RV32-REMAT:       # %bb.0:274; RV32-REMAT-NEXT:    lui a0, 912092275; RV32-REMAT-NEXT:    addi a0, a0, -273276; RV32-REMAT-NEXT:    ret277;278; RV64-REMAT-LABEL: neg_i32:279; RV64-REMAT:       # %bb.0:280; RV64-REMAT-NEXT:    lui a0, 912092281; RV64-REMAT-NEXT:    addi a0, a0, -273282; RV64-REMAT-NEXT:    ret283  ret i32 -559038737284}285 286define signext i32 @pos_i32_hi20_only() nounwind {287; RV32I-LABEL: pos_i32_hi20_only:288; RV32I:       # %bb.0:289; RV32I-NEXT:    lui a0, 16290; RV32I-NEXT:    ret291;292; RV32IXQCILI-LABEL: pos_i32_hi20_only:293; RV32IXQCILI:       # %bb.0:294; RV32IXQCILI-NEXT:    lui a0, 16295; RV32IXQCILI-NEXT:    ret296;297; RV64I-LABEL: pos_i32_hi20_only:298; RV64I:       # %bb.0:299; RV64I-NEXT:    lui a0, 16300; RV64I-NEXT:    ret301;302; RV64IZBA-LABEL: pos_i32_hi20_only:303; RV64IZBA:       # %bb.0:304; RV64IZBA-NEXT:    lui a0, 16305; RV64IZBA-NEXT:    ret306;307; RV64IZBB-LABEL: pos_i32_hi20_only:308; RV64IZBB:       # %bb.0:309; RV64IZBB-NEXT:    lui a0, 16310; RV64IZBB-NEXT:    ret311;312; RV64IZBS-LABEL: pos_i32_hi20_only:313; RV64IZBS:       # %bb.0:314; RV64IZBS-NEXT:    lui a0, 16315; RV64IZBS-NEXT:    ret316;317; RV64IXTHEADBB-LABEL: pos_i32_hi20_only:318; RV64IXTHEADBB:       # %bb.0:319; RV64IXTHEADBB-NEXT:    lui a0, 16320; RV64IXTHEADBB-NEXT:    ret321;322; RV32-REMAT-LABEL: pos_i32_hi20_only:323; RV32-REMAT:       # %bb.0:324; RV32-REMAT-NEXT:    lui a0, 16325; RV32-REMAT-NEXT:    ret326;327; RV64-REMAT-LABEL: pos_i32_hi20_only:328; RV64-REMAT:       # %bb.0:329; RV64-REMAT-NEXT:    lui a0, 16330; RV64-REMAT-NEXT:    ret331  ret i32 65536 ; 0x10000332}333 334define signext i32 @neg_i32_hi20_only() nounwind {335; RV32I-LABEL: neg_i32_hi20_only:336; RV32I:       # %bb.0:337; RV32I-NEXT:    lui a0, 1048560338; RV32I-NEXT:    ret339;340; RV32IXQCILI-LABEL: neg_i32_hi20_only:341; RV32IXQCILI:       # %bb.0:342; RV32IXQCILI-NEXT:    lui a0, 1048560343; RV32IXQCILI-NEXT:    ret344;345; RV64I-LABEL: neg_i32_hi20_only:346; RV64I:       # %bb.0:347; RV64I-NEXT:    lui a0, 1048560348; RV64I-NEXT:    ret349;350; RV64IZBA-LABEL: neg_i32_hi20_only:351; RV64IZBA:       # %bb.0:352; RV64IZBA-NEXT:    lui a0, 1048560353; RV64IZBA-NEXT:    ret354;355; RV64IZBB-LABEL: neg_i32_hi20_only:356; RV64IZBB:       # %bb.0:357; RV64IZBB-NEXT:    lui a0, 1048560358; RV64IZBB-NEXT:    ret359;360; RV64IZBS-LABEL: neg_i32_hi20_only:361; RV64IZBS:       # %bb.0:362; RV64IZBS-NEXT:    lui a0, 1048560363; RV64IZBS-NEXT:    ret364;365; RV64IXTHEADBB-LABEL: neg_i32_hi20_only:366; RV64IXTHEADBB:       # %bb.0:367; RV64IXTHEADBB-NEXT:    lui a0, 1048560368; RV64IXTHEADBB-NEXT:    ret369;370; RV32-REMAT-LABEL: neg_i32_hi20_only:371; RV32-REMAT:       # %bb.0:372; RV32-REMAT-NEXT:    lui a0, 1048560373; RV32-REMAT-NEXT:    ret374;375; RV64-REMAT-LABEL: neg_i32_hi20_only:376; RV64-REMAT:       # %bb.0:377; RV64-REMAT-NEXT:    lui a0, 1048560378; RV64-REMAT-NEXT:    ret379  ret i32 -65536 ; -0x10000380}381 382; This can be materialized with ADDI+SLLI, improving compressibility.383 384define signext i32 @imm_left_shifted_addi() nounwind {385; RV32I-LABEL: imm_left_shifted_addi:386; RV32I:       # %bb.0:387; RV32I-NEXT:    lui a0, 32388; RV32I-NEXT:    addi a0, a0, -64389; RV32I-NEXT:    ret390;391; RV32IXQCILI-LABEL: imm_left_shifted_addi:392; RV32IXQCILI:       # %bb.0:393; RV32IXQCILI-NEXT:    qc.li a0, 131008394; RV32IXQCILI-NEXT:    ret395;396; RV64I-LABEL: imm_left_shifted_addi:397; RV64I:       # %bb.0:398; RV64I-NEXT:    lui a0, 32399; RV64I-NEXT:    addi a0, a0, -64400; RV64I-NEXT:    ret401;402; RV64IZBA-LABEL: imm_left_shifted_addi:403; RV64IZBA:       # %bb.0:404; RV64IZBA-NEXT:    lui a0, 32405; RV64IZBA-NEXT:    addi a0, a0, -64406; RV64IZBA-NEXT:    ret407;408; RV64IZBB-LABEL: imm_left_shifted_addi:409; RV64IZBB:       # %bb.0:410; RV64IZBB-NEXT:    lui a0, 32411; RV64IZBB-NEXT:    addi a0, a0, -64412; RV64IZBB-NEXT:    ret413;414; RV64IZBS-LABEL: imm_left_shifted_addi:415; RV64IZBS:       # %bb.0:416; RV64IZBS-NEXT:    lui a0, 32417; RV64IZBS-NEXT:    addi a0, a0, -64418; RV64IZBS-NEXT:    ret419;420; RV64IXTHEADBB-LABEL: imm_left_shifted_addi:421; RV64IXTHEADBB:       # %bb.0:422; RV64IXTHEADBB-NEXT:    lui a0, 32423; RV64IXTHEADBB-NEXT:    addi a0, a0, -64424; RV64IXTHEADBB-NEXT:    ret425;426; RV32-REMAT-LABEL: imm_left_shifted_addi:427; RV32-REMAT:       # %bb.0:428; RV32-REMAT-NEXT:    lui a0, 32429; RV32-REMAT-NEXT:    addi a0, a0, -64430; RV32-REMAT-NEXT:    ret431;432; RV64-REMAT-LABEL: imm_left_shifted_addi:433; RV64-REMAT:       # %bb.0:434; RV64-REMAT-NEXT:    lui a0, 32435; RV64-REMAT-NEXT:    addi a0, a0, -64436; RV64-REMAT-NEXT:    ret437  ret i32 131008 ; 0x1FFC0438}439 440; This can be materialized with ADDI+SRLI, improving compressibility.441 442define signext i32 @imm_right_shifted_addi() nounwind {443; RV32I-LABEL: imm_right_shifted_addi:444; RV32I:       # %bb.0:445; RV32I-NEXT:    lui a0, 524288446; RV32I-NEXT:    addi a0, a0, -1447; RV32I-NEXT:    ret448;449; RV32IXQCILI-LABEL: imm_right_shifted_addi:450; RV32IXQCILI:       # %bb.0:451; RV32IXQCILI-NEXT:    qc.e.li a0, 2147483647452; RV32IXQCILI-NEXT:    ret453;454; RV64I-LABEL: imm_right_shifted_addi:455; RV64I:       # %bb.0:456; RV64I-NEXT:    lui a0, 524288457; RV64I-NEXT:    addiw a0, a0, -1458; RV64I-NEXT:    ret459;460; RV64IZBA-LABEL: imm_right_shifted_addi:461; RV64IZBA:       # %bb.0:462; RV64IZBA-NEXT:    lui a0, 524288463; RV64IZBA-NEXT:    addiw a0, a0, -1464; RV64IZBA-NEXT:    ret465;466; RV64IZBB-LABEL: imm_right_shifted_addi:467; RV64IZBB:       # %bb.0:468; RV64IZBB-NEXT:    lui a0, 524288469; RV64IZBB-NEXT:    addiw a0, a0, -1470; RV64IZBB-NEXT:    ret471;472; RV64IZBS-LABEL: imm_right_shifted_addi:473; RV64IZBS:       # %bb.0:474; RV64IZBS-NEXT:    lui a0, 524288475; RV64IZBS-NEXT:    addiw a0, a0, -1476; RV64IZBS-NEXT:    ret477;478; RV64IXTHEADBB-LABEL: imm_right_shifted_addi:479; RV64IXTHEADBB:       # %bb.0:480; RV64IXTHEADBB-NEXT:    lui a0, 524288481; RV64IXTHEADBB-NEXT:    addiw a0, a0, -1482; RV64IXTHEADBB-NEXT:    ret483;484; RV32-REMAT-LABEL: imm_right_shifted_addi:485; RV32-REMAT:       # %bb.0:486; RV32-REMAT-NEXT:    lui a0, 524288487; RV32-REMAT-NEXT:    addi a0, a0, -1488; RV32-REMAT-NEXT:    ret489;490; RV64-REMAT-LABEL: imm_right_shifted_addi:491; RV64-REMAT:       # %bb.0:492; RV64-REMAT-NEXT:    lui a0, 524288493; RV64-REMAT-NEXT:    addiw a0, a0, -1494; RV64-REMAT-NEXT:    ret495  ret i32 2147483647 ; 0x7FFFFFFF496}497 498; This can be materialized with LUI+SRLI, improving compressibility.499 500define signext i32 @imm_right_shifted_lui() nounwind {501; RV32I-LABEL: imm_right_shifted_lui:502; RV32I:       # %bb.0:503; RV32I-NEXT:    lui a0, 56504; RV32I-NEXT:    addi a0, a0, 580505; RV32I-NEXT:    ret506;507; RV32IXQCILI-LABEL: imm_right_shifted_lui:508; RV32IXQCILI:       # %bb.0:509; RV32IXQCILI-NEXT:    qc.li a0, 229956510; RV32IXQCILI-NEXT:    ret511;512; RV64I-LABEL: imm_right_shifted_lui:513; RV64I:       # %bb.0:514; RV64I-NEXT:    lui a0, 56515; RV64I-NEXT:    addi a0, a0, 580516; RV64I-NEXT:    ret517;518; RV64IZBA-LABEL: imm_right_shifted_lui:519; RV64IZBA:       # %bb.0:520; RV64IZBA-NEXT:    lui a0, 56521; RV64IZBA-NEXT:    addi a0, a0, 580522; RV64IZBA-NEXT:    ret523;524; RV64IZBB-LABEL: imm_right_shifted_lui:525; RV64IZBB:       # %bb.0:526; RV64IZBB-NEXT:    lui a0, 56527; RV64IZBB-NEXT:    addi a0, a0, 580528; RV64IZBB-NEXT:    ret529;530; RV64IZBS-LABEL: imm_right_shifted_lui:531; RV64IZBS:       # %bb.0:532; RV64IZBS-NEXT:    lui a0, 56533; RV64IZBS-NEXT:    addi a0, a0, 580534; RV64IZBS-NEXT:    ret535;536; RV64IXTHEADBB-LABEL: imm_right_shifted_lui:537; RV64IXTHEADBB:       # %bb.0:538; RV64IXTHEADBB-NEXT:    lui a0, 56539; RV64IXTHEADBB-NEXT:    addi a0, a0, 580540; RV64IXTHEADBB-NEXT:    ret541;542; RV32-REMAT-LABEL: imm_right_shifted_lui:543; RV32-REMAT:       # %bb.0:544; RV32-REMAT-NEXT:    lui a0, 56545; RV32-REMAT-NEXT:    addi a0, a0, 580546; RV32-REMAT-NEXT:    ret547;548; RV64-REMAT-LABEL: imm_right_shifted_lui:549; RV64-REMAT:       # %bb.0:550; RV64-REMAT-NEXT:    lui a0, 56551; RV64-REMAT-NEXT:    addi a0, a0, 580552; RV64-REMAT-NEXT:    ret553  ret i32 229956 ; 0x38244554}555 556define i64 @imm64_1() nounwind {557; RV32I-LABEL: imm64_1:558; RV32I:       # %bb.0:559; RV32I-NEXT:    lui a0, 524288560; RV32I-NEXT:    li a1, 0561; RV32I-NEXT:    ret562;563; RV32IXQCILI-LABEL: imm64_1:564; RV32IXQCILI:       # %bb.0:565; RV32IXQCILI-NEXT:    lui a0, 524288566; RV32IXQCILI-NEXT:    li a1, 0567; RV32IXQCILI-NEXT:    ret568;569; RV64I-LABEL: imm64_1:570; RV64I:       # %bb.0:571; RV64I-NEXT:    li a0, 1572; RV64I-NEXT:    slli a0, a0, 31573; RV64I-NEXT:    ret574;575; RV64IZBA-LABEL: imm64_1:576; RV64IZBA:       # %bb.0:577; RV64IZBA-NEXT:    li a0, 1578; RV64IZBA-NEXT:    slli a0, a0, 31579; RV64IZBA-NEXT:    ret580;581; RV64IZBB-LABEL: imm64_1:582; RV64IZBB:       # %bb.0:583; RV64IZBB-NEXT:    li a0, 1584; RV64IZBB-NEXT:    slli a0, a0, 31585; RV64IZBB-NEXT:    ret586;587; RV64IZBS-LABEL: imm64_1:588; RV64IZBS:       # %bb.0:589; RV64IZBS-NEXT:    bseti a0, zero, 31590; RV64IZBS-NEXT:    ret591;592; RV64IXTHEADBB-LABEL: imm64_1:593; RV64IXTHEADBB:       # %bb.0:594; RV64IXTHEADBB-NEXT:    li a0, 1595; RV64IXTHEADBB-NEXT:    slli a0, a0, 31596; RV64IXTHEADBB-NEXT:    ret597;598; RV32-REMAT-LABEL: imm64_1:599; RV32-REMAT:       # %bb.0:600; RV32-REMAT-NEXT:    lui a0, 524288601; RV32-REMAT-NEXT:    li a1, 0602; RV32-REMAT-NEXT:    ret603;604; RV64-REMAT-LABEL: imm64_1:605; RV64-REMAT:       # %bb.0:606; RV64-REMAT-NEXT:    li a0, 1607; RV64-REMAT-NEXT:    slli a0, a0, 31608; RV64-REMAT-NEXT:    ret609  ret i64 2147483648 ; 0x8000_0000610}611 612define i64 @imm64_2() nounwind {613; RV32I-LABEL: imm64_2:614; RV32I:       # %bb.0:615; RV32I-NEXT:    li a0, -1616; RV32I-NEXT:    li a1, 0617; RV32I-NEXT:    ret618;619; RV32IXQCILI-LABEL: imm64_2:620; RV32IXQCILI:       # %bb.0:621; RV32IXQCILI-NEXT:    li a0, -1622; RV32IXQCILI-NEXT:    li a1, 0623; RV32IXQCILI-NEXT:    ret624;625; RV64I-LABEL: imm64_2:626; RV64I:       # %bb.0:627; RV64I-NEXT:    li a0, -1628; RV64I-NEXT:    srli a0, a0, 32629; RV64I-NEXT:    ret630;631; RV64IZBA-LABEL: imm64_2:632; RV64IZBA:       # %bb.0:633; RV64IZBA-NEXT:    li a0, -1634; RV64IZBA-NEXT:    srli a0, a0, 32635; RV64IZBA-NEXT:    ret636;637; RV64IZBB-LABEL: imm64_2:638; RV64IZBB:       # %bb.0:639; RV64IZBB-NEXT:    li a0, -1640; RV64IZBB-NEXT:    srli a0, a0, 32641; RV64IZBB-NEXT:    ret642;643; RV64IZBS-LABEL: imm64_2:644; RV64IZBS:       # %bb.0:645; RV64IZBS-NEXT:    li a0, -1646; RV64IZBS-NEXT:    srli a0, a0, 32647; RV64IZBS-NEXT:    ret648;649; RV64IXTHEADBB-LABEL: imm64_2:650; RV64IXTHEADBB:       # %bb.0:651; RV64IXTHEADBB-NEXT:    li a0, -1652; RV64IXTHEADBB-NEXT:    srli a0, a0, 32653; RV64IXTHEADBB-NEXT:    ret654;655; RV32-REMAT-LABEL: imm64_2:656; RV32-REMAT:       # %bb.0:657; RV32-REMAT-NEXT:    li a0, -1658; RV32-REMAT-NEXT:    li a1, 0659; RV32-REMAT-NEXT:    ret660;661; RV64-REMAT-LABEL: imm64_2:662; RV64-REMAT:       # %bb.0:663; RV64-REMAT-NEXT:    li a0, -1664; RV64-REMAT-NEXT:    srli a0, a0, 32665; RV64-REMAT-NEXT:    ret666  ret i64 4294967295 ; 0xFFFF_FFFF667}668 669define i64 @imm64_3() nounwind {670; RV32I-LABEL: imm64_3:671; RV32I:       # %bb.0:672; RV32I-NEXT:    li a1, 1673; RV32I-NEXT:    li a0, 0674; RV32I-NEXT:    ret675;676; RV32IXQCILI-LABEL: imm64_3:677; RV32IXQCILI:       # %bb.0:678; RV32IXQCILI-NEXT:    li a1, 1679; RV32IXQCILI-NEXT:    li a0, 0680; RV32IXQCILI-NEXT:    ret681;682; RV64I-LABEL: imm64_3:683; RV64I:       # %bb.0:684; RV64I-NEXT:    li a0, 1685; RV64I-NEXT:    slli a0, a0, 32686; RV64I-NEXT:    ret687;688; RV64IZBA-LABEL: imm64_3:689; RV64IZBA:       # %bb.0:690; RV64IZBA-NEXT:    li a0, 1691; RV64IZBA-NEXT:    slli a0, a0, 32692; RV64IZBA-NEXT:    ret693;694; RV64IZBB-LABEL: imm64_3:695; RV64IZBB:       # %bb.0:696; RV64IZBB-NEXT:    li a0, 1697; RV64IZBB-NEXT:    slli a0, a0, 32698; RV64IZBB-NEXT:    ret699;700; RV64IZBS-LABEL: imm64_3:701; RV64IZBS:       # %bb.0:702; RV64IZBS-NEXT:    bseti a0, zero, 32703; RV64IZBS-NEXT:    ret704;705; RV64IXTHEADBB-LABEL: imm64_3:706; RV64IXTHEADBB:       # %bb.0:707; RV64IXTHEADBB-NEXT:    li a0, 1708; RV64IXTHEADBB-NEXT:    slli a0, a0, 32709; RV64IXTHEADBB-NEXT:    ret710;711; RV32-REMAT-LABEL: imm64_3:712; RV32-REMAT:       # %bb.0:713; RV32-REMAT-NEXT:    li a1, 1714; RV32-REMAT-NEXT:    li a0, 0715; RV32-REMAT-NEXT:    ret716;717; RV64-REMAT-LABEL: imm64_3:718; RV64-REMAT:       # %bb.0:719; RV64-REMAT-NEXT:    li a0, 1720; RV64-REMAT-NEXT:    slli a0, a0, 32721; RV64-REMAT-NEXT:    ret722  ret i64 4294967296 ; 0x1_0000_0000723}724 725define i64 @imm64_4() nounwind {726; RV32I-LABEL: imm64_4:727; RV32I:       # %bb.0:728; RV32I-NEXT:    lui a1, 524288729; RV32I-NEXT:    li a0, 0730; RV32I-NEXT:    ret731;732; RV32IXQCILI-LABEL: imm64_4:733; RV32IXQCILI:       # %bb.0:734; RV32IXQCILI-NEXT:    lui a1, 524288735; RV32IXQCILI-NEXT:    li a0, 0736; RV32IXQCILI-NEXT:    ret737;738; RV64I-LABEL: imm64_4:739; RV64I:       # %bb.0:740; RV64I-NEXT:    li a0, -1741; RV64I-NEXT:    slli a0, a0, 63742; RV64I-NEXT:    ret743;744; RV64IZBA-LABEL: imm64_4:745; RV64IZBA:       # %bb.0:746; RV64IZBA-NEXT:    li a0, -1747; RV64IZBA-NEXT:    slli a0, a0, 63748; RV64IZBA-NEXT:    ret749;750; RV64IZBB-LABEL: imm64_4:751; RV64IZBB:       # %bb.0:752; RV64IZBB-NEXT:    li a0, -1753; RV64IZBB-NEXT:    slli a0, a0, 63754; RV64IZBB-NEXT:    ret755;756; RV64IZBS-LABEL: imm64_4:757; RV64IZBS:       # %bb.0:758; RV64IZBS-NEXT:    bseti a0, zero, 63759; RV64IZBS-NEXT:    ret760;761; RV64IXTHEADBB-LABEL: imm64_4:762; RV64IXTHEADBB:       # %bb.0:763; RV64IXTHEADBB-NEXT:    li a0, -1764; RV64IXTHEADBB-NEXT:    slli a0, a0, 63765; RV64IXTHEADBB-NEXT:    ret766;767; RV32-REMAT-LABEL: imm64_4:768; RV32-REMAT:       # %bb.0:769; RV32-REMAT-NEXT:    lui a1, 524288770; RV32-REMAT-NEXT:    li a0, 0771; RV32-REMAT-NEXT:    ret772;773; RV64-REMAT-LABEL: imm64_4:774; RV64-REMAT:       # %bb.0:775; RV64-REMAT-NEXT:    li a0, -1776; RV64-REMAT-NEXT:    slli a0, a0, 63777; RV64-REMAT-NEXT:    ret778  ret i64 9223372036854775808 ; 0x8000_0000_0000_0000779}780 781define i64 @imm64_5() nounwind {782; RV32I-LABEL: imm64_5:783; RV32I:       # %bb.0:784; RV32I-NEXT:    lui a1, 524288785; RV32I-NEXT:    li a0, 0786; RV32I-NEXT:    ret787;788; RV32IXQCILI-LABEL: imm64_5:789; RV32IXQCILI:       # %bb.0:790; RV32IXQCILI-NEXT:    lui a1, 524288791; RV32IXQCILI-NEXT:    li a0, 0792; RV32IXQCILI-NEXT:    ret793;794; RV64I-LABEL: imm64_5:795; RV64I:       # %bb.0:796; RV64I-NEXT:    li a0, -1797; RV64I-NEXT:    slli a0, a0, 63798; RV64I-NEXT:    ret799;800; RV64IZBA-LABEL: imm64_5:801; RV64IZBA:       # %bb.0:802; RV64IZBA-NEXT:    li a0, -1803; RV64IZBA-NEXT:    slli a0, a0, 63804; RV64IZBA-NEXT:    ret805;806; RV64IZBB-LABEL: imm64_5:807; RV64IZBB:       # %bb.0:808; RV64IZBB-NEXT:    li a0, -1809; RV64IZBB-NEXT:    slli a0, a0, 63810; RV64IZBB-NEXT:    ret811;812; RV64IZBS-LABEL: imm64_5:813; RV64IZBS:       # %bb.0:814; RV64IZBS-NEXT:    bseti a0, zero, 63815; RV64IZBS-NEXT:    ret816;817; RV64IXTHEADBB-LABEL: imm64_5:818; RV64IXTHEADBB:       # %bb.0:819; RV64IXTHEADBB-NEXT:    li a0, -1820; RV64IXTHEADBB-NEXT:    slli a0, a0, 63821; RV64IXTHEADBB-NEXT:    ret822;823; RV32-REMAT-LABEL: imm64_5:824; RV32-REMAT:       # %bb.0:825; RV32-REMAT-NEXT:    lui a1, 524288826; RV32-REMAT-NEXT:    li a0, 0827; RV32-REMAT-NEXT:    ret828;829; RV64-REMAT-LABEL: imm64_5:830; RV64-REMAT:       # %bb.0:831; RV64-REMAT-NEXT:    li a0, -1832; RV64-REMAT-NEXT:    slli a0, a0, 63833; RV64-REMAT-NEXT:    ret834  ret i64 -9223372036854775808 ; 0x8000_0000_0000_0000835}836 837define i64 @imm64_6() nounwind {838; RV32I-LABEL: imm64_6:839; RV32I:       # %bb.0:840; RV32I-NEXT:    lui a1, 74565841; RV32I-NEXT:    addi a1, a1, 1656842; RV32I-NEXT:    li a0, 0843; RV32I-NEXT:    ret844;845; RV32IXQCILI-LABEL: imm64_6:846; RV32IXQCILI:       # %bb.0:847; RV32IXQCILI-NEXT:    qc.e.li a1, 305419896848; RV32IXQCILI-NEXT:    li a0, 0849; RV32IXQCILI-NEXT:    ret850;851; RV64I-LABEL: imm64_6:852; RV64I:       # %bb.0:853; RV64I-NEXT:    lui a0, 9321854; RV64I-NEXT:    addi a0, a0, -1329855; RV64I-NEXT:    slli a0, a0, 35856; RV64I-NEXT:    ret857;858; RV64IZBA-LABEL: imm64_6:859; RV64IZBA:       # %bb.0:860; RV64IZBA-NEXT:    lui a0, 9321861; RV64IZBA-NEXT:    addi a0, a0, -1329862; RV64IZBA-NEXT:    slli a0, a0, 35863; RV64IZBA-NEXT:    ret864;865; RV64IZBB-LABEL: imm64_6:866; RV64IZBB:       # %bb.0:867; RV64IZBB-NEXT:    lui a0, 9321868; RV64IZBB-NEXT:    addi a0, a0, -1329869; RV64IZBB-NEXT:    slli a0, a0, 35870; RV64IZBB-NEXT:    ret871;872; RV64IZBS-LABEL: imm64_6:873; RV64IZBS:       # %bb.0:874; RV64IZBS-NEXT:    lui a0, 9321875; RV64IZBS-NEXT:    addi a0, a0, -1329876; RV64IZBS-NEXT:    slli a0, a0, 35877; RV64IZBS-NEXT:    ret878;879; RV64IXTHEADBB-LABEL: imm64_6:880; RV64IXTHEADBB:       # %bb.0:881; RV64IXTHEADBB-NEXT:    lui a0, 9321882; RV64IXTHEADBB-NEXT:    addi a0, a0, -1329883; RV64IXTHEADBB-NEXT:    slli a0, a0, 35884; RV64IXTHEADBB-NEXT:    ret885;886; RV32-REMAT-LABEL: imm64_6:887; RV32-REMAT:       # %bb.0:888; RV32-REMAT-NEXT:    lui a1, 74565889; RV32-REMAT-NEXT:    addi a1, a1, 1656890; RV32-REMAT-NEXT:    li a0, 0891; RV32-REMAT-NEXT:    ret892;893; RV64-REMAT-LABEL: imm64_6:894; RV64-REMAT:       # %bb.0:895; RV64-REMAT-NEXT:    lui a0, 9321896; RV64-REMAT-NEXT:    addi a0, a0, -1329897; RV64-REMAT-NEXT:    slli a0, a0, 35898; RV64-REMAT-NEXT:    ret899  ret i64 1311768464867721216 ; 0x1234_5678_0000_0000900}901 902define i64 @imm64_7() nounwind {903; RV32I-LABEL: imm64_7:904; RV32I:       # %bb.0:905; RV32I-NEXT:    lui a0, 45056906; RV32I-NEXT:    addi a0, a0, 15907; RV32I-NEXT:    lui a1, 458752908; RV32I-NEXT:    ret909;910; RV32IXQCILI-LABEL: imm64_7:911; RV32IXQCILI:       # %bb.0:912; RV32IXQCILI-NEXT:    qc.e.li a0, 184549391913; RV32IXQCILI-NEXT:    lui a1, 458752914; RV32IXQCILI-NEXT:    ret915;916; RV64I-LABEL: imm64_7:917; RV64I:       # %bb.0:918; RV64I-NEXT:    li a0, 7919; RV64I-NEXT:    slli a0, a0, 36920; RV64I-NEXT:    addi a0, a0, 11921; RV64I-NEXT:    slli a0, a0, 24922; RV64I-NEXT:    addi a0, a0, 15923; RV64I-NEXT:    ret924;925; RV64IZBA-LABEL: imm64_7:926; RV64IZBA:       # %bb.0:927; RV64IZBA-NEXT:    li a0, 7928; RV64IZBA-NEXT:    slli a0, a0, 36929; RV64IZBA-NEXT:    addi a0, a0, 11930; RV64IZBA-NEXT:    slli a0, a0, 24931; RV64IZBA-NEXT:    addi a0, a0, 15932; RV64IZBA-NEXT:    ret933;934; RV64IZBB-LABEL: imm64_7:935; RV64IZBB:       # %bb.0:936; RV64IZBB-NEXT:    li a0, 7937; RV64IZBB-NEXT:    slli a0, a0, 36938; RV64IZBB-NEXT:    addi a0, a0, 11939; RV64IZBB-NEXT:    slli a0, a0, 24940; RV64IZBB-NEXT:    addi a0, a0, 15941; RV64IZBB-NEXT:    ret942;943; RV64IZBS-LABEL: imm64_7:944; RV64IZBS:       # %bb.0:945; RV64IZBS-NEXT:    li a0, 7946; RV64IZBS-NEXT:    slli a0, a0, 36947; RV64IZBS-NEXT:    addi a0, a0, 11948; RV64IZBS-NEXT:    slli a0, a0, 24949; RV64IZBS-NEXT:    addi a0, a0, 15950; RV64IZBS-NEXT:    ret951;952; RV64IXTHEADBB-LABEL: imm64_7:953; RV64IXTHEADBB:       # %bb.0:954; RV64IXTHEADBB-NEXT:    li a0, 7955; RV64IXTHEADBB-NEXT:    slli a0, a0, 36956; RV64IXTHEADBB-NEXT:    addi a0, a0, 11957; RV64IXTHEADBB-NEXT:    slli a0, a0, 24958; RV64IXTHEADBB-NEXT:    addi a0, a0, 15959; RV64IXTHEADBB-NEXT:    ret960;961; RV32-REMAT-LABEL: imm64_7:962; RV32-REMAT:       # %bb.0:963; RV32-REMAT-NEXT:    lui a0, 45056964; RV32-REMAT-NEXT:    addi a0, a0, 15965; RV32-REMAT-NEXT:    lui a1, 458752966; RV32-REMAT-NEXT:    ret967;968; RV64-REMAT-LABEL: imm64_7:969; RV64-REMAT:       # %bb.0:970; RV64-REMAT-NEXT:    li a0, 7971; RV64-REMAT-NEXT:    slli a0, a0, 36972; RV64-REMAT-NEXT:    addi a0, a0, 11973; RV64-REMAT-NEXT:    slli a0, a0, 24974; RV64-REMAT-NEXT:    addi a0, a0, 15975; RV64-REMAT-NEXT:    ret976  ret i64 8070450532432478223 ; 0x7000_0000_0B00_000F977}978 979; TODO: it can be preferable to put constants that are expensive to materialise980; into the constant pool, especially for -Os.981define i64 @imm64_8() nounwind {982; RV32I-LABEL: imm64_8:983; RV32I:       # %bb.0:984; RV32I-NEXT:    lui a0, 633806985; RV32I-NEXT:    lui a1, 74565986; RV32I-NEXT:    addi a0, a0, -272987; RV32I-NEXT:    addi a1, a1, 1656988; RV32I-NEXT:    ret989;990; RV32IXQCILI-LABEL: imm64_8:991; RV32IXQCILI:       # %bb.0:992; RV32IXQCILI-NEXT:    qc.e.li a0, -1698898192993; RV32IXQCILI-NEXT:    qc.e.li a1, 305419896994; RV32IXQCILI-NEXT:    ret995;996; RV64-NOPOOL-LABEL: imm64_8:997; RV64-NOPOOL:       # %bb.0:998; RV64-NOPOOL-NEXT:    lui a0, 583999; RV64-NOPOOL-NEXT:    addi a0, a0, -18751000; RV64-NOPOOL-NEXT:    slli a0, a0, 141001; RV64-NOPOOL-NEXT:    addi a0, a0, -9471002; RV64-NOPOOL-NEXT:    slli a0, a0, 121003; RV64-NOPOOL-NEXT:    addi a0, a0, 15111004; RV64-NOPOOL-NEXT:    slli a0, a0, 131005; RV64-NOPOOL-NEXT:    addi a0, a0, -2721006; RV64-NOPOOL-NEXT:    ret1007;1008; RV64I-POOL-LABEL: imm64_8:1009; RV64I-POOL:       # %bb.0:1010; RV64I-POOL-NEXT:    lui a0, %hi(.LCPI17_0)1011; RV64I-POOL-NEXT:    ld a0, %lo(.LCPI17_0)(a0)1012; RV64I-POOL-NEXT:    ret1013;1014; RV64IZBA-LABEL: imm64_8:1015; RV64IZBA:       # %bb.0:1016; RV64IZBA-NEXT:    lui a0, 5965231017; RV64IZBA-NEXT:    addi a0, a0, 9651018; RV64IZBA-NEXT:    slli.uw a0, a0, 131019; RV64IZBA-NEXT:    addi a0, a0, -13471020; RV64IZBA-NEXT:    slli a0, a0, 121021; RV64IZBA-NEXT:    addi a0, a0, -5291022; RV64IZBA-NEXT:    slli a0, a0, 41023; RV64IZBA-NEXT:    ret1024;1025; RV64IZBB-LABEL: imm64_8:1026; RV64IZBB:       # %bb.0:1027; RV64IZBB-NEXT:    lui a0, 5831028; RV64IZBB-NEXT:    addi a0, a0, -18751029; RV64IZBB-NEXT:    slli a0, a0, 141030; RV64IZBB-NEXT:    addi a0, a0, -9471031; RV64IZBB-NEXT:    slli a0, a0, 121032; RV64IZBB-NEXT:    addi a0, a0, 15111033; RV64IZBB-NEXT:    slli a0, a0, 131034; RV64IZBB-NEXT:    addi a0, a0, -2721035; RV64IZBB-NEXT:    ret1036;1037; RV64IZBS-LABEL: imm64_8:1038; RV64IZBS:       # %bb.0:1039; RV64IZBS-NEXT:    lui a0, 5831040; RV64IZBS-NEXT:    addi a0, a0, -18751041; RV64IZBS-NEXT:    slli a0, a0, 141042; RV64IZBS-NEXT:    addi a0, a0, -9471043; RV64IZBS-NEXT:    slli a0, a0, 121044; RV64IZBS-NEXT:    addi a0, a0, 15111045; RV64IZBS-NEXT:    slli a0, a0, 131046; RV64IZBS-NEXT:    addi a0, a0, -2721047; RV64IZBS-NEXT:    ret1048;1049; RV64IXTHEADBB-LABEL: imm64_8:1050; RV64IXTHEADBB:       # %bb.0:1051; RV64IXTHEADBB-NEXT:    lui a0, 5831052; RV64IXTHEADBB-NEXT:    addi a0, a0, -18751053; RV64IXTHEADBB-NEXT:    slli a0, a0, 141054; RV64IXTHEADBB-NEXT:    addi a0, a0, -9471055; RV64IXTHEADBB-NEXT:    slli a0, a0, 121056; RV64IXTHEADBB-NEXT:    addi a0, a0, 15111057; RV64IXTHEADBB-NEXT:    slli a0, a0, 131058; RV64IXTHEADBB-NEXT:    addi a0, a0, -2721059; RV64IXTHEADBB-NEXT:    ret1060;1061; RV32-REMAT-LABEL: imm64_8:1062; RV32-REMAT:       # %bb.0:1063; RV32-REMAT-NEXT:    lui a0, 6338061064; RV32-REMAT-NEXT:    addi a0, a0, -2721065; RV32-REMAT-NEXT:    lui a1, 745651066; RV32-REMAT-NEXT:    addi a1, a1, 16561067; RV32-REMAT-NEXT:    ret1068;1069; RV64-REMAT-LABEL: imm64_8:1070; RV64-REMAT:       # %bb.0:1071; RV64-REMAT-NEXT:    lui a0, 5831072; RV64-REMAT-NEXT:    addi a0, a0, -18751073; RV64-REMAT-NEXT:    slli a0, a0, 141074; RV64-REMAT-NEXT:    addi a0, a0, -9471075; RV64-REMAT-NEXT:    slli a0, a0, 121076; RV64-REMAT-NEXT:    addi a0, a0, 15111077; RV64-REMAT-NEXT:    slli a0, a0, 131078; RV64-REMAT-NEXT:    addi a0, a0, -2721079; RV64-REMAT-NEXT:    ret1080  ret i64 1311768467463790320 ; 0x1234_5678_9ABC_DEF01081}1082 1083define i64 @imm64_9() nounwind {1084; RV32I-LABEL: imm64_9:1085; RV32I:       # %bb.0:1086; RV32I-NEXT:    li a0, -11087; RV32I-NEXT:    li a1, -11088; RV32I-NEXT:    ret1089;1090; RV32IXQCILI-LABEL: imm64_9:1091; RV32IXQCILI:       # %bb.0:1092; RV32IXQCILI-NEXT:    li a0, -11093; RV32IXQCILI-NEXT:    li a1, -11094; RV32IXQCILI-NEXT:    ret1095;1096; RV64I-LABEL: imm64_9:1097; RV64I:       # %bb.0:1098; RV64I-NEXT:    li a0, -11099; RV64I-NEXT:    ret1100;1101; RV64IZBA-LABEL: imm64_9:1102; RV64IZBA:       # %bb.0:1103; RV64IZBA-NEXT:    li a0, -11104; RV64IZBA-NEXT:    ret1105;1106; RV64IZBB-LABEL: imm64_9:1107; RV64IZBB:       # %bb.0:1108; RV64IZBB-NEXT:    li a0, -11109; RV64IZBB-NEXT:    ret1110;1111; RV64IZBS-LABEL: imm64_9:1112; RV64IZBS:       # %bb.0:1113; RV64IZBS-NEXT:    li a0, -11114; RV64IZBS-NEXT:    ret1115;1116; RV64IXTHEADBB-LABEL: imm64_9:1117; RV64IXTHEADBB:       # %bb.0:1118; RV64IXTHEADBB-NEXT:    li a0, -11119; RV64IXTHEADBB-NEXT:    ret1120;1121; RV32-REMAT-LABEL: imm64_9:1122; RV32-REMAT:       # %bb.0:1123; RV32-REMAT-NEXT:    li a0, -11124; RV32-REMAT-NEXT:    li a1, -11125; RV32-REMAT-NEXT:    ret1126;1127; RV64-REMAT-LABEL: imm64_9:1128; RV64-REMAT:       # %bb.0:1129; RV64-REMAT-NEXT:    li a0, -11130; RV64-REMAT-NEXT:    ret1131  ret i64 -11132}1133 1134; Various cases where extraneous ADDIs can be inserted where a (left shifted)1135; LUI suffices.1136 1137define i64 @imm_left_shifted_lui_1() nounwind {1138; RV32I-LABEL: imm_left_shifted_lui_1:1139; RV32I:       # %bb.0:1140; RV32I-NEXT:    lui a0, 5242901141; RV32I-NEXT:    li a1, 01142; RV32I-NEXT:    ret1143;1144; RV32IXQCILI-LABEL: imm_left_shifted_lui_1:1145; RV32IXQCILI:       # %bb.0:1146; RV32IXQCILI-NEXT:    lui a0, 5242901147; RV32IXQCILI-NEXT:    li a1, 01148; RV32IXQCILI-NEXT:    ret1149;1150; RV64I-LABEL: imm_left_shifted_lui_1:1151; RV64I:       # %bb.0:1152; RV64I-NEXT:    lui a0, 2621451153; RV64I-NEXT:    slli a0, a0, 11154; RV64I-NEXT:    ret1155;1156; RV64IZBA-LABEL: imm_left_shifted_lui_1:1157; RV64IZBA:       # %bb.0:1158; RV64IZBA-NEXT:    lui a0, 2621451159; RV64IZBA-NEXT:    slli a0, a0, 11160; RV64IZBA-NEXT:    ret1161;1162; RV64IZBB-LABEL: imm_left_shifted_lui_1:1163; RV64IZBB:       # %bb.0:1164; RV64IZBB-NEXT:    lui a0, 2621451165; RV64IZBB-NEXT:    slli a0, a0, 11166; RV64IZBB-NEXT:    ret1167;1168; RV64IZBS-LABEL: imm_left_shifted_lui_1:1169; RV64IZBS:       # %bb.0:1170; RV64IZBS-NEXT:    lui a0, 2621451171; RV64IZBS-NEXT:    slli a0, a0, 11172; RV64IZBS-NEXT:    ret1173;1174; RV64IXTHEADBB-LABEL: imm_left_shifted_lui_1:1175; RV64IXTHEADBB:       # %bb.0:1176; RV64IXTHEADBB-NEXT:    lui a0, 2621451177; RV64IXTHEADBB-NEXT:    slli a0, a0, 11178; RV64IXTHEADBB-NEXT:    ret1179;1180; RV32-REMAT-LABEL: imm_left_shifted_lui_1:1181; RV32-REMAT:       # %bb.0:1182; RV32-REMAT-NEXT:    lui a0, 5242901183; RV32-REMAT-NEXT:    li a1, 01184; RV32-REMAT-NEXT:    ret1185;1186; RV64-REMAT-LABEL: imm_left_shifted_lui_1:1187; RV64-REMAT:       # %bb.0:1188; RV64-REMAT-NEXT:    lui a0, 2621451189; RV64-REMAT-NEXT:    slli a0, a0, 11190; RV64-REMAT-NEXT:    ret1191  ret i64 2147491840 ; 0x8000_20001192}1193 1194define i64 @imm_left_shifted_lui_2() nounwind {1195; RV32I-LABEL: imm_left_shifted_lui_2:1196; RV32I:       # %bb.0:1197; RV32I-NEXT:    lui a0, 41198; RV32I-NEXT:    li a1, 11199; RV32I-NEXT:    ret1200;1201; RV32IXQCILI-LABEL: imm_left_shifted_lui_2:1202; RV32IXQCILI:       # %bb.0:1203; RV32IXQCILI-NEXT:    lui a0, 41204; RV32IXQCILI-NEXT:    li a1, 11205; RV32IXQCILI-NEXT:    ret1206;1207; RV64I-LABEL: imm_left_shifted_lui_2:1208; RV64I:       # %bb.0:1209; RV64I-NEXT:    lui a0, 2621451210; RV64I-NEXT:    slli a0, a0, 21211; RV64I-NEXT:    ret1212;1213; RV64IZBA-LABEL: imm_left_shifted_lui_2:1214; RV64IZBA:       # %bb.0:1215; RV64IZBA-NEXT:    lui a0, 2621451216; RV64IZBA-NEXT:    slli a0, a0, 21217; RV64IZBA-NEXT:    ret1218;1219; RV64IZBB-LABEL: imm_left_shifted_lui_2:1220; RV64IZBB:       # %bb.0:1221; RV64IZBB-NEXT:    lui a0, 2621451222; RV64IZBB-NEXT:    slli a0, a0, 21223; RV64IZBB-NEXT:    ret1224;1225; RV64IZBS-LABEL: imm_left_shifted_lui_2:1226; RV64IZBS:       # %bb.0:1227; RV64IZBS-NEXT:    lui a0, 2621451228; RV64IZBS-NEXT:    slli a0, a0, 21229; RV64IZBS-NEXT:    ret1230;1231; RV64IXTHEADBB-LABEL: imm_left_shifted_lui_2:1232; RV64IXTHEADBB:       # %bb.0:1233; RV64IXTHEADBB-NEXT:    lui a0, 2621451234; RV64IXTHEADBB-NEXT:    slli a0, a0, 21235; RV64IXTHEADBB-NEXT:    ret1236;1237; RV32-REMAT-LABEL: imm_left_shifted_lui_2:1238; RV32-REMAT:       # %bb.0:1239; RV32-REMAT-NEXT:    lui a0, 41240; RV32-REMAT-NEXT:    li a1, 11241; RV32-REMAT-NEXT:    ret1242;1243; RV64-REMAT-LABEL: imm_left_shifted_lui_2:1244; RV64-REMAT:       # %bb.0:1245; RV64-REMAT-NEXT:    lui a0, 2621451246; RV64-REMAT-NEXT:    slli a0, a0, 21247; RV64-REMAT-NEXT:    ret1248  ret i64 4294983680 ; 0x1_0000_40001249}1250 1251define i64 @imm_left_shifted_lui_3() nounwind {1252; RV32I-LABEL: imm_left_shifted_lui_3:1253; RV32I:       # %bb.0:1254; RV32I-NEXT:    lui a1, 11255; RV32I-NEXT:    addi a1, a1, 11256; RV32I-NEXT:    li a0, 01257; RV32I-NEXT:    ret1258;1259; RV32IXQCILI-LABEL: imm_left_shifted_lui_3:1260; RV32IXQCILI:       # %bb.0:1261; RV32IXQCILI-NEXT:    qc.li a1, 40971262; RV32IXQCILI-NEXT:    li a0, 01263; RV32IXQCILI-NEXT:    ret1264;1265; RV64I-LABEL: imm_left_shifted_lui_3:1266; RV64I:       # %bb.0:1267; RV64I-NEXT:    lui a0, 40971268; RV64I-NEXT:    slli a0, a0, 201269; RV64I-NEXT:    ret1270;1271; RV64IZBA-LABEL: imm_left_shifted_lui_3:1272; RV64IZBA:       # %bb.0:1273; RV64IZBA-NEXT:    lui a0, 40971274; RV64IZBA-NEXT:    slli a0, a0, 201275; RV64IZBA-NEXT:    ret1276;1277; RV64IZBB-LABEL: imm_left_shifted_lui_3:1278; RV64IZBB:       # %bb.0:1279; RV64IZBB-NEXT:    lui a0, 40971280; RV64IZBB-NEXT:    slli a0, a0, 201281; RV64IZBB-NEXT:    ret1282;1283; RV64IZBS-LABEL: imm_left_shifted_lui_3:1284; RV64IZBS:       # %bb.0:1285; RV64IZBS-NEXT:    lui a0, 40971286; RV64IZBS-NEXT:    slli a0, a0, 201287; RV64IZBS-NEXT:    ret1288;1289; RV64IXTHEADBB-LABEL: imm_left_shifted_lui_3:1290; RV64IXTHEADBB:       # %bb.0:1291; RV64IXTHEADBB-NEXT:    lui a0, 40971292; RV64IXTHEADBB-NEXT:    slli a0, a0, 201293; RV64IXTHEADBB-NEXT:    ret1294;1295; RV32-REMAT-LABEL: imm_left_shifted_lui_3:1296; RV32-REMAT:       # %bb.0:1297; RV32-REMAT-NEXT:    lui a1, 11298; RV32-REMAT-NEXT:    addi a1, a1, 11299; RV32-REMAT-NEXT:    li a0, 01300; RV32-REMAT-NEXT:    ret1301;1302; RV64-REMAT-LABEL: imm_left_shifted_lui_3:1303; RV64-REMAT:       # %bb.0:1304; RV64-REMAT-NEXT:    lui a0, 40971305; RV64-REMAT-NEXT:    slli a0, a0, 201306; RV64-REMAT-NEXT:    ret1307  ret i64 17596481011712 ; 0x1001_0000_00001308}1309 1310; Various cases where extraneous ADDIs can be inserted where a (right shifted)1311; LUI suffices, or where multiple ADDIs can be used instead of a single LUI.1312 1313define i64 @imm_right_shifted_lui_1() nounwind {1314; RV32I-LABEL: imm_right_shifted_lui_1:1315; RV32I:       # %bb.0:1316; RV32I-NEXT:    lui a0, 10485751317; RV32I-NEXT:    lui a1, 161318; RV32I-NEXT:    addi a0, a0, 11319; RV32I-NEXT:    addi a1, a1, -11320; RV32I-NEXT:    ret1321;1322; RV32IXQCILI-LABEL: imm_right_shifted_lui_1:1323; RV32IXQCILI:       # %bb.0:1324; RV32IXQCILI-NEXT:    qc.li a0, -40951325; RV32IXQCILI-NEXT:    qc.li a1, 655351326; RV32IXQCILI-NEXT:    ret1327;1328; RV64I-LABEL: imm_right_shifted_lui_1:1329; RV64I:       # %bb.0:1330; RV64I-NEXT:    lui a0, 9830561331; RV64I-NEXT:    srli a0, a0, 161332; RV64I-NEXT:    ret1333;1334; RV64IZBA-LABEL: imm_right_shifted_lui_1:1335; RV64IZBA:       # %bb.0:1336; RV64IZBA-NEXT:    lui a0, 9830561337; RV64IZBA-NEXT:    srli a0, a0, 161338; RV64IZBA-NEXT:    ret1339;1340; RV64IZBB-LABEL: imm_right_shifted_lui_1:1341; RV64IZBB:       # %bb.0:1342; RV64IZBB-NEXT:    lui a0, 9830561343; RV64IZBB-NEXT:    srli a0, a0, 161344; RV64IZBB-NEXT:    ret1345;1346; RV64IZBS-LABEL: imm_right_shifted_lui_1:1347; RV64IZBS:       # %bb.0:1348; RV64IZBS-NEXT:    lui a0, 9830561349; RV64IZBS-NEXT:    srli a0, a0, 161350; RV64IZBS-NEXT:    ret1351;1352; RV64IXTHEADBB-LABEL: imm_right_shifted_lui_1:1353; RV64IXTHEADBB:       # %bb.0:1354; RV64IXTHEADBB-NEXT:    lui a0, 9830561355; RV64IXTHEADBB-NEXT:    srli a0, a0, 161356; RV64IXTHEADBB-NEXT:    ret1357;1358; RV32-REMAT-LABEL: imm_right_shifted_lui_1:1359; RV32-REMAT:       # %bb.0:1360; RV32-REMAT-NEXT:    lui a0, 10485751361; RV32-REMAT-NEXT:    addi a0, a0, 11362; RV32-REMAT-NEXT:    lui a1, 161363; RV32-REMAT-NEXT:    addi a1, a1, -11364; RV32-REMAT-NEXT:    ret1365;1366; RV64-REMAT-LABEL: imm_right_shifted_lui_1:1367; RV64-REMAT:       # %bb.0:1368; RV64-REMAT-NEXT:    lui a0, 9830561369; RV64-REMAT-NEXT:    srli a0, a0, 161370; RV64-REMAT-NEXT:    ret1371  ret i64 281474976706561 ; 0xFFFF_FFFF_F0011372}1373 1374define i64 @imm_right_shifted_lui_2() nounwind {1375; RV32I-LABEL: imm_right_shifted_lui_2:1376; RV32I:       # %bb.0:1377; RV32I-NEXT:    lui a0, 10485751378; RV32I-NEXT:    addi a0, a0, 11379; RV32I-NEXT:    li a1, 2551380; RV32I-NEXT:    ret1381;1382; RV32IXQCILI-LABEL: imm_right_shifted_lui_2:1383; RV32IXQCILI:       # %bb.0:1384; RV32IXQCILI-NEXT:    qc.li a0, -40951385; RV32IXQCILI-NEXT:    li a1, 2551386; RV32IXQCILI-NEXT:    ret1387;1388; RV64I-LABEL: imm_right_shifted_lui_2:1389; RV64I:       # %bb.0:1390; RV64I-NEXT:    lui a0, 10444811391; RV64I-NEXT:    slli a0, a0, 121392; RV64I-NEXT:    srli a0, a0, 241393; RV64I-NEXT:    ret1394;1395; RV64IZBA-LABEL: imm_right_shifted_lui_2:1396; RV64IZBA:       # %bb.0:1397; RV64IZBA-NEXT:    lui a0, 10444811398; RV64IZBA-NEXT:    slli a0, a0, 121399; RV64IZBA-NEXT:    srli a0, a0, 241400; RV64IZBA-NEXT:    ret1401;1402; RV64IZBB-LABEL: imm_right_shifted_lui_2:1403; RV64IZBB:       # %bb.0:1404; RV64IZBB-NEXT:    lui a0, 10444811405; RV64IZBB-NEXT:    slli a0, a0, 121406; RV64IZBB-NEXT:    srli a0, a0, 241407; RV64IZBB-NEXT:    ret1408;1409; RV64IZBS-LABEL: imm_right_shifted_lui_2:1410; RV64IZBS:       # %bb.0:1411; RV64IZBS-NEXT:    lui a0, 10444811412; RV64IZBS-NEXT:    slli a0, a0, 121413; RV64IZBS-NEXT:    srli a0, a0, 241414; RV64IZBS-NEXT:    ret1415;1416; RV64IXTHEADBB-LABEL: imm_right_shifted_lui_2:1417; RV64IXTHEADBB:       # %bb.0:1418; RV64IXTHEADBB-NEXT:    lui a0, 10444811419; RV64IXTHEADBB-NEXT:    slli a0, a0, 121420; RV64IXTHEADBB-NEXT:    srli a0, a0, 241421; RV64IXTHEADBB-NEXT:    ret1422;1423; RV32-REMAT-LABEL: imm_right_shifted_lui_2:1424; RV32-REMAT:       # %bb.0:1425; RV32-REMAT-NEXT:    lui a0, 10485751426; RV32-REMAT-NEXT:    addi a0, a0, 11427; RV32-REMAT-NEXT:    li a1, 2551428; RV32-REMAT-NEXT:    ret1429;1430; RV64-REMAT-LABEL: imm_right_shifted_lui_2:1431; RV64-REMAT:       # %bb.0:1432; RV64-REMAT-NEXT:    lui a0, 10444811433; RV64-REMAT-NEXT:    slli a0, a0, 121434; RV64-REMAT-NEXT:    srli a0, a0, 241435; RV64-REMAT-NEXT:    ret1436  ret i64 1099511623681 ; 0xFF_FFFF_F0011437}1438 1439; We can materialize the upper bits with a single (shifted) LUI, but that option1440; can be missed due to the lower bits, which aren't just 1s or just 0s.1441 1442define i64 @imm_decoupled_lui_addi() nounwind {1443; RV32I-LABEL: imm_decoupled_lui_addi:1444; RV32I:       # %bb.0:1445; RV32I-NEXT:    li a0, -31446; RV32I-NEXT:    lui a1, 11447; RV32I-NEXT:    ret1448;1449; RV32IXQCILI-LABEL: imm_decoupled_lui_addi:1450; RV32IXQCILI:       # %bb.0:1451; RV32IXQCILI-NEXT:    li a0, -31452; RV32IXQCILI-NEXT:    lui a1, 11453; RV32IXQCILI-NEXT:    ret1454;1455; RV64I-LABEL: imm_decoupled_lui_addi:1456; RV64I:       # %bb.0:1457; RV64I-NEXT:    lui a0, 40971458; RV64I-NEXT:    slli a0, a0, 201459; RV64I-NEXT:    addi a0, a0, -31460; RV64I-NEXT:    ret1461;1462; RV64IZBA-LABEL: imm_decoupled_lui_addi:1463; RV64IZBA:       # %bb.0:1464; RV64IZBA-NEXT:    lui a0, 40971465; RV64IZBA-NEXT:    slli a0, a0, 201466; RV64IZBA-NEXT:    addi a0, a0, -31467; RV64IZBA-NEXT:    ret1468;1469; RV64IZBB-LABEL: imm_decoupled_lui_addi:1470; RV64IZBB:       # %bb.0:1471; RV64IZBB-NEXT:    lui a0, 40971472; RV64IZBB-NEXT:    slli a0, a0, 201473; RV64IZBB-NEXT:    addi a0, a0, -31474; RV64IZBB-NEXT:    ret1475;1476; RV64IZBS-LABEL: imm_decoupled_lui_addi:1477; RV64IZBS:       # %bb.0:1478; RV64IZBS-NEXT:    lui a0, 40971479; RV64IZBS-NEXT:    slli a0, a0, 201480; RV64IZBS-NEXT:    addi a0, a0, -31481; RV64IZBS-NEXT:    ret1482;1483; RV64IXTHEADBB-LABEL: imm_decoupled_lui_addi:1484; RV64IXTHEADBB:       # %bb.0:1485; RV64IXTHEADBB-NEXT:    lui a0, 40971486; RV64IXTHEADBB-NEXT:    slli a0, a0, 201487; RV64IXTHEADBB-NEXT:    addi a0, a0, -31488; RV64IXTHEADBB-NEXT:    ret1489;1490; RV32-REMAT-LABEL: imm_decoupled_lui_addi:1491; RV32-REMAT:       # %bb.0:1492; RV32-REMAT-NEXT:    li a0, -31493; RV32-REMAT-NEXT:    lui a1, 11494; RV32-REMAT-NEXT:    ret1495;1496; RV64-REMAT-LABEL: imm_decoupled_lui_addi:1497; RV64-REMAT:       # %bb.0:1498; RV64-REMAT-NEXT:    lui a0, 40971499; RV64-REMAT-NEXT:    slli a0, a0, 201500; RV64-REMAT-NEXT:    addi a0, a0, -31501; RV64-REMAT-NEXT:    ret1502  ret i64 17596481011709 ; 0x1000_FFFF_FFFD1503}1504 1505; This constant can be materialized for RV64 with LUI+SRLI+XORI.1506 1507define i64 @imm_end_xori_1() nounwind {1508; RV32I-LABEL: imm_end_xori_1:1509; RV32I:       # %bb.0:1510; RV32I-NEXT:    lui a0, 81921511; RV32I-NEXT:    addi a0, a0, -11512; RV32I-NEXT:    lui a1, 9175041513; RV32I-NEXT:    ret1514;1515; RV32IXQCILI-LABEL: imm_end_xori_1:1516; RV32IXQCILI:       # %bb.0:1517; RV32IXQCILI-NEXT:    qc.e.li a0, 335544311518; RV32IXQCILI-NEXT:    lui a1, 9175041519; RV32IXQCILI-NEXT:    ret1520;1521; RV64I-LABEL: imm_end_xori_1:1522; RV64I:       # %bb.0:1523; RV64I-NEXT:    lui a0, 9830401524; RV64I-NEXT:    srli a0, a0, 31525; RV64I-NEXT:    not a0, a01526; RV64I-NEXT:    ret1527;1528; RV64IZBA-LABEL: imm_end_xori_1:1529; RV64IZBA:       # %bb.0:1530; RV64IZBA-NEXT:    lui a0, 9830401531; RV64IZBA-NEXT:    srli a0, a0, 31532; RV64IZBA-NEXT:    not a0, a01533; RV64IZBA-NEXT:    ret1534;1535; RV64IZBB-LABEL: imm_end_xori_1:1536; RV64IZBB:       # %bb.0:1537; RV64IZBB-NEXT:    lui a0, 9830401538; RV64IZBB-NEXT:    srli a0, a0, 31539; RV64IZBB-NEXT:    not a0, a01540; RV64IZBB-NEXT:    ret1541;1542; RV64IZBS-LABEL: imm_end_xori_1:1543; RV64IZBS:       # %bb.0:1544; RV64IZBS-NEXT:    lui a0, 9830401545; RV64IZBS-NEXT:    srli a0, a0, 31546; RV64IZBS-NEXT:    not a0, a01547; RV64IZBS-NEXT:    ret1548;1549; RV64IXTHEADBB-LABEL: imm_end_xori_1:1550; RV64IXTHEADBB:       # %bb.0:1551; RV64IXTHEADBB-NEXT:    lui a0, 9830401552; RV64IXTHEADBB-NEXT:    srli a0, a0, 31553; RV64IXTHEADBB-NEXT:    not a0, a01554; RV64IXTHEADBB-NEXT:    ret1555;1556; RV32-REMAT-LABEL: imm_end_xori_1:1557; RV32-REMAT:       # %bb.0:1558; RV32-REMAT-NEXT:    lui a0, 81921559; RV32-REMAT-NEXT:    addi a0, a0, -11560; RV32-REMAT-NEXT:    lui a1, 9175041561; RV32-REMAT-NEXT:    ret1562;1563; RV64-REMAT-LABEL: imm_end_xori_1:1564; RV64-REMAT:       # %bb.0:1565; RV64-REMAT-NEXT:    lui a0, 9830401566; RV64-REMAT-NEXT:    srli a0, a0, 31567; RV64-REMAT-NEXT:    not a0, a01568; RV64-REMAT-NEXT:    ret1569  ret i64 -2305843009180139521 ; 0xE000_0000_01FF_FFFF1570}1571 1572; This constant can be materialized for RV64 with ADDI+SLLI+ADDI+ADDI.1573 1574define i64 @imm_end_2addi_1() nounwind {1575; RV32I-LABEL: imm_end_2addi_1:1576; RV32I:       # %bb.0:1577; RV32I-NEXT:    lui a0, 10485751578; RV32I-NEXT:    lui a1, 10485121579; RV32I-NEXT:    addi a0, a0, 20471580; RV32I-NEXT:    addi a1, a1, 1271581; RV32I-NEXT:    ret1582;1583; RV32IXQCILI-LABEL: imm_end_2addi_1:1584; RV32IXQCILI:       # %bb.0:1585; RV32IXQCILI-NEXT:    qc.li a0, -20491586; RV32IXQCILI-NEXT:    qc.li a1, -2620171587; RV32IXQCILI-NEXT:    ret1588;1589; RV64I-LABEL: imm_end_2addi_1:1590; RV64I:       # %bb.0:1591; RV64I-NEXT:    li a0, -20471592; RV64I-NEXT:    slli a0, a0, 391593; RV64I-NEXT:    addi a0, a0, -20481594; RV64I-NEXT:    addi a0, a0, -11595; RV64I-NEXT:    ret1596;1597; RV64IZBA-LABEL: imm_end_2addi_1:1598; RV64IZBA:       # %bb.0:1599; RV64IZBA-NEXT:    li a0, -20471600; RV64IZBA-NEXT:    slli a0, a0, 391601; RV64IZBA-NEXT:    addi a0, a0, -20481602; RV64IZBA-NEXT:    addi a0, a0, -11603; RV64IZBA-NEXT:    ret1604;1605; RV64IZBB-LABEL: imm_end_2addi_1:1606; RV64IZBB:       # %bb.0:1607; RV64IZBB-NEXT:    li a0, -20471608; RV64IZBB-NEXT:    slli a0, a0, 391609; RV64IZBB-NEXT:    addi a0, a0, -20481610; RV64IZBB-NEXT:    addi a0, a0, -11611; RV64IZBB-NEXT:    ret1612;1613; RV64IZBS-LABEL: imm_end_2addi_1:1614; RV64IZBS:       # %bb.0:1615; RV64IZBS-NEXT:    li a0, -20471616; RV64IZBS-NEXT:    slli a0, a0, 391617; RV64IZBS-NEXT:    addi a0, a0, -20481618; RV64IZBS-NEXT:    addi a0, a0, -11619; RV64IZBS-NEXT:    ret1620;1621; RV64IXTHEADBB-LABEL: imm_end_2addi_1:1622; RV64IXTHEADBB:       # %bb.0:1623; RV64IXTHEADBB-NEXT:    li a0, -20471624; RV64IXTHEADBB-NEXT:    slli a0, a0, 391625; RV64IXTHEADBB-NEXT:    addi a0, a0, -20481626; RV64IXTHEADBB-NEXT:    addi a0, a0, -11627; RV64IXTHEADBB-NEXT:    ret1628;1629; RV32-REMAT-LABEL: imm_end_2addi_1:1630; RV32-REMAT:       # %bb.0:1631; RV32-REMAT-NEXT:    lui a0, 10485751632; RV32-REMAT-NEXT:    addi a0, a0, 20471633; RV32-REMAT-NEXT:    lui a1, 10485121634; RV32-REMAT-NEXT:    addi a1, a1, 1271635; RV32-REMAT-NEXT:    ret1636;1637; RV64-REMAT-LABEL: imm_end_2addi_1:1638; RV64-REMAT:       # %bb.0:1639; RV64-REMAT-NEXT:    li a0, -20471640; RV64-REMAT-NEXT:    slli a0, a0, 391641; RV64-REMAT-NEXT:    addi a0, a0, -20481642; RV64-REMAT-NEXT:    addi a0, a0, -11643; RV64-REMAT-NEXT:    ret1644  ret i64 -1125350151030785 ; 0xFFFC_007F_FFFF_F7FF1645}1646 1647; This constant can be more efficiently materialized for RV64 if we use two1648; registers instead of one.1649 1650define i64 @imm_2reg_1() nounwind {1651; RV32I-LABEL: imm_2reg_1:1652; RV32I:       # %bb.0:1653; RV32I-NEXT:    lui a0, 745651654; RV32I-NEXT:    addi a0, a0, 16561655; RV32I-NEXT:    lui a1, 9830401656; RV32I-NEXT:    ret1657;1658; RV32IXQCILI-LABEL: imm_2reg_1:1659; RV32IXQCILI:       # %bb.0:1660; RV32IXQCILI-NEXT:    qc.e.li a0, 3054198961661; RV32IXQCILI-NEXT:    lui a1, 9830401662; RV32IXQCILI-NEXT:    ret1663;1664; RV64I-LABEL: imm_2reg_1:1665; RV64I:       # %bb.0:1666; RV64I-NEXT:    lui a0, 745651667; RV64I-NEXT:    addi a0, a0, 16561668; RV64I-NEXT:    slli a1, a0, 571669; RV64I-NEXT:    add a0, a0, a11670; RV64I-NEXT:    ret1671;1672; RV64IZBA-LABEL: imm_2reg_1:1673; RV64IZBA:       # %bb.0:1674; RV64IZBA-NEXT:    lui a0, 745651675; RV64IZBA-NEXT:    addi a0, a0, 16561676; RV64IZBA-NEXT:    slli a1, a0, 571677; RV64IZBA-NEXT:    add a0, a0, a11678; RV64IZBA-NEXT:    ret1679;1680; RV64IZBB-LABEL: imm_2reg_1:1681; RV64IZBB:       # %bb.0:1682; RV64IZBB-NEXT:    lui a0, 745651683; RV64IZBB-NEXT:    addi a0, a0, 16561684; RV64IZBB-NEXT:    slli a1, a0, 571685; RV64IZBB-NEXT:    add a0, a0, a11686; RV64IZBB-NEXT:    ret1687;1688; RV64IZBS-LABEL: imm_2reg_1:1689; RV64IZBS:       # %bb.0:1690; RV64IZBS-NEXT:    lui a0, 745651691; RV64IZBS-NEXT:    addi a0, a0, 16561692; RV64IZBS-NEXT:    slli a1, a0, 571693; RV64IZBS-NEXT:    add a0, a0, a11694; RV64IZBS-NEXT:    ret1695;1696; RV64IXTHEADBB-LABEL: imm_2reg_1:1697; RV64IXTHEADBB:       # %bb.0:1698; RV64IXTHEADBB-NEXT:    lui a0, 745651699; RV64IXTHEADBB-NEXT:    addi a0, a0, 16561700; RV64IXTHEADBB-NEXT:    slli a1, a0, 571701; RV64IXTHEADBB-NEXT:    add a0, a0, a11702; RV64IXTHEADBB-NEXT:    ret1703;1704; RV32-REMAT-LABEL: imm_2reg_1:1705; RV32-REMAT:       # %bb.0:1706; RV32-REMAT-NEXT:    lui a0, 745651707; RV32-REMAT-NEXT:    addi a0, a0, 16561708; RV32-REMAT-NEXT:    lui a1, 9830401709; RV32-REMAT-NEXT:    ret1710;1711; RV64-REMAT-LABEL: imm_2reg_1:1712; RV64-REMAT:       # %bb.0:1713; RV64-REMAT-NEXT:    lui a0, 745651714; RV64-REMAT-NEXT:    addi a0, a0, 16561715; RV64-REMAT-NEXT:    slli a1, a0, 571716; RV64-REMAT-NEXT:    add a0, a0, a11717; RV64-REMAT-NEXT:    ret1718  ret i64 -1152921504301427080 ; 0xF000_0000_1234_56781719}1720 1721define void @imm_store_i8_neg1(ptr %p) nounwind {1722; RV32I-LABEL: imm_store_i8_neg1:1723; RV32I:       # %bb.0:1724; RV32I-NEXT:    li a1, -11725; RV32I-NEXT:    sb a1, 0(a0)1726; RV32I-NEXT:    ret1727;1728; RV32IXQCILI-LABEL: imm_store_i8_neg1:1729; RV32IXQCILI:       # %bb.0:1730; RV32IXQCILI-NEXT:    li a1, -11731; RV32IXQCILI-NEXT:    sb a1, 0(a0)1732; RV32IXQCILI-NEXT:    ret1733;1734; RV64I-LABEL: imm_store_i8_neg1:1735; RV64I:       # %bb.0:1736; RV64I-NEXT:    li a1, -11737; RV64I-NEXT:    sb a1, 0(a0)1738; RV64I-NEXT:    ret1739;1740; RV64IZBA-LABEL: imm_store_i8_neg1:1741; RV64IZBA:       # %bb.0:1742; RV64IZBA-NEXT:    li a1, -11743; RV64IZBA-NEXT:    sb a1, 0(a0)1744; RV64IZBA-NEXT:    ret1745;1746; RV64IZBB-LABEL: imm_store_i8_neg1:1747; RV64IZBB:       # %bb.0:1748; RV64IZBB-NEXT:    li a1, -11749; RV64IZBB-NEXT:    sb a1, 0(a0)1750; RV64IZBB-NEXT:    ret1751;1752; RV64IZBS-LABEL: imm_store_i8_neg1:1753; RV64IZBS:       # %bb.0:1754; RV64IZBS-NEXT:    li a1, -11755; RV64IZBS-NEXT:    sb a1, 0(a0)1756; RV64IZBS-NEXT:    ret1757;1758; RV64IXTHEADBB-LABEL: imm_store_i8_neg1:1759; RV64IXTHEADBB:       # %bb.0:1760; RV64IXTHEADBB-NEXT:    li a1, -11761; RV64IXTHEADBB-NEXT:    sb a1, 0(a0)1762; RV64IXTHEADBB-NEXT:    ret1763;1764; RV32-REMAT-LABEL: imm_store_i8_neg1:1765; RV32-REMAT:       # %bb.0:1766; RV32-REMAT-NEXT:    li a1, -11767; RV32-REMAT-NEXT:    sb a1, 0(a0)1768; RV32-REMAT-NEXT:    ret1769;1770; RV64-REMAT-LABEL: imm_store_i8_neg1:1771; RV64-REMAT:       # %bb.0:1772; RV64-REMAT-NEXT:    li a1, -11773; RV64-REMAT-NEXT:    sb a1, 0(a0)1774; RV64-REMAT-NEXT:    ret1775  store i8 -1, ptr %p1776  ret void1777}1778 1779define void @imm_store_i16_neg1(ptr %p) nounwind {1780; RV32I-LABEL: imm_store_i16_neg1:1781; RV32I:       # %bb.0:1782; RV32I-NEXT:    li a1, -11783; RV32I-NEXT:    sh a1, 0(a0)1784; RV32I-NEXT:    ret1785;1786; RV32IXQCILI-LABEL: imm_store_i16_neg1:1787; RV32IXQCILI:       # %bb.0:1788; RV32IXQCILI-NEXT:    li a1, -11789; RV32IXQCILI-NEXT:    sh a1, 0(a0)1790; RV32IXQCILI-NEXT:    ret1791;1792; RV64I-LABEL: imm_store_i16_neg1:1793; RV64I:       # %bb.0:1794; RV64I-NEXT:    li a1, -11795; RV64I-NEXT:    sh a1, 0(a0)1796; RV64I-NEXT:    ret1797;1798; RV64IZBA-LABEL: imm_store_i16_neg1:1799; RV64IZBA:       # %bb.0:1800; RV64IZBA-NEXT:    li a1, -11801; RV64IZBA-NEXT:    sh a1, 0(a0)1802; RV64IZBA-NEXT:    ret1803;1804; RV64IZBB-LABEL: imm_store_i16_neg1:1805; RV64IZBB:       # %bb.0:1806; RV64IZBB-NEXT:    li a1, -11807; RV64IZBB-NEXT:    sh a1, 0(a0)1808; RV64IZBB-NEXT:    ret1809;1810; RV64IZBS-LABEL: imm_store_i16_neg1:1811; RV64IZBS:       # %bb.0:1812; RV64IZBS-NEXT:    li a1, -11813; RV64IZBS-NEXT:    sh a1, 0(a0)1814; RV64IZBS-NEXT:    ret1815;1816; RV64IXTHEADBB-LABEL: imm_store_i16_neg1:1817; RV64IXTHEADBB:       # %bb.0:1818; RV64IXTHEADBB-NEXT:    li a1, -11819; RV64IXTHEADBB-NEXT:    sh a1, 0(a0)1820; RV64IXTHEADBB-NEXT:    ret1821;1822; RV32-REMAT-LABEL: imm_store_i16_neg1:1823; RV32-REMAT:       # %bb.0:1824; RV32-REMAT-NEXT:    li a1, -11825; RV32-REMAT-NEXT:    sh a1, 0(a0)1826; RV32-REMAT-NEXT:    ret1827;1828; RV64-REMAT-LABEL: imm_store_i16_neg1:1829; RV64-REMAT:       # %bb.0:1830; RV64-REMAT-NEXT:    li a1, -11831; RV64-REMAT-NEXT:    sh a1, 0(a0)1832; RV64-REMAT-NEXT:    ret1833  store i16 -1, ptr %p1834  ret void1835}1836 1837define void @imm_store_i32_neg1(ptr %p) nounwind {1838; RV32I-LABEL: imm_store_i32_neg1:1839; RV32I:       # %bb.0:1840; RV32I-NEXT:    li a1, -11841; RV32I-NEXT:    sw a1, 0(a0)1842; RV32I-NEXT:    ret1843;1844; RV32IXQCILI-LABEL: imm_store_i32_neg1:1845; RV32IXQCILI:       # %bb.0:1846; RV32IXQCILI-NEXT:    li a1, -11847; RV32IXQCILI-NEXT:    sw a1, 0(a0)1848; RV32IXQCILI-NEXT:    ret1849;1850; RV64I-LABEL: imm_store_i32_neg1:1851; RV64I:       # %bb.0:1852; RV64I-NEXT:    li a1, -11853; RV64I-NEXT:    sw a1, 0(a0)1854; RV64I-NEXT:    ret1855;1856; RV64IZBA-LABEL: imm_store_i32_neg1:1857; RV64IZBA:       # %bb.0:1858; RV64IZBA-NEXT:    li a1, -11859; RV64IZBA-NEXT:    sw a1, 0(a0)1860; RV64IZBA-NEXT:    ret1861;1862; RV64IZBB-LABEL: imm_store_i32_neg1:1863; RV64IZBB:       # %bb.0:1864; RV64IZBB-NEXT:    li a1, -11865; RV64IZBB-NEXT:    sw a1, 0(a0)1866; RV64IZBB-NEXT:    ret1867;1868; RV64IZBS-LABEL: imm_store_i32_neg1:1869; RV64IZBS:       # %bb.0:1870; RV64IZBS-NEXT:    li a1, -11871; RV64IZBS-NEXT:    sw a1, 0(a0)1872; RV64IZBS-NEXT:    ret1873;1874; RV64IXTHEADBB-LABEL: imm_store_i32_neg1:1875; RV64IXTHEADBB:       # %bb.0:1876; RV64IXTHEADBB-NEXT:    li a1, -11877; RV64IXTHEADBB-NEXT:    sw a1, 0(a0)1878; RV64IXTHEADBB-NEXT:    ret1879;1880; RV32-REMAT-LABEL: imm_store_i32_neg1:1881; RV32-REMAT:       # %bb.0:1882; RV32-REMAT-NEXT:    li a1, -11883; RV32-REMAT-NEXT:    sw a1, 0(a0)1884; RV32-REMAT-NEXT:    ret1885;1886; RV64-REMAT-LABEL: imm_store_i32_neg1:1887; RV64-REMAT:       # %bb.0:1888; RV64-REMAT-NEXT:    li a1, -11889; RV64-REMAT-NEXT:    sw a1, 0(a0)1890; RV64-REMAT-NEXT:    ret1891  store i32 -1, ptr %p1892  ret void1893}1894 1895define i64 @imm_5372288229() {1896; RV32I-LABEL: imm_5372288229:1897; RV32I:       # %bb.0:1898; RV32I-NEXT:    lui a0, 2630181899; RV32I-NEXT:    addi a0, a0, -7951900; RV32I-NEXT:    li a1, 11901; RV32I-NEXT:    ret1902;1903; RV32IXQCILI-LABEL: imm_5372288229:1904; RV32IXQCILI:       # %bb.0:1905; RV32IXQCILI-NEXT:    qc.e.li a0, 10773209331906; RV32IXQCILI-NEXT:    li a1, 11907; RV32IXQCILI-NEXT:    ret1908;1909; RV64I-LABEL: imm_5372288229:1910; RV64I:       # %bb.0:1911; RV64I-NEXT:    lui a0, 1601912; RV64I-NEXT:    addi a0, a0, 4371913; RV64I-NEXT:    slli a0, a0, 131914; RV64I-NEXT:    addi a0, a0, -7951915; RV64I-NEXT:    ret1916;1917; RV64IZBA-LABEL: imm_5372288229:1918; RV64IZBA:       # %bb.0:1919; RV64IZBA-NEXT:    lui a0, 6557971920; RV64IZBA-NEXT:    slli.uw a0, a0, 11921; RV64IZBA-NEXT:    addi a0, a0, -7951922; RV64IZBA-NEXT:    ret1923;1924; RV64IZBB-LABEL: imm_5372288229:1925; RV64IZBB:       # %bb.0:1926; RV64IZBB-NEXT:    lui a0, 1601927; RV64IZBB-NEXT:    addi a0, a0, 4371928; RV64IZBB-NEXT:    slli a0, a0, 131929; RV64IZBB-NEXT:    addi a0, a0, -7951930; RV64IZBB-NEXT:    ret1931;1932; RV64IZBS-LABEL: imm_5372288229:1933; RV64IZBS:       # %bb.0:1934; RV64IZBS-NEXT:    lui a0, 2630181935; RV64IZBS-NEXT:    addi a0, a0, -7951936; RV64IZBS-NEXT:    bseti a0, a0, 321937; RV64IZBS-NEXT:    ret1938;1939; RV64IXTHEADBB-LABEL: imm_5372288229:1940; RV64IXTHEADBB:       # %bb.0:1941; RV64IXTHEADBB-NEXT:    lui a0, 1601942; RV64IXTHEADBB-NEXT:    addi a0, a0, 4371943; RV64IXTHEADBB-NEXT:    slli a0, a0, 131944; RV64IXTHEADBB-NEXT:    addi a0, a0, -7951945; RV64IXTHEADBB-NEXT:    ret1946;1947; RV32-REMAT-LABEL: imm_5372288229:1948; RV32-REMAT:       # %bb.0:1949; RV32-REMAT-NEXT:    lui a0, 2630181950; RV32-REMAT-NEXT:    addi a0, a0, -7951951; RV32-REMAT-NEXT:    li a1, 11952; RV32-REMAT-NEXT:    ret1953;1954; RV64-REMAT-LABEL: imm_5372288229:1955; RV64-REMAT:       # %bb.0:1956; RV64-REMAT-NEXT:    lui a0, 1601957; RV64-REMAT-NEXT:    addi a0, a0, 4371958; RV64-REMAT-NEXT:    slli a0, a0, 131959; RV64-REMAT-NEXT:    addi a0, a0, -7951960; RV64-REMAT-NEXT:    ret1961  ret i64 53722882291962}1963 1964define i64 @imm_neg_5372288229() {1965; RV32I-LABEL: imm_neg_5372288229:1966; RV32I:       # %bb.0:1967; RV32I-NEXT:    lui a0, 7855581968; RV32I-NEXT:    addi a0, a0, 7951969; RV32I-NEXT:    li a1, -21970; RV32I-NEXT:    ret1971;1972; RV32IXQCILI-LABEL: imm_neg_5372288229:1973; RV32IXQCILI:       # %bb.0:1974; RV32IXQCILI-NEXT:    qc.e.li a0, -10773209331975; RV32IXQCILI-NEXT:    li a1, -21976; RV32IXQCILI-NEXT:    ret1977;1978; RV64I-LABEL: imm_neg_5372288229:1979; RV64I:       # %bb.0:1980; RV64I-NEXT:    lui a0, 10484161981; RV64I-NEXT:    addi a0, a0, -4371982; RV64I-NEXT:    slli a0, a0, 131983; RV64I-NEXT:    addi a0, a0, 7951984; RV64I-NEXT:    ret1985;1986; RV64IZBA-LABEL: imm_neg_5372288229:1987; RV64IZBA:       # %bb.0:1988; RV64IZBA-NEXT:    lui a0, 6113781989; RV64IZBA-NEXT:    addi a0, a0, 2651990; RV64IZBA-NEXT:    sh1add a0, a0, a01991; RV64IZBA-NEXT:    ret1992;1993; RV64IZBB-LABEL: imm_neg_5372288229:1994; RV64IZBB:       # %bb.0:1995; RV64IZBB-NEXT:    lui a0, 10484161996; RV64IZBB-NEXT:    addi a0, a0, -4371997; RV64IZBB-NEXT:    slli a0, a0, 131998; RV64IZBB-NEXT:    addi a0, a0, 7951999; RV64IZBB-NEXT:    ret2000;2001; RV64IZBS-LABEL: imm_neg_5372288229:2002; RV64IZBS:       # %bb.0:2003; RV64IZBS-NEXT:    lui a0, 7855582004; RV64IZBS-NEXT:    addi a0, a0, 7952005; RV64IZBS-NEXT:    bclri a0, a0, 322006; RV64IZBS-NEXT:    ret2007;2008; RV64IXTHEADBB-LABEL: imm_neg_5372288229:2009; RV64IXTHEADBB:       # %bb.0:2010; RV64IXTHEADBB-NEXT:    lui a0, 10484162011; RV64IXTHEADBB-NEXT:    addi a0, a0, -4372012; RV64IXTHEADBB-NEXT:    slli a0, a0, 132013; RV64IXTHEADBB-NEXT:    addi a0, a0, 7952014; RV64IXTHEADBB-NEXT:    ret2015;2016; RV32-REMAT-LABEL: imm_neg_5372288229:2017; RV32-REMAT:       # %bb.0:2018; RV32-REMAT-NEXT:    lui a0, 7855582019; RV32-REMAT-NEXT:    addi a0, a0, 7952020; RV32-REMAT-NEXT:    li a1, -22021; RV32-REMAT-NEXT:    ret2022;2023; RV64-REMAT-LABEL: imm_neg_5372288229:2024; RV64-REMAT:       # %bb.0:2025; RV64-REMAT-NEXT:    lui a0, 10484162026; RV64-REMAT-NEXT:    addi a0, a0, -4372027; RV64-REMAT-NEXT:    slli a0, a0, 132028; RV64-REMAT-NEXT:    addi a0, a0, 7952029; RV64-REMAT-NEXT:    ret2030  ret i64 -53722882292031}2032 2033define i64 @imm_8953813715() {2034; RV32I-LABEL: imm_8953813715:2035; RV32I:       # %bb.0:2036; RV32I-NEXT:    lui a0, 888382037; RV32I-NEXT:    addi a0, a0, -13252038; RV32I-NEXT:    li a1, 22039; RV32I-NEXT:    ret2040;2041; RV32IXQCILI-LABEL: imm_8953813715:2042; RV32IXQCILI:       # %bb.0:2043; RV32IXQCILI-NEXT:    qc.e.li a0, 3638791232044; RV32IXQCILI-NEXT:    li a1, 22045; RV32IXQCILI-NEXT:    ret2046;2047; RV64I-LABEL: imm_8953813715:2048; RV64I:       # %bb.0:2049; RV64I-NEXT:    lui a0, 2672050; RV64I-NEXT:    addi a0, a0, -6372051; RV64I-NEXT:    slli a0, a0, 132052; RV64I-NEXT:    addi a0, a0, -13252053; RV64I-NEXT:    ret2054;2055; RV64IZBA-LABEL: imm_8953813715:2056; RV64IZBA:       # %bb.0:2057; RV64IZBA-NEXT:    lui a0, 4371982058; RV64IZBA-NEXT:    addi a0, a0, -2652059; RV64IZBA-NEXT:    sh2add a0, a0, a02060; RV64IZBA-NEXT:    ret2061;2062; RV64IZBB-LABEL: imm_8953813715:2063; RV64IZBB:       # %bb.0:2064; RV64IZBB-NEXT:    lui a0, 2672065; RV64IZBB-NEXT:    addi a0, a0, -6372066; RV64IZBB-NEXT:    slli a0, a0, 132067; RV64IZBB-NEXT:    addi a0, a0, -13252068; RV64IZBB-NEXT:    ret2069;2070; RV64IZBS-LABEL: imm_8953813715:2071; RV64IZBS:       # %bb.0:2072; RV64IZBS-NEXT:    lui a0, 888382073; RV64IZBS-NEXT:    addi a0, a0, -13252074; RV64IZBS-NEXT:    bseti a0, a0, 332075; RV64IZBS-NEXT:    ret2076;2077; RV64IXTHEADBB-LABEL: imm_8953813715:2078; RV64IXTHEADBB:       # %bb.0:2079; RV64IXTHEADBB-NEXT:    lui a0, 2672080; RV64IXTHEADBB-NEXT:    addi a0, a0, -6372081; RV64IXTHEADBB-NEXT:    slli a0, a0, 132082; RV64IXTHEADBB-NEXT:    addi a0, a0, -13252083; RV64IXTHEADBB-NEXT:    ret2084;2085; RV32-REMAT-LABEL: imm_8953813715:2086; RV32-REMAT:       # %bb.0:2087; RV32-REMAT-NEXT:    lui a0, 888382088; RV32-REMAT-NEXT:    addi a0, a0, -13252089; RV32-REMAT-NEXT:    li a1, 22090; RV32-REMAT-NEXT:    ret2091;2092; RV64-REMAT-LABEL: imm_8953813715:2093; RV64-REMAT:       # %bb.0:2094; RV64-REMAT-NEXT:    lui a0, 2672095; RV64-REMAT-NEXT:    addi a0, a0, -6372096; RV64-REMAT-NEXT:    slli a0, a0, 132097; RV64-REMAT-NEXT:    addi a0, a0, -13252098; RV64-REMAT-NEXT:    ret2099  ret i64 89538137152100}2101 2102define i64 @imm_neg_8953813715() {2103; RV32I-LABEL: imm_neg_8953813715:2104; RV32I:       # %bb.0:2105; RV32I-NEXT:    lui a0, 9597382106; RV32I-NEXT:    addi a0, a0, 13252107; RV32I-NEXT:    li a1, -32108; RV32I-NEXT:    ret2109;2110; RV32IXQCILI-LABEL: imm_neg_8953813715:2111; RV32IXQCILI:       # %bb.0:2112; RV32IXQCILI-NEXT:    qc.e.li a0, -3638791232113; RV32IXQCILI-NEXT:    li a1, -32114; RV32IXQCILI-NEXT:    ret2115;2116; RV64I-LABEL: imm_neg_8953813715:2117; RV64I:       # %bb.0:2118; RV64I-NEXT:    lui a0, 10483092119; RV64I-NEXT:    addi a0, a0, 6372120; RV64I-NEXT:    slli a0, a0, 132121; RV64I-NEXT:    addi a0, a0, 13252122; RV64I-NEXT:    ret2123;2124; RV64IZBA-LABEL: imm_neg_8953813715:2125; RV64IZBA:       # %bb.0:2126; RV64IZBA-NEXT:    lui a0, 6113782127; RV64IZBA-NEXT:    addi a0, a0, 2652128; RV64IZBA-NEXT:    sh2add a0, a0, a02129; RV64IZBA-NEXT:    ret2130;2131; RV64IZBB-LABEL: imm_neg_8953813715:2132; RV64IZBB:       # %bb.0:2133; RV64IZBB-NEXT:    lui a0, 10483092134; RV64IZBB-NEXT:    addi a0, a0, 6372135; RV64IZBB-NEXT:    slli a0, a0, 132136; RV64IZBB-NEXT:    addi a0, a0, 13252137; RV64IZBB-NEXT:    ret2138;2139; RV64IZBS-LABEL: imm_neg_8953813715:2140; RV64IZBS:       # %bb.0:2141; RV64IZBS-NEXT:    lui a0, 9597382142; RV64IZBS-NEXT:    addi a0, a0, 13252143; RV64IZBS-NEXT:    bclri a0, a0, 332144; RV64IZBS-NEXT:    ret2145;2146; RV64IXTHEADBB-LABEL: imm_neg_8953813715:2147; RV64IXTHEADBB:       # %bb.0:2148; RV64IXTHEADBB-NEXT:    lui a0, 10483092149; RV64IXTHEADBB-NEXT:    addi a0, a0, 6372150; RV64IXTHEADBB-NEXT:    slli a0, a0, 132151; RV64IXTHEADBB-NEXT:    addi a0, a0, 13252152; RV64IXTHEADBB-NEXT:    ret2153;2154; RV32-REMAT-LABEL: imm_neg_8953813715:2155; RV32-REMAT:       # %bb.0:2156; RV32-REMAT-NEXT:    lui a0, 9597382157; RV32-REMAT-NEXT:    addi a0, a0, 13252158; RV32-REMAT-NEXT:    li a1, -32159; RV32-REMAT-NEXT:    ret2160;2161; RV64-REMAT-LABEL: imm_neg_8953813715:2162; RV64-REMAT:       # %bb.0:2163; RV64-REMAT-NEXT:    lui a0, 10483092164; RV64-REMAT-NEXT:    addi a0, a0, 6372165; RV64-REMAT-NEXT:    slli a0, a0, 132166; RV64-REMAT-NEXT:    addi a0, a0, 13252167; RV64-REMAT-NEXT:    ret2168  ret i64 -89538137152169}2170 2171define i64 @imm_16116864687() {2172; RV32I-LABEL: imm_16116864687:2173; RV32I:       # %bb.0:2174; RV32I-NEXT:    lui a0, 7890532175; RV32I-NEXT:    addi a0, a0, 17112176; RV32I-NEXT:    li a1, 32177; RV32I-NEXT:    ret2178;2179; RV32IXQCILI-LABEL: imm_16116864687:2180; RV32IXQCILI:       # %bb.0:2181; RV32IXQCILI-NEXT:    qc.e.li a0, -10630044972182; RV32IXQCILI-NEXT:    li a1, 32183; RV32IXQCILI-NEXT:    ret2184;2185; RV64I-LABEL: imm_16116864687:2186; RV64I:       # %bb.0:2187; RV64I-NEXT:    lui a0, 9612188; RV64I-NEXT:    addi a0, a0, -14752189; RV64I-NEXT:    slli a0, a0, 122190; RV64I-NEXT:    addi a0, a0, 17112191; RV64I-NEXT:    ret2192;2193; RV64IZBA-LABEL: imm_16116864687:2194; RV64IZBA:       # %bb.0:2195; RV64IZBA-NEXT:    lui a0, 4371982196; RV64IZBA-NEXT:    addi a0, a0, -2652197; RV64IZBA-NEXT:    sh3add a0, a0, a02198; RV64IZBA-NEXT:    ret2199;2200; RV64IZBB-LABEL: imm_16116864687:2201; RV64IZBB:       # %bb.0:2202; RV64IZBB-NEXT:    lui a0, 9612203; RV64IZBB-NEXT:    addi a0, a0, -14752204; RV64IZBB-NEXT:    slli a0, a0, 122205; RV64IZBB-NEXT:    addi a0, a0, 17112206; RV64IZBB-NEXT:    ret2207;2208; RV64IZBS-LABEL: imm_16116864687:2209; RV64IZBS:       # %bb.0:2210; RV64IZBS-NEXT:    lui a0, 9612211; RV64IZBS-NEXT:    addi a0, a0, -14752212; RV64IZBS-NEXT:    slli a0, a0, 122213; RV64IZBS-NEXT:    addi a0, a0, 17112214; RV64IZBS-NEXT:    ret2215;2216; RV64IXTHEADBB-LABEL: imm_16116864687:2217; RV64IXTHEADBB:       # %bb.0:2218; RV64IXTHEADBB-NEXT:    lui a0, 9612219; RV64IXTHEADBB-NEXT:    addi a0, a0, -14752220; RV64IXTHEADBB-NEXT:    slli a0, a0, 122221; RV64IXTHEADBB-NEXT:    addi a0, a0, 17112222; RV64IXTHEADBB-NEXT:    ret2223;2224; RV32-REMAT-LABEL: imm_16116864687:2225; RV32-REMAT:       # %bb.0:2226; RV32-REMAT-NEXT:    lui a0, 7890532227; RV32-REMAT-NEXT:    addi a0, a0, 17112228; RV32-REMAT-NEXT:    li a1, 32229; RV32-REMAT-NEXT:    ret2230;2231; RV64-REMAT-LABEL: imm_16116864687:2232; RV64-REMAT:       # %bb.0:2233; RV64-REMAT-NEXT:    lui a0, 9612234; RV64-REMAT-NEXT:    addi a0, a0, -14752235; RV64-REMAT-NEXT:    slli a0, a0, 122236; RV64-REMAT-NEXT:    addi a0, a0, 17112237; RV64-REMAT-NEXT:    ret2238  ret i64 161168646872239}2240 2241define i64 @imm_neg_16116864687() {2242; RV32I-LABEL: imm_neg_16116864687:2243; RV32I:       # %bb.0:2244; RV32I-NEXT:    lui a0, 2595232245; RV32I-NEXT:    addi a0, a0, -17112246; RV32I-NEXT:    li a1, -42247; RV32I-NEXT:    ret2248;2249; RV32IXQCILI-LABEL: imm_neg_16116864687:2250; RV32IXQCILI:       # %bb.0:2251; RV32IXQCILI-NEXT:    qc.e.li a0, 10630044972252; RV32IXQCILI-NEXT:    li a1, -42253; RV32IXQCILI-NEXT:    ret2254;2255; RV64I-LABEL: imm_neg_16116864687:2256; RV64I:       # %bb.0:2257; RV64I-NEXT:    lui a0, 10476152258; RV64I-NEXT:    addi a0, a0, 14752259; RV64I-NEXT:    slli a0, a0, 122260; RV64I-NEXT:    addi a0, a0, -17112261; RV64I-NEXT:    ret2262;2263; RV64IZBA-LABEL: imm_neg_16116864687:2264; RV64IZBA:       # %bb.0:2265; RV64IZBA-NEXT:    lui a0, 6113782266; RV64IZBA-NEXT:    addi a0, a0, 2652267; RV64IZBA-NEXT:    sh3add a0, a0, a02268; RV64IZBA-NEXT:    ret2269;2270; RV64IZBB-LABEL: imm_neg_16116864687:2271; RV64IZBB:       # %bb.0:2272; RV64IZBB-NEXT:    lui a0, 10476152273; RV64IZBB-NEXT:    addi a0, a0, 14752274; RV64IZBB-NEXT:    slli a0, a0, 122275; RV64IZBB-NEXT:    addi a0, a0, -17112276; RV64IZBB-NEXT:    ret2277;2278; RV64IZBS-LABEL: imm_neg_16116864687:2279; RV64IZBS:       # %bb.0:2280; RV64IZBS-NEXT:    lui a0, 10476152281; RV64IZBS-NEXT:    addi a0, a0, 14752282; RV64IZBS-NEXT:    slli a0, a0, 122283; RV64IZBS-NEXT:    addi a0, a0, -17112284; RV64IZBS-NEXT:    ret2285;2286; RV64IXTHEADBB-LABEL: imm_neg_16116864687:2287; RV64IXTHEADBB:       # %bb.0:2288; RV64IXTHEADBB-NEXT:    lui a0, 10476152289; RV64IXTHEADBB-NEXT:    addi a0, a0, 14752290; RV64IXTHEADBB-NEXT:    slli a0, a0, 122291; RV64IXTHEADBB-NEXT:    addi a0, a0, -17112292; RV64IXTHEADBB-NEXT:    ret2293;2294; RV32-REMAT-LABEL: imm_neg_16116864687:2295; RV32-REMAT:       # %bb.0:2296; RV32-REMAT-NEXT:    lui a0, 2595232297; RV32-REMAT-NEXT:    addi a0, a0, -17112298; RV32-REMAT-NEXT:    li a1, -42299; RV32-REMAT-NEXT:    ret2300;2301; RV64-REMAT-LABEL: imm_neg_16116864687:2302; RV64-REMAT:       # %bb.0:2303; RV64-REMAT-NEXT:    lui a0, 10476152304; RV64-REMAT-NEXT:    addi a0, a0, 14752305; RV64-REMAT-NEXT:    slli a0, a0, 122306; RV64-REMAT-NEXT:    addi a0, a0, -17112307; RV64-REMAT-NEXT:    ret2308  ret i64 -161168646872309}2310 2311define i64 @imm_2344336315() {2312; RV32I-LABEL: imm_2344336315:2313; RV32I:       # %bb.0:2314; RV32I-NEXT:    lui a0, 5723482315; RV32I-NEXT:    addi a0, a0, -10932316; RV32I-NEXT:    li a1, 02317; RV32I-NEXT:    ret2318;2319; RV32IXQCILI-LABEL: imm_2344336315:2320; RV32IXQCILI:       # %bb.0:2321; RV32IXQCILI-NEXT:    qc.e.li a0, -19506309812322; RV32IXQCILI-NEXT:    li a1, 02323; RV32IXQCILI-NEXT:    ret2324;2325; RV64I-LABEL: imm_2344336315:2326; RV64I:       # %bb.0:2327; RV64I-NEXT:    lui a0, 1430872328; RV64I-NEXT:    slli a0, a0, 22329; RV64I-NEXT:    addi a0, a0, -10932330; RV64I-NEXT:    ret2331;2332; RV64IZBA-LABEL: imm_2344336315:2333; RV64IZBA:       # %bb.0:2334; RV64IZBA-NEXT:    lui a0, 1430872335; RV64IZBA-NEXT:    slli a0, a0, 22336; RV64IZBA-NEXT:    addi a0, a0, -10932337; RV64IZBA-NEXT:    ret2338;2339; RV64IZBB-LABEL: imm_2344336315:2340; RV64IZBB:       # %bb.0:2341; RV64IZBB-NEXT:    lui a0, 1430872342; RV64IZBB-NEXT:    slli a0, a0, 22343; RV64IZBB-NEXT:    addi a0, a0, -10932344; RV64IZBB-NEXT:    ret2345;2346; RV64IZBS-LABEL: imm_2344336315:2347; RV64IZBS:       # %bb.0:2348; RV64IZBS-NEXT:    lui a0, 1430872349; RV64IZBS-NEXT:    slli a0, a0, 22350; RV64IZBS-NEXT:    addi a0, a0, -10932351; RV64IZBS-NEXT:    ret2352;2353; RV64IXTHEADBB-LABEL: imm_2344336315:2354; RV64IXTHEADBB:       # %bb.0:2355; RV64IXTHEADBB-NEXT:    lui a0, 1430872356; RV64IXTHEADBB-NEXT:    slli a0, a0, 22357; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932358; RV64IXTHEADBB-NEXT:    ret2359;2360; RV32-REMAT-LABEL: imm_2344336315:2361; RV32-REMAT:       # %bb.0:2362; RV32-REMAT-NEXT:    lui a0, 5723482363; RV32-REMAT-NEXT:    addi a0, a0, -10932364; RV32-REMAT-NEXT:    li a1, 02365; RV32-REMAT-NEXT:    ret2366;2367; RV64-REMAT-LABEL: imm_2344336315:2368; RV64-REMAT:       # %bb.0:2369; RV64-REMAT-NEXT:    lui a0, 1430872370; RV64-REMAT-NEXT:    slli a0, a0, 22371; RV64-REMAT-NEXT:    addi a0, a0, -10932372; RV64-REMAT-NEXT:    ret2373  ret i64 2344336315 ; 0x8bbbbbbb2374}2375 2376define i64 @imm_70370820078523() {2377; RV32I-LABEL: imm_70370820078523:2378; RV32I:       # %bb.0:2379; RV32I-NEXT:    lui a0, 5068122380; RV32I-NEXT:    addi a0, a0, -10932381; RV32I-NEXT:    lui a1, 42382; RV32I-NEXT:    ret2383;2384; RV32IXQCILI-LABEL: imm_70370820078523:2385; RV32IXQCILI:       # %bb.0:2386; RV32IXQCILI-NEXT:    qc.e.li a0, 20759008592387; RV32IXQCILI-NEXT:    lui a1, 42388; RV32IXQCILI-NEXT:    ret2389;2390; RV64-NOPOOL-LABEL: imm_70370820078523:2391; RV64-NOPOOL:       # %bb.0:2392; RV64-NOPOOL-NEXT:    lui a0, 2562393; RV64-NOPOOL-NEXT:    addi a0, a0, 312394; RV64-NOPOOL-NEXT:    slli a0, a0, 122395; RV64-NOPOOL-NEXT:    addi a0, a0, -2732396; RV64-NOPOOL-NEXT:    slli a0, a0, 142397; RV64-NOPOOL-NEXT:    addi a0, a0, -10932398; RV64-NOPOOL-NEXT:    ret2399;2400; RV64I-POOL-LABEL: imm_70370820078523:2401; RV64I-POOL:       # %bb.0:2402; RV64I-POOL-NEXT:    lui a0, %hi(.LCPI38_0)2403; RV64I-POOL-NEXT:    ld a0, %lo(.LCPI38_0)(a0)2404; RV64I-POOL-NEXT:    ret2405;2406; RV64IZBA-LABEL: imm_70370820078523:2407; RV64IZBA:       # %bb.0:2408; RV64IZBA-NEXT:    lui a0, 2562409; RV64IZBA-NEXT:    addi a0, a0, 312410; RV64IZBA-NEXT:    slli a0, a0, 122411; RV64IZBA-NEXT:    addi a0, a0, -2732412; RV64IZBA-NEXT:    slli a0, a0, 142413; RV64IZBA-NEXT:    addi a0, a0, -10932414; RV64IZBA-NEXT:    ret2415;2416; RV64IZBB-LABEL: imm_70370820078523:2417; RV64IZBB:       # %bb.0:2418; RV64IZBB-NEXT:    lui a0, 2562419; RV64IZBB-NEXT:    addi a0, a0, 312420; RV64IZBB-NEXT:    slli a0, a0, 122421; RV64IZBB-NEXT:    addi a0, a0, -2732422; RV64IZBB-NEXT:    slli a0, a0, 142423; RV64IZBB-NEXT:    addi a0, a0, -10932424; RV64IZBB-NEXT:    ret2425;2426; RV64IZBS-LABEL: imm_70370820078523:2427; RV64IZBS:       # %bb.0:2428; RV64IZBS-NEXT:    lui a0, 5068122429; RV64IZBS-NEXT:    addi a0, a0, -10932430; RV64IZBS-NEXT:    bseti a0, a0, 462431; RV64IZBS-NEXT:    ret2432;2433; RV64IXTHEADBB-LABEL: imm_70370820078523:2434; RV64IXTHEADBB:       # %bb.0:2435; RV64IXTHEADBB-NEXT:    lui a0, 2562436; RV64IXTHEADBB-NEXT:    addi a0, a0, 312437; RV64IXTHEADBB-NEXT:    slli a0, a0, 122438; RV64IXTHEADBB-NEXT:    addi a0, a0, -2732439; RV64IXTHEADBB-NEXT:    slli a0, a0, 142440; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932441; RV64IXTHEADBB-NEXT:    ret2442;2443; RV32-REMAT-LABEL: imm_70370820078523:2444; RV32-REMAT:       # %bb.0:2445; RV32-REMAT-NEXT:    lui a0, 5068122446; RV32-REMAT-NEXT:    addi a0, a0, -10932447; RV32-REMAT-NEXT:    lui a1, 42448; RV32-REMAT-NEXT:    ret2449;2450; RV64-REMAT-LABEL: imm_70370820078523:2451; RV64-REMAT:       # %bb.0:2452; RV64-REMAT-NEXT:    lui a0, 2562453; RV64-REMAT-NEXT:    addi a0, a0, 312454; RV64-REMAT-NEXT:    slli a0, a0, 122455; RV64-REMAT-NEXT:    addi a0, a0, -2732456; RV64-REMAT-NEXT:    slli a0, a0, 142457; RV64-REMAT-NEXT:    addi a0, a0, -10932458; RV64-REMAT-NEXT:    ret2459  ret i64 70370820078523 ; 0x40007bbbbbbb2460}2461 2462define i64 @imm_neg_9223372034778874949() {2463; RV32I-LABEL: imm_neg_9223372034778874949:2464; RV32I:       # %bb.0:2465; RV32I-NEXT:    lui a0, 5068122466; RV32I-NEXT:    addi a0, a0, -10932467; RV32I-NEXT:    lui a1, 5242882468; RV32I-NEXT:    ret2469;2470; RV32IXQCILI-LABEL: imm_neg_9223372034778874949:2471; RV32IXQCILI:       # %bb.0:2472; RV32IXQCILI-NEXT:    qc.e.li a0, 20759008592473; RV32IXQCILI-NEXT:    lui a1, 5242882474; RV32IXQCILI-NEXT:    ret2475;2476; RV64I-LABEL: imm_neg_9223372034778874949:2477; RV64I:       # %bb.0:2478; RV64I-NEXT:    lui a0, 5068122479; RV64I-NEXT:    addi a0, a0, -10932480; RV64I-NEXT:    slli a1, a0, 632481; RV64I-NEXT:    add a0, a0, a12482; RV64I-NEXT:    ret2483;2484; RV64IZBA-LABEL: imm_neg_9223372034778874949:2485; RV64IZBA:       # %bb.0:2486; RV64IZBA-NEXT:    lui a0, 5068122487; RV64IZBA-NEXT:    addi a0, a0, -10932488; RV64IZBA-NEXT:    slli a1, a0, 632489; RV64IZBA-NEXT:    add a0, a0, a12490; RV64IZBA-NEXT:    ret2491;2492; RV64IZBB-LABEL: imm_neg_9223372034778874949:2493; RV64IZBB:       # %bb.0:2494; RV64IZBB-NEXT:    lui a0, 5068122495; RV64IZBB-NEXT:    addi a0, a0, -10932496; RV64IZBB-NEXT:    slli a1, a0, 632497; RV64IZBB-NEXT:    add a0, a0, a12498; RV64IZBB-NEXT:    ret2499;2500; RV64IZBS-LABEL: imm_neg_9223372034778874949:2501; RV64IZBS:       # %bb.0:2502; RV64IZBS-NEXT:    lui a0, 5068122503; RV64IZBS-NEXT:    addi a0, a0, -10932504; RV64IZBS-NEXT:    bseti a0, a0, 632505; RV64IZBS-NEXT:    ret2506;2507; RV64IXTHEADBB-LABEL: imm_neg_9223372034778874949:2508; RV64IXTHEADBB:       # %bb.0:2509; RV64IXTHEADBB-NEXT:    lui a0, 5068122510; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932511; RV64IXTHEADBB-NEXT:    slli a1, a0, 632512; RV64IXTHEADBB-NEXT:    add a0, a0, a12513; RV64IXTHEADBB-NEXT:    ret2514;2515; RV32-REMAT-LABEL: imm_neg_9223372034778874949:2516; RV32-REMAT:       # %bb.0:2517; RV32-REMAT-NEXT:    lui a0, 5068122518; RV32-REMAT-NEXT:    addi a0, a0, -10932519; RV32-REMAT-NEXT:    lui a1, 5242882520; RV32-REMAT-NEXT:    ret2521;2522; RV64-REMAT-LABEL: imm_neg_9223372034778874949:2523; RV64-REMAT:       # %bb.0:2524; RV64-REMAT-NEXT:    lui a0, 5068122525; RV64-REMAT-NEXT:    addi a0, a0, -10932526; RV64-REMAT-NEXT:    slli a1, a0, 632527; RV64-REMAT-NEXT:    add a0, a0, a12528; RV64-REMAT-NEXT:    ret2529  ret i64 -9223372034778874949 ; 0x800000007bbbbbbb2530}2531 2532define i64 @imm_neg_9223301666034697285() {2533; RV32I-LABEL: imm_neg_9223301666034697285:2534; RV32I:       # %bb.0:2535; RV32I-NEXT:    lui a0, 5068122536; RV32I-NEXT:    addi a0, a0, -10932537; RV32I-NEXT:    lui a1, 5242922538; RV32I-NEXT:    ret2539;2540; RV32IXQCILI-LABEL: imm_neg_9223301666034697285:2541; RV32IXQCILI:       # %bb.0:2542; RV32IXQCILI-NEXT:    qc.e.li a0, 20759008592543; RV32IXQCILI-NEXT:    lui a1, 5242922544; RV32IXQCILI-NEXT:    ret2545;2546; RV64-NOPOOL-LABEL: imm_neg_9223301666034697285:2547; RV64-NOPOOL:       # %bb.0:2548; RV64-NOPOOL-NEXT:    lui a0, 9175052549; RV64-NOPOOL-NEXT:    slli a0, a0, 82550; RV64-NOPOOL-NEXT:    addi a0, a0, 312551; RV64-NOPOOL-NEXT:    slli a0, a0, 122552; RV64-NOPOOL-NEXT:    addi a0, a0, -2732553; RV64-NOPOOL-NEXT:    slli a0, a0, 142554; RV64-NOPOOL-NEXT:    addi a0, a0, -10932555; RV64-NOPOOL-NEXT:    ret2556;2557; RV64I-POOL-LABEL: imm_neg_9223301666034697285:2558; RV64I-POOL:       # %bb.0:2559; RV64I-POOL-NEXT:    lui a0, %hi(.LCPI40_0)2560; RV64I-POOL-NEXT:    ld a0, %lo(.LCPI40_0)(a0)2561; RV64I-POOL-NEXT:    ret2562;2563; RV64IZBA-LABEL: imm_neg_9223301666034697285:2564; RV64IZBA:       # %bb.0:2565; RV64IZBA-NEXT:    lui a0, 9175052566; RV64IZBA-NEXT:    slli a0, a0, 82567; RV64IZBA-NEXT:    addi a0, a0, 312568; RV64IZBA-NEXT:    slli a0, a0, 122569; RV64IZBA-NEXT:    addi a0, a0, -2732570; RV64IZBA-NEXT:    slli a0, a0, 142571; RV64IZBA-NEXT:    addi a0, a0, -10932572; RV64IZBA-NEXT:    ret2573;2574; RV64IZBB-LABEL: imm_neg_9223301666034697285:2575; RV64IZBB:       # %bb.0:2576; RV64IZBB-NEXT:    lui a0, 9175052577; RV64IZBB-NEXT:    slli a0, a0, 82578; RV64IZBB-NEXT:    addi a0, a0, 312579; RV64IZBB-NEXT:    slli a0, a0, 122580; RV64IZBB-NEXT:    addi a0, a0, -2732581; RV64IZBB-NEXT:    slli a0, a0, 142582; RV64IZBB-NEXT:    addi a0, a0, -10932583; RV64IZBB-NEXT:    ret2584;2585; RV64IZBS-LABEL: imm_neg_9223301666034697285:2586; RV64IZBS:       # %bb.0:2587; RV64IZBS-NEXT:    lui a0, 5068122588; RV64IZBS-NEXT:    addi a0, a0, -10932589; RV64IZBS-NEXT:    bseti a0, a0, 462590; RV64IZBS-NEXT:    bseti a0, a0, 632591; RV64IZBS-NEXT:    ret2592;2593; RV64IXTHEADBB-LABEL: imm_neg_9223301666034697285:2594; RV64IXTHEADBB:       # %bb.0:2595; RV64IXTHEADBB-NEXT:    lui a0, 9175052596; RV64IXTHEADBB-NEXT:    slli a0, a0, 82597; RV64IXTHEADBB-NEXT:    addi a0, a0, 312598; RV64IXTHEADBB-NEXT:    slli a0, a0, 122599; RV64IXTHEADBB-NEXT:    addi a0, a0, -2732600; RV64IXTHEADBB-NEXT:    slli a0, a0, 142601; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932602; RV64IXTHEADBB-NEXT:    ret2603;2604; RV32-REMAT-LABEL: imm_neg_9223301666034697285:2605; RV32-REMAT:       # %bb.0:2606; RV32-REMAT-NEXT:    lui a0, 5068122607; RV32-REMAT-NEXT:    addi a0, a0, -10932608; RV32-REMAT-NEXT:    lui a1, 5242922609; RV32-REMAT-NEXT:    ret2610;2611; RV64-REMAT-LABEL: imm_neg_9223301666034697285:2612; RV64-REMAT:       # %bb.0:2613; RV64-REMAT-NEXT:    lui a0, 9175052614; RV64-REMAT-NEXT:    slli a0, a0, 82615; RV64-REMAT-NEXT:    addi a0, a0, 312616; RV64-REMAT-NEXT:    slli a0, a0, 122617; RV64-REMAT-NEXT:    addi a0, a0, -2732618; RV64-REMAT-NEXT:    slli a0, a0, 142619; RV64-REMAT-NEXT:    addi a0, a0, -10932620; RV64-REMAT-NEXT:    ret2621  ret i64 -9223301666034697285 ; 0x800040007bbbbbbb2622}2623 2624define i64 @imm_neg_2219066437() {2625; RV32I-LABEL: imm_neg_2219066437:2626; RV32I:       # %bb.0:2627; RV32I-NEXT:    lui a0, 5068122628; RV32I-NEXT:    addi a0, a0, -10932629; RV32I-NEXT:    li a1, -12630; RV32I-NEXT:    ret2631;2632; RV32IXQCILI-LABEL: imm_neg_2219066437:2633; RV32IXQCILI:       # %bb.0:2634; RV32IXQCILI-NEXT:    qc.e.li a0, 20759008592635; RV32IXQCILI-NEXT:    li a1, -12636; RV32IXQCILI-NEXT:    ret2637;2638; RV64I-LABEL: imm_neg_2219066437:2639; RV64I:       # %bb.0:2640; RV64I-NEXT:    lui a0, 9131352641; RV64I-NEXT:    slli a0, a0, 22642; RV64I-NEXT:    addi a0, a0, -10932643; RV64I-NEXT:    ret2644;2645; RV64IZBA-LABEL: imm_neg_2219066437:2646; RV64IZBA:       # %bb.0:2647; RV64IZBA-NEXT:    lui a0, 9131352648; RV64IZBA-NEXT:    slli a0, a0, 22649; RV64IZBA-NEXT:    addi a0, a0, -10932650; RV64IZBA-NEXT:    ret2651;2652; RV64IZBB-LABEL: imm_neg_2219066437:2653; RV64IZBB:       # %bb.0:2654; RV64IZBB-NEXT:    lui a0, 9131352655; RV64IZBB-NEXT:    slli a0, a0, 22656; RV64IZBB-NEXT:    addi a0, a0, -10932657; RV64IZBB-NEXT:    ret2658;2659; RV64IZBS-LABEL: imm_neg_2219066437:2660; RV64IZBS:       # %bb.0:2661; RV64IZBS-NEXT:    lui a0, 9131352662; RV64IZBS-NEXT:    slli a0, a0, 22663; RV64IZBS-NEXT:    addi a0, a0, -10932664; RV64IZBS-NEXT:    ret2665;2666; RV64IXTHEADBB-LABEL: imm_neg_2219066437:2667; RV64IXTHEADBB:       # %bb.0:2668; RV64IXTHEADBB-NEXT:    lui a0, 9131352669; RV64IXTHEADBB-NEXT:    slli a0, a0, 22670; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932671; RV64IXTHEADBB-NEXT:    ret2672;2673; RV32-REMAT-LABEL: imm_neg_2219066437:2674; RV32-REMAT:       # %bb.0:2675; RV32-REMAT-NEXT:    lui a0, 5068122676; RV32-REMAT-NEXT:    addi a0, a0, -10932677; RV32-REMAT-NEXT:    li a1, -12678; RV32-REMAT-NEXT:    ret2679;2680; RV64-REMAT-LABEL: imm_neg_2219066437:2681; RV64-REMAT:       # %bb.0:2682; RV64-REMAT-NEXT:    lui a0, 9131352683; RV64-REMAT-NEXT:    slli a0, a0, 22684; RV64-REMAT-NEXT:    addi a0, a0, -10932685; RV64-REMAT-NEXT:    ret2686  ret i64 -2219066437 ; 0xffffffff7bbbbbbb2687}2688 2689define i64 @imm_neg_8798043653189() {2690; RV32I-LABEL: imm_neg_8798043653189:2691; RV32I:       # %bb.0:2692; RV32I-NEXT:    lui a0, 5723482693; RV32I-NEXT:    lui a1, 10485752694; RV32I-NEXT:    addi a0, a0, -10932695; RV32I-NEXT:    addi a1, a1, 20472696; RV32I-NEXT:    ret2697;2698; RV32IXQCILI-LABEL: imm_neg_8798043653189:2699; RV32IXQCILI:       # %bb.0:2700; RV32IXQCILI-NEXT:    qc.e.li a0, -19506309812701; RV32IXQCILI-NEXT:    qc.li a1, -20492702; RV32IXQCILI-NEXT:    ret2703;2704; RV64I-LABEL: imm_neg_8798043653189:2705; RV64I:       # %bb.0:2706; RV64I-NEXT:    lui a0, 9174752707; RV64I-NEXT:    addi a0, a0, -2732708; RV64I-NEXT:    slli a0, a0, 142709; RV64I-NEXT:    addi a0, a0, -10932710; RV64I-NEXT:    ret2711;2712; RV64IZBA-LABEL: imm_neg_8798043653189:2713; RV64IZBA:       # %bb.0:2714; RV64IZBA-NEXT:    lui a0, 9174752715; RV64IZBA-NEXT:    addi a0, a0, -2732716; RV64IZBA-NEXT:    slli a0, a0, 142717; RV64IZBA-NEXT:    addi a0, a0, -10932718; RV64IZBA-NEXT:    ret2719;2720; RV64IZBB-LABEL: imm_neg_8798043653189:2721; RV64IZBB:       # %bb.0:2722; RV64IZBB-NEXT:    lui a0, 9174752723; RV64IZBB-NEXT:    addi a0, a0, -2732724; RV64IZBB-NEXT:    slli a0, a0, 142725; RV64IZBB-NEXT:    addi a0, a0, -10932726; RV64IZBB-NEXT:    ret2727;2728; RV64IZBS-LABEL: imm_neg_8798043653189:2729; RV64IZBS:       # %bb.0:2730; RV64IZBS-NEXT:    lui a0, 5723482731; RV64IZBS-NEXT:    addi a0, a0, -10932732; RV64IZBS-NEXT:    bclri a0, a0, 432733; RV64IZBS-NEXT:    ret2734;2735; RV64IXTHEADBB-LABEL: imm_neg_8798043653189:2736; RV64IXTHEADBB:       # %bb.0:2737; RV64IXTHEADBB-NEXT:    lui a0, 9174752738; RV64IXTHEADBB-NEXT:    addi a0, a0, -2732739; RV64IXTHEADBB-NEXT:    slli a0, a0, 142740; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932741; RV64IXTHEADBB-NEXT:    ret2742;2743; RV32-REMAT-LABEL: imm_neg_8798043653189:2744; RV32-REMAT:       # %bb.0:2745; RV32-REMAT-NEXT:    lui a0, 5723482746; RV32-REMAT-NEXT:    addi a0, a0, -10932747; RV32-REMAT-NEXT:    lui a1, 10485752748; RV32-REMAT-NEXT:    addi a1, a1, 20472749; RV32-REMAT-NEXT:    ret2750;2751; RV64-REMAT-LABEL: imm_neg_8798043653189:2752; RV64-REMAT:       # %bb.0:2753; RV64-REMAT-NEXT:    lui a0, 9174752754; RV64-REMAT-NEXT:    addi a0, a0, -2732755; RV64-REMAT-NEXT:    slli a0, a0, 142756; RV64-REMAT-NEXT:    addi a0, a0, -10932757; RV64-REMAT-NEXT:    ret2758  ret i64 -8798043653189 ; 0xfffff7ff8bbbbbbb2759}2760 2761define i64 @imm_9223372034904144827() {2762; RV32I-LABEL: imm_9223372034904144827:2763; RV32I:       # %bb.0:2764; RV32I-NEXT:    lui a0, 5723482765; RV32I-NEXT:    lui a1, 5242882766; RV32I-NEXT:    addi a0, a0, -10932767; RV32I-NEXT:    addi a1, a1, -12768; RV32I-NEXT:    ret2769;2770; RV32IXQCILI-LABEL: imm_9223372034904144827:2771; RV32IXQCILI:       # %bb.0:2772; RV32IXQCILI-NEXT:    qc.e.li a0, -19506309812773; RV32IXQCILI-NEXT:    qc.e.li a1, 21474836472774; RV32IXQCILI-NEXT:    ret2775;2776; RV64I-LABEL: imm_9223372034904144827:2777; RV64I:       # %bb.0:2778; RV64I-NEXT:    lui a0, 5723482779; RV64I-NEXT:    addi a0, a0, -10932780; RV64I-NEXT:    slli a1, a0, 632781; RV64I-NEXT:    add a0, a0, a12782; RV64I-NEXT:    ret2783;2784; RV64IZBA-LABEL: imm_9223372034904144827:2785; RV64IZBA:       # %bb.0:2786; RV64IZBA-NEXT:    lui a0, 5723482787; RV64IZBA-NEXT:    addi a0, a0, -10932788; RV64IZBA-NEXT:    slli a1, a0, 632789; RV64IZBA-NEXT:    add a0, a0, a12790; RV64IZBA-NEXT:    ret2791;2792; RV64IZBB-LABEL: imm_9223372034904144827:2793; RV64IZBB:       # %bb.0:2794; RV64IZBB-NEXT:    lui a0, 5723482795; RV64IZBB-NEXT:    addi a0, a0, -10932796; RV64IZBB-NEXT:    slli a1, a0, 632797; RV64IZBB-NEXT:    add a0, a0, a12798; RV64IZBB-NEXT:    ret2799;2800; RV64IZBS-LABEL: imm_9223372034904144827:2801; RV64IZBS:       # %bb.0:2802; RV64IZBS-NEXT:    lui a0, 5723482803; RV64IZBS-NEXT:    addi a0, a0, -10932804; RV64IZBS-NEXT:    bclri a0, a0, 632805; RV64IZBS-NEXT:    ret2806;2807; RV64IXTHEADBB-LABEL: imm_9223372034904144827:2808; RV64IXTHEADBB:       # %bb.0:2809; RV64IXTHEADBB-NEXT:    lui a0, 5723482810; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932811; RV64IXTHEADBB-NEXT:    slli a1, a0, 632812; RV64IXTHEADBB-NEXT:    add a0, a0, a12813; RV64IXTHEADBB-NEXT:    ret2814;2815; RV32-REMAT-LABEL: imm_9223372034904144827:2816; RV32-REMAT:       # %bb.0:2817; RV32-REMAT-NEXT:    lui a0, 5723482818; RV32-REMAT-NEXT:    addi a0, a0, -10932819; RV32-REMAT-NEXT:    lui a1, 5242882820; RV32-REMAT-NEXT:    addi a1, a1, -12821; RV32-REMAT-NEXT:    ret2822;2823; RV64-REMAT-LABEL: imm_9223372034904144827:2824; RV64-REMAT:       # %bb.0:2825; RV64-REMAT-NEXT:    lui a0, 5723482826; RV64-REMAT-NEXT:    addi a0, a0, -10932827; RV64-REMAT-NEXT:    slli a1, a0, 632828; RV64-REMAT-NEXT:    add a0, a0, a12829; RV64-REMAT-NEXT:    ret2830  ret i64 9223372034904144827 ; 0x7fffffff8bbbbbbb2831}2832 2833define i64 @imm_neg_9223354442718100411() {2834; RV32I-LABEL: imm_neg_9223354442718100411:2835; RV32I:       # %bb.0:2836; RV32I-NEXT:    lui a0, 5723482837; RV32I-NEXT:    lui a1, 5242872838; RV32I-NEXT:    addi a0, a0, -10932839; RV32I-NEXT:    addi a1, a1, -12840; RV32I-NEXT:    ret2841;2842; RV32IXQCILI-LABEL: imm_neg_9223354442718100411:2843; RV32IXQCILI:       # %bb.0:2844; RV32IXQCILI-NEXT:    qc.e.li a0, -19506309812845; RV32IXQCILI-NEXT:    qc.e.li a1, 21474795512846; RV32IXQCILI-NEXT:    ret2847;2848; RV64-NOPOOL-LABEL: imm_neg_9223354442718100411:2849; RV64-NOPOOL:       # %bb.0:2850; RV64-NOPOOL-NEXT:    lui a0, 5242872851; RV64-NOPOOL-NEXT:    slli a0, a0, 62852; RV64-NOPOOL-NEXT:    addi a0, a0, -292853; RV64-NOPOOL-NEXT:    slli a0, a0, 122854; RV64-NOPOOL-NEXT:    addi a0, a0, -2732855; RV64-NOPOOL-NEXT:    slli a0, a0, 142856; RV64-NOPOOL-NEXT:    addi a0, a0, -10932857; RV64-NOPOOL-NEXT:    ret2858;2859; RV64I-POOL-LABEL: imm_neg_9223354442718100411:2860; RV64I-POOL:       # %bb.0:2861; RV64I-POOL-NEXT:    lui a0, %hi(.LCPI44_0)2862; RV64I-POOL-NEXT:    ld a0, %lo(.LCPI44_0)(a0)2863; RV64I-POOL-NEXT:    ret2864;2865; RV64IZBA-LABEL: imm_neg_9223354442718100411:2866; RV64IZBA:       # %bb.0:2867; RV64IZBA-NEXT:    lui a0, 5242872868; RV64IZBA-NEXT:    slli a0, a0, 62869; RV64IZBA-NEXT:    addi a0, a0, -292870; RV64IZBA-NEXT:    slli a0, a0, 122871; RV64IZBA-NEXT:    addi a0, a0, -2732872; RV64IZBA-NEXT:    slli a0, a0, 142873; RV64IZBA-NEXT:    addi a0, a0, -10932874; RV64IZBA-NEXT:    ret2875;2876; RV64IZBB-LABEL: imm_neg_9223354442718100411:2877; RV64IZBB:       # %bb.0:2878; RV64IZBB-NEXT:    lui a0, 5242872879; RV64IZBB-NEXT:    slli a0, a0, 62880; RV64IZBB-NEXT:    addi a0, a0, -292881; RV64IZBB-NEXT:    slli a0, a0, 122882; RV64IZBB-NEXT:    addi a0, a0, -2732883; RV64IZBB-NEXT:    slli a0, a0, 142884; RV64IZBB-NEXT:    addi a0, a0, -10932885; RV64IZBB-NEXT:    ret2886;2887; RV64IZBS-LABEL: imm_neg_9223354442718100411:2888; RV64IZBS:       # %bb.0:2889; RV64IZBS-NEXT:    lui a0, 5723482890; RV64IZBS-NEXT:    addi a0, a0, -10932891; RV64IZBS-NEXT:    bclri a0, a0, 442892; RV64IZBS-NEXT:    bclri a0, a0, 632893; RV64IZBS-NEXT:    ret2894;2895; RV64IXTHEADBB-LABEL: imm_neg_9223354442718100411:2896; RV64IXTHEADBB:       # %bb.0:2897; RV64IXTHEADBB-NEXT:    lui a0, 5242872898; RV64IXTHEADBB-NEXT:    slli a0, a0, 62899; RV64IXTHEADBB-NEXT:    addi a0, a0, -292900; RV64IXTHEADBB-NEXT:    slli a0, a0, 122901; RV64IXTHEADBB-NEXT:    addi a0, a0, -2732902; RV64IXTHEADBB-NEXT:    slli a0, a0, 142903; RV64IXTHEADBB-NEXT:    addi a0, a0, -10932904; RV64IXTHEADBB-NEXT:    ret2905;2906; RV32-REMAT-LABEL: imm_neg_9223354442718100411:2907; RV32-REMAT:       # %bb.0:2908; RV32-REMAT-NEXT:    lui a0, 5723482909; RV32-REMAT-NEXT:    addi a0, a0, -10932910; RV32-REMAT-NEXT:    lui a1, 5242872911; RV32-REMAT-NEXT:    addi a1, a1, -12912; RV32-REMAT-NEXT:    ret2913;2914; RV64-REMAT-LABEL: imm_neg_9223354442718100411:2915; RV64-REMAT:       # %bb.0:2916; RV64-REMAT-NEXT:    lui a0, 5242872917; RV64-REMAT-NEXT:    slli a0, a0, 62918; RV64-REMAT-NEXT:    addi a0, a0, -292919; RV64-REMAT-NEXT:    slli a0, a0, 122920; RV64-REMAT-NEXT:    addi a0, a0, -2732921; RV64-REMAT-NEXT:    slli a0, a0, 142922; RV64-REMAT-NEXT:    addi a0, a0, -10932923; RV64-REMAT-NEXT:    ret2924  ret i64 9223354442718100411 ; 0x7fffefff8bbbbbbb2925}2926 2927define i64 @imm_2863311530() {2928; RV32I-LABEL: imm_2863311530:2929; RV32I:       # %bb.0:2930; RV32I-NEXT:    lui a0, 6990512931; RV32I-NEXT:    addi a0, a0, -13662932; RV32I-NEXT:    li a1, 02933; RV32I-NEXT:    ret2934;2935; RV32IXQCILI-LABEL: imm_2863311530:2936; RV32IXQCILI:       # %bb.0:2937; RV32IXQCILI-NEXT:    qc.e.li a0, -14316557662938; RV32IXQCILI-NEXT:    li a1, 02939; RV32IXQCILI-NEXT:    ret2940;2941; RV64I-LABEL: imm_2863311530:2942; RV64I:       # %bb.0:2943; RV64I-NEXT:    lui a0, 3495252944; RV64I-NEXT:    addi a0, a0, 13652945; RV64I-NEXT:    slli a0, a0, 12946; RV64I-NEXT:    ret2947;2948; RV64IZBA-LABEL: imm_2863311530:2949; RV64IZBA:       # %bb.0:2950; RV64IZBA-NEXT:    lui a0, 3495252951; RV64IZBA-NEXT:    addi a0, a0, 13652952; RV64IZBA-NEXT:    slli a0, a0, 12953; RV64IZBA-NEXT:    ret2954;2955; RV64IZBB-LABEL: imm_2863311530:2956; RV64IZBB:       # %bb.0:2957; RV64IZBB-NEXT:    lui a0, 3495252958; RV64IZBB-NEXT:    addi a0, a0, 13652959; RV64IZBB-NEXT:    slli a0, a0, 12960; RV64IZBB-NEXT:    ret2961;2962; RV64IZBS-LABEL: imm_2863311530:2963; RV64IZBS:       # %bb.0:2964; RV64IZBS-NEXT:    lui a0, 3495252965; RV64IZBS-NEXT:    addi a0, a0, 13652966; RV64IZBS-NEXT:    slli a0, a0, 12967; RV64IZBS-NEXT:    ret2968;2969; RV64IXTHEADBB-LABEL: imm_2863311530:2970; RV64IXTHEADBB:       # %bb.0:2971; RV64IXTHEADBB-NEXT:    lui a0, 3495252972; RV64IXTHEADBB-NEXT:    addi a0, a0, 13652973; RV64IXTHEADBB-NEXT:    slli a0, a0, 12974; RV64IXTHEADBB-NEXT:    ret2975;2976; RV32-REMAT-LABEL: imm_2863311530:2977; RV32-REMAT:       # %bb.0:2978; RV32-REMAT-NEXT:    lui a0, 6990512979; RV32-REMAT-NEXT:    addi a0, a0, -13662980; RV32-REMAT-NEXT:    li a1, 02981; RV32-REMAT-NEXT:    ret2982;2983; RV64-REMAT-LABEL: imm_2863311530:2984; RV64-REMAT:       # %bb.0:2985; RV64-REMAT-NEXT:    lui a0, 3495252986; RV64-REMAT-NEXT:    addi a0, a0, 13652987; RV64-REMAT-NEXT:    slli a0, a0, 12988; RV64-REMAT-NEXT:    ret2989	ret i64 2863311530 ; #0xaaaaaaaa2990}2991 2992define i64 @imm_neg_2863311530() {2993; RV32I-LABEL: imm_neg_2863311530:2994; RV32I:       # %bb.0:2995; RV32I-NEXT:    lui a0, 3495252996; RV32I-NEXT:    addi a0, a0, 13662997; RV32I-NEXT:    li a1, -12998; RV32I-NEXT:    ret2999;3000; RV32IXQCILI-LABEL: imm_neg_2863311530:3001; RV32IXQCILI:       # %bb.0:3002; RV32IXQCILI-NEXT:    qc.e.li a0, 14316557663003; RV32IXQCILI-NEXT:    li a1, -13004; RV32IXQCILI-NEXT:    ret3005;3006; RV64I-LABEL: imm_neg_2863311530:3007; RV64I:       # %bb.0:3008; RV64I-NEXT:    lui a0, 6990513009; RV64I-NEXT:    addi a0, a0, -13653010; RV64I-NEXT:    slli a0, a0, 13011; RV64I-NEXT:    ret3012;3013; RV64IZBA-LABEL: imm_neg_2863311530:3014; RV64IZBA:       # %bb.0:3015; RV64IZBA-NEXT:    lui a0, 6990513016; RV64IZBA-NEXT:    addi a0, a0, -13653017; RV64IZBA-NEXT:    slli a0, a0, 13018; RV64IZBA-NEXT:    ret3019;3020; RV64IZBB-LABEL: imm_neg_2863311530:3021; RV64IZBB:       # %bb.0:3022; RV64IZBB-NEXT:    lui a0, 6990513023; RV64IZBB-NEXT:    addi a0, a0, -13653024; RV64IZBB-NEXT:    slli a0, a0, 13025; RV64IZBB-NEXT:    ret3026;3027; RV64IZBS-LABEL: imm_neg_2863311530:3028; RV64IZBS:       # %bb.0:3029; RV64IZBS-NEXT:    lui a0, 6990513030; RV64IZBS-NEXT:    addi a0, a0, -13653031; RV64IZBS-NEXT:    slli a0, a0, 13032; RV64IZBS-NEXT:    ret3033;3034; RV64IXTHEADBB-LABEL: imm_neg_2863311530:3035; RV64IXTHEADBB:       # %bb.0:3036; RV64IXTHEADBB-NEXT:    lui a0, 6990513037; RV64IXTHEADBB-NEXT:    addi a0, a0, -13653038; RV64IXTHEADBB-NEXT:    slli a0, a0, 13039; RV64IXTHEADBB-NEXT:    ret3040;3041; RV32-REMAT-LABEL: imm_neg_2863311530:3042; RV32-REMAT:       # %bb.0:3043; RV32-REMAT-NEXT:    lui a0, 3495253044; RV32-REMAT-NEXT:    addi a0, a0, 13663045; RV32-REMAT-NEXT:    li a1, -13046; RV32-REMAT-NEXT:    ret3047;3048; RV64-REMAT-LABEL: imm_neg_2863311530:3049; RV64-REMAT:       # %bb.0:3050; RV64-REMAT-NEXT:    lui a0, 6990513051; RV64-REMAT-NEXT:    addi a0, a0, -13653052; RV64-REMAT-NEXT:    slli a0, a0, 13053; RV64-REMAT-NEXT:    ret3054	ret i64 -2863311530 ; #0xffffffff555555563055}3056 3057define i64 @imm_2147486378() {3058; RV32I-LABEL: imm_2147486378:3059; RV32I:       # %bb.0:3060; RV32I-NEXT:    lui a0, 5242883061; RV32I-NEXT:    addi a0, a0, 13653062; RV32I-NEXT:    li a1, 03063; RV32I-NEXT:    ret3064;3065; RV32IXQCILI-LABEL: imm_2147486378:3066; RV32IXQCILI:       # %bb.0:3067; RV32IXQCILI-NEXT:    qc.e.li a0, -21474822833068; RV32IXQCILI-NEXT:    li a1, 03069; RV32IXQCILI-NEXT:    ret3070;3071; RV64I-LABEL: imm_2147486378:3072; RV64I:       # %bb.0:3073; RV64I-NEXT:    li a0, 13074; RV64I-NEXT:    slli a0, a0, 313075; RV64I-NEXT:    addi a0, a0, 13653076; RV64I-NEXT:    ret3077;3078; RV64IZBA-LABEL: imm_2147486378:3079; RV64IZBA:       # %bb.0:3080; RV64IZBA-NEXT:    li a0, 13081; RV64IZBA-NEXT:    slli a0, a0, 313082; RV64IZBA-NEXT:    addi a0, a0, 13653083; RV64IZBA-NEXT:    ret3084;3085; RV64IZBB-LABEL: imm_2147486378:3086; RV64IZBB:       # %bb.0:3087; RV64IZBB-NEXT:    li a0, 13088; RV64IZBB-NEXT:    slli a0, a0, 313089; RV64IZBB-NEXT:    addi a0, a0, 13653090; RV64IZBB-NEXT:    ret3091;3092; RV64IZBS-LABEL: imm_2147486378:3093; RV64IZBS:       # %bb.0:3094; RV64IZBS-NEXT:    li a0, 13653095; RV64IZBS-NEXT:    bseti a0, a0, 313096; RV64IZBS-NEXT:    ret3097;3098; RV64IXTHEADBB-LABEL: imm_2147486378:3099; RV64IXTHEADBB:       # %bb.0:3100; RV64IXTHEADBB-NEXT:    li a0, 13101; RV64IXTHEADBB-NEXT:    slli a0, a0, 313102; RV64IXTHEADBB-NEXT:    addi a0, a0, 13653103; RV64IXTHEADBB-NEXT:    ret3104;3105; RV32-REMAT-LABEL: imm_2147486378:3106; RV32-REMAT:       # %bb.0:3107; RV32-REMAT-NEXT:    lui a0, 5242883108; RV32-REMAT-NEXT:    addi a0, a0, 13653109; RV32-REMAT-NEXT:    li a1, 03110; RV32-REMAT-NEXT:    ret3111;3112; RV64-REMAT-LABEL: imm_2147486378:3113; RV64-REMAT:       # %bb.0:3114; RV64-REMAT-NEXT:    li a0, 13115; RV64-REMAT-NEXT:    slli a0, a0, 313116; RV64-REMAT-NEXT:    addi a0, a0, 13653117; RV64-REMAT-NEXT:    ret3118  ret i64 21474850133119}3120 3121define i64 @imm_neg_2147485013() {3122; RV32I-LABEL: imm_neg_2147485013:3123; RV32I:       # %bb.0:3124; RV32I-NEXT:    lui a0, 5242883125; RV32I-NEXT:    addi a0, a0, -13653126; RV32I-NEXT:    li a1, -13127; RV32I-NEXT:    ret3128;3129; RV32IXQCILI-LABEL: imm_neg_2147485013:3130; RV32IXQCILI:       # %bb.0:3131; RV32IXQCILI-NEXT:    qc.e.li a0, 21474822833132; RV32IXQCILI-NEXT:    li a1, -13133; RV32IXQCILI-NEXT:    ret3134;3135; RV64I-LABEL: imm_neg_2147485013:3136; RV64I:       # %bb.0:3137; RV64I-NEXT:    lui a0, 5242883138; RV64I-NEXT:    addi a0, a0, -13653139; RV64I-NEXT:    ret3140;3141; RV64IZBA-LABEL: imm_neg_2147485013:3142; RV64IZBA:       # %bb.0:3143; RV64IZBA-NEXT:    lui a0, 5242883144; RV64IZBA-NEXT:    addi a0, a0, -13653145; RV64IZBA-NEXT:    ret3146;3147; RV64IZBB-LABEL: imm_neg_2147485013:3148; RV64IZBB:       # %bb.0:3149; RV64IZBB-NEXT:    lui a0, 5242883150; RV64IZBB-NEXT:    addi a0, a0, -13653151; RV64IZBB-NEXT:    ret3152;3153; RV64IZBS-LABEL: imm_neg_2147485013:3154; RV64IZBS:       # %bb.0:3155; RV64IZBS-NEXT:    lui a0, 5242883156; RV64IZBS-NEXT:    addi a0, a0, -13653157; RV64IZBS-NEXT:    ret3158;3159; RV64IXTHEADBB-LABEL: imm_neg_2147485013:3160; RV64IXTHEADBB:       # %bb.0:3161; RV64IXTHEADBB-NEXT:    lui a0, 5242883162; RV64IXTHEADBB-NEXT:    addi a0, a0, -13653163; RV64IXTHEADBB-NEXT:    ret3164;3165; RV32-REMAT-LABEL: imm_neg_2147485013:3166; RV32-REMAT:       # %bb.0:3167; RV32-REMAT-NEXT:    lui a0, 5242883168; RV32-REMAT-NEXT:    addi a0, a0, -13653169; RV32-REMAT-NEXT:    li a1, -13170; RV32-REMAT-NEXT:    ret3171;3172; RV64-REMAT-LABEL: imm_neg_2147485013:3173; RV64-REMAT:       # %bb.0:3174; RV64-REMAT-NEXT:    lui a0, 5242883175; RV64-REMAT-NEXT:    addi a0, a0, -13653176; RV64-REMAT-NEXT:    ret3177  ret i64 -21474850133178}3179 3180define i64 @imm_12900924131259() {3181; RV32I-LABEL: imm_12900924131259:3182; RV32I:       # %bb.0:3183; RV32I-NEXT:    lui a0, 7659523184; RV32I-NEXT:    lui a1, 13185; RV32I-NEXT:    addi a0, a0, 19793186; RV32I-NEXT:    addi a1, a1, -10933187; RV32I-NEXT:    ret3188;3189; RV32IXQCILI-LABEL: imm_12900924131259:3190; RV32IXQCILI:       # %bb.0:3191; RV32IXQCILI-NEXT:    qc.e.li a0, -11576259253192; RV32IXQCILI-NEXT:    qc.li a1, 30033193; RV32IXQCILI-NEXT:    ret3194;3195; RV64I-LABEL: imm_12900924131259:3196; RV64I:       # %bb.0:3197; RV64I-NEXT:    lui a0, 1883198; RV64I-NEXT:    addi a0, a0, -10933199; RV64I-NEXT:    slli a0, a0, 243200; RV64I-NEXT:    addi a0, a0, 19793201; RV64I-NEXT:    ret3202;3203; RV64IZBA-LABEL: imm_12900924131259:3204; RV64IZBA:       # %bb.0:3205; RV64IZBA-NEXT:    lui a0, 7689553206; RV64IZBA-NEXT:    slli.uw a0, a0, 123207; RV64IZBA-NEXT:    addi a0, a0, 19793208; RV64IZBA-NEXT:    ret3209;3210; RV64IZBB-LABEL: imm_12900924131259:3211; RV64IZBB:       # %bb.0:3212; RV64IZBB-NEXT:    lui a0, 1883213; RV64IZBB-NEXT:    addi a0, a0, -10933214; RV64IZBB-NEXT:    slli a0, a0, 243215; RV64IZBB-NEXT:    addi a0, a0, 19793216; RV64IZBB-NEXT:    ret3217;3218; RV64IZBS-LABEL: imm_12900924131259:3219; RV64IZBS:       # %bb.0:3220; RV64IZBS-NEXT:    lui a0, 1883221; RV64IZBS-NEXT:    addi a0, a0, -10933222; RV64IZBS-NEXT:    slli a0, a0, 243223; RV64IZBS-NEXT:    addi a0, a0, 19793224; RV64IZBS-NEXT:    ret3225;3226; RV64IXTHEADBB-LABEL: imm_12900924131259:3227; RV64IXTHEADBB:       # %bb.0:3228; RV64IXTHEADBB-NEXT:    lui a0, 1883229; RV64IXTHEADBB-NEXT:    addi a0, a0, -10933230; RV64IXTHEADBB-NEXT:    slli a0, a0, 243231; RV64IXTHEADBB-NEXT:    addi a0, a0, 19793232; RV64IXTHEADBB-NEXT:    ret3233;3234; RV32-REMAT-LABEL: imm_12900924131259:3235; RV32-REMAT:       # %bb.0:3236; RV32-REMAT-NEXT:    lui a0, 7659523237; RV32-REMAT-NEXT:    addi a0, a0, 19793238; RV32-REMAT-NEXT:    lui a1, 13239; RV32-REMAT-NEXT:    addi a1, a1, -10933240; RV32-REMAT-NEXT:    ret3241;3242; RV64-REMAT-LABEL: imm_12900924131259:3243; RV64-REMAT:       # %bb.0:3244; RV64-REMAT-NEXT:    lui a0, 1883245; RV64-REMAT-NEXT:    addi a0, a0, -10933246; RV64-REMAT-NEXT:    slli a0, a0, 243247; RV64-REMAT-NEXT:    addi a0, a0, 19793248; RV64-REMAT-NEXT:    ret3249  ret i64 129009241312593250}3251 3252define i64 @imm_50394234880() {3253; RV32I-LABEL: imm_50394234880:3254; RV32I:       # %bb.0:3255; RV32I-NEXT:    lui a0, 7689443256; RV32I-NEXT:    li a1, 113257; RV32I-NEXT:    ret3258;3259; RV32IXQCILI-LABEL: imm_50394234880:3260; RV32IXQCILI:       # %bb.0:3261; RV32IXQCILI-NEXT:    lui a0, 7689443262; RV32IXQCILI-NEXT:    li a1, 113263; RV32IXQCILI-NEXT:    ret3264;3265; RV64I-LABEL: imm_50394234880:3266; RV64I:       # %bb.0:3267; RV64I-NEXT:    lui a0, 1883268; RV64I-NEXT:    addi a0, a0, -10933269; RV64I-NEXT:    slli a0, a0, 163270; RV64I-NEXT:    ret3271;3272; RV64IZBA-LABEL: imm_50394234880:3273; RV64IZBA:       # %bb.0:3274; RV64IZBA-NEXT:    lui a0, 7689553275; RV64IZBA-NEXT:    slli.uw a0, a0, 43276; RV64IZBA-NEXT:    ret3277;3278; RV64IZBB-LABEL: imm_50394234880:3279; RV64IZBB:       # %bb.0:3280; RV64IZBB-NEXT:    lui a0, 1883281; RV64IZBB-NEXT:    addi a0, a0, -10933282; RV64IZBB-NEXT:    slli a0, a0, 163283; RV64IZBB-NEXT:    ret3284;3285; RV64IZBS-LABEL: imm_50394234880:3286; RV64IZBS:       # %bb.0:3287; RV64IZBS-NEXT:    lui a0, 1883288; RV64IZBS-NEXT:    addi a0, a0, -10933289; RV64IZBS-NEXT:    slli a0, a0, 163290; RV64IZBS-NEXT:    ret3291;3292; RV64IXTHEADBB-LABEL: imm_50394234880:3293; RV64IXTHEADBB:       # %bb.0:3294; RV64IXTHEADBB-NEXT:    lui a0, 1883295; RV64IXTHEADBB-NEXT:    addi a0, a0, -10933296; RV64IXTHEADBB-NEXT:    slli a0, a0, 163297; RV64IXTHEADBB-NEXT:    ret3298;3299; RV32-REMAT-LABEL: imm_50394234880:3300; RV32-REMAT:       # %bb.0:3301; RV32-REMAT-NEXT:    lui a0, 7689443302; RV32-REMAT-NEXT:    li a1, 113303; RV32-REMAT-NEXT:    ret3304;3305; RV64-REMAT-LABEL: imm_50394234880:3306; RV64-REMAT:       # %bb.0:3307; RV64-REMAT-NEXT:    lui a0, 1883308; RV64-REMAT-NEXT:    addi a0, a0, -10933309; RV64-REMAT-NEXT:    slli a0, a0, 163310; RV64-REMAT-NEXT:    ret3311  ret i64 503942348803312}3313 3314define i64 @imm_12900936431479() {3315; RV32I-LABEL: imm_12900936431479:3316; RV32I:       # %bb.0:3317; RV32I-NEXT:    lui a0, 7689553318; RV32I-NEXT:    lui a1, 13319; RV32I-NEXT:    addi a0, a0, 19113320; RV32I-NEXT:    addi a1, a1, -10933321; RV32I-NEXT:    ret3322;3323; RV32IXQCILI-LABEL: imm_12900936431479:3324; RV32IXQCILI:       # %bb.0:3325; RV32IXQCILI-NEXT:    qc.e.li a0, -11453257053326; RV32IXQCILI-NEXT:    qc.li a1, 30033327; RV32IXQCILI-NEXT:    ret3328;3329; RV64I-LABEL: imm_12900936431479:3330; RV64I:       # %bb.0:3331; RV64I-NEXT:    lui a0, 1922393332; RV64I-NEXT:    slli a0, a0, 23333; RV64I-NEXT:    addi a0, a0, -10933334; RV64I-NEXT:    slli a0, a0, 123335; RV64I-NEXT:    addi a0, a0, 19113336; RV64I-NEXT:    ret3337;3338; RV64IZBA-LABEL: imm_12900936431479:3339; RV64IZBA:       # %bb.0:3340; RV64IZBA-NEXT:    lui a0, 7689563341; RV64IZBA-NEXT:    addi a0, a0, -10933342; RV64IZBA-NEXT:    slli.uw a0, a0, 123343; RV64IZBA-NEXT:    addi a0, a0, 19113344; RV64IZBA-NEXT:    ret3345;3346; RV64IZBB-LABEL: imm_12900936431479:3347; RV64IZBB:       # %bb.0:3348; RV64IZBB-NEXT:    lui a0, 1922393349; RV64IZBB-NEXT:    slli a0, a0, 23350; RV64IZBB-NEXT:    addi a0, a0, -10933351; RV64IZBB-NEXT:    slli a0, a0, 123352; RV64IZBB-NEXT:    addi a0, a0, 19113353; RV64IZBB-NEXT:    ret3354;3355; RV64IZBS-LABEL: imm_12900936431479:3356; RV64IZBS:       # %bb.0:3357; RV64IZBS-NEXT:    lui a0, 1922393358; RV64IZBS-NEXT:    slli a0, a0, 23359; RV64IZBS-NEXT:    addi a0, a0, -10933360; RV64IZBS-NEXT:    slli a0, a0, 123361; RV64IZBS-NEXT:    addi a0, a0, 19113362; RV64IZBS-NEXT:    ret3363;3364; RV64IXTHEADBB-LABEL: imm_12900936431479:3365; RV64IXTHEADBB:       # %bb.0:3366; RV64IXTHEADBB-NEXT:    lui a0, 1922393367; RV64IXTHEADBB-NEXT:    slli a0, a0, 23368; RV64IXTHEADBB-NEXT:    addi a0, a0, -10933369; RV64IXTHEADBB-NEXT:    slli a0, a0, 123370; RV64IXTHEADBB-NEXT:    addi a0, a0, 19113371; RV64IXTHEADBB-NEXT:    ret3372;3373; RV32-REMAT-LABEL: imm_12900936431479:3374; RV32-REMAT:       # %bb.0:3375; RV32-REMAT-NEXT:    lui a0, 7689553376; RV32-REMAT-NEXT:    addi a0, a0, 19113377; RV32-REMAT-NEXT:    lui a1, 13378; RV32-REMAT-NEXT:    addi a1, a1, -10933379; RV32-REMAT-NEXT:    ret3380;3381; RV64-REMAT-LABEL: imm_12900936431479:3382; RV64-REMAT:       # %bb.0:3383; RV64-REMAT-NEXT:    lui a0, 1922393384; RV64-REMAT-NEXT:    slli a0, a0, 23385; RV64-REMAT-NEXT:    addi a0, a0, -10933386; RV64-REMAT-NEXT:    slli a0, a0, 123387; RV64-REMAT-NEXT:    addi a0, a0, 19113388; RV64-REMAT-NEXT:    ret3389  ret i64 129009364314793390}3391 3392define i64 @imm_12900918536874() {3393; RV32I-LABEL: imm_12900918536874:3394; RV32I:       # %bb.0:3395; RV32I-NEXT:    lui a0, 7645873396; RV32I-NEXT:    lui a1, 13397; RV32I-NEXT:    addi a0, a0, -13663398; RV32I-NEXT:    addi a1, a1, -10933399; RV32I-NEXT:    ret3400;3401; RV32IXQCILI-LABEL: imm_12900918536874:3402; RV32IXQCILI:       # %bb.0:3403; RV32IXQCILI-NEXT:    qc.e.li a0, -11632203103404; RV32IXQCILI-NEXT:    qc.li a1, 30033405; RV32IXQCILI-NEXT:    ret3406;3407; RV64I-LABEL: imm_12900918536874:3408; RV64I:       # %bb.0:3409; RV64I-NEXT:    lui a0, 3844773410; RV64I-NEXT:    addi a0, a0, 13653411; RV64I-NEXT:    slli a0, a0, 123412; RV64I-NEXT:    addi a0, a0, 13653413; RV64I-NEXT:    slli a0, a0, 13414; RV64I-NEXT:    ret3415;3416; RV64IZBA-LABEL: imm_12900918536874:3417; RV64IZBA:       # %bb.0:3418; RV64IZBA-NEXT:    lui a0, 7689553419; RV64IZBA-NEXT:    addi a0, a0, -13653420; RV64IZBA-NEXT:    slli.uw a0, a0, 123421; RV64IZBA-NEXT:    addi a0, a0, -13663422; RV64IZBA-NEXT:    ret3423;3424; RV64IZBB-LABEL: imm_12900918536874:3425; RV64IZBB:       # %bb.0:3426; RV64IZBB-NEXT:    lui a0, 3844773427; RV64IZBB-NEXT:    addi a0, a0, 13653428; RV64IZBB-NEXT:    slli a0, a0, 123429; RV64IZBB-NEXT:    addi a0, a0, 13653430; RV64IZBB-NEXT:    slli a0, a0, 13431; RV64IZBB-NEXT:    ret3432;3433; RV64IZBS-LABEL: imm_12900918536874:3434; RV64IZBS:       # %bb.0:3435; RV64IZBS-NEXT:    lui a0, 3844773436; RV64IZBS-NEXT:    addi a0, a0, 13653437; RV64IZBS-NEXT:    slli a0, a0, 123438; RV64IZBS-NEXT:    addi a0, a0, 13653439; RV64IZBS-NEXT:    slli a0, a0, 13440; RV64IZBS-NEXT:    ret3441;3442; RV64IXTHEADBB-LABEL: imm_12900918536874:3443; RV64IXTHEADBB:       # %bb.0:3444; RV64IXTHEADBB-NEXT:    lui a0, 3844773445; RV64IXTHEADBB-NEXT:    addi a0, a0, 13653446; RV64IXTHEADBB-NEXT:    slli a0, a0, 123447; RV64IXTHEADBB-NEXT:    addi a0, a0, 13653448; RV64IXTHEADBB-NEXT:    slli a0, a0, 13449; RV64IXTHEADBB-NEXT:    ret3450;3451; RV32-REMAT-LABEL: imm_12900918536874:3452; RV32-REMAT:       # %bb.0:3453; RV32-REMAT-NEXT:    lui a0, 7645873454; RV32-REMAT-NEXT:    addi a0, a0, -13663455; RV32-REMAT-NEXT:    lui a1, 13456; RV32-REMAT-NEXT:    addi a1, a1, -10933457; RV32-REMAT-NEXT:    ret3458;3459; RV64-REMAT-LABEL: imm_12900918536874:3460; RV64-REMAT:       # %bb.0:3461; RV64-REMAT-NEXT:    lui a0, 3844773462; RV64-REMAT-NEXT:    addi a0, a0, 13653463; RV64-REMAT-NEXT:    slli a0, a0, 123464; RV64-REMAT-NEXT:    addi a0, a0, 13653465; RV64-REMAT-NEXT:    slli a0, a0, 13466; RV64-REMAT-NEXT:    ret3467  ret i64 129009185368743468}3469 3470define i64 @imm_12900925247761() {3471; RV32I-LABEL: imm_12900925247761:3472; RV32I:       # %bb.0:3473; RV32I-NEXT:    lui a0, 7662253474; RV32I-NEXT:    lui a1, 13475; RV32I-NEXT:    addi a0, a0, 2733476; RV32I-NEXT:    addi a1, a1, -10933477; RV32I-NEXT:    ret3478;3479; RV32IXQCILI-LABEL: imm_12900925247761:3480; RV32IXQCILI:       # %bb.0:3481; RV32IXQCILI-NEXT:    qc.e.li a0, -11565094233482; RV32IXQCILI-NEXT:    qc.li a1, 30033483; RV32IXQCILI-NEXT:    ret3484;3485; RV64I-LABEL: imm_12900925247761:3486; RV64I:       # %bb.0:3487; RV64I-NEXT:    lui a0, 3844783488; RV64I-NEXT:    addi a0, a0, -19113489; RV64I-NEXT:    slli a0, a0, 133490; RV64I-NEXT:    addi a0, a0, -20483491; RV64I-NEXT:    addi a0, a0, -17753492; RV64I-NEXT:    ret3493;3494; RV64IZBA-LABEL: imm_12900925247761:3495; RV64IZBA:       # %bb.0:3496; RV64IZBA-NEXT:    lui a0, 7689553497; RV64IZBA-NEXT:    addi a0, a0, 2733498; RV64IZBA-NEXT:    slli.uw a0, a0, 123499; RV64IZBA-NEXT:    addi a0, a0, 2733500; RV64IZBA-NEXT:    ret3501;3502; RV64IZBB-LABEL: imm_12900925247761:3503; RV64IZBB:       # %bb.0:3504; RV64IZBB-NEXT:    lui a0, 3844783505; RV64IZBB-NEXT:    addi a0, a0, -19113506; RV64IZBB-NEXT:    slli a0, a0, 133507; RV64IZBB-NEXT:    addi a0, a0, -20483508; RV64IZBB-NEXT:    addi a0, a0, -17753509; RV64IZBB-NEXT:    ret3510;3511; RV64IZBS-LABEL: imm_12900925247761:3512; RV64IZBS:       # %bb.0:3513; RV64IZBS-NEXT:    lui a0, 3844783514; RV64IZBS-NEXT:    addi a0, a0, -19113515; RV64IZBS-NEXT:    slli a0, a0, 133516; RV64IZBS-NEXT:    addi a0, a0, -20483517; RV64IZBS-NEXT:    addi a0, a0, -17753518; RV64IZBS-NEXT:    ret3519;3520; RV64IXTHEADBB-LABEL: imm_12900925247761:3521; RV64IXTHEADBB:       # %bb.0:3522; RV64IXTHEADBB-NEXT:    lui a0, 3844783523; RV64IXTHEADBB-NEXT:    addi a0, a0, -19113524; RV64IXTHEADBB-NEXT:    slli a0, a0, 133525; RV64IXTHEADBB-NEXT:    addi a0, a0, -20483526; RV64IXTHEADBB-NEXT:    addi a0, a0, -17753527; RV64IXTHEADBB-NEXT:    ret3528;3529; RV32-REMAT-LABEL: imm_12900925247761:3530; RV32-REMAT:       # %bb.0:3531; RV32-REMAT-NEXT:    lui a0, 7662253532; RV32-REMAT-NEXT:    addi a0, a0, 2733533; RV32-REMAT-NEXT:    lui a1, 13534; RV32-REMAT-NEXT:    addi a1, a1, -10933535; RV32-REMAT-NEXT:    ret3536;3537; RV64-REMAT-LABEL: imm_12900925247761:3538; RV64-REMAT:       # %bb.0:3539; RV64-REMAT-NEXT:    lui a0, 3844783540; RV64-REMAT-NEXT:    addi a0, a0, -19113541; RV64-REMAT-NEXT:    slli a0, a0, 133542; RV64-REMAT-NEXT:    addi a0, a0, -20483543; RV64-REMAT-NEXT:    addi a0, a0, -17753544; RV64-REMAT-NEXT:    ret3545  ret i64 129009252477613546}3547 3548define i64 @imm_7158272001() {3549; RV32I-LABEL: imm_7158272001:3550; RV32I:       # %bb.0:3551; RV32I-NEXT:    lui a0, 6990493552; RV32I-NEXT:    addi a0, a0, 13553; RV32I-NEXT:    li a1, 13554; RV32I-NEXT:    ret3555;3556; RV32IXQCILI-LABEL: imm_7158272001:3557; RV32IXQCILI:       # %bb.0:3558; RV32IXQCILI-NEXT:    qc.e.li a0, -14316625913559; RV32IXQCILI-NEXT:    li a1, 13560; RV32IXQCILI-NEXT:    ret3561;3562; RV64I-LABEL: imm_7158272001:3563; RV64I:       # %bb.0:3564; RV64I-NEXT:    lui a0, 4273565; RV64I-NEXT:    addi a0, a0, -13673566; RV64I-NEXT:    slli a0, a0, 123567; RV64I-NEXT:    addi a0, a0, 13568; RV64I-NEXT:    ret3569;3570; RV64IZBA-LABEL: imm_7158272001:3571; RV64IZBA:       # %bb.0:3572; RV64IZBA-NEXT:    lui a0, 3495253573; RV64IZBA-NEXT:    sh2add a0, a0, a03574; RV64IZBA-NEXT:    addi a0, a0, 13575; RV64IZBA-NEXT:    ret3576;3577; RV64IZBB-LABEL: imm_7158272001:3578; RV64IZBB:       # %bb.0:3579; RV64IZBB-NEXT:    lui a0, 4273580; RV64IZBB-NEXT:    addi a0, a0, -13673581; RV64IZBB-NEXT:    slli a0, a0, 123582; RV64IZBB-NEXT:    addi a0, a0, 13583; RV64IZBB-NEXT:    ret3584;3585; RV64IZBS-LABEL: imm_7158272001:3586; RV64IZBS:       # %bb.0:3587; RV64IZBS-NEXT:    lui a0, 4273588; RV64IZBS-NEXT:    addi a0, a0, -13673589; RV64IZBS-NEXT:    slli a0, a0, 123590; RV64IZBS-NEXT:    addi a0, a0, 13591; RV64IZBS-NEXT:    ret3592;3593; RV64IXTHEADBB-LABEL: imm_7158272001:3594; RV64IXTHEADBB:       # %bb.0:3595; RV64IXTHEADBB-NEXT:    lui a0, 4273596; RV64IXTHEADBB-NEXT:    addi a0, a0, -13673597; RV64IXTHEADBB-NEXT:    slli a0, a0, 123598; RV64IXTHEADBB-NEXT:    addi a0, a0, 13599; RV64IXTHEADBB-NEXT:    ret3600;3601; RV32-REMAT-LABEL: imm_7158272001:3602; RV32-REMAT:       # %bb.0:3603; RV32-REMAT-NEXT:    lui a0, 6990493604; RV32-REMAT-NEXT:    addi a0, a0, 13605; RV32-REMAT-NEXT:    li a1, 13606; RV32-REMAT-NEXT:    ret3607;3608; RV64-REMAT-LABEL: imm_7158272001:3609; RV64-REMAT:       # %bb.0:3610; RV64-REMAT-NEXT:    lui a0, 4273611; RV64-REMAT-NEXT:    addi a0, a0, -13673612; RV64-REMAT-NEXT:    slli a0, a0, 123613; RV64-REMAT-NEXT:    addi a0, a0, 13614; RV64-REMAT-NEXT:    ret3615  ret i64 7158272001 ; 0x0000_0001_aaaa_90013616}3617 3618define i64 @imm_12884889601() {3619; RV32I-LABEL: imm_12884889601:3620; RV32I:       # %bb.0:3621; RV32I-NEXT:    lui a0, 10485733622; RV32I-NEXT:    addi a0, a0, 13623; RV32I-NEXT:    li a1, 23624; RV32I-NEXT:    ret3625;3626; RV32IXQCILI-LABEL: imm_12884889601:3627; RV32IXQCILI:       # %bb.0:3628; RV32IXQCILI-NEXT:    qc.li a0, -122873629; RV32IXQCILI-NEXT:    li a1, 23630; RV32IXQCILI-NEXT:    ret3631;3632; RV64I-LABEL: imm_12884889601:3633; RV64I:       # %bb.0:3634; RV64I-NEXT:    lui a0, 7683635; RV64I-NEXT:    addi a0, a0, -33636; RV64I-NEXT:    slli a0, a0, 123637; RV64I-NEXT:    addi a0, a0, 13638; RV64I-NEXT:    ret3639;3640; RV64IZBA-LABEL: imm_12884889601:3641; RV64IZBA:       # %bb.0:3642; RV64IZBA-NEXT:    lui a0, 3495253643; RV64IZBA-NEXT:    sh3add a0, a0, a03644; RV64IZBA-NEXT:    addi a0, a0, 13645; RV64IZBA-NEXT:    ret3646;3647; RV64IZBB-LABEL: imm_12884889601:3648; RV64IZBB:       # %bb.0:3649; RV64IZBB-NEXT:    lui a0, 7683650; RV64IZBB-NEXT:    addi a0, a0, -33651; RV64IZBB-NEXT:    slli a0, a0, 123652; RV64IZBB-NEXT:    addi a0, a0, 13653; RV64IZBB-NEXT:    ret3654;3655; RV64IZBS-LABEL: imm_12884889601:3656; RV64IZBS:       # %bb.0:3657; RV64IZBS-NEXT:    lui a0, 7683658; RV64IZBS-NEXT:    addi a0, a0, -33659; RV64IZBS-NEXT:    slli a0, a0, 123660; RV64IZBS-NEXT:    addi a0, a0, 13661; RV64IZBS-NEXT:    ret3662;3663; RV64IXTHEADBB-LABEL: imm_12884889601:3664; RV64IXTHEADBB:       # %bb.0:3665; RV64IXTHEADBB-NEXT:    lui a0, 7683666; RV64IXTHEADBB-NEXT:    addi a0, a0, -33667; RV64IXTHEADBB-NEXT:    slli a0, a0, 123668; RV64IXTHEADBB-NEXT:    addi a0, a0, 13669; RV64IXTHEADBB-NEXT:    ret3670;3671; RV32-REMAT-LABEL: imm_12884889601:3672; RV32-REMAT:       # %bb.0:3673; RV32-REMAT-NEXT:    lui a0, 10485733674; RV32-REMAT-NEXT:    addi a0, a0, 13675; RV32-REMAT-NEXT:    li a1, 23676; RV32-REMAT-NEXT:    ret3677;3678; RV64-REMAT-LABEL: imm_12884889601:3679; RV64-REMAT:       # %bb.0:3680; RV64-REMAT-NEXT:    lui a0, 7683681; RV64-REMAT-NEXT:    addi a0, a0, -33682; RV64-REMAT-NEXT:    slli a0, a0, 123683; RV64-REMAT-NEXT:    addi a0, a0, 13684; RV64-REMAT-NEXT:    ret3685  ret i64 12884889601 ; 0x0000_0002_ffff_d0013686}3687 3688define i64 @imm_neg_3435982847() {3689; RV32I-LABEL: imm_neg_3435982847:3690; RV32I:       # %bb.0:3691; RV32I-NEXT:    lui a0, 2097133692; RV32I-NEXT:    addi a0, a0, 13693; RV32I-NEXT:    li a1, -13694; RV32I-NEXT:    ret3695;3696; RV32IXQCILI-LABEL: imm_neg_3435982847:3697; RV32IXQCILI:       # %bb.0:3698; RV32IXQCILI-NEXT:    qc.e.li a0, 8589844493699; RV32IXQCILI-NEXT:    li a1, -13700; RV32IXQCILI-NEXT:    ret3701;3702; RV64I-LABEL: imm_neg_3435982847:3703; RV64I:       # %bb.0:3704; RV64I-NEXT:    lui a0, 10483713705; RV64I-NEXT:    addi a0, a0, 8173706; RV64I-NEXT:    slli a0, a0, 123707; RV64I-NEXT:    addi a0, a0, 13708; RV64I-NEXT:    ret3709;3710; RV64IZBA-LABEL: imm_neg_3435982847:3711; RV64IZBA:       # %bb.0:3712; RV64IZBA-NEXT:    lui a0, 7689553713; RV64IZBA-NEXT:    sh1add a0, a0, a03714; RV64IZBA-NEXT:    addi a0, a0, 13715; RV64IZBA-NEXT:    ret3716;3717; RV64IZBB-LABEL: imm_neg_3435982847:3718; RV64IZBB:       # %bb.0:3719; RV64IZBB-NEXT:    lui a0, 10483713720; RV64IZBB-NEXT:    addi a0, a0, 8173721; RV64IZBB-NEXT:    slli a0, a0, 123722; RV64IZBB-NEXT:    addi a0, a0, 13723; RV64IZBB-NEXT:    ret3724;3725; RV64IZBS-LABEL: imm_neg_3435982847:3726; RV64IZBS:       # %bb.0:3727; RV64IZBS-NEXT:    lui a0, 7340013728; RV64IZBS-NEXT:    addi a0, a0, 13729; RV64IZBS-NEXT:    bclri a0, a0, 313730; RV64IZBS-NEXT:    ret3731;3732; RV64IXTHEADBB-LABEL: imm_neg_3435982847:3733; RV64IXTHEADBB:       # %bb.0:3734; RV64IXTHEADBB-NEXT:    lui a0, 10483713735; RV64IXTHEADBB-NEXT:    addi a0, a0, 8173736; RV64IXTHEADBB-NEXT:    slli a0, a0, 123737; RV64IXTHEADBB-NEXT:    addi a0, a0, 13738; RV64IXTHEADBB-NEXT:    ret3739;3740; RV32-REMAT-LABEL: imm_neg_3435982847:3741; RV32-REMAT:       # %bb.0:3742; RV32-REMAT-NEXT:    lui a0, 2097133743; RV32-REMAT-NEXT:    addi a0, a0, 13744; RV32-REMAT-NEXT:    li a1, -13745; RV32-REMAT-NEXT:    ret3746;3747; RV64-REMAT-LABEL: imm_neg_3435982847:3748; RV64-REMAT:       # %bb.0:3749; RV64-REMAT-NEXT:    lui a0, 10483713750; RV64-REMAT-NEXT:    addi a0, a0, 8173751; RV64-REMAT-NEXT:    slli a0, a0, 123752; RV64-REMAT-NEXT:    addi a0, a0, 13753; RV64-REMAT-NEXT:    ret3754  ret i64 -3435982847 ; 0xffff_ffff_3333_10013755}3756 3757define i64 @imm_neg_5726842879() {3758; RV32I-LABEL: imm_neg_5726842879:3759; RV32I:       # %bb.0:3760; RV32I-NEXT:    lui a0, 6989973761; RV32I-NEXT:    addi a0, a0, 13762; RV32I-NEXT:    li a1, -23763; RV32I-NEXT:    ret3764;3765; RV32IXQCILI-LABEL: imm_neg_5726842879:3766; RV32IXQCILI:       # %bb.0:3767; RV32IXQCILI-NEXT:    qc.e.li a0, -14318755833768; RV32IXQCILI-NEXT:    li a1, -23769; RV32IXQCILI-NEXT:    ret3770;3771; RV64I-LABEL: imm_neg_5726842879:3772; RV64I:       # %bb.0:3773; RV64I-NEXT:    lui a0, 10482353774; RV64I-NEXT:    addi a0, a0, -14193775; RV64I-NEXT:    slli a0, a0, 123776; RV64I-NEXT:    addi a0, a0, 13777; RV64I-NEXT:    ret3778;3779; RV64IZBA-LABEL: imm_neg_5726842879:3780; RV64IZBA:       # %bb.0:3781; RV64IZBA-NEXT:    lui a0, 7689453782; RV64IZBA-NEXT:    sh2add a0, a0, a03783; RV64IZBA-NEXT:    addi a0, a0, 13784; RV64IZBA-NEXT:    ret3785;3786; RV64IZBB-LABEL: imm_neg_5726842879:3787; RV64IZBB:       # %bb.0:3788; RV64IZBB-NEXT:    lui a0, 10482353789; RV64IZBB-NEXT:    addi a0, a0, -14193790; RV64IZBB-NEXT:    slli a0, a0, 123791; RV64IZBB-NEXT:    addi a0, a0, 13792; RV64IZBB-NEXT:    ret3793;3794; RV64IZBS-LABEL: imm_neg_5726842879:3795; RV64IZBS:       # %bb.0:3796; RV64IZBS-NEXT:    lui a0, 6989973797; RV64IZBS-NEXT:    addi a0, a0, 13798; RV64IZBS-NEXT:    bclri a0, a0, 323799; RV64IZBS-NEXT:    ret3800;3801; RV64IXTHEADBB-LABEL: imm_neg_5726842879:3802; RV64IXTHEADBB:       # %bb.0:3803; RV64IXTHEADBB-NEXT:    lui a0, 10482353804; RV64IXTHEADBB-NEXT:    addi a0, a0, -14193805; RV64IXTHEADBB-NEXT:    slli a0, a0, 123806; RV64IXTHEADBB-NEXT:    addi a0, a0, 13807; RV64IXTHEADBB-NEXT:    ret3808;3809; RV32-REMAT-LABEL: imm_neg_5726842879:3810; RV32-REMAT:       # %bb.0:3811; RV32-REMAT-NEXT:    lui a0, 6989973812; RV32-REMAT-NEXT:    addi a0, a0, 13813; RV32-REMAT-NEXT:    li a1, -23814; RV32-REMAT-NEXT:    ret3815;3816; RV64-REMAT-LABEL: imm_neg_5726842879:3817; RV64-REMAT:       # %bb.0:3818; RV64-REMAT-NEXT:    lui a0, 10482353819; RV64-REMAT-NEXT:    addi a0, a0, -14193820; RV64-REMAT-NEXT:    slli a0, a0, 123821; RV64-REMAT-NEXT:    addi a0, a0, 13822; RV64-REMAT-NEXT:    ret3823  ret i64 -5726842879 ; 0xffff_fffe_aaa7_50013824}3825 3826define i64 @imm_neg_10307948543() {3827; RV32I-LABEL: imm_neg_10307948543:3828; RV32I:       # %bb.0:3829; RV32I-NEXT:    lui a0, 6291393830; RV32I-NEXT:    addi a0, a0, 13831; RV32I-NEXT:    li a1, -33832; RV32I-NEXT:    ret3833;3834; RV32IXQCILI-LABEL: imm_neg_10307948543:3835; RV32IXQCILI:       # %bb.0:3836; RV32IXQCILI-NEXT:    qc.e.li a0, -17180139513837; RV32IXQCILI-NEXT:    li a1, -33838; RV32IXQCILI-NEXT:    ret3839;3840; RV64I-LABEL: imm_neg_10307948543:3841; RV64I:       # %bb.0:3842; RV64I-NEXT:    lui a0, 10479623843; RV64I-NEXT:    addi a0, a0, -16453844; RV64I-NEXT:    slli a0, a0, 123845; RV64I-NEXT:    addi a0, a0, 13846; RV64I-NEXT:    ret3847;3848; RV64IZBA-LABEL: imm_neg_10307948543:3849; RV64IZBA:       # %bb.0:3850; RV64IZBA-NEXT:    lui a0, 7689553851; RV64IZBA-NEXT:    sh3add a0, a0, a03852; RV64IZBA-NEXT:    addi a0, a0, 13853; RV64IZBA-NEXT:    ret3854;3855; RV64IZBB-LABEL: imm_neg_10307948543:3856; RV64IZBB:       # %bb.0:3857; RV64IZBB-NEXT:    lui a0, 10479623858; RV64IZBB-NEXT:    addi a0, a0, -16453859; RV64IZBB-NEXT:    slli a0, a0, 123860; RV64IZBB-NEXT:    addi a0, a0, 13861; RV64IZBB-NEXT:    ret3862;3863; RV64IZBS-LABEL: imm_neg_10307948543:3864; RV64IZBS:       # %bb.0:3865; RV64IZBS-NEXT:    lui a0, 6291393866; RV64IZBS-NEXT:    addi a0, a0, 13867; RV64IZBS-NEXT:    bclri a0, a0, 333868; RV64IZBS-NEXT:    ret3869;3870; RV64IXTHEADBB-LABEL: imm_neg_10307948543:3871; RV64IXTHEADBB:       # %bb.0:3872; RV64IXTHEADBB-NEXT:    lui a0, 10479623873; RV64IXTHEADBB-NEXT:    addi a0, a0, -16453874; RV64IXTHEADBB-NEXT:    slli a0, a0, 123875; RV64IXTHEADBB-NEXT:    addi a0, a0, 13876; RV64IXTHEADBB-NEXT:    ret3877;3878; RV32-REMAT-LABEL: imm_neg_10307948543:3879; RV32-REMAT:       # %bb.0:3880; RV32-REMAT-NEXT:    lui a0, 6291393881; RV32-REMAT-NEXT:    addi a0, a0, 13882; RV32-REMAT-NEXT:    li a1, -33883; RV32-REMAT-NEXT:    ret3884;3885; RV64-REMAT-LABEL: imm_neg_10307948543:3886; RV64-REMAT:       # %bb.0:3887; RV64-REMAT-NEXT:    lui a0, 10479623888; RV64-REMAT-NEXT:    addi a0, a0, -16453889; RV64-REMAT-NEXT:    slli a0, a0, 123890; RV64-REMAT-NEXT:    addi a0, a0, 13891; RV64-REMAT-NEXT:    ret3892  ret i64 -10307948543 ; 0xffff_fffd_9999_30013893}3894 3895define i64 @li_rori_1() {3896; RV32I-LABEL: li_rori_1:3897; RV32I:       # %bb.0:3898; RV32I-NEXT:    lui a1, 10485673899; RV32I-NEXT:    addi a1, a1, 20473900; RV32I-NEXT:    li a0, -13901; RV32I-NEXT:    ret3902;3903; RV32IXQCILI-LABEL: li_rori_1:3904; RV32IXQCILI:       # %bb.0:3905; RV32IXQCILI-NEXT:    qc.li a1, -348173906; RV32IXQCILI-NEXT:    li a0, -13907; RV32IXQCILI-NEXT:    ret3908;3909; RV64I-LABEL: li_rori_1:3910; RV64I:       # %bb.0:3911; RV64I-NEXT:    li a0, -173912; RV64I-NEXT:    slli a0, a0, 433913; RV64I-NEXT:    addi a0, a0, -13914; RV64I-NEXT:    ret3915;3916; RV64IZBA-LABEL: li_rori_1:3917; RV64IZBA:       # %bb.0:3918; RV64IZBA-NEXT:    li a0, -173919; RV64IZBA-NEXT:    slli a0, a0, 433920; RV64IZBA-NEXT:    addi a0, a0, -13921; RV64IZBA-NEXT:    ret3922;3923; RV64IZBB-LABEL: li_rori_1:3924; RV64IZBB:       # %bb.0:3925; RV64IZBB-NEXT:    li a0, -183926; RV64IZBB-NEXT:    rori a0, a0, 213927; RV64IZBB-NEXT:    ret3928;3929; RV64IZBS-LABEL: li_rori_1:3930; RV64IZBS:       # %bb.0:3931; RV64IZBS-NEXT:    li a0, -173932; RV64IZBS-NEXT:    slli a0, a0, 433933; RV64IZBS-NEXT:    addi a0, a0, -13934; RV64IZBS-NEXT:    ret3935;3936; RV64IXTHEADBB-LABEL: li_rori_1:3937; RV64IXTHEADBB:       # %bb.0:3938; RV64IXTHEADBB-NEXT:    li a0, -183939; RV64IXTHEADBB-NEXT:    th.srri a0, a0, 213940; RV64IXTHEADBB-NEXT:    ret3941;3942; RV32-REMAT-LABEL: li_rori_1:3943; RV32-REMAT:       # %bb.0:3944; RV32-REMAT-NEXT:    lui a1, 10485673945; RV32-REMAT-NEXT:    addi a1, a1, 20473946; RV32-REMAT-NEXT:    li a0, -13947; RV32-REMAT-NEXT:    ret3948;3949; RV64-REMAT-LABEL: li_rori_1:3950; RV64-REMAT:       # %bb.0:3951; RV64-REMAT-NEXT:    li a0, -173952; RV64-REMAT-NEXT:    slli a0, a0, 433953; RV64-REMAT-NEXT:    addi a0, a0, -13954; RV64-REMAT-NEXT:    ret3955  ret i64 -1495335813775373956}3957 3958define i64 @li_rori_2() {3959; RV32I-LABEL: li_rori_2:3960; RV32I:       # %bb.0:3961; RV32I-NEXT:    lui a1, 7208963962; RV32I-NEXT:    addi a1, a1, -13963; RV32I-NEXT:    li a0, -63964; RV32I-NEXT:    ret3965;3966; RV32IXQCILI-LABEL: li_rori_2:3967; RV32IXQCILI:       # %bb.0:3968; RV32IXQCILI-NEXT:    qc.e.li a1, -13421772813969; RV32IXQCILI-NEXT:    li a0, -63970; RV32IXQCILI-NEXT:    ret3971;3972; RV64I-LABEL: li_rori_2:3973; RV64I:       # %bb.0:3974; RV64I-NEXT:    li a0, -53975; RV64I-NEXT:    slli a0, a0, 603976; RV64I-NEXT:    addi a0, a0, -63977; RV64I-NEXT:    ret3978;3979; RV64IZBA-LABEL: li_rori_2:3980; RV64IZBA:       # %bb.0:3981; RV64IZBA-NEXT:    li a0, -53982; RV64IZBA-NEXT:    slli a0, a0, 603983; RV64IZBA-NEXT:    addi a0, a0, -63984; RV64IZBA-NEXT:    ret3985;3986; RV64IZBB-LABEL: li_rori_2:3987; RV64IZBB:       # %bb.0:3988; RV64IZBB-NEXT:    li a0, -863989; RV64IZBB-NEXT:    rori a0, a0, 43990; RV64IZBB-NEXT:    ret3991;3992; RV64IZBS-LABEL: li_rori_2:3993; RV64IZBS:       # %bb.0:3994; RV64IZBS-NEXT:    li a0, -53995; RV64IZBS-NEXT:    slli a0, a0, 603996; RV64IZBS-NEXT:    addi a0, a0, -63997; RV64IZBS-NEXT:    ret3998;3999; RV64IXTHEADBB-LABEL: li_rori_2:4000; RV64IXTHEADBB:       # %bb.0:4001; RV64IXTHEADBB-NEXT:    li a0, -864002; RV64IXTHEADBB-NEXT:    th.srri a0, a0, 44003; RV64IXTHEADBB-NEXT:    ret4004;4005; RV32-REMAT-LABEL: li_rori_2:4006; RV32-REMAT:       # %bb.0:4007; RV32-REMAT-NEXT:    lui a1, 7208964008; RV32-REMAT-NEXT:    addi a1, a1, -14009; RV32-REMAT-NEXT:    li a0, -64010; RV32-REMAT-NEXT:    ret4011;4012; RV64-REMAT-LABEL: li_rori_2:4013; RV64-REMAT:       # %bb.0:4014; RV64-REMAT-NEXT:    li a0, -54015; RV64-REMAT-NEXT:    slli a0, a0, 604016; RV64-REMAT-NEXT:    addi a0, a0, -64017; RV64-REMAT-NEXT:    ret4018  ret i64 -57646075230342348864019}4020 4021define i64 @li_rori_3() {4022; RV32I-LABEL: li_rori_3:4023; RV32I:       # %bb.0:4024; RV32I-NEXT:    lui a0, 4915204025; RV32I-NEXT:    addi a0, a0, -14026; RV32I-NEXT:    li a1, -14027; RV32I-NEXT:    ret4028;4029; RV32IXQCILI-LABEL: li_rori_3:4030; RV32IXQCILI:       # %bb.0:4031; RV32IXQCILI-NEXT:    qc.e.li a0, 20132659194032; RV32IXQCILI-NEXT:    li a1, -14033; RV32IXQCILI-NEXT:    ret4034;4035; RV64I-LABEL: li_rori_3:4036; RV64I:       # %bb.0:4037; RV64I-NEXT:    li a0, -174038; RV64I-NEXT:    slli a0, a0, 274039; RV64I-NEXT:    addi a0, a0, -14040; RV64I-NEXT:    ret4041;4042; RV64IZBA-LABEL: li_rori_3:4043; RV64IZBA:       # %bb.0:4044; RV64IZBA-NEXT:    li a0, -174045; RV64IZBA-NEXT:    slli a0, a0, 274046; RV64IZBA-NEXT:    addi a0, a0, -14047; RV64IZBA-NEXT:    ret4048;4049; RV64IZBB-LABEL: li_rori_3:4050; RV64IZBB:       # %bb.0:4051; RV64IZBB-NEXT:    li a0, -184052; RV64IZBB-NEXT:    rori a0, a0, 374053; RV64IZBB-NEXT:    ret4054;4055; RV64IZBS-LABEL: li_rori_3:4056; RV64IZBS:       # %bb.0:4057; RV64IZBS-NEXT:    li a0, -174058; RV64IZBS-NEXT:    slli a0, a0, 274059; RV64IZBS-NEXT:    addi a0, a0, -14060; RV64IZBS-NEXT:    ret4061;4062; RV64IXTHEADBB-LABEL: li_rori_3:4063; RV64IXTHEADBB:       # %bb.0:4064; RV64IXTHEADBB-NEXT:    li a0, -184065; RV64IXTHEADBB-NEXT:    th.srri a0, a0, 374066; RV64IXTHEADBB-NEXT:    ret4067;4068; RV32-REMAT-LABEL: li_rori_3:4069; RV32-REMAT:       # %bb.0:4070; RV32-REMAT-NEXT:    lui a0, 4915204071; RV32-REMAT-NEXT:    addi a0, a0, -14072; RV32-REMAT-NEXT:    li a1, -14073; RV32-REMAT-NEXT:    ret4074;4075; RV64-REMAT-LABEL: li_rori_3:4076; RV64-REMAT:       # %bb.0:4077; RV64-REMAT-NEXT:    li a0, -174078; RV64-REMAT-NEXT:    slli a0, a0, 274079; RV64-REMAT-NEXT:    addi a0, a0, -14080; RV64-REMAT-NEXT:    ret4081  ret i64 -22817013774082}4083 4084; This used to assert when compiled with Zba.4085define i64 @PR54812() {4086; RV32I-LABEL: PR54812:4087; RV32I:       # %bb.0:4088; RV32I-NEXT:    lui a0, 5215994089; RV32I-NEXT:    li a1, -14090; RV32I-NEXT:    ret4091;4092; RV32IXQCILI-LABEL: PR54812:4093; RV32IXQCILI:       # %bb.0:4094; RV32IXQCILI-NEXT:    lui a0, 5215994095; RV32IXQCILI-NEXT:    li a1, -14096; RV32IXQCILI-NEXT:    ret4097;4098; RV64I-LABEL: PR54812:4099; RV64I:       # %bb.0:4100; RV64I-NEXT:    lui a0, 10484474101; RV64I-NEXT:    addi a0, a0, 14074102; RV64I-NEXT:    slli a0, a0, 124103; RV64I-NEXT:    ret4104;4105; RV64IZBA-LABEL: PR54812:4106; RV64IZBA:       # %bb.0:4107; RV64IZBA-NEXT:    lui a0, 8729174108; RV64IZBA-NEXT:    sh1add a0, a0, a04109; RV64IZBA-NEXT:    ret4110;4111; RV64IZBB-LABEL: PR54812:4112; RV64IZBB:       # %bb.0:4113; RV64IZBB-NEXT:    lui a0, 10484474114; RV64IZBB-NEXT:    addi a0, a0, 14074115; RV64IZBB-NEXT:    slli a0, a0, 124116; RV64IZBB-NEXT:    ret4117;4118; RV64IZBS-LABEL: PR54812:4119; RV64IZBS:       # %bb.0:4120; RV64IZBS-NEXT:    lui a0, 10458874121; RV64IZBS-NEXT:    bclri a0, a0, 314122; RV64IZBS-NEXT:    ret4123;4124; RV64IXTHEADBB-LABEL: PR54812:4125; RV64IXTHEADBB:       # %bb.0:4126; RV64IXTHEADBB-NEXT:    lui a0, 10484474127; RV64IXTHEADBB-NEXT:    addi a0, a0, 14074128; RV64IXTHEADBB-NEXT:    slli a0, a0, 124129; RV64IXTHEADBB-NEXT:    ret4130;4131; RV32-REMAT-LABEL: PR54812:4132; RV32-REMAT:       # %bb.0:4133; RV32-REMAT-NEXT:    lui a0, 5215994134; RV32-REMAT-NEXT:    li a1, -14135; RV32-REMAT-NEXT:    ret4136;4137; RV64-REMAT-LABEL: PR54812:4138; RV64-REMAT:       # %bb.0:4139; RV64-REMAT-NEXT:    lui a0, 10484474140; RV64-REMAT-NEXT:    addi a0, a0, 14074141; RV64-REMAT-NEXT:    slli a0, a0, 124142; RV64-REMAT-NEXT:    ret4143  ret i64 -2158497792;4144}4145 4146define signext i32 @pos_2048() nounwind {4147; RV32I-LABEL: pos_2048:4148; RV32I:       # %bb.0:4149; RV32I-NEXT:    li a0, 14150; RV32I-NEXT:    slli a0, a0, 114151; RV32I-NEXT:    ret4152;4153; RV32IXQCILI-LABEL: pos_2048:4154; RV32IXQCILI:       # %bb.0:4155; RV32IXQCILI-NEXT:    qc.li a0, 20484156; RV32IXQCILI-NEXT:    ret4157;4158; RV64I-LABEL: pos_2048:4159; RV64I:       # %bb.0:4160; RV64I-NEXT:    li a0, 14161; RV64I-NEXT:    slli a0, a0, 114162; RV64I-NEXT:    ret4163;4164; RV64IZBA-LABEL: pos_2048:4165; RV64IZBA:       # %bb.0:4166; RV64IZBA-NEXT:    li a0, 14167; RV64IZBA-NEXT:    slli a0, a0, 114168; RV64IZBA-NEXT:    ret4169;4170; RV64IZBB-LABEL: pos_2048:4171; RV64IZBB:       # %bb.0:4172; RV64IZBB-NEXT:    li a0, 14173; RV64IZBB-NEXT:    slli a0, a0, 114174; RV64IZBB-NEXT:    ret4175;4176; RV64IZBS-LABEL: pos_2048:4177; RV64IZBS:       # %bb.0:4178; RV64IZBS-NEXT:    bseti a0, zero, 114179; RV64IZBS-NEXT:    ret4180;4181; RV64IXTHEADBB-LABEL: pos_2048:4182; RV64IXTHEADBB:       # %bb.0:4183; RV64IXTHEADBB-NEXT:    li a0, 14184; RV64IXTHEADBB-NEXT:    slli a0, a0, 114185; RV64IXTHEADBB-NEXT:    ret4186;4187; RV32-REMAT-LABEL: pos_2048:4188; RV32-REMAT:       # %bb.0:4189; RV32-REMAT-NEXT:    li a0, 14190; RV32-REMAT-NEXT:    slli a0, a0, 114191; RV32-REMAT-NEXT:    ret4192;4193; RV64-REMAT-LABEL: pos_2048:4194; RV64-REMAT:       # %bb.0:4195; RV64-REMAT-NEXT:    li a0, 14196; RV64-REMAT-NEXT:    slli a0, a0, 114197; RV64-REMAT-NEXT:    ret4198  ret i32 20484199}4200 4201define i64 @imm64_same_lo_hi() nounwind {4202; RV32I-LABEL: imm64_same_lo_hi:4203; RV32I:       # %bb.0:4204; RV32I-NEXT:    lui a0, 657934205; RV32I-NEXT:    addi a0, a0, 164206; RV32I-NEXT:    mv a1, a04207; RV32I-NEXT:    ret4208;4209; RV32IXQCILI-LABEL: imm64_same_lo_hi:4210; RV32IXQCILI:       # %bb.0:4211; RV32IXQCILI-NEXT:    qc.e.li a0, 2694881444212; RV32IXQCILI-NEXT:    mv a1, a04213; RV32IXQCILI-NEXT:    ret4214;4215; RV64I-LABEL: imm64_same_lo_hi:4216; RV64I:       # %bb.0:4217; RV64I-NEXT:    lui a0, 657934218; RV64I-NEXT:    addi a0, a0, 164219; RV64I-NEXT:    slli a1, a0, 324220; RV64I-NEXT:    add a0, a0, a14221; RV64I-NEXT:    ret4222;4223; RV64IZBA-LABEL: imm64_same_lo_hi:4224; RV64IZBA:       # %bb.0:4225; RV64IZBA-NEXT:    lui a0, 657934226; RV64IZBA-NEXT:    addi a0, a0, 164227; RV64IZBA-NEXT:    slli a1, a0, 324228; RV64IZBA-NEXT:    add a0, a0, a14229; RV64IZBA-NEXT:    ret4230;4231; RV64IZBB-LABEL: imm64_same_lo_hi:4232; RV64IZBB:       # %bb.0:4233; RV64IZBB-NEXT:    lui a0, 657934234; RV64IZBB-NEXT:    addi a0, a0, 164235; RV64IZBB-NEXT:    slli a1, a0, 324236; RV64IZBB-NEXT:    add a0, a0, a14237; RV64IZBB-NEXT:    ret4238;4239; RV64IZBS-LABEL: imm64_same_lo_hi:4240; RV64IZBS:       # %bb.0:4241; RV64IZBS-NEXT:    lui a0, 657934242; RV64IZBS-NEXT:    addi a0, a0, 164243; RV64IZBS-NEXT:    slli a1, a0, 324244; RV64IZBS-NEXT:    add a0, a0, a14245; RV64IZBS-NEXT:    ret4246;4247; RV64IXTHEADBB-LABEL: imm64_same_lo_hi:4248; RV64IXTHEADBB:       # %bb.0:4249; RV64IXTHEADBB-NEXT:    lui a0, 657934250; RV64IXTHEADBB-NEXT:    addi a0, a0, 164251; RV64IXTHEADBB-NEXT:    slli a1, a0, 324252; RV64IXTHEADBB-NEXT:    add a0, a0, a14253; RV64IXTHEADBB-NEXT:    ret4254;4255; RV32-REMAT-LABEL: imm64_same_lo_hi:4256; RV32-REMAT:       # %bb.0:4257; RV32-REMAT-NEXT:    lui a0, 657934258; RV32-REMAT-NEXT:    addi a0, a0, 164259; RV32-REMAT-NEXT:    mv a1, a04260; RV32-REMAT-NEXT:    ret4261;4262; RV64-REMAT-LABEL: imm64_same_lo_hi:4263; RV64-REMAT:       # %bb.0:4264; RV64-REMAT-NEXT:    lui a0, 657934265; RV64-REMAT-NEXT:    addi a0, a0, 164266; RV64-REMAT-NEXT:    slli a1, a0, 324267; RV64-REMAT-NEXT:    add a0, a0, a14268; RV64-REMAT-NEXT:    ret4269  ret i64 1157442765409226768 ; 0x01010101010101014270}4271 4272; Same as above with optsize. Make sure we use constant pool on RV644273define i64 @imm64_same_lo_hi_optsize() nounwind optsize {4274; RV32I-LABEL: imm64_same_lo_hi_optsize:4275; RV32I:       # %bb.0:4276; RV32I-NEXT:    lui a0, 657934277; RV32I-NEXT:    addi a0, a0, 164278; RV32I-NEXT:    mv a1, a04279; RV32I-NEXT:    ret4280;4281; RV32IXQCILI-LABEL: imm64_same_lo_hi_optsize:4282; RV32IXQCILI:       # %bb.0:4283; RV32IXQCILI-NEXT:    qc.e.li a0, 2694881444284; RV32IXQCILI-NEXT:    mv a1, a04285; RV32IXQCILI-NEXT:    ret4286;4287; RV64-NOPOOL-LABEL: imm64_same_lo_hi_optsize:4288; RV64-NOPOOL:       # %bb.0:4289; RV64-NOPOOL-NEXT:    lui a0, 657934290; RV64-NOPOOL-NEXT:    addi a0, a0, 164291; RV64-NOPOOL-NEXT:    slli a1, a0, 324292; RV64-NOPOOL-NEXT:    add a0, a0, a14293; RV64-NOPOOL-NEXT:    ret4294;4295; RV64I-POOL-LABEL: imm64_same_lo_hi_optsize:4296; RV64I-POOL:       # %bb.0:4297; RV64I-POOL-NEXT:    lui a0, %hi(.LCPI65_0)4298; RV64I-POOL-NEXT:    ld a0, %lo(.LCPI65_0)(a0)4299; RV64I-POOL-NEXT:    ret4300;4301; RV64IZBA-LABEL: imm64_same_lo_hi_optsize:4302; RV64IZBA:       # %bb.0:4303; RV64IZBA-NEXT:    lui a0, 657934304; RV64IZBA-NEXT:    addi a0, a0, 164305; RV64IZBA-NEXT:    slli a1, a0, 324306; RV64IZBA-NEXT:    add a0, a0, a14307; RV64IZBA-NEXT:    ret4308;4309; RV64IZBB-LABEL: imm64_same_lo_hi_optsize:4310; RV64IZBB:       # %bb.0:4311; RV64IZBB-NEXT:    lui a0, 657934312; RV64IZBB-NEXT:    addi a0, a0, 164313; RV64IZBB-NEXT:    slli a1, a0, 324314; RV64IZBB-NEXT:    add a0, a0, a14315; RV64IZBB-NEXT:    ret4316;4317; RV64IZBS-LABEL: imm64_same_lo_hi_optsize:4318; RV64IZBS:       # %bb.0:4319; RV64IZBS-NEXT:    lui a0, 657934320; RV64IZBS-NEXT:    addi a0, a0, 164321; RV64IZBS-NEXT:    slli a1, a0, 324322; RV64IZBS-NEXT:    add a0, a0, a14323; RV64IZBS-NEXT:    ret4324;4325; RV64IXTHEADBB-LABEL: imm64_same_lo_hi_optsize:4326; RV64IXTHEADBB:       # %bb.0:4327; RV64IXTHEADBB-NEXT:    lui a0, 657934328; RV64IXTHEADBB-NEXT:    addi a0, a0, 164329; RV64IXTHEADBB-NEXT:    slli a1, a0, 324330; RV64IXTHEADBB-NEXT:    add a0, a0, a14331; RV64IXTHEADBB-NEXT:    ret4332;4333; RV32-REMAT-LABEL: imm64_same_lo_hi_optsize:4334; RV32-REMAT:       # %bb.0:4335; RV32-REMAT-NEXT:    lui a0, 657934336; RV32-REMAT-NEXT:    addi a0, a0, 164337; RV32-REMAT-NEXT:    mv a1, a04338; RV32-REMAT-NEXT:    ret4339;4340; RV64-REMAT-LABEL: imm64_same_lo_hi_optsize:4341; RV64-REMAT:       # %bb.0:4342; RV64-REMAT-NEXT:    lui a0, 657934343; RV64-REMAT-NEXT:    addi a0, a0, 164344; RV64-REMAT-NEXT:    slli a1, a0, 324345; RV64-REMAT-NEXT:    add a0, a0, a14346; RV64-REMAT-NEXT:    ret4347  ret i64 1157442765409226768 ; 0x01010101010101014348}4349 4350; Hi and lo are the same and also negative.4351define i64 @imm64_same_lo_hi_negative() nounwind {4352; RV32I-LABEL: imm64_same_lo_hi_negative:4353; RV32I:       # %bb.0:4354; RV32I-NEXT:    lui a0, 5263444355; RV32I-NEXT:    addi a0, a0, 1284356; RV32I-NEXT:    mv a1, a04357; RV32I-NEXT:    ret4358;4359; RV32IXQCILI-LABEL: imm64_same_lo_hi_negative:4360; RV32IXQCILI:       # %bb.0:4361; RV32IXQCILI-NEXT:    qc.e.li a0, -21390621444362; RV32IXQCILI-NEXT:    mv a1, a04363; RV32IXQCILI-NEXT:    ret4364;4365; RV64-NOPOOL-LABEL: imm64_same_lo_hi_negative:4366; RV64-NOPOOL:       # %bb.0:4367; RV64-NOPOOL-NEXT:    lui a0, 9832974368; RV64-NOPOOL-NEXT:    slli a0, a0, 44369; RV64-NOPOOL-NEXT:    addi a0, a0, 2574370; RV64-NOPOOL-NEXT:    slli a0, a0, 164371; RV64-NOPOOL-NEXT:    addi a0, a0, 2574372; RV64-NOPOOL-NEXT:    slli a0, a0, 154373; RV64-NOPOOL-NEXT:    addi a0, a0, 1284374; RV64-NOPOOL-NEXT:    ret4375;4376; RV64I-POOL-LABEL: imm64_same_lo_hi_negative:4377; RV64I-POOL:       # %bb.0:4378; RV64I-POOL-NEXT:    lui a0, %hi(.LCPI66_0)4379; RV64I-POOL-NEXT:    ld a0, %lo(.LCPI66_0)(a0)4380; RV64I-POOL-NEXT:    ret4381;4382; RV64IZBA-LABEL: imm64_same_lo_hi_negative:4383; RV64IZBA:       # %bb.0:4384; RV64IZBA-NEXT:    lui a0, 5263444385; RV64IZBA-NEXT:    addi a0, a0, 1284386; RV64IZBA-NEXT:    slli a1, a0, 324387; RV64IZBA-NEXT:    add.uw a0, a0, a14388; RV64IZBA-NEXT:    ret4389;4390; RV64IZBB-LABEL: imm64_same_lo_hi_negative:4391; RV64IZBB:       # %bb.0:4392; RV64IZBB-NEXT:    lui a0, 9832974393; RV64IZBB-NEXT:    slli a0, a0, 44394; RV64IZBB-NEXT:    addi a0, a0, 2574395; RV64IZBB-NEXT:    slli a0, a0, 164396; RV64IZBB-NEXT:    addi a0, a0, 2574397; RV64IZBB-NEXT:    slli a0, a0, 154398; RV64IZBB-NEXT:    addi a0, a0, 1284399; RV64IZBB-NEXT:    ret4400;4401; RV64IZBS-LABEL: imm64_same_lo_hi_negative:4402; RV64IZBS:       # %bb.0:4403; RV64IZBS-NEXT:    lui a0, 9832974404; RV64IZBS-NEXT:    slli a0, a0, 44405; RV64IZBS-NEXT:    addi a0, a0, 2574406; RV64IZBS-NEXT:    slli a0, a0, 164407; RV64IZBS-NEXT:    addi a0, a0, 2574408; RV64IZBS-NEXT:    slli a0, a0, 154409; RV64IZBS-NEXT:    addi a0, a0, 1284410; RV64IZBS-NEXT:    ret4411;4412; RV64IXTHEADBB-LABEL: imm64_same_lo_hi_negative:4413; RV64IXTHEADBB:       # %bb.0:4414; RV64IXTHEADBB-NEXT:    lui a0, 9832974415; RV64IXTHEADBB-NEXT:    slli a0, a0, 44416; RV64IXTHEADBB-NEXT:    addi a0, a0, 2574417; RV64IXTHEADBB-NEXT:    slli a0, a0, 164418; RV64IXTHEADBB-NEXT:    addi a0, a0, 2574419; RV64IXTHEADBB-NEXT:    slli a0, a0, 154420; RV64IXTHEADBB-NEXT:    addi a0, a0, 1284421; RV64IXTHEADBB-NEXT:    ret4422;4423; RV32-REMAT-LABEL: imm64_same_lo_hi_negative:4424; RV32-REMAT:       # %bb.0:4425; RV32-REMAT-NEXT:    lui a0, 5263444426; RV32-REMAT-NEXT:    addi a0, a0, 1284427; RV32-REMAT-NEXT:    mv a1, a04428; RV32-REMAT-NEXT:    ret4429;4430; RV64-REMAT-LABEL: imm64_same_lo_hi_negative:4431; RV64-REMAT:       # %bb.0:4432; RV64-REMAT-NEXT:    lui a0, 9832974433; RV64-REMAT-NEXT:    slli a0, a0, 44434; RV64-REMAT-NEXT:    addi a0, a0, 2574435; RV64-REMAT-NEXT:    slli a0, a0, 164436; RV64-REMAT-NEXT:    addi a0, a0, 2574437; RV64-REMAT-NEXT:    slli a0, a0, 154438; RV64-REMAT-NEXT:    addi a0, a0, 1284439; RV64-REMAT-NEXT:    ret4440  ret i64 9259542123273814144 ; 0x80808080808080804441}4442 4443define i64 @imm64_0x8000080000000() {4444; RV32I-LABEL: imm64_0x8000080000000:4445; RV32I:       # %bb.0:4446; RV32I-NEXT:    lui a0, 5242884447; RV32I-NEXT:    lui a1, 1284448; RV32I-NEXT:    ret4449;4450; RV32IXQCILI-LABEL: imm64_0x8000080000000:4451; RV32IXQCILI:       # %bb.0:4452; RV32IXQCILI-NEXT:    lui a0, 5242884453; RV32IXQCILI-NEXT:    lui a1, 1284454; RV32IXQCILI-NEXT:    ret4455;4456; RV64I-LABEL: imm64_0x8000080000000:4457; RV64I:       # %bb.0:4458; RV64I-NEXT:    lui a0, 2564459; RV64I-NEXT:    addi a0, a0, 14460; RV64I-NEXT:    slli a0, a0, 314461; RV64I-NEXT:    ret4462;4463; RV64IZBA-LABEL: imm64_0x8000080000000:4464; RV64IZBA:       # %bb.0:4465; RV64IZBA-NEXT:    lui a0, 2564466; RV64IZBA-NEXT:    addi a0, a0, 14467; RV64IZBA-NEXT:    slli a0, a0, 314468; RV64IZBA-NEXT:    ret4469;4470; RV64IZBB-LABEL: imm64_0x8000080000000:4471; RV64IZBB:       # %bb.0:4472; RV64IZBB-NEXT:    lui a0, 2564473; RV64IZBB-NEXT:    addi a0, a0, 14474; RV64IZBB-NEXT:    slli a0, a0, 314475; RV64IZBB-NEXT:    ret4476;4477; RV64IZBS-LABEL: imm64_0x8000080000000:4478; RV64IZBS:       # %bb.0:4479; RV64IZBS-NEXT:    bseti a0, zero, 314480; RV64IZBS-NEXT:    bseti a0, a0, 514481; RV64IZBS-NEXT:    ret4482;4483; RV64IXTHEADBB-LABEL: imm64_0x8000080000000:4484; RV64IXTHEADBB:       # %bb.0:4485; RV64IXTHEADBB-NEXT:    lui a0, 2564486; RV64IXTHEADBB-NEXT:    addi a0, a0, 14487; RV64IXTHEADBB-NEXT:    slli a0, a0, 314488; RV64IXTHEADBB-NEXT:    ret4489;4490; RV32-REMAT-LABEL: imm64_0x8000080000000:4491; RV32-REMAT:       # %bb.0:4492; RV32-REMAT-NEXT:    lui a0, 5242884493; RV32-REMAT-NEXT:    lui a1, 1284494; RV32-REMAT-NEXT:    ret4495;4496; RV64-REMAT-LABEL: imm64_0x8000080000000:4497; RV64-REMAT:       # %bb.0:4498; RV64-REMAT-NEXT:    lui a0, 2564499; RV64-REMAT-NEXT:    addi a0, a0, 14500; RV64-REMAT-NEXT:    slli a0, a0, 314501; RV64-REMAT-NEXT:    ret4502  ret i64 2251801961168896 ; 0x80000800000004503}4504 4505define i64 @imm64_0x10000100000000() {4506; RV32I-LABEL: imm64_0x10000100000000:4507; RV32I:       # %bb.0:4508; RV32I-NEXT:    lui a1, 2564509; RV32I-NEXT:    addi a1, a1, 14510; RV32I-NEXT:    li a0, 04511; RV32I-NEXT:    ret4512;4513; RV32IXQCILI-LABEL: imm64_0x10000100000000:4514; RV32IXQCILI:       # %bb.0:4515; RV32IXQCILI-NEXT:    qc.e.li a1, 10485774516; RV32IXQCILI-NEXT:    li a0, 04517; RV32IXQCILI-NEXT:    ret4518;4519; RV64I-LABEL: imm64_0x10000100000000:4520; RV64I:       # %bb.0:4521; RV64I-NEXT:    lui a0, 2564522; RV64I-NEXT:    addi a0, a0, 14523; RV64I-NEXT:    slli a0, a0, 324524; RV64I-NEXT:    ret4525;4526; RV64IZBA-LABEL: imm64_0x10000100000000:4527; RV64IZBA:       # %bb.0:4528; RV64IZBA-NEXT:    lui a0, 2564529; RV64IZBA-NEXT:    addi a0, a0, 14530; RV64IZBA-NEXT:    slli a0, a0, 324531; RV64IZBA-NEXT:    ret4532;4533; RV64IZBB-LABEL: imm64_0x10000100000000:4534; RV64IZBB:       # %bb.0:4535; RV64IZBB-NEXT:    lui a0, 2564536; RV64IZBB-NEXT:    addi a0, a0, 14537; RV64IZBB-NEXT:    slli a0, a0, 324538; RV64IZBB-NEXT:    ret4539;4540; RV64IZBS-LABEL: imm64_0x10000100000000:4541; RV64IZBS:       # %bb.0:4542; RV64IZBS-NEXT:    bseti a0, zero, 324543; RV64IZBS-NEXT:    bseti a0, a0, 524544; RV64IZBS-NEXT:    ret4545;4546; RV64IXTHEADBB-LABEL: imm64_0x10000100000000:4547; RV64IXTHEADBB:       # %bb.0:4548; RV64IXTHEADBB-NEXT:    lui a0, 2564549; RV64IXTHEADBB-NEXT:    addi a0, a0, 14550; RV64IXTHEADBB-NEXT:    slli a0, a0, 324551; RV64IXTHEADBB-NEXT:    ret4552;4553; RV32-REMAT-LABEL: imm64_0x10000100000000:4554; RV32-REMAT:       # %bb.0:4555; RV32-REMAT-NEXT:    lui a1, 2564556; RV32-REMAT-NEXT:    addi a1, a1, 14557; RV32-REMAT-NEXT:    li a0, 04558; RV32-REMAT-NEXT:    ret4559;4560; RV64-REMAT-LABEL: imm64_0x10000100000000:4561; RV64-REMAT:       # %bb.0:4562; RV64-REMAT-NEXT:    lui a0, 2564563; RV64-REMAT-NEXT:    addi a0, a0, 14564; RV64-REMAT-NEXT:    slli a0, a0, 324565; RV64-REMAT-NEXT:    ret4566  ret i64 4503603922337792 ; 0x100001000000004567}4568 4569define i64 @imm64_0xFF7FFFFF7FFFFFFE() {4570; RV32I-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4571; RV32I:       # %bb.0:4572; RV32I-NEXT:    lui a0, 5242884573; RV32I-NEXT:    lui a1, 10465284574; RV32I-NEXT:    addi a0, a0, -14575; RV32I-NEXT:    addi a1, a1, -14576; RV32I-NEXT:    ret4577;4578; RV32IXQCILI-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4579; RV32IXQCILI:       # %bb.0:4580; RV32IXQCILI-NEXT:    qc.e.li a0, 21474836474581; RV32IXQCILI-NEXT:    qc.e.li a1, -83886094582; RV32IXQCILI-NEXT:    ret4583;4584; RV64I-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4585; RV64I:       # %bb.0:4586; RV64I-NEXT:    lui a0, 10444804587; RV64I-NEXT:    addi a0, a0, -14588; RV64I-NEXT:    slli a0, a0, 314589; RV64I-NEXT:    addi a0, a0, -14590; RV64I-NEXT:    ret4591;4592; RV64IZBA-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4593; RV64IZBA:       # %bb.0:4594; RV64IZBA-NEXT:    lui a0, 10444804595; RV64IZBA-NEXT:    addi a0, a0, -14596; RV64IZBA-NEXT:    slli a0, a0, 314597; RV64IZBA-NEXT:    addi a0, a0, -14598; RV64IZBA-NEXT:    ret4599;4600; RV64IZBB-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4601; RV64IZBB:       # %bb.0:4602; RV64IZBB-NEXT:    lui a0, 10444804603; RV64IZBB-NEXT:    addi a0, a0, -14604; RV64IZBB-NEXT:    slli a0, a0, 314605; RV64IZBB-NEXT:    addi a0, a0, -14606; RV64IZBB-NEXT:    ret4607;4608; RV64IZBS-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4609; RV64IZBS:       # %bb.0:4610; RV64IZBS-NEXT:    li a0, -14611; RV64IZBS-NEXT:    bclri a0, a0, 314612; RV64IZBS-NEXT:    bclri a0, a0, 554613; RV64IZBS-NEXT:    ret4614;4615; RV64IXTHEADBB-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4616; RV64IXTHEADBB:       # %bb.0:4617; RV64IXTHEADBB-NEXT:    lui a0, 10444804618; RV64IXTHEADBB-NEXT:    addi a0, a0, -14619; RV64IXTHEADBB-NEXT:    slli a0, a0, 314620; RV64IXTHEADBB-NEXT:    addi a0, a0, -14621; RV64IXTHEADBB-NEXT:    ret4622;4623; RV32-REMAT-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4624; RV32-REMAT:       # %bb.0:4625; RV32-REMAT-NEXT:    lui a0, 5242884626; RV32-REMAT-NEXT:    addi a0, a0, -14627; RV32-REMAT-NEXT:    lui a1, 10465284628; RV32-REMAT-NEXT:    addi a1, a1, -14629; RV32-REMAT-NEXT:    ret4630;4631; RV64-REMAT-LABEL: imm64_0xFF7FFFFF7FFFFFFE:4632; RV64-REMAT:       # %bb.0:4633; RV64-REMAT-NEXT:    lui a0, 10444804634; RV64-REMAT-NEXT:    addi a0, a0, -14635; RV64-REMAT-NEXT:    slli a0, a0, 314636; RV64-REMAT-NEXT:    addi a0, a0, -14637; RV64-REMAT-NEXT:    ret4638  ret i64 -36028799166447617 ; 0xFF7FFFFF7FFFFFFE4639}4640 4641define i64 @imm64_0xFFFFFFFF0() {4642; RV32I-LABEL: imm64_0xFFFFFFFF0:4643; RV32I:       # %bb.0:4644; RV32I-NEXT:    li a0, -164645; RV32I-NEXT:    li a1, 154646; RV32I-NEXT:    ret4647;4648; RV32IXQCILI-LABEL: imm64_0xFFFFFFFF0:4649; RV32IXQCILI:       # %bb.0:4650; RV32IXQCILI-NEXT:    li a0, -164651; RV32IXQCILI-NEXT:    li a1, 154652; RV32IXQCILI-NEXT:    ret4653;4654; RV64I-LABEL: imm64_0xFFFFFFFF0:4655; RV64I:       # %bb.0:4656; RV64I-NEXT:    li a0, 14657; RV64I-NEXT:    slli a0, a0, 364658; RV64I-NEXT:    addi a0, a0, -164659; RV64I-NEXT:    ret4660;4661; RV64IZBA-LABEL: imm64_0xFFFFFFFF0:4662; RV64IZBA:       # %bb.0:4663; RV64IZBA-NEXT:    li a0, 14664; RV64IZBA-NEXT:    slli a0, a0, 364665; RV64IZBA-NEXT:    addi a0, a0, -164666; RV64IZBA-NEXT:    ret4667;4668; RV64IZBB-LABEL: imm64_0xFFFFFFFF0:4669; RV64IZBB:       # %bb.0:4670; RV64IZBB-NEXT:    li a0, 14671; RV64IZBB-NEXT:    slli a0, a0, 364672; RV64IZBB-NEXT:    addi a0, a0, -164673; RV64IZBB-NEXT:    ret4674;4675; RV64IZBS-LABEL: imm64_0xFFFFFFFF0:4676; RV64IZBS:       # %bb.0:4677; RV64IZBS-NEXT:    bseti a0, zero, 364678; RV64IZBS-NEXT:    addi a0, a0, -164679; RV64IZBS-NEXT:    ret4680;4681; RV64IXTHEADBB-LABEL: imm64_0xFFFFFFFF0:4682; RV64IXTHEADBB:       # %bb.0:4683; RV64IXTHEADBB-NEXT:    li a0, 14684; RV64IXTHEADBB-NEXT:    slli a0, a0, 364685; RV64IXTHEADBB-NEXT:    addi a0, a0, -164686; RV64IXTHEADBB-NEXT:    ret4687;4688; RV32-REMAT-LABEL: imm64_0xFFFFFFFF0:4689; RV32-REMAT:       # %bb.0:4690; RV32-REMAT-NEXT:    li a0, -164691; RV32-REMAT-NEXT:    li a1, 154692; RV32-REMAT-NEXT:    ret4693;4694; RV64-REMAT-LABEL: imm64_0xFFFFFFFF0:4695; RV64-REMAT:       # %bb.0:4696; RV64-REMAT-NEXT:    li a0, 14697; RV64-REMAT-NEXT:    slli a0, a0, 364698; RV64-REMAT-NEXT:    addi a0, a0, -164699; RV64-REMAT-NEXT:    ret4700  ret i64 68719476720 ; 0xFFFFFFFF04701}4702 4703define i64 @imm64_0x1FFFFFF08() {4704; RV32I-LABEL: imm64_0x1FFFFFF08:4705; RV32I:       # %bb.0:4706; RV32I-NEXT:    li a0, -2484707; RV32I-NEXT:    li a1, 14708; RV32I-NEXT:    ret4709;4710; RV32IXQCILI-LABEL: imm64_0x1FFFFFF08:4711; RV32IXQCILI:       # %bb.0:4712; RV32IXQCILI-NEXT:    li a0, -2484713; RV32IXQCILI-NEXT:    li a1, 14714; RV32IXQCILI-NEXT:    ret4715;4716; RV64I-LABEL: imm64_0x1FFFFFF08:4717; RV64I:       # %bb.0:4718; RV64I-NEXT:    li a0, 14719; RV64I-NEXT:    slli a0, a0, 334720; RV64I-NEXT:    addi a0, a0, -2484721; RV64I-NEXT:    ret4722;4723; RV64IZBA-LABEL: imm64_0x1FFFFFF08:4724; RV64IZBA:       # %bb.0:4725; RV64IZBA-NEXT:    li a0, 14726; RV64IZBA-NEXT:    slli a0, a0, 334727; RV64IZBA-NEXT:    addi a0, a0, -2484728; RV64IZBA-NEXT:    ret4729;4730; RV64IZBB-LABEL: imm64_0x1FFFFFF08:4731; RV64IZBB:       # %bb.0:4732; RV64IZBB-NEXT:    li a0, 14733; RV64IZBB-NEXT:    slli a0, a0, 334734; RV64IZBB-NEXT:    addi a0, a0, -2484735; RV64IZBB-NEXT:    ret4736;4737; RV64IZBS-LABEL: imm64_0x1FFFFFF08:4738; RV64IZBS:       # %bb.0:4739; RV64IZBS-NEXT:    bseti a0, zero, 334740; RV64IZBS-NEXT:    addi a0, a0, -2484741; RV64IZBS-NEXT:    ret4742;4743; RV64IXTHEADBB-LABEL: imm64_0x1FFFFFF08:4744; RV64IXTHEADBB:       # %bb.0:4745; RV64IXTHEADBB-NEXT:    li a0, 14746; RV64IXTHEADBB-NEXT:    slli a0, a0, 334747; RV64IXTHEADBB-NEXT:    addi a0, a0, -2484748; RV64IXTHEADBB-NEXT:    ret4749;4750; RV32-REMAT-LABEL: imm64_0x1FFFFFF08:4751; RV32-REMAT:       # %bb.0:4752; RV32-REMAT-NEXT:    li a0, -2484753; RV32-REMAT-NEXT:    li a1, 14754; RV32-REMAT-NEXT:    ret4755;4756; RV64-REMAT-LABEL: imm64_0x1FFFFFF08:4757; RV64-REMAT:       # %bb.0:4758; RV64-REMAT-NEXT:    li a0, 14759; RV64-REMAT-NEXT:    slli a0, a0, 334760; RV64-REMAT-NEXT:    addi a0, a0, -2484761; RV64-REMAT-NEXT:    ret4762  ret i64 8589934344 ; 0x1FFFFFF084763}4764