brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.7 KiB · bd843a3 Raw
499 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=xtensa -mattr=+windowed < %s | FileCheck %s --check-prefixes=XTENSA3; RUN: llc -mtriple=xtensa -mattr=+windowed,s32c1i < %s | FileCheck %s --check-prefixes=XTENSA-ATOMIC4 5define i8 @atomic_load_i8_unordered(ptr %a) nounwind {6; XTENSA-LABEL: atomic_load_i8_unordered:7; XTENSA:       # %bb.0:8; XTENSA-NEXT:    entry a1, 329; XTENSA-NEXT:    or a10, a2, a210; XTENSA-NEXT:    movi a11, 011; XTENSA-NEXT:    l32r a8, .LCPI0_012; XTENSA-NEXT:    callx8 a813; XTENSA-NEXT:    or a2, a10, a1014; XTENSA-NEXT:    retw15;16; XTENSA-ATOMIC-LABEL: atomic_load_i8_unordered:17; XTENSA-ATOMIC:       # %bb.0:18; XTENSA-ATOMIC-NEXT:    entry a1, 3219; XTENSA-ATOMIC-NEXT:    l8ui a2, a2, 020; XTENSA-ATOMIC-NEXT:    retw21  %1 = load atomic i8, ptr %a unordered, align 122  ret i8 %123}24 25define i8 @atomic_load_i8_monotonic(ptr %a) nounwind {26; XTENSA-LABEL: atomic_load_i8_monotonic:27; XTENSA:       # %bb.0:28; XTENSA-NEXT:    entry a1, 3229; XTENSA-NEXT:    or a10, a2, a230; XTENSA-NEXT:    movi a11, 031; XTENSA-NEXT:    l32r a8, .LCPI1_032; XTENSA-NEXT:    callx8 a833; XTENSA-NEXT:    or a2, a10, a1034; XTENSA-NEXT:    retw35;36; XTENSA-ATOMIC-LABEL: atomic_load_i8_monotonic:37; XTENSA-ATOMIC:       # %bb.0:38; XTENSA-ATOMIC-NEXT:    entry a1, 3239; XTENSA-ATOMIC-NEXT:    l8ui a2, a2, 040; XTENSA-ATOMIC-NEXT:    retw41  %1 = load atomic i8, ptr %a monotonic, align 142  ret i8 %143}44 45define i8 @atomic_load_i8_acquire(ptr %a) nounwind {46; XTENSA-LABEL: atomic_load_i8_acquire:47; XTENSA:       # %bb.0:48; XTENSA-NEXT:    entry a1, 3249; XTENSA-NEXT:    or a10, a2, a250; XTENSA-NEXT:    movi a11, 251; XTENSA-NEXT:    l32r a8, .LCPI2_052; XTENSA-NEXT:    callx8 a853; XTENSA-NEXT:    or a2, a10, a1054; XTENSA-NEXT:    retw55;56; XTENSA-ATOMIC-LABEL: atomic_load_i8_acquire:57; XTENSA-ATOMIC:       # %bb.0:58; XTENSA-ATOMIC-NEXT:    entry a1, 3259; XTENSA-ATOMIC-NEXT:    l8ui a2, a2, 060; XTENSA-ATOMIC-NEXT:    memw61; XTENSA-ATOMIC-NEXT:    retw62  %1 = load atomic i8, ptr %a acquire, align 163  ret i8 %164}65 66define i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {67; XTENSA-LABEL: atomic_load_i8_seq_cst:68; XTENSA:       # %bb.0:69; XTENSA-NEXT:    entry a1, 3270; XTENSA-NEXT:    or a10, a2, a271; XTENSA-NEXT:    movi a11, 572; XTENSA-NEXT:    l32r a8, .LCPI3_073; XTENSA-NEXT:    callx8 a874; XTENSA-NEXT:    or a2, a10, a1075; XTENSA-NEXT:    retw76;77; XTENSA-ATOMIC-LABEL: atomic_load_i8_seq_cst:78; XTENSA-ATOMIC:       # %bb.0:79; XTENSA-ATOMIC-NEXT:    entry a1, 3280; XTENSA-ATOMIC-NEXT:    l8ui a2, a2, 081; XTENSA-ATOMIC-NEXT:    memw82; XTENSA-ATOMIC-NEXT:    retw83  %1 = load atomic i8, ptr %a seq_cst, align 184  ret i8 %185}86 87define i16 @atomic_load_i16_unordered(ptr %a) nounwind {88; XTENSA-LABEL: atomic_load_i16_unordered:89; XTENSA:       # %bb.0:90; XTENSA-NEXT:    entry a1, 3291; XTENSA-NEXT:    or a10, a2, a292; XTENSA-NEXT:    movi a11, 093; XTENSA-NEXT:    l32r a8, .LCPI4_094; XTENSA-NEXT:    callx8 a895; XTENSA-NEXT:    or a2, a10, a1096; XTENSA-NEXT:    retw97;98; XTENSA-ATOMIC-LABEL: atomic_load_i16_unordered:99; XTENSA-ATOMIC:       # %bb.0:100; XTENSA-ATOMIC-NEXT:    entry a1, 32101; XTENSA-ATOMIC-NEXT:    l16ui a2, a2, 0102; XTENSA-ATOMIC-NEXT:    retw103  %1 = load atomic i16, ptr %a unordered, align 2104  ret i16 %1105}106 107define i16 @atomic_load_i16_monotonic(ptr %a) nounwind {108; XTENSA-LABEL: atomic_load_i16_monotonic:109; XTENSA:       # %bb.0:110; XTENSA-NEXT:    entry a1, 32111; XTENSA-NEXT:    or a10, a2, a2112; XTENSA-NEXT:    movi a11, 0113; XTENSA-NEXT:    l32r a8, .LCPI5_0114; XTENSA-NEXT:    callx8 a8115; XTENSA-NEXT:    or a2, a10, a10116; XTENSA-NEXT:    retw117;118; XTENSA-ATOMIC-LABEL: atomic_load_i16_monotonic:119; XTENSA-ATOMIC:       # %bb.0:120; XTENSA-ATOMIC-NEXT:    entry a1, 32121; XTENSA-ATOMIC-NEXT:    l16ui a2, a2, 0122; XTENSA-ATOMIC-NEXT:    retw123  %1 = load atomic i16, ptr %a monotonic, align 2124  ret i16 %1125}126 127define i16 @atomic_load_i16_acquire(ptr %a) nounwind {128; XTENSA-LABEL: atomic_load_i16_acquire:129; XTENSA:       # %bb.0:130; XTENSA-NEXT:    entry a1, 32131; XTENSA-NEXT:    or a10, a2, a2132; XTENSA-NEXT:    movi a11, 2133; XTENSA-NEXT:    l32r a8, .LCPI6_0134; XTENSA-NEXT:    callx8 a8135; XTENSA-NEXT:    or a2, a10, a10136; XTENSA-NEXT:    retw137;138; XTENSA-ATOMIC-LABEL: atomic_load_i16_acquire:139; XTENSA-ATOMIC:       # %bb.0:140; XTENSA-ATOMIC-NEXT:    entry a1, 32141; XTENSA-ATOMIC-NEXT:    l16ui a2, a2, 0142; XTENSA-ATOMIC-NEXT:    memw143; XTENSA-ATOMIC-NEXT:    retw144  %1 = load atomic i16, ptr %a acquire, align 2145  ret i16 %1146}147 148define i16 @atomic_load_i16_seq_cst(ptr %a) nounwind {149; XTENSA-LABEL: atomic_load_i16_seq_cst:150; XTENSA:       # %bb.0:151; XTENSA-NEXT:    entry a1, 32152; XTENSA-NEXT:    or a10, a2, a2153; XTENSA-NEXT:    movi a11, 5154; XTENSA-NEXT:    l32r a8, .LCPI7_0155; XTENSA-NEXT:    callx8 a8156; XTENSA-NEXT:    or a2, a10, a10157; XTENSA-NEXT:    retw158;159; XTENSA-ATOMIC-LABEL: atomic_load_i16_seq_cst:160; XTENSA-ATOMIC:       # %bb.0:161; XTENSA-ATOMIC-NEXT:    entry a1, 32162; XTENSA-ATOMIC-NEXT:    l16ui a2, a2, 0163; XTENSA-ATOMIC-NEXT:    memw164; XTENSA-ATOMIC-NEXT:    retw165  %1 = load atomic i16, ptr %a seq_cst, align 2166  ret i16 %1167}168 169define i32 @atomic_load_i32_unordered(ptr %a) nounwind {170; XTENSA-LABEL: atomic_load_i32_unordered:171; XTENSA:       # %bb.0:172; XTENSA-NEXT:    entry a1, 32173; XTENSA-NEXT:    or a10, a2, a2174; XTENSA-NEXT:    movi a11, 0175; XTENSA-NEXT:    l32r a8, .LCPI8_0176; XTENSA-NEXT:    callx8 a8177; XTENSA-NEXT:    or a2, a10, a10178; XTENSA-NEXT:    retw179;180; XTENSA-ATOMIC-LABEL: atomic_load_i32_unordered:181; XTENSA-ATOMIC:       # %bb.0:182; XTENSA-ATOMIC-NEXT:    entry a1, 32183; XTENSA-ATOMIC-NEXT:    l32i a2, a2, 0184; XTENSA-ATOMIC-NEXT:    retw185  %1 = load atomic i32, ptr %a unordered, align 4186  ret i32 %1187}188 189define i32 @atomic_load_i32_monotonic(ptr %a) nounwind {190; XTENSA-LABEL: atomic_load_i32_monotonic:191; XTENSA:       # %bb.0:192; XTENSA-NEXT:    entry a1, 32193; XTENSA-NEXT:    or a10, a2, a2194; XTENSA-NEXT:    movi a11, 0195; XTENSA-NEXT:    l32r a8, .LCPI9_0196; XTENSA-NEXT:    callx8 a8197; XTENSA-NEXT:    or a2, a10, a10198; XTENSA-NEXT:    retw199;200; XTENSA-ATOMIC-LABEL: atomic_load_i32_monotonic:201; XTENSA-ATOMIC:       # %bb.0:202; XTENSA-ATOMIC-NEXT:    entry a1, 32203; XTENSA-ATOMIC-NEXT:    l32i a2, a2, 0204; XTENSA-ATOMIC-NEXT:    retw205  %1 = load atomic i32, ptr %a monotonic, align 4206  ret i32 %1207}208 209define i32 @atomic_load_i32_acquire(ptr %a) nounwind {210; XTENSA-LABEL: atomic_load_i32_acquire:211; XTENSA:       # %bb.0:212; XTENSA-NEXT:    entry a1, 32213; XTENSA-NEXT:    or a10, a2, a2214; XTENSA-NEXT:    movi a11, 2215; XTENSA-NEXT:    l32r a8, .LCPI10_0216; XTENSA-NEXT:    callx8 a8217; XTENSA-NEXT:    or a2, a10, a10218; XTENSA-NEXT:    retw219;220; XTENSA-ATOMIC-LABEL: atomic_load_i32_acquire:221; XTENSA-ATOMIC:       # %bb.0:222; XTENSA-ATOMIC-NEXT:    entry a1, 32223; XTENSA-ATOMIC-NEXT:    l32i a2, a2, 0224; XTENSA-ATOMIC-NEXT:    memw225; XTENSA-ATOMIC-NEXT:    retw226  %1 = load atomic i32, ptr %a acquire, align 4227  ret i32 %1228}229 230define i32 @atomic_load_i32_seq_cst(ptr %a) nounwind {231; XTENSA-LABEL: atomic_load_i32_seq_cst:232; XTENSA:       # %bb.0:233; XTENSA-NEXT:    entry a1, 32234; XTENSA-NEXT:    or a10, a2, a2235; XTENSA-NEXT:    movi a11, 5236; XTENSA-NEXT:    l32r a8, .LCPI11_0237; XTENSA-NEXT:    callx8 a8238; XTENSA-NEXT:    or a2, a10, a10239; XTENSA-NEXT:    retw240;241; XTENSA-ATOMIC-LABEL: atomic_load_i32_seq_cst:242; XTENSA-ATOMIC:       # %bb.0:243; XTENSA-ATOMIC-NEXT:    entry a1, 32244; XTENSA-ATOMIC-NEXT:    l32i a2, a2, 0245; XTENSA-ATOMIC-NEXT:    memw246; XTENSA-ATOMIC-NEXT:    retw247  %1 = load atomic i32, ptr %a seq_cst, align 4248  ret i32 %1249}250 251define void @atomic_store_i8_unordered(ptr %a, i8 %b) nounwind {252; XTENSA-LABEL: atomic_store_i8_unordered:253; XTENSA:       # %bb.0:254; XTENSA-NEXT:    entry a1, 32255; XTENSA-NEXT:    or a11, a3, a3256; XTENSA-NEXT:    or a10, a2, a2257; XTENSA-NEXT:    movi a12, 0258; XTENSA-NEXT:    l32r a8, .LCPI12_0259; XTENSA-NEXT:    callx8 a8260; XTENSA-NEXT:    retw261;262; XTENSA-ATOMIC-LABEL: atomic_store_i8_unordered:263; XTENSA-ATOMIC:       # %bb.0:264; XTENSA-ATOMIC-NEXT:    entry a1, 32265; XTENSA-ATOMIC-NEXT:    s8i a3, a2, 0266; XTENSA-ATOMIC-NEXT:    retw267  store atomic i8 %b, ptr %a unordered, align 1268  ret void269}270 271define void @atomic_store_i8_monotonic(ptr %a, i8 %b) nounwind {272; XTENSA-LABEL: atomic_store_i8_monotonic:273; XTENSA:       # %bb.0:274; XTENSA-NEXT:    entry a1, 32275; XTENSA-NEXT:    or a11, a3, a3276; XTENSA-NEXT:    or a10, a2, a2277; XTENSA-NEXT:    movi a12, 0278; XTENSA-NEXT:    l32r a8, .LCPI13_0279; XTENSA-NEXT:    callx8 a8280; XTENSA-NEXT:    retw281;282; XTENSA-ATOMIC-LABEL: atomic_store_i8_monotonic:283; XTENSA-ATOMIC:       # %bb.0:284; XTENSA-ATOMIC-NEXT:    entry a1, 32285; XTENSA-ATOMIC-NEXT:    s8i a3, a2, 0286; XTENSA-ATOMIC-NEXT:    retw287  store atomic i8 %b, ptr %a monotonic, align 1288  ret void289}290 291define void @atomic_store_i8_release(ptr %a, i8 %b) nounwind {292; XTENSA-LABEL: atomic_store_i8_release:293; XTENSA:       # %bb.0:294; XTENSA-NEXT:    entry a1, 32295; XTENSA-NEXT:    or a11, a3, a3296; XTENSA-NEXT:    or a10, a2, a2297; XTENSA-NEXT:    movi a12, 3298; XTENSA-NEXT:    l32r a8, .LCPI14_0299; XTENSA-NEXT:    callx8 a8300; XTENSA-NEXT:    retw301;302; XTENSA-ATOMIC-LABEL: atomic_store_i8_release:303; XTENSA-ATOMIC:       # %bb.0:304; XTENSA-ATOMIC-NEXT:    entry a1, 32305; XTENSA-ATOMIC-NEXT:    memw306; XTENSA-ATOMIC-NEXT:    s8i a3, a2, 0307; XTENSA-ATOMIC-NEXT:    retw308  store atomic i8 %b, ptr %a release, align 1309  ret void310}311 312define void @atomic_store_i8_seq_cst(ptr %a, i8 %b) nounwind {313; XTENSA-LABEL: atomic_store_i8_seq_cst:314; XTENSA:       # %bb.0:315; XTENSA-NEXT:    entry a1, 32316; XTENSA-NEXT:    or a11, a3, a3317; XTENSA-NEXT:    or a10, a2, a2318; XTENSA-NEXT:    movi a12, 5319; XTENSA-NEXT:    l32r a8, .LCPI15_0320; XTENSA-NEXT:    callx8 a8321; XTENSA-NEXT:    retw322;323; XTENSA-ATOMIC-LABEL: atomic_store_i8_seq_cst:324; XTENSA-ATOMIC:       # %bb.0:325; XTENSA-ATOMIC-NEXT:    entry a1, 32326; XTENSA-ATOMIC-NEXT:    memw327; XTENSA-ATOMIC-NEXT:    s8i a3, a2, 0328; XTENSA-ATOMIC-NEXT:    memw329; XTENSA-ATOMIC-NEXT:    retw330  store atomic i8 %b, ptr %a seq_cst, align 1331  ret void332}333 334define void @atomic_store_i16_unordered(ptr %a, i16 %b) nounwind {335; XTENSA-LABEL: atomic_store_i16_unordered:336; XTENSA:       # %bb.0:337; XTENSA-NEXT:    entry a1, 32338; XTENSA-NEXT:    or a11, a3, a3339; XTENSA-NEXT:    or a10, a2, a2340; XTENSA-NEXT:    movi a12, 0341; XTENSA-NEXT:    l32r a8, .LCPI16_0342; XTENSA-NEXT:    callx8 a8343; XTENSA-NEXT:    retw344;345; XTENSA-ATOMIC-LABEL: atomic_store_i16_unordered:346; XTENSA-ATOMIC:       # %bb.0:347; XTENSA-ATOMIC-NEXT:    entry a1, 32348; XTENSA-ATOMIC-NEXT:    s16i a3, a2, 0349; XTENSA-ATOMIC-NEXT:    retw350  store atomic i16 %b, ptr %a unordered, align 2351  ret void352}353 354define void @atomic_store_i16_monotonic(ptr %a, i16 %b) nounwind {355; XTENSA-LABEL: atomic_store_i16_monotonic:356; XTENSA:       # %bb.0:357; XTENSA-NEXT:    entry a1, 32358; XTENSA-NEXT:    or a11, a3, a3359; XTENSA-NEXT:    or a10, a2, a2360; XTENSA-NEXT:    movi a12, 0361; XTENSA-NEXT:    l32r a8, .LCPI17_0362; XTENSA-NEXT:    callx8 a8363; XTENSA-NEXT:    retw364;365; XTENSA-ATOMIC-LABEL: atomic_store_i16_monotonic:366; XTENSA-ATOMIC:       # %bb.0:367; XTENSA-ATOMIC-NEXT:    entry a1, 32368; XTENSA-ATOMIC-NEXT:    s16i a3, a2, 0369; XTENSA-ATOMIC-NEXT:    retw370  store atomic i16 %b, ptr %a monotonic, align 2371  ret void372}373 374define void @atomic_store_i16_release(ptr %a, i16 %b) nounwind {375; XTENSA-LABEL: atomic_store_i16_release:376; XTENSA:       # %bb.0:377; XTENSA-NEXT:    entry a1, 32378; XTENSA-NEXT:    or a11, a3, a3379; XTENSA-NEXT:    or a10, a2, a2380; XTENSA-NEXT:    movi a12, 3381; XTENSA-NEXT:    l32r a8, .LCPI18_0382; XTENSA-NEXT:    callx8 a8383; XTENSA-NEXT:    retw384;385; XTENSA-ATOMIC-LABEL: atomic_store_i16_release:386; XTENSA-ATOMIC:       # %bb.0:387; XTENSA-ATOMIC-NEXT:    entry a1, 32388; XTENSA-ATOMIC-NEXT:    memw389; XTENSA-ATOMIC-NEXT:    s16i a3, a2, 0390; XTENSA-ATOMIC-NEXT:    retw391  store atomic i16 %b, ptr %a release, align 2392  ret void393}394 395define void @atomic_store_i16_seq_cst(ptr %a, i16 %b) nounwind {396; XTENSA-LABEL: atomic_store_i16_seq_cst:397; XTENSA:       # %bb.0:398; XTENSA-NEXT:    entry a1, 32399; XTENSA-NEXT:    or a11, a3, a3400; XTENSA-NEXT:    or a10, a2, a2401; XTENSA-NEXT:    movi a12, 5402; XTENSA-NEXT:    l32r a8, .LCPI19_0403; XTENSA-NEXT:    callx8 a8404; XTENSA-NEXT:    retw405;406; XTENSA-ATOMIC-LABEL: atomic_store_i16_seq_cst:407; XTENSA-ATOMIC:       # %bb.0:408; XTENSA-ATOMIC-NEXT:    entry a1, 32409; XTENSA-ATOMIC-NEXT:    memw410; XTENSA-ATOMIC-NEXT:    s16i a3, a2, 0411; XTENSA-ATOMIC-NEXT:    memw412; XTENSA-ATOMIC-NEXT:    retw413  store atomic i16 %b, ptr %a seq_cst, align 2414  ret void415}416 417define void @atomic_store_i32_unordered(ptr %a, i32 %b) nounwind {418; XTENSA-LABEL: atomic_store_i32_unordered:419; XTENSA:       # %bb.0:420; XTENSA-NEXT:    entry a1, 32421; XTENSA-NEXT:    or a11, a3, a3422; XTENSA-NEXT:    or a10, a2, a2423; XTENSA-NEXT:    movi a12, 0424; XTENSA-NEXT:    l32r a8, .LCPI20_0425; XTENSA-NEXT:    callx8 a8426; XTENSA-NEXT:    retw427;428; XTENSA-ATOMIC-LABEL: atomic_store_i32_unordered:429; XTENSA-ATOMIC:       # %bb.0:430; XTENSA-ATOMIC-NEXT:    entry a1, 32431; XTENSA-ATOMIC-NEXT:    s32i a3, a2, 0432; XTENSA-ATOMIC-NEXT:    retw433  store atomic i32 %b, ptr %a unordered, align 4434  ret void435}436 437define void @atomic_store_i32_monotonic(ptr %a, i32 %b) nounwind {438; XTENSA-LABEL: atomic_store_i32_monotonic:439; XTENSA:       # %bb.0:440; XTENSA-NEXT:    entry a1, 32441; XTENSA-NEXT:    or a11, a3, a3442; XTENSA-NEXT:    or a10, a2, a2443; XTENSA-NEXT:    movi a12, 0444; XTENSA-NEXT:    l32r a8, .LCPI21_0445; XTENSA-NEXT:    callx8 a8446; XTENSA-NEXT:    retw447;448; XTENSA-ATOMIC-LABEL: atomic_store_i32_monotonic:449; XTENSA-ATOMIC:       # %bb.0:450; XTENSA-ATOMIC-NEXT:    entry a1, 32451; XTENSA-ATOMIC-NEXT:    s32i a3, a2, 0452; XTENSA-ATOMIC-NEXT:    retw453  store atomic i32 %b, ptr %a monotonic, align 4454  ret void455}456 457define void @atomic_store_i32_release(ptr %a, i32 %b) nounwind {458; XTENSA-LABEL: atomic_store_i32_release:459; XTENSA:       # %bb.0:460; XTENSA-NEXT:    entry a1, 32461; XTENSA-NEXT:    or a11, a3, a3462; XTENSA-NEXT:    or a10, a2, a2463; XTENSA-NEXT:    movi a12, 3464; XTENSA-NEXT:    l32r a8, .LCPI22_0465; XTENSA-NEXT:    callx8 a8466; XTENSA-NEXT:    retw467;468; XTENSA-ATOMIC-LABEL: atomic_store_i32_release:469; XTENSA-ATOMIC:       # %bb.0:470; XTENSA-ATOMIC-NEXT:    entry a1, 32471; XTENSA-ATOMIC-NEXT:    memw472; XTENSA-ATOMIC-NEXT:    s32i a3, a2, 0473; XTENSA-ATOMIC-NEXT:    retw474  store atomic i32 %b, ptr %a release, align 4475  ret void476}477 478define void @atomic_store_i32_seq_cst(ptr %a, i32 %b) nounwind {479; XTENSA-LABEL: atomic_store_i32_seq_cst:480; XTENSA:       # %bb.0:481; XTENSA-NEXT:    entry a1, 32482; XTENSA-NEXT:    or a11, a3, a3483; XTENSA-NEXT:    or a10, a2, a2484; XTENSA-NEXT:    movi a12, 5485; XTENSA-NEXT:    l32r a8, .LCPI23_0486; XTENSA-NEXT:    callx8 a8487; XTENSA-NEXT:    retw488;489; XTENSA-ATOMIC-LABEL: atomic_store_i32_seq_cst:490; XTENSA-ATOMIC:       # %bb.0:491; XTENSA-ATOMIC-NEXT:    entry a1, 32492; XTENSA-ATOMIC-NEXT:    memw493; XTENSA-ATOMIC-NEXT:    s32i a3, a2, 0494; XTENSA-ATOMIC-NEXT:    memw495; XTENSA-ATOMIC-NEXT:    retw496  store atomic i32 %b, ptr %a seq_cst, align 4497  ret void498}499