brintos

brintos / llvm-project-archived public Read only

0
0
Text · 74.3 KiB · c6234de Raw
2304 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \3; RUN:   | FileCheck -check-prefix=RV32I %s4; RUN: llc -mtriple=riscv32 -mattr=+zalrsc -verify-machineinstrs < %s \5; RUN:   | FileCheck -check-prefix=RV32I-ZALRSC %s6; RUN: llc -mtriple=riscv32 -mattr=+a,+no-trailing-seq-cst-fence -verify-machineinstrs < %s \7; RUN:   | FileCheck -check-prefixes=RV32IA,RV32IA-WMO %s8; RUN: llc -mtriple=riscv32 -mattr=+a,+ztso,+no-trailing-seq-cst-fence -verify-machineinstrs < %s \9; RUN:   | FileCheck -check-prefixes=RV32IA,RV32IA-TSO %s10; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \11; RUN:   | FileCheck -check-prefix=RV64I %s12; RUN: llc -mtriple=riscv64 -mattr=+zalrsc -verify-machineinstrs < %s \13; RUN:   | FileCheck -check-prefix=RV64I-ZALRSC %s14; RUN: llc -mtriple=riscv64 -mattr=+a,+no-trailing-seq-cst-fence -verify-machineinstrs < %s \15; RUN:   | FileCheck -check-prefixes=RV64IA,RV64IA-WMO %s16; RUN: llc -mtriple=riscv64 -mattr=+a,+ztso,+no-trailing-seq-cst-fence -verify-machineinstrs < %s \17; RUN:   | FileCheck -check-prefixes=RV64IA,RV64IA-TSO %s18 19 20; RUN: llc -mtriple=riscv32 -mattr=+a -verify-machineinstrs < %s \21; RUN:   | FileCheck -check-prefixes=RV32IA,RV32IA-WMO-TRAILING-FENCE %s22; RUN: llc -mtriple=riscv32 -mattr=+a,+ztso -verify-machineinstrs < %s \23; RUN:   | FileCheck -check-prefixes=RV32IA,RV32IA-TSO-TRAILING-FENCE %s24 25; RUN: llc -mtriple=riscv64 -mattr=+a -verify-machineinstrs < %s \26; RUN:   | FileCheck -check-prefixes=RV64IA,RV64IA-WMO-TRAILING-FENCE %s27; RUN: llc -mtriple=riscv64 -mattr=+a,+ztso -verify-machineinstrs < %s \28; RUN:   | FileCheck -check-prefixes=RV64IA,RV64IA-TSO-TRAILING-FENCE %s29 30; RUN: llc -mtriple=riscv32 -mattr=+a,+experimental-zalasr -verify-machineinstrs < %s \31; RUN:   | FileCheck -check-prefixes=RV32IA,RV32IA-ZALASR,RV32IA-ZALASR-WMO %s32; RUN: llc -mtriple=riscv32 -mattr=+a,+experimental-zalasr,+ztso -verify-machineinstrs < %s \33; RUN:   | FileCheck -check-prefixes=RV32IA,RV32IA-ZALASR,RV32IA-ZALASR-TSO %s34 35; RUN: llc -mtriple=riscv64 -mattr=+a,+experimental-zalasr -verify-machineinstrs < %s \36; RUN:   | FileCheck -check-prefixes=RV64IA,RV64IA-ZALASR,RV64IA-ZALASR-WMO %s37; RUN: llc -mtriple=riscv64 -mattr=+a,+experimental-zalasr,+ztso -verify-machineinstrs < %s \38; RUN:   | FileCheck -check-prefixes=RV64IA,RV64IA-ZALASR,RV64IA-ZALASR-TSO %s39 40define i8 @atomic_load_i8_unordered(ptr %a) nounwind {41; RV32I-LABEL: atomic_load_i8_unordered:42; RV32I:       # %bb.0:43; RV32I-NEXT:    addi sp, sp, -1644; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill45; RV32I-NEXT:    li a1, 046; RV32I-NEXT:    call __atomic_load_147; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload48; RV32I-NEXT:    addi sp, sp, 1649; RV32I-NEXT:    ret50;51; RV32I-ZALRSC-LABEL: atomic_load_i8_unordered:52; RV32I-ZALRSC:       # %bb.0:53; RV32I-ZALRSC-NEXT:    lb a0, 0(a0)54; RV32I-ZALRSC-NEXT:    ret55;56; RV32IA-LABEL: atomic_load_i8_unordered:57; RV32IA:       # %bb.0:58; RV32IA-NEXT:    lb a0, 0(a0)59; RV32IA-NEXT:    ret60;61; RV64I-LABEL: atomic_load_i8_unordered:62; RV64I:       # %bb.0:63; RV64I-NEXT:    addi sp, sp, -1664; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill65; RV64I-NEXT:    li a1, 066; RV64I-NEXT:    call __atomic_load_167; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload68; RV64I-NEXT:    addi sp, sp, 1669; RV64I-NEXT:    ret70;71; RV64I-ZALRSC-LABEL: atomic_load_i8_unordered:72; RV64I-ZALRSC:       # %bb.0:73; RV64I-ZALRSC-NEXT:    lb a0, 0(a0)74; RV64I-ZALRSC-NEXT:    ret75;76; RV64IA-LABEL: atomic_load_i8_unordered:77; RV64IA:       # %bb.0:78; RV64IA-NEXT:    lb a0, 0(a0)79; RV64IA-NEXT:    ret80  %1 = load atomic i8, ptr %a unordered, align 181  ret i8 %182}83 84define i8 @atomic_load_i8_monotonic(ptr %a) nounwind {85; RV32I-LABEL: atomic_load_i8_monotonic:86; RV32I:       # %bb.0:87; RV32I-NEXT:    addi sp, sp, -1688; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill89; RV32I-NEXT:    li a1, 090; RV32I-NEXT:    call __atomic_load_191; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload92; RV32I-NEXT:    addi sp, sp, 1693; RV32I-NEXT:    ret94;95; RV32I-ZALRSC-LABEL: atomic_load_i8_monotonic:96; RV32I-ZALRSC:       # %bb.0:97; RV32I-ZALRSC-NEXT:    lb a0, 0(a0)98; RV32I-ZALRSC-NEXT:    ret99;100; RV32IA-LABEL: atomic_load_i8_monotonic:101; RV32IA:       # %bb.0:102; RV32IA-NEXT:    lb a0, 0(a0)103; RV32IA-NEXT:    ret104;105; RV64I-LABEL: atomic_load_i8_monotonic:106; RV64I:       # %bb.0:107; RV64I-NEXT:    addi sp, sp, -16108; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill109; RV64I-NEXT:    li a1, 0110; RV64I-NEXT:    call __atomic_load_1111; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload112; RV64I-NEXT:    addi sp, sp, 16113; RV64I-NEXT:    ret114;115; RV64I-ZALRSC-LABEL: atomic_load_i8_monotonic:116; RV64I-ZALRSC:       # %bb.0:117; RV64I-ZALRSC-NEXT:    lb a0, 0(a0)118; RV64I-ZALRSC-NEXT:    ret119;120; RV64IA-LABEL: atomic_load_i8_monotonic:121; RV64IA:       # %bb.0:122; RV64IA-NEXT:    lb a0, 0(a0)123; RV64IA-NEXT:    ret124  %1 = load atomic i8, ptr %a monotonic, align 1125  ret i8 %1126}127 128define i8 @atomic_load_i8_acquire(ptr %a) nounwind {129; RV32I-LABEL: atomic_load_i8_acquire:130; RV32I:       # %bb.0:131; RV32I-NEXT:    addi sp, sp, -16132; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill133; RV32I-NEXT:    li a1, 2134; RV32I-NEXT:    call __atomic_load_1135; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload136; RV32I-NEXT:    addi sp, sp, 16137; RV32I-NEXT:    ret138;139; RV32I-ZALRSC-LABEL: atomic_load_i8_acquire:140; RV32I-ZALRSC:       # %bb.0:141; RV32I-ZALRSC-NEXT:    lb a0, 0(a0)142; RV32I-ZALRSC-NEXT:    fence r, rw143; RV32I-ZALRSC-NEXT:    ret144;145; RV32IA-WMO-LABEL: atomic_load_i8_acquire:146; RV32IA-WMO:       # %bb.0:147; RV32IA-WMO-NEXT:    lb a0, 0(a0)148; RV32IA-WMO-NEXT:    fence r, rw149; RV32IA-WMO-NEXT:    ret150;151; RV32IA-TSO-LABEL: atomic_load_i8_acquire:152; RV32IA-TSO:       # %bb.0:153; RV32IA-TSO-NEXT:    lb a0, 0(a0)154; RV32IA-TSO-NEXT:    ret155;156; RV64I-LABEL: atomic_load_i8_acquire:157; RV64I:       # %bb.0:158; RV64I-NEXT:    addi sp, sp, -16159; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill160; RV64I-NEXT:    li a1, 2161; RV64I-NEXT:    call __atomic_load_1162; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload163; RV64I-NEXT:    addi sp, sp, 16164; RV64I-NEXT:    ret165;166; RV64I-ZALRSC-LABEL: atomic_load_i8_acquire:167; RV64I-ZALRSC:       # %bb.0:168; RV64I-ZALRSC-NEXT:    lb a0, 0(a0)169; RV64I-ZALRSC-NEXT:    fence r, rw170; RV64I-ZALRSC-NEXT:    ret171;172; RV64IA-WMO-LABEL: atomic_load_i8_acquire:173; RV64IA-WMO:       # %bb.0:174; RV64IA-WMO-NEXT:    lb a0, 0(a0)175; RV64IA-WMO-NEXT:    fence r, rw176; RV64IA-WMO-NEXT:    ret177;178; RV64IA-TSO-LABEL: atomic_load_i8_acquire:179; RV64IA-TSO:       # %bb.0:180; RV64IA-TSO-NEXT:    lb a0, 0(a0)181; RV64IA-TSO-NEXT:    ret182;183; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i8_acquire:184; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:185; RV32IA-WMO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)186; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw187; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret188;189; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i8_acquire:190; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:191; RV32IA-TSO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)192; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret193;194; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i8_acquire:195; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:196; RV64IA-WMO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)197; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw198; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret199;200; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i8_acquire:201; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:202; RV64IA-TSO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)203; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret204;205; RV32IA-ZALASR-WMO-LABEL: atomic_load_i8_acquire:206; RV32IA-ZALASR-WMO:       # %bb.0:207; RV32IA-ZALASR-WMO-NEXT:    lb.aq a0, (a0)208; RV32IA-ZALASR-WMO-NEXT:    ret209;210; RV32IA-ZALASR-TSO-LABEL: atomic_load_i8_acquire:211; RV32IA-ZALASR-TSO:       # %bb.0:212; RV32IA-ZALASR-TSO-NEXT:    lb a0, 0(a0)213; RV32IA-ZALASR-TSO-NEXT:    ret214;215; RV64IA-ZALASR-WMO-LABEL: atomic_load_i8_acquire:216; RV64IA-ZALASR-WMO:       # %bb.0:217; RV64IA-ZALASR-WMO-NEXT:    lb.aq a0, (a0)218; RV64IA-ZALASR-WMO-NEXT:    ret219;220; RV64IA-ZALASR-TSO-LABEL: atomic_load_i8_acquire:221; RV64IA-ZALASR-TSO:       # %bb.0:222; RV64IA-ZALASR-TSO-NEXT:    lb a0, 0(a0)223; RV64IA-ZALASR-TSO-NEXT:    ret224  %1 = load atomic i8, ptr %a acquire, align 1225  ret i8 %1226}227 228define i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {229; RV32I-LABEL: atomic_load_i8_seq_cst:230; RV32I:       # %bb.0:231; RV32I-NEXT:    addi sp, sp, -16232; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill233; RV32I-NEXT:    li a1, 5234; RV32I-NEXT:    call __atomic_load_1235; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload236; RV32I-NEXT:    addi sp, sp, 16237; RV32I-NEXT:    ret238;239; RV32I-ZALRSC-LABEL: atomic_load_i8_seq_cst:240; RV32I-ZALRSC:       # %bb.0:241; RV32I-ZALRSC-NEXT:    fence rw, rw242; RV32I-ZALRSC-NEXT:    lb a0, 0(a0)243; RV32I-ZALRSC-NEXT:    fence r, rw244; RV32I-ZALRSC-NEXT:    ret245;246; RV32IA-WMO-LABEL: atomic_load_i8_seq_cst:247; RV32IA-WMO:       # %bb.0:248; RV32IA-WMO-NEXT:    fence rw, rw249; RV32IA-WMO-NEXT:    lb a0, 0(a0)250; RV32IA-WMO-NEXT:    fence r, rw251; RV32IA-WMO-NEXT:    ret252;253; RV32IA-TSO-LABEL: atomic_load_i8_seq_cst:254; RV32IA-TSO:       # %bb.0:255; RV32IA-TSO-NEXT:    fence rw, rw256; RV32IA-TSO-NEXT:    lb a0, 0(a0)257; RV32IA-TSO-NEXT:    ret258;259; RV64I-LABEL: atomic_load_i8_seq_cst:260; RV64I:       # %bb.0:261; RV64I-NEXT:    addi sp, sp, -16262; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill263; RV64I-NEXT:    li a1, 5264; RV64I-NEXT:    call __atomic_load_1265; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload266; RV64I-NEXT:    addi sp, sp, 16267; RV64I-NEXT:    ret268;269; RV64I-ZALRSC-LABEL: atomic_load_i8_seq_cst:270; RV64I-ZALRSC:       # %bb.0:271; RV64I-ZALRSC-NEXT:    fence rw, rw272; RV64I-ZALRSC-NEXT:    lb a0, 0(a0)273; RV64I-ZALRSC-NEXT:    fence r, rw274; RV64I-ZALRSC-NEXT:    ret275;276; RV64IA-WMO-LABEL: atomic_load_i8_seq_cst:277; RV64IA-WMO:       # %bb.0:278; RV64IA-WMO-NEXT:    fence rw, rw279; RV64IA-WMO-NEXT:    lb a0, 0(a0)280; RV64IA-WMO-NEXT:    fence r, rw281; RV64IA-WMO-NEXT:    ret282;283; RV64IA-TSO-LABEL: atomic_load_i8_seq_cst:284; RV64IA-TSO:       # %bb.0:285; RV64IA-TSO-NEXT:    fence rw, rw286; RV64IA-TSO-NEXT:    lb a0, 0(a0)287; RV64IA-TSO-NEXT:    ret288;289; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i8_seq_cst:290; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:291; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw292; RV32IA-WMO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)293; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw294; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret295;296; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i8_seq_cst:297; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:298; RV32IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw299; RV32IA-TSO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)300; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret301;302; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i8_seq_cst:303; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:304; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw305; RV64IA-WMO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)306; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw307; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret308;309; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i8_seq_cst:310; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:311; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw312; RV64IA-TSO-TRAILING-FENCE-NEXT:    lb a0, 0(a0)313; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret314;315; RV32IA-ZALASR-LABEL: atomic_load_i8_seq_cst:316; RV32IA-ZALASR:       # %bb.0:317; RV32IA-ZALASR-NEXT:    lb.aq a0, (a0)318; RV32IA-ZALASR-NEXT:    ret319;320; RV64IA-ZALASR-LABEL: atomic_load_i8_seq_cst:321; RV64IA-ZALASR:       # %bb.0:322; RV64IA-ZALASR-NEXT:    lb.aq a0, (a0)323; RV64IA-ZALASR-NEXT:    ret324  %1 = load atomic i8, ptr %a seq_cst, align 1325  ret i8 %1326}327 328define i16 @atomic_load_i16_unordered(ptr %a) nounwind {329; RV32I-LABEL: atomic_load_i16_unordered:330; RV32I:       # %bb.0:331; RV32I-NEXT:    addi sp, sp, -16332; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill333; RV32I-NEXT:    li a1, 0334; RV32I-NEXT:    call __atomic_load_2335; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload336; RV32I-NEXT:    addi sp, sp, 16337; RV32I-NEXT:    ret338;339; RV32I-ZALRSC-LABEL: atomic_load_i16_unordered:340; RV32I-ZALRSC:       # %bb.0:341; RV32I-ZALRSC-NEXT:    lh a0, 0(a0)342; RV32I-ZALRSC-NEXT:    ret343;344; RV32IA-LABEL: atomic_load_i16_unordered:345; RV32IA:       # %bb.0:346; RV32IA-NEXT:    lh a0, 0(a0)347; RV32IA-NEXT:    ret348;349; RV64I-LABEL: atomic_load_i16_unordered:350; RV64I:       # %bb.0:351; RV64I-NEXT:    addi sp, sp, -16352; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill353; RV64I-NEXT:    li a1, 0354; RV64I-NEXT:    call __atomic_load_2355; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload356; RV64I-NEXT:    addi sp, sp, 16357; RV64I-NEXT:    ret358;359; RV64I-ZALRSC-LABEL: atomic_load_i16_unordered:360; RV64I-ZALRSC:       # %bb.0:361; RV64I-ZALRSC-NEXT:    lh a0, 0(a0)362; RV64I-ZALRSC-NEXT:    ret363;364; RV64IA-LABEL: atomic_load_i16_unordered:365; RV64IA:       # %bb.0:366; RV64IA-NEXT:    lh a0, 0(a0)367; RV64IA-NEXT:    ret368  %1 = load atomic i16, ptr %a unordered, align 2369  ret i16 %1370}371 372define i16 @atomic_load_i16_monotonic(ptr %a) nounwind {373; RV32I-LABEL: atomic_load_i16_monotonic:374; RV32I:       # %bb.0:375; RV32I-NEXT:    addi sp, sp, -16376; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill377; RV32I-NEXT:    li a1, 0378; RV32I-NEXT:    call __atomic_load_2379; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload380; RV32I-NEXT:    addi sp, sp, 16381; RV32I-NEXT:    ret382;383; RV32I-ZALRSC-LABEL: atomic_load_i16_monotonic:384; RV32I-ZALRSC:       # %bb.0:385; RV32I-ZALRSC-NEXT:    lh a0, 0(a0)386; RV32I-ZALRSC-NEXT:    ret387;388; RV32IA-LABEL: atomic_load_i16_monotonic:389; RV32IA:       # %bb.0:390; RV32IA-NEXT:    lh a0, 0(a0)391; RV32IA-NEXT:    ret392;393; RV64I-LABEL: atomic_load_i16_monotonic:394; RV64I:       # %bb.0:395; RV64I-NEXT:    addi sp, sp, -16396; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill397; RV64I-NEXT:    li a1, 0398; RV64I-NEXT:    call __atomic_load_2399; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload400; RV64I-NEXT:    addi sp, sp, 16401; RV64I-NEXT:    ret402;403; RV64I-ZALRSC-LABEL: atomic_load_i16_monotonic:404; RV64I-ZALRSC:       # %bb.0:405; RV64I-ZALRSC-NEXT:    lh a0, 0(a0)406; RV64I-ZALRSC-NEXT:    ret407;408; RV64IA-LABEL: atomic_load_i16_monotonic:409; RV64IA:       # %bb.0:410; RV64IA-NEXT:    lh a0, 0(a0)411; RV64IA-NEXT:    ret412  %1 = load atomic i16, ptr %a monotonic, align 2413  ret i16 %1414}415 416define i16 @atomic_load_i16_acquire(ptr %a) nounwind {417; RV32I-LABEL: atomic_load_i16_acquire:418; RV32I:       # %bb.0:419; RV32I-NEXT:    addi sp, sp, -16420; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill421; RV32I-NEXT:    li a1, 2422; RV32I-NEXT:    call __atomic_load_2423; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload424; RV32I-NEXT:    addi sp, sp, 16425; RV32I-NEXT:    ret426;427; RV32I-ZALRSC-LABEL: atomic_load_i16_acquire:428; RV32I-ZALRSC:       # %bb.0:429; RV32I-ZALRSC-NEXT:    lh a0, 0(a0)430; RV32I-ZALRSC-NEXT:    fence r, rw431; RV32I-ZALRSC-NEXT:    ret432;433; RV32IA-WMO-LABEL: atomic_load_i16_acquire:434; RV32IA-WMO:       # %bb.0:435; RV32IA-WMO-NEXT:    lh a0, 0(a0)436; RV32IA-WMO-NEXT:    fence r, rw437; RV32IA-WMO-NEXT:    ret438;439; RV32IA-TSO-LABEL: atomic_load_i16_acquire:440; RV32IA-TSO:       # %bb.0:441; RV32IA-TSO-NEXT:    lh a0, 0(a0)442; RV32IA-TSO-NEXT:    ret443;444; RV64I-LABEL: atomic_load_i16_acquire:445; RV64I:       # %bb.0:446; RV64I-NEXT:    addi sp, sp, -16447; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill448; RV64I-NEXT:    li a1, 2449; RV64I-NEXT:    call __atomic_load_2450; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload451; RV64I-NEXT:    addi sp, sp, 16452; RV64I-NEXT:    ret453;454; RV64I-ZALRSC-LABEL: atomic_load_i16_acquire:455; RV64I-ZALRSC:       # %bb.0:456; RV64I-ZALRSC-NEXT:    lh a0, 0(a0)457; RV64I-ZALRSC-NEXT:    fence r, rw458; RV64I-ZALRSC-NEXT:    ret459;460; RV64IA-WMO-LABEL: atomic_load_i16_acquire:461; RV64IA-WMO:       # %bb.0:462; RV64IA-WMO-NEXT:    lh a0, 0(a0)463; RV64IA-WMO-NEXT:    fence r, rw464; RV64IA-WMO-NEXT:    ret465;466; RV64IA-TSO-LABEL: atomic_load_i16_acquire:467; RV64IA-TSO:       # %bb.0:468; RV64IA-TSO-NEXT:    lh a0, 0(a0)469; RV64IA-TSO-NEXT:    ret470;471; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i16_acquire:472; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:473; RV32IA-WMO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)474; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw475; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret476;477; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i16_acquire:478; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:479; RV32IA-TSO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)480; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret481;482; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i16_acquire:483; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:484; RV64IA-WMO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)485; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw486; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret487;488; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i16_acquire:489; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:490; RV64IA-TSO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)491; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret492;493; RV32IA-ZALASR-WMO-LABEL: atomic_load_i16_acquire:494; RV32IA-ZALASR-WMO:       # %bb.0:495; RV32IA-ZALASR-WMO-NEXT:    lh.aq a0, (a0)496; RV32IA-ZALASR-WMO-NEXT:    ret497;498; RV32IA-ZALASR-TSO-LABEL: atomic_load_i16_acquire:499; RV32IA-ZALASR-TSO:       # %bb.0:500; RV32IA-ZALASR-TSO-NEXT:    lh a0, 0(a0)501; RV32IA-ZALASR-TSO-NEXT:    ret502;503; RV64IA-ZALASR-WMO-LABEL: atomic_load_i16_acquire:504; RV64IA-ZALASR-WMO:       # %bb.0:505; RV64IA-ZALASR-WMO-NEXT:    lh.aq a0, (a0)506; RV64IA-ZALASR-WMO-NEXT:    ret507;508; RV64IA-ZALASR-TSO-LABEL: atomic_load_i16_acquire:509; RV64IA-ZALASR-TSO:       # %bb.0:510; RV64IA-ZALASR-TSO-NEXT:    lh a0, 0(a0)511; RV64IA-ZALASR-TSO-NEXT:    ret512  %1 = load atomic i16, ptr %a acquire, align 2513  ret i16 %1514}515 516define i16 @atomic_load_i16_seq_cst(ptr %a) nounwind {517; RV32I-LABEL: atomic_load_i16_seq_cst:518; RV32I:       # %bb.0:519; RV32I-NEXT:    addi sp, sp, -16520; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill521; RV32I-NEXT:    li a1, 5522; RV32I-NEXT:    call __atomic_load_2523; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload524; RV32I-NEXT:    addi sp, sp, 16525; RV32I-NEXT:    ret526;527; RV32I-ZALRSC-LABEL: atomic_load_i16_seq_cst:528; RV32I-ZALRSC:       # %bb.0:529; RV32I-ZALRSC-NEXT:    fence rw, rw530; RV32I-ZALRSC-NEXT:    lh a0, 0(a0)531; RV32I-ZALRSC-NEXT:    fence r, rw532; RV32I-ZALRSC-NEXT:    ret533;534; RV32IA-WMO-LABEL: atomic_load_i16_seq_cst:535; RV32IA-WMO:       # %bb.0:536; RV32IA-WMO-NEXT:    fence rw, rw537; RV32IA-WMO-NEXT:    lh a0, 0(a0)538; RV32IA-WMO-NEXT:    fence r, rw539; RV32IA-WMO-NEXT:    ret540;541; RV32IA-TSO-LABEL: atomic_load_i16_seq_cst:542; RV32IA-TSO:       # %bb.0:543; RV32IA-TSO-NEXT:    fence rw, rw544; RV32IA-TSO-NEXT:    lh a0, 0(a0)545; RV32IA-TSO-NEXT:    ret546;547; RV64I-LABEL: atomic_load_i16_seq_cst:548; RV64I:       # %bb.0:549; RV64I-NEXT:    addi sp, sp, -16550; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill551; RV64I-NEXT:    li a1, 5552; RV64I-NEXT:    call __atomic_load_2553; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload554; RV64I-NEXT:    addi sp, sp, 16555; RV64I-NEXT:    ret556;557; RV64I-ZALRSC-LABEL: atomic_load_i16_seq_cst:558; RV64I-ZALRSC:       # %bb.0:559; RV64I-ZALRSC-NEXT:    fence rw, rw560; RV64I-ZALRSC-NEXT:    lh a0, 0(a0)561; RV64I-ZALRSC-NEXT:    fence r, rw562; RV64I-ZALRSC-NEXT:    ret563;564; RV64IA-WMO-LABEL: atomic_load_i16_seq_cst:565; RV64IA-WMO:       # %bb.0:566; RV64IA-WMO-NEXT:    fence rw, rw567; RV64IA-WMO-NEXT:    lh a0, 0(a0)568; RV64IA-WMO-NEXT:    fence r, rw569; RV64IA-WMO-NEXT:    ret570;571; RV64IA-TSO-LABEL: atomic_load_i16_seq_cst:572; RV64IA-TSO:       # %bb.0:573; RV64IA-TSO-NEXT:    fence rw, rw574; RV64IA-TSO-NEXT:    lh a0, 0(a0)575; RV64IA-TSO-NEXT:    ret576;577; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i16_seq_cst:578; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:579; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw580; RV32IA-WMO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)581; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw582; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret583;584; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i16_seq_cst:585; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:586; RV32IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw587; RV32IA-TSO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)588; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret589;590; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i16_seq_cst:591; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:592; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw593; RV64IA-WMO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)594; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw595; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret596;597; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i16_seq_cst:598; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:599; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw600; RV64IA-TSO-TRAILING-FENCE-NEXT:    lh a0, 0(a0)601; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret602;603; RV32IA-ZALASR-LABEL: atomic_load_i16_seq_cst:604; RV32IA-ZALASR:       # %bb.0:605; RV32IA-ZALASR-NEXT:    lh.aq a0, (a0)606; RV32IA-ZALASR-NEXT:    ret607;608; RV64IA-ZALASR-LABEL: atomic_load_i16_seq_cst:609; RV64IA-ZALASR:       # %bb.0:610; RV64IA-ZALASR-NEXT:    lh.aq a0, (a0)611; RV64IA-ZALASR-NEXT:    ret612  %1 = load atomic i16, ptr %a seq_cst, align 2613  ret i16 %1614}615 616define i32 @atomic_load_i32_unordered(ptr %a) nounwind {617; RV32I-LABEL: atomic_load_i32_unordered:618; RV32I:       # %bb.0:619; RV32I-NEXT:    addi sp, sp, -16620; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill621; RV32I-NEXT:    li a1, 0622; RV32I-NEXT:    call __atomic_load_4623; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload624; RV32I-NEXT:    addi sp, sp, 16625; RV32I-NEXT:    ret626;627; RV32I-ZALRSC-LABEL: atomic_load_i32_unordered:628; RV32I-ZALRSC:       # %bb.0:629; RV32I-ZALRSC-NEXT:    lw a0, 0(a0)630; RV32I-ZALRSC-NEXT:    ret631;632; RV32IA-LABEL: atomic_load_i32_unordered:633; RV32IA:       # %bb.0:634; RV32IA-NEXT:    lw a0, 0(a0)635; RV32IA-NEXT:    ret636;637; RV64I-LABEL: atomic_load_i32_unordered:638; RV64I:       # %bb.0:639; RV64I-NEXT:    addi sp, sp, -16640; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill641; RV64I-NEXT:    li a1, 0642; RV64I-NEXT:    call __atomic_load_4643; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload644; RV64I-NEXT:    addi sp, sp, 16645; RV64I-NEXT:    ret646;647; RV64I-ZALRSC-LABEL: atomic_load_i32_unordered:648; RV64I-ZALRSC:       # %bb.0:649; RV64I-ZALRSC-NEXT:    lw a0, 0(a0)650; RV64I-ZALRSC-NEXT:    ret651;652; RV64IA-LABEL: atomic_load_i32_unordered:653; RV64IA:       # %bb.0:654; RV64IA-NEXT:    lw a0, 0(a0)655; RV64IA-NEXT:    ret656  %1 = load atomic i32, ptr %a unordered, align 4657  ret i32 %1658}659 660define i32 @atomic_load_i32_monotonic(ptr %a) nounwind {661; RV32I-LABEL: atomic_load_i32_monotonic:662; RV32I:       # %bb.0:663; RV32I-NEXT:    addi sp, sp, -16664; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill665; RV32I-NEXT:    li a1, 0666; RV32I-NEXT:    call __atomic_load_4667; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload668; RV32I-NEXT:    addi sp, sp, 16669; RV32I-NEXT:    ret670;671; RV32I-ZALRSC-LABEL: atomic_load_i32_monotonic:672; RV32I-ZALRSC:       # %bb.0:673; RV32I-ZALRSC-NEXT:    lw a0, 0(a0)674; RV32I-ZALRSC-NEXT:    ret675;676; RV32IA-LABEL: atomic_load_i32_monotonic:677; RV32IA:       # %bb.0:678; RV32IA-NEXT:    lw a0, 0(a0)679; RV32IA-NEXT:    ret680;681; RV64I-LABEL: atomic_load_i32_monotonic:682; RV64I:       # %bb.0:683; RV64I-NEXT:    addi sp, sp, -16684; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill685; RV64I-NEXT:    li a1, 0686; RV64I-NEXT:    call __atomic_load_4687; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload688; RV64I-NEXT:    addi sp, sp, 16689; RV64I-NEXT:    ret690;691; RV64I-ZALRSC-LABEL: atomic_load_i32_monotonic:692; RV64I-ZALRSC:       # %bb.0:693; RV64I-ZALRSC-NEXT:    lw a0, 0(a0)694; RV64I-ZALRSC-NEXT:    ret695;696; RV64IA-LABEL: atomic_load_i32_monotonic:697; RV64IA:       # %bb.0:698; RV64IA-NEXT:    lw a0, 0(a0)699; RV64IA-NEXT:    ret700  %1 = load atomic i32, ptr %a monotonic, align 4701  ret i32 %1702}703 704define i32 @atomic_load_i32_acquire(ptr %a) nounwind {705; RV32I-LABEL: atomic_load_i32_acquire:706; RV32I:       # %bb.0:707; RV32I-NEXT:    addi sp, sp, -16708; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill709; RV32I-NEXT:    li a1, 2710; RV32I-NEXT:    call __atomic_load_4711; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload712; RV32I-NEXT:    addi sp, sp, 16713; RV32I-NEXT:    ret714;715; RV32I-ZALRSC-LABEL: atomic_load_i32_acquire:716; RV32I-ZALRSC:       # %bb.0:717; RV32I-ZALRSC-NEXT:    lw a0, 0(a0)718; RV32I-ZALRSC-NEXT:    fence r, rw719; RV32I-ZALRSC-NEXT:    ret720;721; RV32IA-WMO-LABEL: atomic_load_i32_acquire:722; RV32IA-WMO:       # %bb.0:723; RV32IA-WMO-NEXT:    lw a0, 0(a0)724; RV32IA-WMO-NEXT:    fence r, rw725; RV32IA-WMO-NEXT:    ret726;727; RV32IA-TSO-LABEL: atomic_load_i32_acquire:728; RV32IA-TSO:       # %bb.0:729; RV32IA-TSO-NEXT:    lw a0, 0(a0)730; RV32IA-TSO-NEXT:    ret731;732; RV64I-LABEL: atomic_load_i32_acquire:733; RV64I:       # %bb.0:734; RV64I-NEXT:    addi sp, sp, -16735; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill736; RV64I-NEXT:    li a1, 2737; RV64I-NEXT:    call __atomic_load_4738; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload739; RV64I-NEXT:    addi sp, sp, 16740; RV64I-NEXT:    ret741;742; RV64I-ZALRSC-LABEL: atomic_load_i32_acquire:743; RV64I-ZALRSC:       # %bb.0:744; RV64I-ZALRSC-NEXT:    lw a0, 0(a0)745; RV64I-ZALRSC-NEXT:    fence r, rw746; RV64I-ZALRSC-NEXT:    ret747;748; RV64IA-WMO-LABEL: atomic_load_i32_acquire:749; RV64IA-WMO:       # %bb.0:750; RV64IA-WMO-NEXT:    lw a0, 0(a0)751; RV64IA-WMO-NEXT:    fence r, rw752; RV64IA-WMO-NEXT:    ret753;754; RV64IA-TSO-LABEL: atomic_load_i32_acquire:755; RV64IA-TSO:       # %bb.0:756; RV64IA-TSO-NEXT:    lw a0, 0(a0)757; RV64IA-TSO-NEXT:    ret758;759; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i32_acquire:760; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:761; RV32IA-WMO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)762; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw763; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret764;765; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i32_acquire:766; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:767; RV32IA-TSO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)768; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret769;770; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i32_acquire:771; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:772; RV64IA-WMO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)773; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw774; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret775;776; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i32_acquire:777; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:778; RV64IA-TSO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)779; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret780;781; RV32IA-ZALASR-WMO-LABEL: atomic_load_i32_acquire:782; RV32IA-ZALASR-WMO:       # %bb.0:783; RV32IA-ZALASR-WMO-NEXT:    lw.aq a0, (a0)784; RV32IA-ZALASR-WMO-NEXT:    ret785;786; RV32IA-ZALASR-TSO-LABEL: atomic_load_i32_acquire:787; RV32IA-ZALASR-TSO:       # %bb.0:788; RV32IA-ZALASR-TSO-NEXT:    lw a0, 0(a0)789; RV32IA-ZALASR-TSO-NEXT:    ret790;791; RV64IA-ZALASR-WMO-LABEL: atomic_load_i32_acquire:792; RV64IA-ZALASR-WMO:       # %bb.0:793; RV64IA-ZALASR-WMO-NEXT:    lw.aq a0, (a0)794; RV64IA-ZALASR-WMO-NEXT:    ret795;796; RV64IA-ZALASR-TSO-LABEL: atomic_load_i32_acquire:797; RV64IA-ZALASR-TSO:       # %bb.0:798; RV64IA-ZALASR-TSO-NEXT:    lw a0, 0(a0)799; RV64IA-ZALASR-TSO-NEXT:    ret800  %1 = load atomic i32, ptr %a acquire, align 4801  ret i32 %1802}803 804define i32 @atomic_load_i32_seq_cst(ptr %a) nounwind {805; RV32I-LABEL: atomic_load_i32_seq_cst:806; RV32I:       # %bb.0:807; RV32I-NEXT:    addi sp, sp, -16808; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill809; RV32I-NEXT:    li a1, 5810; RV32I-NEXT:    call __atomic_load_4811; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload812; RV32I-NEXT:    addi sp, sp, 16813; RV32I-NEXT:    ret814;815; RV32I-ZALRSC-LABEL: atomic_load_i32_seq_cst:816; RV32I-ZALRSC:       # %bb.0:817; RV32I-ZALRSC-NEXT:    fence rw, rw818; RV32I-ZALRSC-NEXT:    lw a0, 0(a0)819; RV32I-ZALRSC-NEXT:    fence r, rw820; RV32I-ZALRSC-NEXT:    ret821;822; RV32IA-WMO-LABEL: atomic_load_i32_seq_cst:823; RV32IA-WMO:       # %bb.0:824; RV32IA-WMO-NEXT:    fence rw, rw825; RV32IA-WMO-NEXT:    lw a0, 0(a0)826; RV32IA-WMO-NEXT:    fence r, rw827; RV32IA-WMO-NEXT:    ret828;829; RV32IA-TSO-LABEL: atomic_load_i32_seq_cst:830; RV32IA-TSO:       # %bb.0:831; RV32IA-TSO-NEXT:    fence rw, rw832; RV32IA-TSO-NEXT:    lw a0, 0(a0)833; RV32IA-TSO-NEXT:    ret834;835; RV64I-LABEL: atomic_load_i32_seq_cst:836; RV64I:       # %bb.0:837; RV64I-NEXT:    addi sp, sp, -16838; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill839; RV64I-NEXT:    li a1, 5840; RV64I-NEXT:    call __atomic_load_4841; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload842; RV64I-NEXT:    addi sp, sp, 16843; RV64I-NEXT:    ret844;845; RV64I-ZALRSC-LABEL: atomic_load_i32_seq_cst:846; RV64I-ZALRSC:       # %bb.0:847; RV64I-ZALRSC-NEXT:    fence rw, rw848; RV64I-ZALRSC-NEXT:    lw a0, 0(a0)849; RV64I-ZALRSC-NEXT:    fence r, rw850; RV64I-ZALRSC-NEXT:    ret851;852; RV64IA-WMO-LABEL: atomic_load_i32_seq_cst:853; RV64IA-WMO:       # %bb.0:854; RV64IA-WMO-NEXT:    fence rw, rw855; RV64IA-WMO-NEXT:    lw a0, 0(a0)856; RV64IA-WMO-NEXT:    fence r, rw857; RV64IA-WMO-NEXT:    ret858;859; RV64IA-TSO-LABEL: atomic_load_i32_seq_cst:860; RV64IA-TSO:       # %bb.0:861; RV64IA-TSO-NEXT:    fence rw, rw862; RV64IA-TSO-NEXT:    lw a0, 0(a0)863; RV64IA-TSO-NEXT:    ret864;865; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i32_seq_cst:866; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:867; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw868; RV32IA-WMO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)869; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw870; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret871;872; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i32_seq_cst:873; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:874; RV32IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw875; RV32IA-TSO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)876; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret877;878; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i32_seq_cst:879; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:880; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw881; RV64IA-WMO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)882; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw883; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret884;885; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i32_seq_cst:886; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:887; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw888; RV64IA-TSO-TRAILING-FENCE-NEXT:    lw a0, 0(a0)889; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret890;891; RV32IA-ZALASR-LABEL: atomic_load_i32_seq_cst:892; RV32IA-ZALASR:       # %bb.0:893; RV32IA-ZALASR-NEXT:    lw.aq a0, (a0)894; RV32IA-ZALASR-NEXT:    ret895;896; RV64IA-ZALASR-LABEL: atomic_load_i32_seq_cst:897; RV64IA-ZALASR:       # %bb.0:898; RV64IA-ZALASR-NEXT:    lw.aq a0, (a0)899; RV64IA-ZALASR-NEXT:    ret900  %1 = load atomic i32, ptr %a seq_cst, align 4901  ret i32 %1902}903 904define i64 @atomic_load_i64_unordered(ptr %a) nounwind {905; RV32I-LABEL: atomic_load_i64_unordered:906; RV32I:       # %bb.0:907; RV32I-NEXT:    addi sp, sp, -16908; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill909; RV32I-NEXT:    li a1, 0910; RV32I-NEXT:    call __atomic_load_8911; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload912; RV32I-NEXT:    addi sp, sp, 16913; RV32I-NEXT:    ret914;915; RV32I-ZALRSC-LABEL: atomic_load_i64_unordered:916; RV32I-ZALRSC:       # %bb.0:917; RV32I-ZALRSC-NEXT:    addi sp, sp, -16918; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill919; RV32I-ZALRSC-NEXT:    li a1, 0920; RV32I-ZALRSC-NEXT:    call __atomic_load_8921; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload922; RV32I-ZALRSC-NEXT:    addi sp, sp, 16923; RV32I-ZALRSC-NEXT:    ret924;925; RV32IA-LABEL: atomic_load_i64_unordered:926; RV32IA:       # %bb.0:927; RV32IA-NEXT:    addi sp, sp, -16928; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill929; RV32IA-NEXT:    li a1, 0930; RV32IA-NEXT:    call __atomic_load_8931; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload932; RV32IA-NEXT:    addi sp, sp, 16933; RV32IA-NEXT:    ret934;935; RV64I-LABEL: atomic_load_i64_unordered:936; RV64I:       # %bb.0:937; RV64I-NEXT:    addi sp, sp, -16938; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill939; RV64I-NEXT:    li a1, 0940; RV64I-NEXT:    call __atomic_load_8941; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload942; RV64I-NEXT:    addi sp, sp, 16943; RV64I-NEXT:    ret944;945; RV64I-ZALRSC-LABEL: atomic_load_i64_unordered:946; RV64I-ZALRSC:       # %bb.0:947; RV64I-ZALRSC-NEXT:    ld a0, 0(a0)948; RV64I-ZALRSC-NEXT:    ret949;950; RV64IA-LABEL: atomic_load_i64_unordered:951; RV64IA:       # %bb.0:952; RV64IA-NEXT:    ld a0, 0(a0)953; RV64IA-NEXT:    ret954  %1 = load atomic i64, ptr %a unordered, align 8955  ret i64 %1956}957 958define i64 @atomic_load_i64_monotonic(ptr %a) nounwind {959; RV32I-LABEL: atomic_load_i64_monotonic:960; RV32I:       # %bb.0:961; RV32I-NEXT:    addi sp, sp, -16962; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill963; RV32I-NEXT:    li a1, 0964; RV32I-NEXT:    call __atomic_load_8965; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload966; RV32I-NEXT:    addi sp, sp, 16967; RV32I-NEXT:    ret968;969; RV32I-ZALRSC-LABEL: atomic_load_i64_monotonic:970; RV32I-ZALRSC:       # %bb.0:971; RV32I-ZALRSC-NEXT:    addi sp, sp, -16972; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill973; RV32I-ZALRSC-NEXT:    li a1, 0974; RV32I-ZALRSC-NEXT:    call __atomic_load_8975; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload976; RV32I-ZALRSC-NEXT:    addi sp, sp, 16977; RV32I-ZALRSC-NEXT:    ret978;979; RV32IA-LABEL: atomic_load_i64_monotonic:980; RV32IA:       # %bb.0:981; RV32IA-NEXT:    addi sp, sp, -16982; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill983; RV32IA-NEXT:    li a1, 0984; RV32IA-NEXT:    call __atomic_load_8985; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload986; RV32IA-NEXT:    addi sp, sp, 16987; RV32IA-NEXT:    ret988;989; RV64I-LABEL: atomic_load_i64_monotonic:990; RV64I:       # %bb.0:991; RV64I-NEXT:    addi sp, sp, -16992; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill993; RV64I-NEXT:    li a1, 0994; RV64I-NEXT:    call __atomic_load_8995; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload996; RV64I-NEXT:    addi sp, sp, 16997; RV64I-NEXT:    ret998;999; RV64I-ZALRSC-LABEL: atomic_load_i64_monotonic:1000; RV64I-ZALRSC:       # %bb.0:1001; RV64I-ZALRSC-NEXT:    ld a0, 0(a0)1002; RV64I-ZALRSC-NEXT:    ret1003;1004; RV64IA-LABEL: atomic_load_i64_monotonic:1005; RV64IA:       # %bb.0:1006; RV64IA-NEXT:    ld a0, 0(a0)1007; RV64IA-NEXT:    ret1008  %1 = load atomic i64, ptr %a monotonic, align 81009  ret i64 %11010}1011 1012define i64 @atomic_load_i64_acquire(ptr %a) nounwind {1013; RV32I-LABEL: atomic_load_i64_acquire:1014; RV32I:       # %bb.0:1015; RV32I-NEXT:    addi sp, sp, -161016; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1017; RV32I-NEXT:    li a1, 21018; RV32I-NEXT:    call __atomic_load_81019; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1020; RV32I-NEXT:    addi sp, sp, 161021; RV32I-NEXT:    ret1022;1023; RV32I-ZALRSC-LABEL: atomic_load_i64_acquire:1024; RV32I-ZALRSC:       # %bb.0:1025; RV32I-ZALRSC-NEXT:    addi sp, sp, -161026; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1027; RV32I-ZALRSC-NEXT:    li a1, 21028; RV32I-ZALRSC-NEXT:    call __atomic_load_81029; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1030; RV32I-ZALRSC-NEXT:    addi sp, sp, 161031; RV32I-ZALRSC-NEXT:    ret1032;1033; RV32IA-LABEL: atomic_load_i64_acquire:1034; RV32IA:       # %bb.0:1035; RV32IA-NEXT:    addi sp, sp, -161036; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1037; RV32IA-NEXT:    li a1, 21038; RV32IA-NEXT:    call __atomic_load_81039; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1040; RV32IA-NEXT:    addi sp, sp, 161041; RV32IA-NEXT:    ret1042;1043; RV64I-LABEL: atomic_load_i64_acquire:1044; RV64I:       # %bb.0:1045; RV64I-NEXT:    addi sp, sp, -161046; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1047; RV64I-NEXT:    li a1, 21048; RV64I-NEXT:    call __atomic_load_81049; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1050; RV64I-NEXT:    addi sp, sp, 161051; RV64I-NEXT:    ret1052;1053; RV64I-ZALRSC-LABEL: atomic_load_i64_acquire:1054; RV64I-ZALRSC:       # %bb.0:1055; RV64I-ZALRSC-NEXT:    ld a0, 0(a0)1056; RV64I-ZALRSC-NEXT:    fence r, rw1057; RV64I-ZALRSC-NEXT:    ret1058;1059; RV64IA-WMO-LABEL: atomic_load_i64_acquire:1060; RV64IA-WMO:       # %bb.0:1061; RV64IA-WMO-NEXT:    ld a0, 0(a0)1062; RV64IA-WMO-NEXT:    fence r, rw1063; RV64IA-WMO-NEXT:    ret1064;1065; RV64IA-TSO-LABEL: atomic_load_i64_acquire:1066; RV64IA-TSO:       # %bb.0:1067; RV64IA-TSO-NEXT:    ld a0, 0(a0)1068; RV64IA-TSO-NEXT:    ret1069;1070; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i64_acquire:1071; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:1072; RV64IA-WMO-TRAILING-FENCE-NEXT:    ld a0, 0(a0)1073; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw1074; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret1075;1076; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i64_acquire:1077; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:1078; RV64IA-TSO-TRAILING-FENCE-NEXT:    ld a0, 0(a0)1079; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret1080;1081; RV64IA-ZALASR-WMO-LABEL: atomic_load_i64_acquire:1082; RV64IA-ZALASR-WMO:       # %bb.0:1083; RV64IA-ZALASR-WMO-NEXT:    ld.aq a0, (a0)1084; RV64IA-ZALASR-WMO-NEXT:    ret1085;1086; RV64IA-ZALASR-TSO-LABEL: atomic_load_i64_acquire:1087; RV64IA-ZALASR-TSO:       # %bb.0:1088; RV64IA-ZALASR-TSO-NEXT:    ld a0, 0(a0)1089; RV64IA-ZALASR-TSO-NEXT:    ret1090  %1 = load atomic i64, ptr %a acquire, align 81091  ret i64 %11092}1093 1094define i64 @atomic_load_i64_seq_cst(ptr %a) nounwind {1095; RV32I-LABEL: atomic_load_i64_seq_cst:1096; RV32I:       # %bb.0:1097; RV32I-NEXT:    addi sp, sp, -161098; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1099; RV32I-NEXT:    li a1, 51100; RV32I-NEXT:    call __atomic_load_81101; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1102; RV32I-NEXT:    addi sp, sp, 161103; RV32I-NEXT:    ret1104;1105; RV32I-ZALRSC-LABEL: atomic_load_i64_seq_cst:1106; RV32I-ZALRSC:       # %bb.0:1107; RV32I-ZALRSC-NEXT:    addi sp, sp, -161108; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1109; RV32I-ZALRSC-NEXT:    li a1, 51110; RV32I-ZALRSC-NEXT:    call __atomic_load_81111; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1112; RV32I-ZALRSC-NEXT:    addi sp, sp, 161113; RV32I-ZALRSC-NEXT:    ret1114;1115; RV32IA-LABEL: atomic_load_i64_seq_cst:1116; RV32IA:       # %bb.0:1117; RV32IA-NEXT:    addi sp, sp, -161118; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1119; RV32IA-NEXT:    li a1, 51120; RV32IA-NEXT:    call __atomic_load_81121; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1122; RV32IA-NEXT:    addi sp, sp, 161123; RV32IA-NEXT:    ret1124;1125; RV64I-LABEL: atomic_load_i64_seq_cst:1126; RV64I:       # %bb.0:1127; RV64I-NEXT:    addi sp, sp, -161128; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1129; RV64I-NEXT:    li a1, 51130; RV64I-NEXT:    call __atomic_load_81131; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1132; RV64I-NEXT:    addi sp, sp, 161133; RV64I-NEXT:    ret1134;1135; RV64I-ZALRSC-LABEL: atomic_load_i64_seq_cst:1136; RV64I-ZALRSC:       # %bb.0:1137; RV64I-ZALRSC-NEXT:    fence rw, rw1138; RV64I-ZALRSC-NEXT:    ld a0, 0(a0)1139; RV64I-ZALRSC-NEXT:    fence r, rw1140; RV64I-ZALRSC-NEXT:    ret1141;1142; RV64IA-WMO-LABEL: atomic_load_i64_seq_cst:1143; RV64IA-WMO:       # %bb.0:1144; RV64IA-WMO-NEXT:    fence rw, rw1145; RV64IA-WMO-NEXT:    ld a0, 0(a0)1146; RV64IA-WMO-NEXT:    fence r, rw1147; RV64IA-WMO-NEXT:    ret1148;1149; RV64IA-TSO-LABEL: atomic_load_i64_seq_cst:1150; RV64IA-TSO:       # %bb.0:1151; RV64IA-TSO-NEXT:    fence rw, rw1152; RV64IA-TSO-NEXT:    ld a0, 0(a0)1153; RV64IA-TSO-NEXT:    ret1154;1155; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_load_i64_seq_cst:1156; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:1157; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw1158; RV64IA-WMO-TRAILING-FENCE-NEXT:    ld a0, 0(a0)1159; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence r, rw1160; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret1161;1162; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_load_i64_seq_cst:1163; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:1164; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw1165; RV64IA-TSO-TRAILING-FENCE-NEXT:    ld a0, 0(a0)1166; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret1167;1168; RV64IA-ZALASR-LABEL: atomic_load_i64_seq_cst:1169; RV64IA-ZALASR:       # %bb.0:1170; RV64IA-ZALASR-NEXT:    ld.aq a0, (a0)1171; RV64IA-ZALASR-NEXT:    ret1172  %1 = load atomic i64, ptr %a seq_cst, align 81173  ret i64 %11174}1175 1176define void @atomic_store_i8_unordered(ptr %a, i8 %b) nounwind {1177; RV32I-LABEL: atomic_store_i8_unordered:1178; RV32I:       # %bb.0:1179; RV32I-NEXT:    addi sp, sp, -161180; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1181; RV32I-NEXT:    li a2, 01182; RV32I-NEXT:    call __atomic_store_11183; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1184; RV32I-NEXT:    addi sp, sp, 161185; RV32I-NEXT:    ret1186;1187; RV32I-ZALRSC-LABEL: atomic_store_i8_unordered:1188; RV32I-ZALRSC:       # %bb.0:1189; RV32I-ZALRSC-NEXT:    sb a1, 0(a0)1190; RV32I-ZALRSC-NEXT:    ret1191;1192; RV32IA-LABEL: atomic_store_i8_unordered:1193; RV32IA:       # %bb.0:1194; RV32IA-NEXT:    sb a1, 0(a0)1195; RV32IA-NEXT:    ret1196;1197; RV64I-LABEL: atomic_store_i8_unordered:1198; RV64I:       # %bb.0:1199; RV64I-NEXT:    addi sp, sp, -161200; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1201; RV64I-NEXT:    li a2, 01202; RV64I-NEXT:    call __atomic_store_11203; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1204; RV64I-NEXT:    addi sp, sp, 161205; RV64I-NEXT:    ret1206;1207; RV64I-ZALRSC-LABEL: atomic_store_i8_unordered:1208; RV64I-ZALRSC:       # %bb.0:1209; RV64I-ZALRSC-NEXT:    sb a1, 0(a0)1210; RV64I-ZALRSC-NEXT:    ret1211;1212; RV64IA-LABEL: atomic_store_i8_unordered:1213; RV64IA:       # %bb.0:1214; RV64IA-NEXT:    sb a1, 0(a0)1215; RV64IA-NEXT:    ret1216  store atomic i8 %b, ptr %a unordered, align 11217  ret void1218}1219 1220define void @atomic_store_i8_monotonic(ptr %a, i8 %b) nounwind {1221; RV32I-LABEL: atomic_store_i8_monotonic:1222; RV32I:       # %bb.0:1223; RV32I-NEXT:    addi sp, sp, -161224; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1225; RV32I-NEXT:    li a2, 01226; RV32I-NEXT:    call __atomic_store_11227; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1228; RV32I-NEXT:    addi sp, sp, 161229; RV32I-NEXT:    ret1230;1231; RV32I-ZALRSC-LABEL: atomic_store_i8_monotonic:1232; RV32I-ZALRSC:       # %bb.0:1233; RV32I-ZALRSC-NEXT:    sb a1, 0(a0)1234; RV32I-ZALRSC-NEXT:    ret1235;1236; RV32IA-LABEL: atomic_store_i8_monotonic:1237; RV32IA:       # %bb.0:1238; RV32IA-NEXT:    sb a1, 0(a0)1239; RV32IA-NEXT:    ret1240;1241; RV64I-LABEL: atomic_store_i8_monotonic:1242; RV64I:       # %bb.0:1243; RV64I-NEXT:    addi sp, sp, -161244; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1245; RV64I-NEXT:    li a2, 01246; RV64I-NEXT:    call __atomic_store_11247; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1248; RV64I-NEXT:    addi sp, sp, 161249; RV64I-NEXT:    ret1250;1251; RV64I-ZALRSC-LABEL: atomic_store_i8_monotonic:1252; RV64I-ZALRSC:       # %bb.0:1253; RV64I-ZALRSC-NEXT:    sb a1, 0(a0)1254; RV64I-ZALRSC-NEXT:    ret1255;1256; RV64IA-LABEL: atomic_store_i8_monotonic:1257; RV64IA:       # %bb.0:1258; RV64IA-NEXT:    sb a1, 0(a0)1259; RV64IA-NEXT:    ret1260  store atomic i8 %b, ptr %a monotonic, align 11261  ret void1262}1263 1264define void @atomic_store_i8_release(ptr %a, i8 %b) nounwind {1265; RV32I-LABEL: atomic_store_i8_release:1266; RV32I:       # %bb.0:1267; RV32I-NEXT:    addi sp, sp, -161268; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1269; RV32I-NEXT:    li a2, 31270; RV32I-NEXT:    call __atomic_store_11271; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1272; RV32I-NEXT:    addi sp, sp, 161273; RV32I-NEXT:    ret1274;1275; RV32I-ZALRSC-LABEL: atomic_store_i8_release:1276; RV32I-ZALRSC:       # %bb.0:1277; RV32I-ZALRSC-NEXT:    fence rw, w1278; RV32I-ZALRSC-NEXT:    sb a1, 0(a0)1279; RV32I-ZALRSC-NEXT:    ret1280;1281; RV32IA-WMO-LABEL: atomic_store_i8_release:1282; RV32IA-WMO:       # %bb.0:1283; RV32IA-WMO-NEXT:    fence rw, w1284; RV32IA-WMO-NEXT:    sb a1, 0(a0)1285; RV32IA-WMO-NEXT:    ret1286;1287; RV32IA-TSO-LABEL: atomic_store_i8_release:1288; RV32IA-TSO:       # %bb.0:1289; RV32IA-TSO-NEXT:    sb a1, 0(a0)1290; RV32IA-TSO-NEXT:    ret1291;1292; RV64I-LABEL: atomic_store_i8_release:1293; RV64I:       # %bb.0:1294; RV64I-NEXT:    addi sp, sp, -161295; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1296; RV64I-NEXT:    li a2, 31297; RV64I-NEXT:    call __atomic_store_11298; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1299; RV64I-NEXT:    addi sp, sp, 161300; RV64I-NEXT:    ret1301;1302; RV64I-ZALRSC-LABEL: atomic_store_i8_release:1303; RV64I-ZALRSC:       # %bb.0:1304; RV64I-ZALRSC-NEXT:    fence rw, w1305; RV64I-ZALRSC-NEXT:    sb a1, 0(a0)1306; RV64I-ZALRSC-NEXT:    ret1307;1308; RV64IA-WMO-LABEL: atomic_store_i8_release:1309; RV64IA-WMO:       # %bb.0:1310; RV64IA-WMO-NEXT:    fence rw, w1311; RV64IA-WMO-NEXT:    sb a1, 0(a0)1312; RV64IA-WMO-NEXT:    ret1313;1314; RV64IA-TSO-LABEL: atomic_store_i8_release:1315; RV64IA-TSO:       # %bb.0:1316; RV64IA-TSO-NEXT:    sb a1, 0(a0)1317; RV64IA-TSO-NEXT:    ret1318;1319; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i8_release:1320; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:1321; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1322; RV32IA-WMO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1323; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret1324;1325; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i8_release:1326; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:1327; RV32IA-TSO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1328; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret1329;1330; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i8_release:1331; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:1332; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1333; RV64IA-WMO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1334; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret1335;1336; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i8_release:1337; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:1338; RV64IA-TSO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1339; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret1340;1341; RV32IA-ZALASR-WMO-LABEL: atomic_store_i8_release:1342; RV32IA-ZALASR-WMO:       # %bb.0:1343; RV32IA-ZALASR-WMO-NEXT:    sb.rl a1, (a0)1344; RV32IA-ZALASR-WMO-NEXT:    ret1345;1346; RV32IA-ZALASR-TSO-LABEL: atomic_store_i8_release:1347; RV32IA-ZALASR-TSO:       # %bb.0:1348; RV32IA-ZALASR-TSO-NEXT:    sb a1, 0(a0)1349; RV32IA-ZALASR-TSO-NEXT:    ret1350;1351; RV64IA-ZALASR-WMO-LABEL: atomic_store_i8_release:1352; RV64IA-ZALASR-WMO:       # %bb.0:1353; RV64IA-ZALASR-WMO-NEXT:    sb.rl a1, (a0)1354; RV64IA-ZALASR-WMO-NEXT:    ret1355;1356; RV64IA-ZALASR-TSO-LABEL: atomic_store_i8_release:1357; RV64IA-ZALASR-TSO:       # %bb.0:1358; RV64IA-ZALASR-TSO-NEXT:    sb a1, 0(a0)1359; RV64IA-ZALASR-TSO-NEXT:    ret1360  store atomic i8 %b, ptr %a release, align 11361  ret void1362}1363 1364define void @atomic_store_i8_seq_cst(ptr %a, i8 %b) nounwind {1365; RV32I-LABEL: atomic_store_i8_seq_cst:1366; RV32I:       # %bb.0:1367; RV32I-NEXT:    addi sp, sp, -161368; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1369; RV32I-NEXT:    li a2, 51370; RV32I-NEXT:    call __atomic_store_11371; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1372; RV32I-NEXT:    addi sp, sp, 161373; RV32I-NEXT:    ret1374;1375; RV32I-ZALRSC-LABEL: atomic_store_i8_seq_cst:1376; RV32I-ZALRSC:       # %bb.0:1377; RV32I-ZALRSC-NEXT:    fence rw, w1378; RV32I-ZALRSC-NEXT:    sb a1, 0(a0)1379; RV32I-ZALRSC-NEXT:    fence rw, rw1380; RV32I-ZALRSC-NEXT:    ret1381;1382; RV32IA-WMO-LABEL: atomic_store_i8_seq_cst:1383; RV32IA-WMO:       # %bb.0:1384; RV32IA-WMO-NEXT:    fence rw, w1385; RV32IA-WMO-NEXT:    sb a1, 0(a0)1386; RV32IA-WMO-NEXT:    ret1387;1388; RV32IA-TSO-LABEL: atomic_store_i8_seq_cst:1389; RV32IA-TSO:       # %bb.0:1390; RV32IA-TSO-NEXT:    sb a1, 0(a0)1391; RV32IA-TSO-NEXT:    fence rw, rw1392; RV32IA-TSO-NEXT:    ret1393;1394; RV64I-LABEL: atomic_store_i8_seq_cst:1395; RV64I:       # %bb.0:1396; RV64I-NEXT:    addi sp, sp, -161397; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1398; RV64I-NEXT:    li a2, 51399; RV64I-NEXT:    call __atomic_store_11400; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1401; RV64I-NEXT:    addi sp, sp, 161402; RV64I-NEXT:    ret1403;1404; RV64I-ZALRSC-LABEL: atomic_store_i8_seq_cst:1405; RV64I-ZALRSC:       # %bb.0:1406; RV64I-ZALRSC-NEXT:    fence rw, w1407; RV64I-ZALRSC-NEXT:    sb a1, 0(a0)1408; RV64I-ZALRSC-NEXT:    fence rw, rw1409; RV64I-ZALRSC-NEXT:    ret1410;1411; RV64IA-WMO-LABEL: atomic_store_i8_seq_cst:1412; RV64IA-WMO:       # %bb.0:1413; RV64IA-WMO-NEXT:    fence rw, w1414; RV64IA-WMO-NEXT:    sb a1, 0(a0)1415; RV64IA-WMO-NEXT:    ret1416;1417; RV64IA-TSO-LABEL: atomic_store_i8_seq_cst:1418; RV64IA-TSO:       # %bb.0:1419; RV64IA-TSO-NEXT:    sb a1, 0(a0)1420; RV64IA-TSO-NEXT:    fence rw, rw1421; RV64IA-TSO-NEXT:    ret1422;1423; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i8_seq_cst:1424; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:1425; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1426; RV32IA-WMO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1427; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw1428; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret1429;1430; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i8_seq_cst:1431; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:1432; RV32IA-TSO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1433; RV32IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw1434; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret1435;1436; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i8_seq_cst:1437; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:1438; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1439; RV64IA-WMO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1440; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw1441; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret1442;1443; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i8_seq_cst:1444; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:1445; RV64IA-TSO-TRAILING-FENCE-NEXT:    sb a1, 0(a0)1446; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw1447; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret1448;1449; RV32IA-ZALASR-LABEL: atomic_store_i8_seq_cst:1450; RV32IA-ZALASR:       # %bb.0:1451; RV32IA-ZALASR-NEXT:    sb.rl a1, (a0)1452; RV32IA-ZALASR-NEXT:    ret1453;1454; RV64IA-ZALASR-LABEL: atomic_store_i8_seq_cst:1455; RV64IA-ZALASR:       # %bb.0:1456; RV64IA-ZALASR-NEXT:    sb.rl a1, (a0)1457; RV64IA-ZALASR-NEXT:    ret1458  store atomic i8 %b, ptr %a seq_cst, align 11459  ret void1460}1461 1462define void @atomic_store_i16_unordered(ptr %a, i16 %b) nounwind {1463; RV32I-LABEL: atomic_store_i16_unordered:1464; RV32I:       # %bb.0:1465; RV32I-NEXT:    addi sp, sp, -161466; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1467; RV32I-NEXT:    li a2, 01468; RV32I-NEXT:    call __atomic_store_21469; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1470; RV32I-NEXT:    addi sp, sp, 161471; RV32I-NEXT:    ret1472;1473; RV32I-ZALRSC-LABEL: atomic_store_i16_unordered:1474; RV32I-ZALRSC:       # %bb.0:1475; RV32I-ZALRSC-NEXT:    sh a1, 0(a0)1476; RV32I-ZALRSC-NEXT:    ret1477;1478; RV32IA-LABEL: atomic_store_i16_unordered:1479; RV32IA:       # %bb.0:1480; RV32IA-NEXT:    sh a1, 0(a0)1481; RV32IA-NEXT:    ret1482;1483; RV64I-LABEL: atomic_store_i16_unordered:1484; RV64I:       # %bb.0:1485; RV64I-NEXT:    addi sp, sp, -161486; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1487; RV64I-NEXT:    li a2, 01488; RV64I-NEXT:    call __atomic_store_21489; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1490; RV64I-NEXT:    addi sp, sp, 161491; RV64I-NEXT:    ret1492;1493; RV64I-ZALRSC-LABEL: atomic_store_i16_unordered:1494; RV64I-ZALRSC:       # %bb.0:1495; RV64I-ZALRSC-NEXT:    sh a1, 0(a0)1496; RV64I-ZALRSC-NEXT:    ret1497;1498; RV64IA-LABEL: atomic_store_i16_unordered:1499; RV64IA:       # %bb.0:1500; RV64IA-NEXT:    sh a1, 0(a0)1501; RV64IA-NEXT:    ret1502  store atomic i16 %b, ptr %a unordered, align 21503  ret void1504}1505 1506define void @atomic_store_i16_monotonic(ptr %a, i16 %b) nounwind {1507; RV32I-LABEL: atomic_store_i16_monotonic:1508; RV32I:       # %bb.0:1509; RV32I-NEXT:    addi sp, sp, -161510; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1511; RV32I-NEXT:    li a2, 01512; RV32I-NEXT:    call __atomic_store_21513; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1514; RV32I-NEXT:    addi sp, sp, 161515; RV32I-NEXT:    ret1516;1517; RV32I-ZALRSC-LABEL: atomic_store_i16_monotonic:1518; RV32I-ZALRSC:       # %bb.0:1519; RV32I-ZALRSC-NEXT:    sh a1, 0(a0)1520; RV32I-ZALRSC-NEXT:    ret1521;1522; RV32IA-LABEL: atomic_store_i16_monotonic:1523; RV32IA:       # %bb.0:1524; RV32IA-NEXT:    sh a1, 0(a0)1525; RV32IA-NEXT:    ret1526;1527; RV64I-LABEL: atomic_store_i16_monotonic:1528; RV64I:       # %bb.0:1529; RV64I-NEXT:    addi sp, sp, -161530; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1531; RV64I-NEXT:    li a2, 01532; RV64I-NEXT:    call __atomic_store_21533; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1534; RV64I-NEXT:    addi sp, sp, 161535; RV64I-NEXT:    ret1536;1537; RV64I-ZALRSC-LABEL: atomic_store_i16_monotonic:1538; RV64I-ZALRSC:       # %bb.0:1539; RV64I-ZALRSC-NEXT:    sh a1, 0(a0)1540; RV64I-ZALRSC-NEXT:    ret1541;1542; RV64IA-LABEL: atomic_store_i16_monotonic:1543; RV64IA:       # %bb.0:1544; RV64IA-NEXT:    sh a1, 0(a0)1545; RV64IA-NEXT:    ret1546  store atomic i16 %b, ptr %a monotonic, align 21547  ret void1548}1549 1550define void @atomic_store_i16_release(ptr %a, i16 %b) nounwind {1551; RV32I-LABEL: atomic_store_i16_release:1552; RV32I:       # %bb.0:1553; RV32I-NEXT:    addi sp, sp, -161554; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1555; RV32I-NEXT:    li a2, 31556; RV32I-NEXT:    call __atomic_store_21557; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1558; RV32I-NEXT:    addi sp, sp, 161559; RV32I-NEXT:    ret1560;1561; RV32I-ZALRSC-LABEL: atomic_store_i16_release:1562; RV32I-ZALRSC:       # %bb.0:1563; RV32I-ZALRSC-NEXT:    fence rw, w1564; RV32I-ZALRSC-NEXT:    sh a1, 0(a0)1565; RV32I-ZALRSC-NEXT:    ret1566;1567; RV32IA-WMO-LABEL: atomic_store_i16_release:1568; RV32IA-WMO:       # %bb.0:1569; RV32IA-WMO-NEXT:    fence rw, w1570; RV32IA-WMO-NEXT:    sh a1, 0(a0)1571; RV32IA-WMO-NEXT:    ret1572;1573; RV32IA-TSO-LABEL: atomic_store_i16_release:1574; RV32IA-TSO:       # %bb.0:1575; RV32IA-TSO-NEXT:    sh a1, 0(a0)1576; RV32IA-TSO-NEXT:    ret1577;1578; RV64I-LABEL: atomic_store_i16_release:1579; RV64I:       # %bb.0:1580; RV64I-NEXT:    addi sp, sp, -161581; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1582; RV64I-NEXT:    li a2, 31583; RV64I-NEXT:    call __atomic_store_21584; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1585; RV64I-NEXT:    addi sp, sp, 161586; RV64I-NEXT:    ret1587;1588; RV64I-ZALRSC-LABEL: atomic_store_i16_release:1589; RV64I-ZALRSC:       # %bb.0:1590; RV64I-ZALRSC-NEXT:    fence rw, w1591; RV64I-ZALRSC-NEXT:    sh a1, 0(a0)1592; RV64I-ZALRSC-NEXT:    ret1593;1594; RV64IA-WMO-LABEL: atomic_store_i16_release:1595; RV64IA-WMO:       # %bb.0:1596; RV64IA-WMO-NEXT:    fence rw, w1597; RV64IA-WMO-NEXT:    sh a1, 0(a0)1598; RV64IA-WMO-NEXT:    ret1599;1600; RV64IA-TSO-LABEL: atomic_store_i16_release:1601; RV64IA-TSO:       # %bb.0:1602; RV64IA-TSO-NEXT:    sh a1, 0(a0)1603; RV64IA-TSO-NEXT:    ret1604;1605; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i16_release:1606; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:1607; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1608; RV32IA-WMO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1609; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret1610;1611; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i16_release:1612; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:1613; RV32IA-TSO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1614; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret1615;1616; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i16_release:1617; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:1618; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1619; RV64IA-WMO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1620; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret1621;1622; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i16_release:1623; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:1624; RV64IA-TSO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1625; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret1626;1627; RV32IA-ZALASR-WMO-LABEL: atomic_store_i16_release:1628; RV32IA-ZALASR-WMO:       # %bb.0:1629; RV32IA-ZALASR-WMO-NEXT:    sh.rl a1, (a0)1630; RV32IA-ZALASR-WMO-NEXT:    ret1631;1632; RV32IA-ZALASR-TSO-LABEL: atomic_store_i16_release:1633; RV32IA-ZALASR-TSO:       # %bb.0:1634; RV32IA-ZALASR-TSO-NEXT:    sh a1, 0(a0)1635; RV32IA-ZALASR-TSO-NEXT:    ret1636;1637; RV64IA-ZALASR-WMO-LABEL: atomic_store_i16_release:1638; RV64IA-ZALASR-WMO:       # %bb.0:1639; RV64IA-ZALASR-WMO-NEXT:    sh.rl a1, (a0)1640; RV64IA-ZALASR-WMO-NEXT:    ret1641;1642; RV64IA-ZALASR-TSO-LABEL: atomic_store_i16_release:1643; RV64IA-ZALASR-TSO:       # %bb.0:1644; RV64IA-ZALASR-TSO-NEXT:    sh a1, 0(a0)1645; RV64IA-ZALASR-TSO-NEXT:    ret1646  store atomic i16 %b, ptr %a release, align 21647  ret void1648}1649 1650define void @atomic_store_i16_seq_cst(ptr %a, i16 %b) nounwind {1651; RV32I-LABEL: atomic_store_i16_seq_cst:1652; RV32I:       # %bb.0:1653; RV32I-NEXT:    addi sp, sp, -161654; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1655; RV32I-NEXT:    li a2, 51656; RV32I-NEXT:    call __atomic_store_21657; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1658; RV32I-NEXT:    addi sp, sp, 161659; RV32I-NEXT:    ret1660;1661; RV32I-ZALRSC-LABEL: atomic_store_i16_seq_cst:1662; RV32I-ZALRSC:       # %bb.0:1663; RV32I-ZALRSC-NEXT:    fence rw, w1664; RV32I-ZALRSC-NEXT:    sh a1, 0(a0)1665; RV32I-ZALRSC-NEXT:    fence rw, rw1666; RV32I-ZALRSC-NEXT:    ret1667;1668; RV32IA-WMO-LABEL: atomic_store_i16_seq_cst:1669; RV32IA-WMO:       # %bb.0:1670; RV32IA-WMO-NEXT:    fence rw, w1671; RV32IA-WMO-NEXT:    sh a1, 0(a0)1672; RV32IA-WMO-NEXT:    ret1673;1674; RV32IA-TSO-LABEL: atomic_store_i16_seq_cst:1675; RV32IA-TSO:       # %bb.0:1676; RV32IA-TSO-NEXT:    sh a1, 0(a0)1677; RV32IA-TSO-NEXT:    fence rw, rw1678; RV32IA-TSO-NEXT:    ret1679;1680; RV64I-LABEL: atomic_store_i16_seq_cst:1681; RV64I:       # %bb.0:1682; RV64I-NEXT:    addi sp, sp, -161683; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1684; RV64I-NEXT:    li a2, 51685; RV64I-NEXT:    call __atomic_store_21686; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1687; RV64I-NEXT:    addi sp, sp, 161688; RV64I-NEXT:    ret1689;1690; RV64I-ZALRSC-LABEL: atomic_store_i16_seq_cst:1691; RV64I-ZALRSC:       # %bb.0:1692; RV64I-ZALRSC-NEXT:    fence rw, w1693; RV64I-ZALRSC-NEXT:    sh a1, 0(a0)1694; RV64I-ZALRSC-NEXT:    fence rw, rw1695; RV64I-ZALRSC-NEXT:    ret1696;1697; RV64IA-WMO-LABEL: atomic_store_i16_seq_cst:1698; RV64IA-WMO:       # %bb.0:1699; RV64IA-WMO-NEXT:    fence rw, w1700; RV64IA-WMO-NEXT:    sh a1, 0(a0)1701; RV64IA-WMO-NEXT:    ret1702;1703; RV64IA-TSO-LABEL: atomic_store_i16_seq_cst:1704; RV64IA-TSO:       # %bb.0:1705; RV64IA-TSO-NEXT:    sh a1, 0(a0)1706; RV64IA-TSO-NEXT:    fence rw, rw1707; RV64IA-TSO-NEXT:    ret1708;1709; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i16_seq_cst:1710; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:1711; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1712; RV32IA-WMO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1713; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw1714; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret1715;1716; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i16_seq_cst:1717; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:1718; RV32IA-TSO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1719; RV32IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw1720; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret1721;1722; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i16_seq_cst:1723; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:1724; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1725; RV64IA-WMO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1726; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw1727; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret1728;1729; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i16_seq_cst:1730; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:1731; RV64IA-TSO-TRAILING-FENCE-NEXT:    sh a1, 0(a0)1732; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw1733; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret1734;1735; RV32IA-ZALASR-LABEL: atomic_store_i16_seq_cst:1736; RV32IA-ZALASR:       # %bb.0:1737; RV32IA-ZALASR-NEXT:    sh.rl a1, (a0)1738; RV32IA-ZALASR-NEXT:    ret1739;1740; RV64IA-ZALASR-LABEL: atomic_store_i16_seq_cst:1741; RV64IA-ZALASR:       # %bb.0:1742; RV64IA-ZALASR-NEXT:    sh.rl a1, (a0)1743; RV64IA-ZALASR-NEXT:    ret1744  store atomic i16 %b, ptr %a seq_cst, align 21745  ret void1746}1747 1748define void @atomic_store_i32_unordered(ptr %a, i32 %b) nounwind {1749; RV32I-LABEL: atomic_store_i32_unordered:1750; RV32I:       # %bb.0:1751; RV32I-NEXT:    addi sp, sp, -161752; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1753; RV32I-NEXT:    li a2, 01754; RV32I-NEXT:    call __atomic_store_41755; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1756; RV32I-NEXT:    addi sp, sp, 161757; RV32I-NEXT:    ret1758;1759; RV32I-ZALRSC-LABEL: atomic_store_i32_unordered:1760; RV32I-ZALRSC:       # %bb.0:1761; RV32I-ZALRSC-NEXT:    sw a1, 0(a0)1762; RV32I-ZALRSC-NEXT:    ret1763;1764; RV32IA-LABEL: atomic_store_i32_unordered:1765; RV32IA:       # %bb.0:1766; RV32IA-NEXT:    sw a1, 0(a0)1767; RV32IA-NEXT:    ret1768;1769; RV64I-LABEL: atomic_store_i32_unordered:1770; RV64I:       # %bb.0:1771; RV64I-NEXT:    addi sp, sp, -161772; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1773; RV64I-NEXT:    li a2, 01774; RV64I-NEXT:    call __atomic_store_41775; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1776; RV64I-NEXT:    addi sp, sp, 161777; RV64I-NEXT:    ret1778;1779; RV64I-ZALRSC-LABEL: atomic_store_i32_unordered:1780; RV64I-ZALRSC:       # %bb.0:1781; RV64I-ZALRSC-NEXT:    sw a1, 0(a0)1782; RV64I-ZALRSC-NEXT:    ret1783;1784; RV64IA-LABEL: atomic_store_i32_unordered:1785; RV64IA:       # %bb.0:1786; RV64IA-NEXT:    sw a1, 0(a0)1787; RV64IA-NEXT:    ret1788  store atomic i32 %b, ptr %a unordered, align 41789  ret void1790}1791 1792define void @atomic_store_i32_monotonic(ptr %a, i32 %b) nounwind {1793; RV32I-LABEL: atomic_store_i32_monotonic:1794; RV32I:       # %bb.0:1795; RV32I-NEXT:    addi sp, sp, -161796; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1797; RV32I-NEXT:    li a2, 01798; RV32I-NEXT:    call __atomic_store_41799; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1800; RV32I-NEXT:    addi sp, sp, 161801; RV32I-NEXT:    ret1802;1803; RV32I-ZALRSC-LABEL: atomic_store_i32_monotonic:1804; RV32I-ZALRSC:       # %bb.0:1805; RV32I-ZALRSC-NEXT:    sw a1, 0(a0)1806; RV32I-ZALRSC-NEXT:    ret1807;1808; RV32IA-LABEL: atomic_store_i32_monotonic:1809; RV32IA:       # %bb.0:1810; RV32IA-NEXT:    sw a1, 0(a0)1811; RV32IA-NEXT:    ret1812;1813; RV64I-LABEL: atomic_store_i32_monotonic:1814; RV64I:       # %bb.0:1815; RV64I-NEXT:    addi sp, sp, -161816; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1817; RV64I-NEXT:    li a2, 01818; RV64I-NEXT:    call __atomic_store_41819; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1820; RV64I-NEXT:    addi sp, sp, 161821; RV64I-NEXT:    ret1822;1823; RV64I-ZALRSC-LABEL: atomic_store_i32_monotonic:1824; RV64I-ZALRSC:       # %bb.0:1825; RV64I-ZALRSC-NEXT:    sw a1, 0(a0)1826; RV64I-ZALRSC-NEXT:    ret1827;1828; RV64IA-LABEL: atomic_store_i32_monotonic:1829; RV64IA:       # %bb.0:1830; RV64IA-NEXT:    sw a1, 0(a0)1831; RV64IA-NEXT:    ret1832  store atomic i32 %b, ptr %a monotonic, align 41833  ret void1834}1835 1836define void @atomic_store_i32_release(ptr %a, i32 %b) nounwind {1837; RV32I-LABEL: atomic_store_i32_release:1838; RV32I:       # %bb.0:1839; RV32I-NEXT:    addi sp, sp, -161840; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1841; RV32I-NEXT:    li a2, 31842; RV32I-NEXT:    call __atomic_store_41843; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1844; RV32I-NEXT:    addi sp, sp, 161845; RV32I-NEXT:    ret1846;1847; RV32I-ZALRSC-LABEL: atomic_store_i32_release:1848; RV32I-ZALRSC:       # %bb.0:1849; RV32I-ZALRSC-NEXT:    fence rw, w1850; RV32I-ZALRSC-NEXT:    sw a1, 0(a0)1851; RV32I-ZALRSC-NEXT:    ret1852;1853; RV32IA-WMO-LABEL: atomic_store_i32_release:1854; RV32IA-WMO:       # %bb.0:1855; RV32IA-WMO-NEXT:    fence rw, w1856; RV32IA-WMO-NEXT:    sw a1, 0(a0)1857; RV32IA-WMO-NEXT:    ret1858;1859; RV32IA-TSO-LABEL: atomic_store_i32_release:1860; RV32IA-TSO:       # %bb.0:1861; RV32IA-TSO-NEXT:    sw a1, 0(a0)1862; RV32IA-TSO-NEXT:    ret1863;1864; RV64I-LABEL: atomic_store_i32_release:1865; RV64I:       # %bb.0:1866; RV64I-NEXT:    addi sp, sp, -161867; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1868; RV64I-NEXT:    li a2, 31869; RV64I-NEXT:    call __atomic_store_41870; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1871; RV64I-NEXT:    addi sp, sp, 161872; RV64I-NEXT:    ret1873;1874; RV64I-ZALRSC-LABEL: atomic_store_i32_release:1875; RV64I-ZALRSC:       # %bb.0:1876; RV64I-ZALRSC-NEXT:    fence rw, w1877; RV64I-ZALRSC-NEXT:    sw a1, 0(a0)1878; RV64I-ZALRSC-NEXT:    ret1879;1880; RV64IA-WMO-LABEL: atomic_store_i32_release:1881; RV64IA-WMO:       # %bb.0:1882; RV64IA-WMO-NEXT:    fence rw, w1883; RV64IA-WMO-NEXT:    sw a1, 0(a0)1884; RV64IA-WMO-NEXT:    ret1885;1886; RV64IA-TSO-LABEL: atomic_store_i32_release:1887; RV64IA-TSO:       # %bb.0:1888; RV64IA-TSO-NEXT:    sw a1, 0(a0)1889; RV64IA-TSO-NEXT:    ret1890;1891; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i32_release:1892; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:1893; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1894; RV32IA-WMO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)1895; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret1896;1897; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i32_release:1898; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:1899; RV32IA-TSO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)1900; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret1901;1902; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i32_release:1903; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:1904; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1905; RV64IA-WMO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)1906; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret1907;1908; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i32_release:1909; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:1910; RV64IA-TSO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)1911; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret1912;1913; RV32IA-ZALASR-WMO-LABEL: atomic_store_i32_release:1914; RV32IA-ZALASR-WMO:       # %bb.0:1915; RV32IA-ZALASR-WMO-NEXT:    sw.rl a1, (a0)1916; RV32IA-ZALASR-WMO-NEXT:    ret1917;1918; RV32IA-ZALASR-TSO-LABEL: atomic_store_i32_release:1919; RV32IA-ZALASR-TSO:       # %bb.0:1920; RV32IA-ZALASR-TSO-NEXT:    sw a1, 0(a0)1921; RV32IA-ZALASR-TSO-NEXT:    ret1922;1923; RV64IA-ZALASR-WMO-LABEL: atomic_store_i32_release:1924; RV64IA-ZALASR-WMO:       # %bb.0:1925; RV64IA-ZALASR-WMO-NEXT:    sw.rl a1, (a0)1926; RV64IA-ZALASR-WMO-NEXT:    ret1927;1928; RV64IA-ZALASR-TSO-LABEL: atomic_store_i32_release:1929; RV64IA-ZALASR-TSO:       # %bb.0:1930; RV64IA-ZALASR-TSO-NEXT:    sw a1, 0(a0)1931; RV64IA-ZALASR-TSO-NEXT:    ret1932  store atomic i32 %b, ptr %a release, align 41933  ret void1934}1935 1936define void @atomic_store_i32_seq_cst(ptr %a, i32 %b) nounwind {1937; RV32I-LABEL: atomic_store_i32_seq_cst:1938; RV32I:       # %bb.0:1939; RV32I-NEXT:    addi sp, sp, -161940; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1941; RV32I-NEXT:    li a2, 51942; RV32I-NEXT:    call __atomic_store_41943; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1944; RV32I-NEXT:    addi sp, sp, 161945; RV32I-NEXT:    ret1946;1947; RV32I-ZALRSC-LABEL: atomic_store_i32_seq_cst:1948; RV32I-ZALRSC:       # %bb.0:1949; RV32I-ZALRSC-NEXT:    fence rw, w1950; RV32I-ZALRSC-NEXT:    sw a1, 0(a0)1951; RV32I-ZALRSC-NEXT:    fence rw, rw1952; RV32I-ZALRSC-NEXT:    ret1953;1954; RV32IA-WMO-LABEL: atomic_store_i32_seq_cst:1955; RV32IA-WMO:       # %bb.0:1956; RV32IA-WMO-NEXT:    fence rw, w1957; RV32IA-WMO-NEXT:    sw a1, 0(a0)1958; RV32IA-WMO-NEXT:    ret1959;1960; RV32IA-TSO-LABEL: atomic_store_i32_seq_cst:1961; RV32IA-TSO:       # %bb.0:1962; RV32IA-TSO-NEXT:    sw a1, 0(a0)1963; RV32IA-TSO-NEXT:    fence rw, rw1964; RV32IA-TSO-NEXT:    ret1965;1966; RV64I-LABEL: atomic_store_i32_seq_cst:1967; RV64I:       # %bb.0:1968; RV64I-NEXT:    addi sp, sp, -161969; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1970; RV64I-NEXT:    li a2, 51971; RV64I-NEXT:    call __atomic_store_41972; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1973; RV64I-NEXT:    addi sp, sp, 161974; RV64I-NEXT:    ret1975;1976; RV64I-ZALRSC-LABEL: atomic_store_i32_seq_cst:1977; RV64I-ZALRSC:       # %bb.0:1978; RV64I-ZALRSC-NEXT:    fence rw, w1979; RV64I-ZALRSC-NEXT:    sw a1, 0(a0)1980; RV64I-ZALRSC-NEXT:    fence rw, rw1981; RV64I-ZALRSC-NEXT:    ret1982;1983; RV64IA-WMO-LABEL: atomic_store_i32_seq_cst:1984; RV64IA-WMO:       # %bb.0:1985; RV64IA-WMO-NEXT:    fence rw, w1986; RV64IA-WMO-NEXT:    sw a1, 0(a0)1987; RV64IA-WMO-NEXT:    ret1988;1989; RV64IA-TSO-LABEL: atomic_store_i32_seq_cst:1990; RV64IA-TSO:       # %bb.0:1991; RV64IA-TSO-NEXT:    sw a1, 0(a0)1992; RV64IA-TSO-NEXT:    fence rw, rw1993; RV64IA-TSO-NEXT:    ret1994;1995; RV32IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i32_seq_cst:1996; RV32IA-WMO-TRAILING-FENCE:       # %bb.0:1997; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w1998; RV32IA-WMO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)1999; RV32IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw2000; RV32IA-WMO-TRAILING-FENCE-NEXT:    ret2001;2002; RV32IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i32_seq_cst:2003; RV32IA-TSO-TRAILING-FENCE:       # %bb.0:2004; RV32IA-TSO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)2005; RV32IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw2006; RV32IA-TSO-TRAILING-FENCE-NEXT:    ret2007;2008; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i32_seq_cst:2009; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:2010; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w2011; RV64IA-WMO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)2012; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw2013; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret2014;2015; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i32_seq_cst:2016; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:2017; RV64IA-TSO-TRAILING-FENCE-NEXT:    sw a1, 0(a0)2018; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw2019; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret2020;2021; RV32IA-ZALASR-LABEL: atomic_store_i32_seq_cst:2022; RV32IA-ZALASR:       # %bb.0:2023; RV32IA-ZALASR-NEXT:    sw.rl a1, (a0)2024; RV32IA-ZALASR-NEXT:    ret2025;2026; RV64IA-ZALASR-LABEL: atomic_store_i32_seq_cst:2027; RV64IA-ZALASR:       # %bb.0:2028; RV64IA-ZALASR-NEXT:    sw.rl a1, (a0)2029; RV64IA-ZALASR-NEXT:    ret2030  store atomic i32 %b, ptr %a seq_cst, align 42031  ret void2032}2033 2034define void @atomic_store_i64_unordered(ptr %a, i64 %b) nounwind {2035; RV32I-LABEL: atomic_store_i64_unordered:2036; RV32I:       # %bb.0:2037; RV32I-NEXT:    addi sp, sp, -162038; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2039; RV32I-NEXT:    li a3, 02040; RV32I-NEXT:    call __atomic_store_82041; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2042; RV32I-NEXT:    addi sp, sp, 162043; RV32I-NEXT:    ret2044;2045; RV32I-ZALRSC-LABEL: atomic_store_i64_unordered:2046; RV32I-ZALRSC:       # %bb.0:2047; RV32I-ZALRSC-NEXT:    addi sp, sp, -162048; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2049; RV32I-ZALRSC-NEXT:    li a3, 02050; RV32I-ZALRSC-NEXT:    call __atomic_store_82051; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2052; RV32I-ZALRSC-NEXT:    addi sp, sp, 162053; RV32I-ZALRSC-NEXT:    ret2054;2055; RV32IA-LABEL: atomic_store_i64_unordered:2056; RV32IA:       # %bb.0:2057; RV32IA-NEXT:    addi sp, sp, -162058; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2059; RV32IA-NEXT:    li a3, 02060; RV32IA-NEXT:    call __atomic_store_82061; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2062; RV32IA-NEXT:    addi sp, sp, 162063; RV32IA-NEXT:    ret2064;2065; RV64I-LABEL: atomic_store_i64_unordered:2066; RV64I:       # %bb.0:2067; RV64I-NEXT:    addi sp, sp, -162068; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2069; RV64I-NEXT:    li a2, 02070; RV64I-NEXT:    call __atomic_store_82071; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2072; RV64I-NEXT:    addi sp, sp, 162073; RV64I-NEXT:    ret2074;2075; RV64I-ZALRSC-LABEL: atomic_store_i64_unordered:2076; RV64I-ZALRSC:       # %bb.0:2077; RV64I-ZALRSC-NEXT:    sd a1, 0(a0)2078; RV64I-ZALRSC-NEXT:    ret2079;2080; RV64IA-LABEL: atomic_store_i64_unordered:2081; RV64IA:       # %bb.0:2082; RV64IA-NEXT:    sd a1, 0(a0)2083; RV64IA-NEXT:    ret2084  store atomic i64 %b, ptr %a unordered, align 82085  ret void2086}2087 2088define void @atomic_store_i64_monotonic(ptr %a, i64 %b) nounwind {2089; RV32I-LABEL: atomic_store_i64_monotonic:2090; RV32I:       # %bb.0:2091; RV32I-NEXT:    addi sp, sp, -162092; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2093; RV32I-NEXT:    li a3, 02094; RV32I-NEXT:    call __atomic_store_82095; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2096; RV32I-NEXT:    addi sp, sp, 162097; RV32I-NEXT:    ret2098;2099; RV32I-ZALRSC-LABEL: atomic_store_i64_monotonic:2100; RV32I-ZALRSC:       # %bb.0:2101; RV32I-ZALRSC-NEXT:    addi sp, sp, -162102; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2103; RV32I-ZALRSC-NEXT:    li a3, 02104; RV32I-ZALRSC-NEXT:    call __atomic_store_82105; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2106; RV32I-ZALRSC-NEXT:    addi sp, sp, 162107; RV32I-ZALRSC-NEXT:    ret2108;2109; RV32IA-LABEL: atomic_store_i64_monotonic:2110; RV32IA:       # %bb.0:2111; RV32IA-NEXT:    addi sp, sp, -162112; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2113; RV32IA-NEXT:    li a3, 02114; RV32IA-NEXT:    call __atomic_store_82115; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2116; RV32IA-NEXT:    addi sp, sp, 162117; RV32IA-NEXT:    ret2118;2119; RV64I-LABEL: atomic_store_i64_monotonic:2120; RV64I:       # %bb.0:2121; RV64I-NEXT:    addi sp, sp, -162122; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2123; RV64I-NEXT:    li a2, 02124; RV64I-NEXT:    call __atomic_store_82125; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2126; RV64I-NEXT:    addi sp, sp, 162127; RV64I-NEXT:    ret2128;2129; RV64I-ZALRSC-LABEL: atomic_store_i64_monotonic:2130; RV64I-ZALRSC:       # %bb.0:2131; RV64I-ZALRSC-NEXT:    sd a1, 0(a0)2132; RV64I-ZALRSC-NEXT:    ret2133;2134; RV64IA-LABEL: atomic_store_i64_monotonic:2135; RV64IA:       # %bb.0:2136; RV64IA-NEXT:    sd a1, 0(a0)2137; RV64IA-NEXT:    ret2138  store atomic i64 %b, ptr %a monotonic, align 82139  ret void2140}2141 2142define void @atomic_store_i64_release(ptr %a, i64 %b) nounwind {2143; RV32I-LABEL: atomic_store_i64_release:2144; RV32I:       # %bb.0:2145; RV32I-NEXT:    addi sp, sp, -162146; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2147; RV32I-NEXT:    li a3, 32148; RV32I-NEXT:    call __atomic_store_82149; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2150; RV32I-NEXT:    addi sp, sp, 162151; RV32I-NEXT:    ret2152;2153; RV32I-ZALRSC-LABEL: atomic_store_i64_release:2154; RV32I-ZALRSC:       # %bb.0:2155; RV32I-ZALRSC-NEXT:    addi sp, sp, -162156; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2157; RV32I-ZALRSC-NEXT:    li a3, 32158; RV32I-ZALRSC-NEXT:    call __atomic_store_82159; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2160; RV32I-ZALRSC-NEXT:    addi sp, sp, 162161; RV32I-ZALRSC-NEXT:    ret2162;2163; RV32IA-LABEL: atomic_store_i64_release:2164; RV32IA:       # %bb.0:2165; RV32IA-NEXT:    addi sp, sp, -162166; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2167; RV32IA-NEXT:    li a3, 32168; RV32IA-NEXT:    call __atomic_store_82169; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2170; RV32IA-NEXT:    addi sp, sp, 162171; RV32IA-NEXT:    ret2172;2173; RV64I-LABEL: atomic_store_i64_release:2174; RV64I:       # %bb.0:2175; RV64I-NEXT:    addi sp, sp, -162176; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2177; RV64I-NEXT:    li a2, 32178; RV64I-NEXT:    call __atomic_store_82179; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2180; RV64I-NEXT:    addi sp, sp, 162181; RV64I-NEXT:    ret2182;2183; RV64I-ZALRSC-LABEL: atomic_store_i64_release:2184; RV64I-ZALRSC:       # %bb.0:2185; RV64I-ZALRSC-NEXT:    fence rw, w2186; RV64I-ZALRSC-NEXT:    sd a1, 0(a0)2187; RV64I-ZALRSC-NEXT:    ret2188;2189; RV64IA-WMO-LABEL: atomic_store_i64_release:2190; RV64IA-WMO:       # %bb.0:2191; RV64IA-WMO-NEXT:    fence rw, w2192; RV64IA-WMO-NEXT:    sd a1, 0(a0)2193; RV64IA-WMO-NEXT:    ret2194;2195; RV64IA-TSO-LABEL: atomic_store_i64_release:2196; RV64IA-TSO:       # %bb.0:2197; RV64IA-TSO-NEXT:    sd a1, 0(a0)2198; RV64IA-TSO-NEXT:    ret2199;2200; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i64_release:2201; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:2202; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w2203; RV64IA-WMO-TRAILING-FENCE-NEXT:    sd a1, 0(a0)2204; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret2205;2206; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i64_release:2207; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:2208; RV64IA-TSO-TRAILING-FENCE-NEXT:    sd a1, 0(a0)2209; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret2210;2211; RV64IA-ZALASR-WMO-LABEL: atomic_store_i64_release:2212; RV64IA-ZALASR-WMO:       # %bb.0:2213; RV64IA-ZALASR-WMO-NEXT:    sd.rl a1, (a0)2214; RV64IA-ZALASR-WMO-NEXT:    ret2215;2216; RV64IA-ZALASR-TSO-LABEL: atomic_store_i64_release:2217; RV64IA-ZALASR-TSO:       # %bb.0:2218; RV64IA-ZALASR-TSO-NEXT:    sd a1, 0(a0)2219; RV64IA-ZALASR-TSO-NEXT:    ret2220  store atomic i64 %b, ptr %a release, align 82221  ret void2222}2223 2224define void @atomic_store_i64_seq_cst(ptr %a, i64 %b) nounwind {2225; RV32I-LABEL: atomic_store_i64_seq_cst:2226; RV32I:       # %bb.0:2227; RV32I-NEXT:    addi sp, sp, -162228; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2229; RV32I-NEXT:    li a3, 52230; RV32I-NEXT:    call __atomic_store_82231; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2232; RV32I-NEXT:    addi sp, sp, 162233; RV32I-NEXT:    ret2234;2235; RV32I-ZALRSC-LABEL: atomic_store_i64_seq_cst:2236; RV32I-ZALRSC:       # %bb.0:2237; RV32I-ZALRSC-NEXT:    addi sp, sp, -162238; RV32I-ZALRSC-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2239; RV32I-ZALRSC-NEXT:    li a3, 52240; RV32I-ZALRSC-NEXT:    call __atomic_store_82241; RV32I-ZALRSC-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2242; RV32I-ZALRSC-NEXT:    addi sp, sp, 162243; RV32I-ZALRSC-NEXT:    ret2244;2245; RV32IA-LABEL: atomic_store_i64_seq_cst:2246; RV32IA:       # %bb.0:2247; RV32IA-NEXT:    addi sp, sp, -162248; RV32IA-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2249; RV32IA-NEXT:    li a3, 52250; RV32IA-NEXT:    call __atomic_store_82251; RV32IA-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2252; RV32IA-NEXT:    addi sp, sp, 162253; RV32IA-NEXT:    ret2254;2255; RV64I-LABEL: atomic_store_i64_seq_cst:2256; RV64I:       # %bb.0:2257; RV64I-NEXT:    addi sp, sp, -162258; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2259; RV64I-NEXT:    li a2, 52260; RV64I-NEXT:    call __atomic_store_82261; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2262; RV64I-NEXT:    addi sp, sp, 162263; RV64I-NEXT:    ret2264;2265; RV64I-ZALRSC-LABEL: atomic_store_i64_seq_cst:2266; RV64I-ZALRSC:       # %bb.0:2267; RV64I-ZALRSC-NEXT:    fence rw, w2268; RV64I-ZALRSC-NEXT:    sd a1, 0(a0)2269; RV64I-ZALRSC-NEXT:    fence rw, rw2270; RV64I-ZALRSC-NEXT:    ret2271;2272; RV64IA-WMO-LABEL: atomic_store_i64_seq_cst:2273; RV64IA-WMO:       # %bb.0:2274; RV64IA-WMO-NEXT:    fence rw, w2275; RV64IA-WMO-NEXT:    sd a1, 0(a0)2276; RV64IA-WMO-NEXT:    ret2277;2278; RV64IA-TSO-LABEL: atomic_store_i64_seq_cst:2279; RV64IA-TSO:       # %bb.0:2280; RV64IA-TSO-NEXT:    sd a1, 0(a0)2281; RV64IA-TSO-NEXT:    fence rw, rw2282; RV64IA-TSO-NEXT:    ret2283;2284; RV64IA-WMO-TRAILING-FENCE-LABEL: atomic_store_i64_seq_cst:2285; RV64IA-WMO-TRAILING-FENCE:       # %bb.0:2286; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, w2287; RV64IA-WMO-TRAILING-FENCE-NEXT:    sd a1, 0(a0)2288; RV64IA-WMO-TRAILING-FENCE-NEXT:    fence rw, rw2289; RV64IA-WMO-TRAILING-FENCE-NEXT:    ret2290;2291; RV64IA-TSO-TRAILING-FENCE-LABEL: atomic_store_i64_seq_cst:2292; RV64IA-TSO-TRAILING-FENCE:       # %bb.0:2293; RV64IA-TSO-TRAILING-FENCE-NEXT:    sd a1, 0(a0)2294; RV64IA-TSO-TRAILING-FENCE-NEXT:    fence rw, rw2295; RV64IA-TSO-TRAILING-FENCE-NEXT:    ret2296;2297; RV64IA-ZALASR-LABEL: atomic_store_i64_seq_cst:2298; RV64IA-ZALASR:       # %bb.0:2299; RV64IA-ZALASR-NEXT:    sd.rl a1, (a0)2300; RV64IA-ZALASR-NEXT:    ret2301  store atomic i64 %b, ptr %a seq_cst, align 82302  ret void2303}2304