brintos

brintos / llvm-project-archived public Read only

0
0
Text · 46.7 KiB · 2735819 Raw
1753 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv6m-none-eabi %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-T13; RUN: llc -mtriple=thumbv7m-none-eabi %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-T24; RUN: llc -mtriple=armv7a-none-eabi %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-ARM5 6define ptr @i32_0(ptr %p, i32 %v) {7; CHECK-LABEL: i32_0:8; CHECK:       @ %bb.0:9; CHECK-NEXT:    str r1, [r0]10; CHECK-NEXT:    bx lr11  store i32 %v, ptr %p, align 412  ret ptr %p13}14 15define ptr @i32_3(ptr %p, i32 %v) {16; CHECK-T1-LABEL: i32_3:17; CHECK-T1:       @ %bb.0:18; CHECK-T1-NEXT:    movs r2, #319; CHECK-T1-NEXT:    str r1, [r0, r2]20; CHECK-T1-NEXT:    adds r0, r0, #321; CHECK-T1-NEXT:    bx lr22;23; CHECK-T2-LABEL: i32_3:24; CHECK-T2:       @ %bb.0:25; CHECK-T2-NEXT:    str r1, [r0, #3]!26; CHECK-T2-NEXT:    bx lr27;28; CHECK-ARM-LABEL: i32_3:29; CHECK-ARM:       @ %bb.0:30; CHECK-ARM-NEXT:    str r1, [r0, #3]!31; CHECK-ARM-NEXT:    bx lr32  %o = getelementptr inbounds i8, ptr %p, i32 333  store i32 %v, ptr %o, align 434  ret ptr %o35}36 37define ptr @i32_4(ptr %p, i32 %v) {38; CHECK-T1-LABEL: i32_4:39; CHECK-T1:       @ %bb.0:40; CHECK-T1-NEXT:    str r1, [r0, #4]41; CHECK-T1-NEXT:    adds r0, r0, #442; CHECK-T1-NEXT:    bx lr43;44; CHECK-T2-LABEL: i32_4:45; CHECK-T2:       @ %bb.0:46; CHECK-T2-NEXT:    str r1, [r0, #4]!47; CHECK-T2-NEXT:    bx lr48;49; CHECK-ARM-LABEL: i32_4:50; CHECK-ARM:       @ %bb.0:51; CHECK-ARM-NEXT:    str r1, [r0, #4]!52; CHECK-ARM-NEXT:    bx lr53  %o = getelementptr inbounds i8, ptr %p, i32 454  store i32 %v, ptr %o, align 455  ret ptr %o56}57 58define ptr @i32_8(ptr %p, i32 %v) {59; CHECK-T1-LABEL: i32_8:60; CHECK-T1:       @ %bb.0:61; CHECK-T1-NEXT:    str r1, [r0, #8]62; CHECK-T1-NEXT:    adds r0, #863; CHECK-T1-NEXT:    bx lr64;65; CHECK-T2-LABEL: i32_8:66; CHECK-T2:       @ %bb.0:67; CHECK-T2-NEXT:    str r1, [r0, #8]!68; CHECK-T2-NEXT:    bx lr69;70; CHECK-ARM-LABEL: i32_8:71; CHECK-ARM:       @ %bb.0:72; CHECK-ARM-NEXT:    str r1, [r0, #8]!73; CHECK-ARM-NEXT:    bx lr74  %o = getelementptr inbounds i8, ptr %p, i32 875  store i32 %v, ptr %o, align 476  ret ptr %o77}78 79define ptr @i32_m1(ptr %p, i32 %v) {80; CHECK-T1-LABEL: i32_m1:81; CHECK-T1:       @ %bb.0:82; CHECK-T1-NEXT:    subs r0, r0, #183; CHECK-T1-NEXT:    str r1, [r0]84; CHECK-T1-NEXT:    bx lr85;86; CHECK-T2-LABEL: i32_m1:87; CHECK-T2:       @ %bb.0:88; CHECK-T2-NEXT:    str r1, [r0, #-1]!89; CHECK-T2-NEXT:    bx lr90;91; CHECK-ARM-LABEL: i32_m1:92; CHECK-ARM:       @ %bb.0:93; CHECK-ARM-NEXT:    str r1, [r0, #-1]!94; CHECK-ARM-NEXT:    bx lr95  %o = getelementptr inbounds i8, ptr %p, i32 -196  store i32 %v, ptr %o, align 497  ret ptr %o98}99 100define ptr @i32_m4(ptr %p, i32 %v) {101; CHECK-T1-LABEL: i32_m4:102; CHECK-T1:       @ %bb.0:103; CHECK-T1-NEXT:    subs r0, r0, #4104; CHECK-T1-NEXT:    str r1, [r0]105; CHECK-T1-NEXT:    bx lr106;107; CHECK-T2-LABEL: i32_m4:108; CHECK-T2:       @ %bb.0:109; CHECK-T2-NEXT:    str r1, [r0, #-4]!110; CHECK-T2-NEXT:    bx lr111;112; CHECK-ARM-LABEL: i32_m4:113; CHECK-ARM:       @ %bb.0:114; CHECK-ARM-NEXT:    str r1, [r0, #-4]!115; CHECK-ARM-NEXT:    bx lr116  %o = getelementptr inbounds i8, ptr %p, i32 -4117  store i32 %v, ptr %o, align 4118  ret ptr %o119}120 121define ptr @i32_252(ptr %p, i32 %v) {122; CHECK-T1-LABEL: i32_252:123; CHECK-T1:       @ %bb.0:124; CHECK-T1-NEXT:    movs r2, #252125; CHECK-T1-NEXT:    str r1, [r0, r2]126; CHECK-T1-NEXT:    adds r0, #252127; CHECK-T1-NEXT:    bx lr128;129; CHECK-T2-LABEL: i32_252:130; CHECK-T2:       @ %bb.0:131; CHECK-T2-NEXT:    str r1, [r0, #252]!132; CHECK-T2-NEXT:    bx lr133;134; CHECK-ARM-LABEL: i32_252:135; CHECK-ARM:       @ %bb.0:136; CHECK-ARM-NEXT:    str r1, [r0, #252]!137; CHECK-ARM-NEXT:    bx lr138  %o = getelementptr inbounds i8, ptr %p, i32 252139  store i32 %v, ptr %o, align 4140  ret ptr %o141}142 143define ptr @i32_255(ptr %p, i32 %v) {144; CHECK-T1-LABEL: i32_255:145; CHECK-T1:       @ %bb.0:146; CHECK-T1-NEXT:    movs r2, #255147; CHECK-T1-NEXT:    str r1, [r0, r2]148; CHECK-T1-NEXT:    adds r0, #255149; CHECK-T1-NEXT:    bx lr150;151; CHECK-T2-LABEL: i32_255:152; CHECK-T2:       @ %bb.0:153; CHECK-T2-NEXT:    str r1, [r0, #255]!154; CHECK-T2-NEXT:    bx lr155;156; CHECK-ARM-LABEL: i32_255:157; CHECK-ARM:       @ %bb.0:158; CHECK-ARM-NEXT:    str r1, [r0, #255]!159; CHECK-ARM-NEXT:    bx lr160  %o = getelementptr inbounds i8, ptr %p, i32 255161  store i32 %v, ptr %o, align 4162  ret ptr %o163}164 165define ptr @i32_256(ptr %p, i32 %v) {166; CHECK-T1-LABEL: i32_256:167; CHECK-T1:       @ %bb.0:168; CHECK-T1-NEXT:    movs r2, #1169; CHECK-T1-NEXT:    lsls r2, r2, #8170; CHECK-T1-NEXT:    str r1, [r0, r2]171; CHECK-T1-NEXT:    adds r0, r0, r2172; CHECK-T1-NEXT:    bx lr173;174; CHECK-T2-LABEL: i32_256:175; CHECK-T2:       @ %bb.0:176; CHECK-T2-NEXT:    str.w r1, [r0, #256]177; CHECK-T2-NEXT:    add.w r0, r0, #256178; CHECK-T2-NEXT:    bx lr179;180; CHECK-ARM-LABEL: i32_256:181; CHECK-ARM:       @ %bb.0:182; CHECK-ARM-NEXT:    str r1, [r0, #256]!183; CHECK-ARM-NEXT:    bx lr184  %o = getelementptr inbounds i8, ptr %p, i32 256185  store i32 %v, ptr %o, align 4186  ret ptr %o187}188 189define ptr @i32_m252(ptr %p, i32 %v) {190; CHECK-T1-LABEL: i32_m252:191; CHECK-T1:       @ %bb.0:192; CHECK-T1-NEXT:    subs r0, #252193; CHECK-T1-NEXT:    str r1, [r0]194; CHECK-T1-NEXT:    bx lr195;196; CHECK-T2-LABEL: i32_m252:197; CHECK-T2:       @ %bb.0:198; CHECK-T2-NEXT:    str r1, [r0, #-252]!199; CHECK-T2-NEXT:    bx lr200;201; CHECK-ARM-LABEL: i32_m252:202; CHECK-ARM:       @ %bb.0:203; CHECK-ARM-NEXT:    str r1, [r0, #-252]!204; CHECK-ARM-NEXT:    bx lr205  %o = getelementptr inbounds i8, ptr %p, i32 -252206  store i32 %v, ptr %o, align 4207  ret ptr %o208}209 210define ptr @i32_m255(ptr %p, i32 %v) {211; CHECK-T1-LABEL: i32_m255:212; CHECK-T1:       @ %bb.0:213; CHECK-T1-NEXT:    subs r0, #255214; CHECK-T1-NEXT:    str r1, [r0]215; CHECK-T1-NEXT:    bx lr216;217; CHECK-T2-LABEL: i32_m255:218; CHECK-T2:       @ %bb.0:219; CHECK-T2-NEXT:    str r1, [r0, #-255]!220; CHECK-T2-NEXT:    bx lr221;222; CHECK-ARM-LABEL: i32_m255:223; CHECK-ARM:       @ %bb.0:224; CHECK-ARM-NEXT:    str r1, [r0, #-255]!225; CHECK-ARM-NEXT:    bx lr226  %o = getelementptr inbounds i8, ptr %p, i32 -255227  store i32 %v, ptr %o, align 4228  ret ptr %o229}230 231define ptr @i32_m256(ptr %p, i32 %v) {232; CHECK-T1-LABEL: i32_m256:233; CHECK-T1:       @ %bb.0:234; CHECK-T1-NEXT:    movs r2, #255235; CHECK-T1-NEXT:    mvns r2, r2236; CHECK-T1-NEXT:    str r1, [r0, r2]237; CHECK-T1-NEXT:    adds r0, r0, r2238; CHECK-T1-NEXT:    bx lr239;240; CHECK-T2-LABEL: i32_m256:241; CHECK-T2:       @ %bb.0:242; CHECK-T2-NEXT:    mvn r2, #255243; CHECK-T2-NEXT:    str r1, [r0, r2]244; CHECK-T2-NEXT:    sub.w r0, r0, #256245; CHECK-T2-NEXT:    bx lr246;247; CHECK-ARM-LABEL: i32_m256:248; CHECK-ARM:       @ %bb.0:249; CHECK-ARM-NEXT:    str r1, [r0, #-256]!250; CHECK-ARM-NEXT:    bx lr251  %o = getelementptr inbounds i8, ptr %p, i32 -256252  store i32 %v, ptr %o, align 4253  ret ptr %o254}255 256define ptr @i32_4095(ptr %p, i32 %v) {257; CHECK-T1-LABEL: i32_4095:258; CHECK-T1:       @ %bb.0:259; CHECK-T1-NEXT:    ldr r2, .LCPI12_0260; CHECK-T1-NEXT:    str r1, [r0, r2]261; CHECK-T1-NEXT:    adds r0, r0, r2262; CHECK-T1-NEXT:    bx lr263; CHECK-T1-NEXT:    .p2align 2264; CHECK-T1-NEXT:  @ %bb.1:265; CHECK-T1-NEXT:  .LCPI12_0:266; CHECK-T1-NEXT:    .long 4095 @ 0xfff267;268; CHECK-T2-LABEL: i32_4095:269; CHECK-T2:       @ %bb.0:270; CHECK-T2-NEXT:    str.w r1, [r0, #4095]271; CHECK-T2-NEXT:    addw r0, r0, #4095272; CHECK-T2-NEXT:    bx lr273;274; CHECK-ARM-LABEL: i32_4095:275; CHECK-ARM:       @ %bb.0:276; CHECK-ARM-NEXT:    str r1, [r0, #4095]!277; CHECK-ARM-NEXT:    bx lr278  %o = getelementptr inbounds i8, ptr %p, i32 4095279  store i32 %v, ptr %o, align 4280  ret ptr %o281}282 283define ptr @i32_4096(ptr %p, i32 %v) {284; CHECK-T1-LABEL: i32_4096:285; CHECK-T1:       @ %bb.0:286; CHECK-T1-NEXT:    movs r2, #1287; CHECK-T1-NEXT:    lsls r2, r2, #12288; CHECK-T1-NEXT:    str r1, [r0, r2]289; CHECK-T1-NEXT:    adds r0, r0, r2290; CHECK-T1-NEXT:    bx lr291;292; CHECK-T2-LABEL: i32_4096:293; CHECK-T2:       @ %bb.0:294; CHECK-T2-NEXT:    mov.w r2, #4096295; CHECK-T2-NEXT:    str r1, [r0, r2]296; CHECK-T2-NEXT:    add.w r0, r0, #4096297; CHECK-T2-NEXT:    bx lr298;299; CHECK-ARM-LABEL: i32_4096:300; CHECK-ARM:       @ %bb.0:301; CHECK-ARM-NEXT:    mov r2, #4096302; CHECK-ARM-NEXT:    str r1, [r0, r2]!303; CHECK-ARM-NEXT:    bx lr304  %o = getelementptr inbounds i8, ptr %p, i32 4096305  store i32 %v, ptr %o, align 4306  ret ptr %o307}308 309define ptr @i32_m4095(ptr %p, i32 %v) {310; CHECK-T1-LABEL: i32_m4095:311; CHECK-T1:       @ %bb.0:312; CHECK-T1-NEXT:    ldr r2, .LCPI14_0313; CHECK-T1-NEXT:    str r1, [r0, r2]314; CHECK-T1-NEXT:    adds r0, r0, r2315; CHECK-T1-NEXT:    bx lr316; CHECK-T1-NEXT:    .p2align 2317; CHECK-T1-NEXT:  @ %bb.1:318; CHECK-T1-NEXT:  .LCPI14_0:319; CHECK-T1-NEXT:    .long 4294963201 @ 0xfffff001320;321; CHECK-T2-LABEL: i32_m4095:322; CHECK-T2:       @ %bb.0:323; CHECK-T2-NEXT:    movw r2, #61441324; CHECK-T2-NEXT:    movt r2, #65535325; CHECK-T2-NEXT:    str r1, [r0, r2]326; CHECK-T2-NEXT:    subw r0, r0, #4095327; CHECK-T2-NEXT:    bx lr328;329; CHECK-ARM-LABEL: i32_m4095:330; CHECK-ARM:       @ %bb.0:331; CHECK-ARM-NEXT:    str r1, [r0, #-4095]!332; CHECK-ARM-NEXT:    bx lr333  %o = getelementptr inbounds i8, ptr %p, i32 -4095334  store i32 %v, ptr %o, align 4335  ret ptr %o336}337 338define ptr @i32_m4096(ptr %p, i32 %v) {339; CHECK-T1-LABEL: i32_m4096:340; CHECK-T1:       @ %bb.0:341; CHECK-T1-NEXT:    ldr r2, .LCPI15_0342; CHECK-T1-NEXT:    str r1, [r0, r2]343; CHECK-T1-NEXT:    adds r0, r0, r2344; CHECK-T1-NEXT:    bx lr345; CHECK-T1-NEXT:    .p2align 2346; CHECK-T1-NEXT:  @ %bb.1:347; CHECK-T1-NEXT:  .LCPI15_0:348; CHECK-T1-NEXT:    .long 4294963200 @ 0xfffff000349;350; CHECK-T2-LABEL: i32_m4096:351; CHECK-T2:       @ %bb.0:352; CHECK-T2-NEXT:    movw r2, #61440353; CHECK-T2-NEXT:    movt r2, #65535354; CHECK-T2-NEXT:    str r1, [r0, r2]355; CHECK-T2-NEXT:    sub.w r0, r0, #4096356; CHECK-T2-NEXT:    bx lr357;358; CHECK-ARM-LABEL: i32_m4096:359; CHECK-ARM:       @ %bb.0:360; CHECK-ARM-NEXT:    movw r2, #61440361; CHECK-ARM-NEXT:    movt r2, #65535362; CHECK-ARM-NEXT:    str r1, [r0, r2]!363; CHECK-ARM-NEXT:    bx lr364  %o = getelementptr inbounds i8, ptr %p, i32 -4096365  store i32 %v, ptr %o, align 4366  ret ptr %o367}368 369define ptr @i64_0(ptr %p, i64 %v) {370; CHECK-T1-LABEL: i64_0:371; CHECK-T1:       @ %bb.0:372; CHECK-T1-NEXT:    stm r0!, {r2, r3}373; CHECK-T1-NEXT:    subs r0, #8374; CHECK-T1-NEXT:    bx lr375;376; CHECK-T2-LABEL: i64_0:377; CHECK-T2:       @ %bb.0:378; CHECK-T2-NEXT:    strd r2, r3, [r0]379; CHECK-T2-NEXT:    bx lr380;381; CHECK-ARM-LABEL: i64_0:382; CHECK-ARM:       @ %bb.0:383; CHECK-ARM-NEXT:    mov r1, r3384; CHECK-ARM-NEXT:    str r2, [r0]385; CHECK-ARM-NEXT:    str r1, [r0, #4]386; CHECK-ARM-NEXT:    bx lr387  store i64 %v, ptr %p, align 8388  ret ptr %p389}390 391define ptr @i64_3(ptr %p, i64 %v) {392; CHECK-T1-LABEL: i64_3:393; CHECK-T1:       @ %bb.0:394; CHECK-T1-NEXT:    movs r1, #3395; CHECK-T1-NEXT:    str r2, [r0, r1]396; CHECK-T1-NEXT:    adds r0, r0, #3397; CHECK-T1-NEXT:    str r3, [r0, #4]398; CHECK-T1-NEXT:    bx lr399;400; CHECK-T2-LABEL: i64_3:401; CHECK-T2:       @ %bb.0:402; CHECK-T2-NEXT:    str r2, [r0, #3]!403; CHECK-T2-NEXT:    str r3, [r0, #4]404; CHECK-T2-NEXT:    bx lr405;406; CHECK-ARM-LABEL: i64_3:407; CHECK-ARM:       @ %bb.0:408; CHECK-ARM-NEXT:    str r2, [r0, #3]!409; CHECK-ARM-NEXT:    str r3, [r0, #4]410; CHECK-ARM-NEXT:    bx lr411  %o = getelementptr inbounds i8, ptr %p, i32 3412  store i64 %v, ptr %o, align 8413  ret ptr %o414}415 416define ptr @i64_4(ptr %p, i64 %v) {417; CHECK-T1-LABEL: i64_4:418; CHECK-T1:       @ %bb.0:419; CHECK-T1-NEXT:    str r2, [r0, #4]420; CHECK-T1-NEXT:    str r3, [r0, #8]421; CHECK-T1-NEXT:    adds r0, r0, #4422; CHECK-T1-NEXT:    bx lr423;424; CHECK-T2-LABEL: i64_4:425; CHECK-T2:       @ %bb.0:426; CHECK-T2-NEXT:    str r2, [r0, #4]!427; CHECK-T2-NEXT:    str r3, [r0, #4]428; CHECK-T2-NEXT:    bx lr429;430; CHECK-ARM-LABEL: i64_4:431; CHECK-ARM:       @ %bb.0:432; CHECK-ARM-NEXT:    str r2, [r0, #4]!433; CHECK-ARM-NEXT:    str r3, [r0, #4]434; CHECK-ARM-NEXT:    bx lr435  %o = getelementptr inbounds i8, ptr %p, i32 4436  store i64 %v, ptr %o, align 8437  ret ptr %o438}439 440define ptr @i64_8(ptr %p, i64 %v) {441; CHECK-T1-LABEL: i64_8:442; CHECK-T1:       @ %bb.0:443; CHECK-T1-NEXT:    str r2, [r0, #8]444; CHECK-T1-NEXT:    str r3, [r0, #12]445; CHECK-T1-NEXT:    adds r0, #8446; CHECK-T1-NEXT:    bx lr447;448; CHECK-T2-LABEL: i64_8:449; CHECK-T2:       @ %bb.0:450; CHECK-T2-NEXT:    str r2, [r0, #8]!451; CHECK-T2-NEXT:    str r3, [r0, #4]452; CHECK-T2-NEXT:    bx lr453;454; CHECK-ARM-LABEL: i64_8:455; CHECK-ARM:       @ %bb.0:456; CHECK-ARM-NEXT:    str r2, [r0, #8]!457; CHECK-ARM-NEXT:    str r3, [r0, #4]458; CHECK-ARM-NEXT:    bx lr459  %o = getelementptr inbounds i8, ptr %p, i32 8460  store i64 %v, ptr %o, align 8461  ret ptr %o462}463 464define ptr @i64_m1(ptr %p, i64 %v) {465; CHECK-T1-LABEL: i64_m1:466; CHECK-T1:       @ %bb.0:467; CHECK-T1-NEXT:    subs r0, r0, #1468; CHECK-T1-NEXT:    stm r0!, {r2, r3}469; CHECK-T1-NEXT:    subs r0, #8470; CHECK-T1-NEXT:    bx lr471;472; CHECK-T2-LABEL: i64_m1:473; CHECK-T2:       @ %bb.0:474; CHECK-T2-NEXT:    str r2, [r0, #-1]!475; CHECK-T2-NEXT:    str r3, [r0, #4]476; CHECK-T2-NEXT:    bx lr477;478; CHECK-ARM-LABEL: i64_m1:479; CHECK-ARM:       @ %bb.0:480; CHECK-ARM-NEXT:    str r2, [r0, #-1]!481; CHECK-ARM-NEXT:    str r3, [r0, #4]482; CHECK-ARM-NEXT:    bx lr483  %o = getelementptr inbounds i8, ptr %p, i32 -1484  store i64 %v, ptr %o, align 8485  ret ptr %o486}487 488define ptr @i64_m4(ptr %p, i64 %v) {489; CHECK-T1-LABEL: i64_m4:490; CHECK-T1:       @ %bb.0:491; CHECK-T1-NEXT:    str r3, [r0]492; CHECK-T1-NEXT:    subs r0, r0, #4493; CHECK-T1-NEXT:    str r2, [r0]494; CHECK-T1-NEXT:    bx lr495;496; CHECK-T2-LABEL: i64_m4:497; CHECK-T2:       @ %bb.0:498; CHECK-T2-NEXT:    str r3, [r0]499; CHECK-T2-NEXT:    str r2, [r0, #-4]!500; CHECK-T2-NEXT:    bx lr501;502; CHECK-ARM-LABEL: i64_m4:503; CHECK-ARM:       @ %bb.0:504; CHECK-ARM-NEXT:    str r3, [r0]505; CHECK-ARM-NEXT:    str r2, [r0, #-4]!506; CHECK-ARM-NEXT:    bx lr507  %o = getelementptr inbounds i8, ptr %p, i32 -4508  store i64 %v, ptr %o, align 8509  ret ptr %o510}511 512define ptr @i64_252(ptr %p, i64 %v) {513; CHECK-T1-LABEL: i64_252:514; CHECK-T1:       @ %bb.0:515; CHECK-T1-NEXT:    movs r1, #252516; CHECK-T1-NEXT:    str r2, [r0, r1]517; CHECK-T1-NEXT:    adds r0, #252518; CHECK-T1-NEXT:    str r3, [r0, #4]519; CHECK-T1-NEXT:    bx lr520;521; CHECK-T2-LABEL: i64_252:522; CHECK-T2:       @ %bb.0:523; CHECK-T2-NEXT:    str r2, [r0, #252]!524; CHECK-T2-NEXT:    str r3, [r0, #4]525; CHECK-T2-NEXT:    bx lr526;527; CHECK-ARM-LABEL: i64_252:528; CHECK-ARM:       @ %bb.0:529; CHECK-ARM-NEXT:    str r2, [r0, #252]!530; CHECK-ARM-NEXT:    str r3, [r0, #4]531; CHECK-ARM-NEXT:    bx lr532  %o = getelementptr inbounds i8, ptr %p, i32 252533  store i64 %v, ptr %o, align 8534  ret ptr %o535}536 537define ptr @i64_255(ptr %p, i64 %v) {538; CHECK-T1-LABEL: i64_255:539; CHECK-T1:       @ %bb.0:540; CHECK-T1-NEXT:    movs r1, #255541; CHECK-T1-NEXT:    str r2, [r0, r1]542; CHECK-T1-NEXT:    adds r0, #255543; CHECK-T1-NEXT:    str r3, [r0, #4]544; CHECK-T1-NEXT:    bx lr545;546; CHECK-T2-LABEL: i64_255:547; CHECK-T2:       @ %bb.0:548; CHECK-T2-NEXT:    str r2, [r0, #255]!549; CHECK-T2-NEXT:    str r3, [r0, #4]550; CHECK-T2-NEXT:    bx lr551;552; CHECK-ARM-LABEL: i64_255:553; CHECK-ARM:       @ %bb.0:554; CHECK-ARM-NEXT:    str r2, [r0, #255]!555; CHECK-ARM-NEXT:    str r3, [r0, #4]556; CHECK-ARM-NEXT:    bx lr557  %o = getelementptr inbounds i8, ptr %p, i32 255558  store i64 %v, ptr %o, align 8559  ret ptr %o560}561 562define ptr @i64_256(ptr %p, i64 %v) {563; CHECK-T1-LABEL: i64_256:564; CHECK-T1:       @ %bb.0:565; CHECK-T1-NEXT:    movs r1, #1566; CHECK-T1-NEXT:    lsls r1, r1, #8567; CHECK-T1-NEXT:    str r2, [r0, r1]568; CHECK-T1-NEXT:    adds r0, r0, r1569; CHECK-T1-NEXT:    str r3, [r0, #4]570; CHECK-T1-NEXT:    bx lr571;572; CHECK-T2-LABEL: i64_256:573; CHECK-T2:       @ %bb.0:574; CHECK-T2-NEXT:    strd r2, r3, [r0, #256]575; CHECK-T2-NEXT:    add.w r0, r0, #256576; CHECK-T2-NEXT:    bx lr577;578; CHECK-ARM-LABEL: i64_256:579; CHECK-ARM:       @ %bb.0:580; CHECK-ARM-NEXT:    str r2, [r0, #256]!581; CHECK-ARM-NEXT:    str r3, [r0, #4]582; CHECK-ARM-NEXT:    bx lr583  %o = getelementptr inbounds i8, ptr %p, i32 256584  store i64 %v, ptr %o, align 8585  ret ptr %o586}587 588define ptr @i64_m252(ptr %p, i64 %v) {589; CHECK-T1-LABEL: i64_m252:590; CHECK-T1:       @ %bb.0:591; CHECK-T1-NEXT:    subs r0, #252592; CHECK-T1-NEXT:    stm r0!, {r2, r3}593; CHECK-T1-NEXT:    subs r0, #8594; CHECK-T1-NEXT:    bx lr595;596; CHECK-T2-LABEL: i64_m252:597; CHECK-T2:       @ %bb.0:598; CHECK-T2-NEXT:    str r2, [r0, #-252]!599; CHECK-T2-NEXT:    str r3, [r0, #4]600; CHECK-T2-NEXT:    bx lr601;602; CHECK-ARM-LABEL: i64_m252:603; CHECK-ARM:       @ %bb.0:604; CHECK-ARM-NEXT:    str r2, [r0, #-252]!605; CHECK-ARM-NEXT:    str r3, [r0, #4]606; CHECK-ARM-NEXT:    bx lr607  %o = getelementptr inbounds i8, ptr %p, i32 -252608  store i64 %v, ptr %o, align 8609  ret ptr %o610}611 612define ptr @i64_m255(ptr %p, i64 %v) {613; CHECK-T1-LABEL: i64_m255:614; CHECK-T1:       @ %bb.0:615; CHECK-T1-NEXT:    subs r0, #255616; CHECK-T1-NEXT:    stm r0!, {r2, r3}617; CHECK-T1-NEXT:    subs r0, #8618; CHECK-T1-NEXT:    bx lr619;620; CHECK-T2-LABEL: i64_m255:621; CHECK-T2:       @ %bb.0:622; CHECK-T2-NEXT:    str r2, [r0, #-255]!623; CHECK-T2-NEXT:    str r3, [r0, #4]624; CHECK-T2-NEXT:    bx lr625;626; CHECK-ARM-LABEL: i64_m255:627; CHECK-ARM:       @ %bb.0:628; CHECK-ARM-NEXT:    str r2, [r0, #-255]!629; CHECK-ARM-NEXT:    str r3, [r0, #4]630; CHECK-ARM-NEXT:    bx lr631  %o = getelementptr inbounds i8, ptr %p, i32 -255632  store i64 %v, ptr %o, align 8633  ret ptr %o634}635 636define ptr @i64_m256(ptr %p, i64 %v) {637; CHECK-T1-LABEL: i64_m256:638; CHECK-T1:       @ %bb.0:639; CHECK-T1-NEXT:    movs r1, #255640; CHECK-T1-NEXT:    mvns r1, r1641; CHECK-T1-NEXT:    str r2, [r0, r1]642; CHECK-T1-NEXT:    adds r0, r0, r1643; CHECK-T1-NEXT:    str r3, [r0, #4]644; CHECK-T1-NEXT:    bx lr645;646; CHECK-T2-LABEL: i64_m256:647; CHECK-T2:       @ %bb.0:648; CHECK-T2-NEXT:    mvn r1, #255649; CHECK-T2-NEXT:    str r3, [r0, #-252]650; CHECK-T2-NEXT:    str r2, [r0, r1]651; CHECK-T2-NEXT:    sub.w r0, r0, #256652; CHECK-T2-NEXT:    bx lr653;654; CHECK-ARM-LABEL: i64_m256:655; CHECK-ARM:       @ %bb.0:656; CHECK-ARM-NEXT:    str r2, [r0, #-256]!657; CHECK-ARM-NEXT:    str r3, [r0, #4]658; CHECK-ARM-NEXT:    bx lr659  %o = getelementptr inbounds i8, ptr %p, i32 -256660  store i64 %v, ptr %o, align 8661  ret ptr %o662}663 664define ptr @i64_4095(ptr %p, i64 %v) {665; CHECK-T1-LABEL: i64_4095:666; CHECK-T1:       @ %bb.0:667; CHECK-T1-NEXT:    ldr r1, .LCPI28_0668; CHECK-T1-NEXT:    str r2, [r0, r1]669; CHECK-T1-NEXT:    adds r0, r0, r1670; CHECK-T1-NEXT:    str r3, [r0, #4]671; CHECK-T1-NEXT:    bx lr672; CHECK-T1-NEXT:    .p2align 2673; CHECK-T1-NEXT:  @ %bb.1:674; CHECK-T1-NEXT:  .LCPI28_0:675; CHECK-T1-NEXT:    .long 4095 @ 0xfff676;677; CHECK-T2-LABEL: i64_4095:678; CHECK-T2:       @ %bb.0:679; CHECK-T2-NEXT:    str.w r2, [r0, #4095]680; CHECK-T2-NEXT:    addw r0, r0, #4095681; CHECK-T2-NEXT:    str r3, [r0, #4]682; CHECK-T2-NEXT:    bx lr683;684; CHECK-ARM-LABEL: i64_4095:685; CHECK-ARM:       @ %bb.0:686; CHECK-ARM-NEXT:    str r2, [r0, #4095]!687; CHECK-ARM-NEXT:    str r3, [r0, #4]688; CHECK-ARM-NEXT:    bx lr689  %o = getelementptr inbounds i8, ptr %p, i32 4095690  store i64 %v, ptr %o, align 8691  ret ptr %o692}693 694define ptr @i64_4096(ptr %p, i64 %v) {695; CHECK-T1-LABEL: i64_4096:696; CHECK-T1:       @ %bb.0:697; CHECK-T1-NEXT:    movs r1, #1698; CHECK-T1-NEXT:    lsls r1, r1, #12699; CHECK-T1-NEXT:    str r2, [r0, r1]700; CHECK-T1-NEXT:    adds r0, r0, r1701; CHECK-T1-NEXT:    str r3, [r0, #4]702; CHECK-T1-NEXT:    bx lr703;704; CHECK-T2-LABEL: i64_4096:705; CHECK-T2:       @ %bb.0:706; CHECK-T2-NEXT:    mov.w r1, #4096707; CHECK-T2-NEXT:    str r2, [r0, r1]708; CHECK-T2-NEXT:    add.w r0, r0, #4096709; CHECK-T2-NEXT:    str r3, [r0, #4]710; CHECK-T2-NEXT:    bx lr711;712; CHECK-ARM-LABEL: i64_4096:713; CHECK-ARM:       @ %bb.0:714; CHECK-ARM-NEXT:    mov r1, #4096715; CHECK-ARM-NEXT:    str r2, [r0, r1]!716; CHECK-ARM-NEXT:    str r3, [r0, #4]717; CHECK-ARM-NEXT:    bx lr718  %o = getelementptr inbounds i8, ptr %p, i32 4096719  store i64 %v, ptr %o, align 8720  ret ptr %o721}722 723define ptr @i64_m4095(ptr %p, i64 %v) {724; CHECK-T1-LABEL: i64_m4095:725; CHECK-T1:       @ %bb.0:726; CHECK-T1-NEXT:    ldr r1, .LCPI30_0727; CHECK-T1-NEXT:    str r2, [r0, r1]728; CHECK-T1-NEXT:    adds r0, r0, r1729; CHECK-T1-NEXT:    str r3, [r0, #4]730; CHECK-T1-NEXT:    bx lr731; CHECK-T1-NEXT:    .p2align 2732; CHECK-T1-NEXT:  @ %bb.1:733; CHECK-T1-NEXT:  .LCPI30_0:734; CHECK-T1-NEXT:    .long 4294963201 @ 0xfffff001735;736; CHECK-T2-LABEL: i64_m4095:737; CHECK-T2:       @ %bb.0:738; CHECK-T2-NEXT:    movw r1, #61441739; CHECK-T2-NEXT:    movt r1, #65535740; CHECK-T2-NEXT:    str r2, [r0, r1]741; CHECK-T2-NEXT:    subw r0, r0, #4095742; CHECK-T2-NEXT:    str r3, [r0, #4]743; CHECK-T2-NEXT:    bx lr744;745; CHECK-ARM-LABEL: i64_m4095:746; CHECK-ARM:       @ %bb.0:747; CHECK-ARM-NEXT:    str r2, [r0, #-4095]!748; CHECK-ARM-NEXT:    str r3, [r0, #4]749; CHECK-ARM-NEXT:    bx lr750  %o = getelementptr inbounds i8, ptr %p, i32 -4095751  store i64 %v, ptr %o, align 8752  ret ptr %o753}754 755define ptr @i64_m4096(ptr %p, i64 %v) {756; CHECK-T1-LABEL: i64_m4096:757; CHECK-T1:       @ %bb.0:758; CHECK-T1-NEXT:    ldr r1, .LCPI31_0759; CHECK-T1-NEXT:    str r2, [r0, r1]760; CHECK-T1-NEXT:    adds r0, r0, r1761; CHECK-T1-NEXT:    str r3, [r0, #4]762; CHECK-T1-NEXT:    bx lr763; CHECK-T1-NEXT:    .p2align 2764; CHECK-T1-NEXT:  @ %bb.1:765; CHECK-T1-NEXT:  .LCPI31_0:766; CHECK-T1-NEXT:    .long 4294963200 @ 0xfffff000767;768; CHECK-T2-LABEL: i64_m4096:769; CHECK-T2:       @ %bb.0:770; CHECK-T2-NEXT:    movw r1, #61440771; CHECK-T2-NEXT:    movt r1, #65535772; CHECK-T2-NEXT:    str r2, [r0, r1]773; CHECK-T2-NEXT:    sub.w r0, r0, #4096774; CHECK-T2-NEXT:    str r3, [r0, #4]775; CHECK-T2-NEXT:    bx lr776;777; CHECK-ARM-LABEL: i64_m4096:778; CHECK-ARM:       @ %bb.0:779; CHECK-ARM-NEXT:    movw r1, #61440780; CHECK-ARM-NEXT:    movt r1, #65535781; CHECK-ARM-NEXT:    str r2, [r0, r1]!782; CHECK-ARM-NEXT:    str r3, [r0, #4]783; CHECK-ARM-NEXT:    bx lr784  %o = getelementptr inbounds i8, ptr %p, i32 -4096785  store i64 %v, ptr %o, align 8786  ret ptr %o787}788 789define ptr @i128_0(ptr %p, i128 %v) {790; CHECK-T1-LABEL: i128_0:791; CHECK-T1:       @ %bb.0:792; CHECK-T1-NEXT:    ldr r1, [sp, #4]793; CHECK-T1-NEXT:    str r1, [r0, #12]794; CHECK-T1-NEXT:    ldr r1, [sp]795; CHECK-T1-NEXT:    str r1, [r0, #8]796; CHECK-T1-NEXT:    stm r0!, {r2, r3}797; CHECK-T1-NEXT:    subs r0, #8798; CHECK-T1-NEXT:    bx lr799;800; CHECK-T2-LABEL: i128_0:801; CHECK-T2:       @ %bb.0:802; CHECK-T2-NEXT:    ldr r1, [sp, #4]803; CHECK-T2-NEXT:    str r1, [r0, #12]804; CHECK-T2-NEXT:    ldr r1, [sp]805; CHECK-T2-NEXT:    str r1, [r0, #8]806; CHECK-T2-NEXT:    strd r2, r3, [r0]807; CHECK-T2-NEXT:    bx lr808;809; CHECK-ARM-LABEL: i128_0:810; CHECK-ARM:       @ %bb.0:811; CHECK-ARM-NEXT:    ldm sp, {r1, r12}812; CHECK-ARM-NEXT:    stm r0, {r2, r3}813; CHECK-ARM-NEXT:    str r1, [r0, #8]814; CHECK-ARM-NEXT:    str r12, [r0, #12]815; CHECK-ARM-NEXT:    bx lr816  store i128 %v, ptr %p, align 16817  ret ptr %p818}819 820define ptr @i128_3(ptr %p, i128 %v) {821; CHECK-T1-LABEL: i128_3:822; CHECK-T1:       @ %bb.0:823; CHECK-T1-NEXT:    movs r1, #3824; CHECK-T1-NEXT:    str r2, [r0, r1]825; CHECK-T1-NEXT:    adds r0, r0, #3826; CHECK-T1-NEXT:    ldr r1, [sp, #4]827; CHECK-T1-NEXT:    str r1, [r0, #12]828; CHECK-T1-NEXT:    ldr r1, [sp]829; CHECK-T1-NEXT:    str r1, [r0, #8]830; CHECK-T1-NEXT:    str r3, [r0, #4]831; CHECK-T1-NEXT:    bx lr832;833; CHECK-T2-LABEL: i128_3:834; CHECK-T2:       @ %bb.0:835; CHECK-T2-NEXT:    str r2, [r0, #3]!836; CHECK-T2-NEXT:    ldr r1, [sp, #4]837; CHECK-T2-NEXT:    str r1, [r0, #12]838; CHECK-T2-NEXT:    ldr r1, [sp]839; CHECK-T2-NEXT:    strd r3, r1, [r0, #4]840; CHECK-T2-NEXT:    bx lr841;842; CHECK-ARM-LABEL: i128_3:843; CHECK-ARM:       @ %bb.0:844; CHECK-ARM-NEXT:    str r2, [r0, #3]!845; CHECK-ARM-NEXT:    ldm sp, {r1, r12}846; CHECK-ARM-NEXT:    str r3, [r0, #4]847; CHECK-ARM-NEXT:    str r1, [r0, #8]848; CHECK-ARM-NEXT:    str r12, [r0, #12]849; CHECK-ARM-NEXT:    bx lr850  %o = getelementptr inbounds i8, ptr %p, i32 3851  store i128 %v, ptr %o, align 16852  ret ptr %o853}854 855define ptr @i128_4(ptr %p, i128 %v) {856; CHECK-T1-LABEL: i128_4:857; CHECK-T1:       @ %bb.0:858; CHECK-T1-NEXT:    ldr r1, [sp, #4]859; CHECK-T1-NEXT:    str r1, [r0, #16]860; CHECK-T1-NEXT:    ldr r1, [sp]861; CHECK-T1-NEXT:    str r1, [r0, #12]862; CHECK-T1-NEXT:    str r3, [r0, #8]863; CHECK-T1-NEXT:    str r2, [r0, #4]864; CHECK-T1-NEXT:    adds r0, r0, #4865; CHECK-T1-NEXT:    bx lr866;867; CHECK-T2-LABEL: i128_4:868; CHECK-T2:       @ %bb.0:869; CHECK-T2-NEXT:    str r2, [r0, #4]!870; CHECK-T2-NEXT:    ldr r1, [sp, #4]871; CHECK-T2-NEXT:    str r1, [r0, #12]872; CHECK-T2-NEXT:    ldr r1, [sp]873; CHECK-T2-NEXT:    strd r3, r1, [r0, #4]874; CHECK-T2-NEXT:    bx lr875;876; CHECK-ARM-LABEL: i128_4:877; CHECK-ARM:       @ %bb.0:878; CHECK-ARM-NEXT:    str r2, [r0, #4]!879; CHECK-ARM-NEXT:    ldm sp, {r1, r12}880; CHECK-ARM-NEXT:    str r3, [r0, #4]881; CHECK-ARM-NEXT:    str r1, [r0, #8]882; CHECK-ARM-NEXT:    str r12, [r0, #12]883; CHECK-ARM-NEXT:    bx lr884  %o = getelementptr inbounds i8, ptr %p, i32 4885  store i128 %v, ptr %o, align 16886  ret ptr %o887}888 889define ptr @i128_8(ptr %p, i128 %v) {890; CHECK-T1-LABEL: i128_8:891; CHECK-T1:       @ %bb.0:892; CHECK-T1-NEXT:    ldr r1, [sp, #4]893; CHECK-T1-NEXT:    str r1, [r0, #20]894; CHECK-T1-NEXT:    ldr r1, [sp]895; CHECK-T1-NEXT:    str r1, [r0, #16]896; CHECK-T1-NEXT:    str r3, [r0, #12]897; CHECK-T1-NEXT:    str r2, [r0, #8]898; CHECK-T1-NEXT:    adds r0, #8899; CHECK-T1-NEXT:    bx lr900;901; CHECK-T2-LABEL: i128_8:902; CHECK-T2:       @ %bb.0:903; CHECK-T2-NEXT:    str r2, [r0, #8]!904; CHECK-T2-NEXT:    ldr r1, [sp, #4]905; CHECK-T2-NEXT:    str r1, [r0, #12]906; CHECK-T2-NEXT:    ldr r1, [sp]907; CHECK-T2-NEXT:    strd r3, r1, [r0, #4]908; CHECK-T2-NEXT:    bx lr909;910; CHECK-ARM-LABEL: i128_8:911; CHECK-ARM:       @ %bb.0:912; CHECK-ARM-NEXT:    str r2, [r0, #8]!913; CHECK-ARM-NEXT:    ldm sp, {r1, r12}914; CHECK-ARM-NEXT:    str r3, [r0, #4]915; CHECK-ARM-NEXT:    str r1, [r0, #8]916; CHECK-ARM-NEXT:    str r12, [r0, #12]917; CHECK-ARM-NEXT:    bx lr918  %o = getelementptr inbounds i8, ptr %p, i32 8919  store i128 %v, ptr %o, align 16920  ret ptr %o921}922 923define ptr @i128_16(ptr %p, i128 %v) {924; CHECK-T1-LABEL: i128_16:925; CHECK-T1:       @ %bb.0:926; CHECK-T1-NEXT:    ldr r1, [sp, #4]927; CHECK-T1-NEXT:    str r1, [r0, #28]928; CHECK-T1-NEXT:    ldr r1, [sp]929; CHECK-T1-NEXT:    str r1, [r0, #24]930; CHECK-T1-NEXT:    str r3, [r0, #20]931; CHECK-T1-NEXT:    str r2, [r0, #16]932; CHECK-T1-NEXT:    adds r0, #16933; CHECK-T1-NEXT:    bx lr934;935; CHECK-T2-LABEL: i128_16:936; CHECK-T2:       @ %bb.0:937; CHECK-T2-NEXT:    str r2, [r0, #16]!938; CHECK-T2-NEXT:    ldr r1, [sp, #4]939; CHECK-T2-NEXT:    str r1, [r0, #12]940; CHECK-T2-NEXT:    ldr r1, [sp]941; CHECK-T2-NEXT:    strd r3, r1, [r0, #4]942; CHECK-T2-NEXT:    bx lr943;944; CHECK-ARM-LABEL: i128_16:945; CHECK-ARM:       @ %bb.0:946; CHECK-ARM-NEXT:    str r2, [r0, #16]!947; CHECK-ARM-NEXT:    ldm sp, {r1, r12}948; CHECK-ARM-NEXT:    str r3, [r0, #4]949; CHECK-ARM-NEXT:    str r1, [r0, #8]950; CHECK-ARM-NEXT:    str r12, [r0, #12]951; CHECK-ARM-NEXT:    bx lr952  %o = getelementptr inbounds i8, ptr %p, i32 16953  store i128 %v, ptr %o, align 16954  ret ptr %o955}956 957define ptr @i128_m1(ptr %p, i128 %v) {958; CHECK-T1-LABEL: i128_m1:959; CHECK-T1:       @ %bb.0:960; CHECK-T1-NEXT:    subs r0, r0, #1961; CHECK-T1-NEXT:    ldr r1, [sp, #4]962; CHECK-T1-NEXT:    str r1, [r0, #12]963; CHECK-T1-NEXT:    ldr r1, [sp]964; CHECK-T1-NEXT:    str r1, [r0, #8]965; CHECK-T1-NEXT:    stm r0!, {r2, r3}966; CHECK-T1-NEXT:    subs r0, #8967; CHECK-T1-NEXT:    bx lr968;969; CHECK-T2-LABEL: i128_m1:970; CHECK-T2:       @ %bb.0:971; CHECK-T2-NEXT:    str r2, [r0, #-1]!972; CHECK-T2-NEXT:    ldr r1, [sp, #4]973; CHECK-T2-NEXT:    str r1, [r0, #12]974; CHECK-T2-NEXT:    ldr r1, [sp]975; CHECK-T2-NEXT:    strd r3, r1, [r0, #4]976; CHECK-T2-NEXT:    bx lr977;978; CHECK-ARM-LABEL: i128_m1:979; CHECK-ARM:       @ %bb.0:980; CHECK-ARM-NEXT:    str r2, [r0, #-1]!981; CHECK-ARM-NEXT:    ldm sp, {r1, r12}982; CHECK-ARM-NEXT:    str r3, [r0, #4]983; CHECK-ARM-NEXT:    str r1, [r0, #8]984; CHECK-ARM-NEXT:    str r12, [r0, #12]985; CHECK-ARM-NEXT:    bx lr986  %o = getelementptr inbounds i8, ptr %p, i32 -1987  store i128 %v, ptr %o, align 16988  ret ptr %o989}990 991define ptr @i128_m4(ptr %p, i128 %v) {992; CHECK-T1-LABEL: i128_m4:993; CHECK-T1:       @ %bb.0:994; CHECK-T1-NEXT:    ldr r1, [sp, #4]995; CHECK-T1-NEXT:    str r1, [r0, #8]996; CHECK-T1-NEXT:    ldr r1, [sp]997; CHECK-T1-NEXT:    str r1, [r0, #4]998; CHECK-T1-NEXT:    str r3, [r0]999; CHECK-T1-NEXT:    subs r0, r0, #41000; CHECK-T1-NEXT:    str r2, [r0]1001; CHECK-T1-NEXT:    bx lr1002;1003; CHECK-T2-LABEL: i128_m4:1004; CHECK-T2:       @ %bb.0:1005; CHECK-T2-NEXT:    ldr r1, [sp, #4]1006; CHECK-T2-NEXT:    str r1, [r0, #8]1007; CHECK-T2-NEXT:    ldr r1, [sp]1008; CHECK-T2-NEXT:    strd r3, r1, [r0]1009; CHECK-T2-NEXT:    str r2, [r0, #-4]!1010; CHECK-T2-NEXT:    bx lr1011;1012; CHECK-ARM-LABEL: i128_m4:1013; CHECK-ARM:       @ %bb.0:1014; CHECK-ARM-NEXT:    ldm sp, {r1, r12}1015; CHECK-ARM-NEXT:    str r3, [r0]1016; CHECK-ARM-NEXT:    stmib r0, {r1, r12}1017; CHECK-ARM-NEXT:    str r2, [r0, #-4]!1018; CHECK-ARM-NEXT:    bx lr1019  %o = getelementptr inbounds i8, ptr %p, i32 -41020  store i128 %v, ptr %o, align 161021  ret ptr %o1022}1023 1024define ptr @i16_0(ptr %p, i16 %v) {1025; CHECK-LABEL: i16_0:1026; CHECK:       @ %bb.0:1027; CHECK-NEXT:    strh r1, [r0]1028; CHECK-NEXT:    bx lr1029  store i16 %v, ptr %p, align 21030  ret ptr %p1031}1032 1033define ptr @i16_3(ptr %p, i16 %v) {1034; CHECK-T1-LABEL: i16_3:1035; CHECK-T1:       @ %bb.0:1036; CHECK-T1-NEXT:    movs r2, #31037; CHECK-T1-NEXT:    strh r1, [r0, r2]1038; CHECK-T1-NEXT:    adds r0, r0, #31039; CHECK-T1-NEXT:    bx lr1040;1041; CHECK-T2-LABEL: i16_3:1042; CHECK-T2:       @ %bb.0:1043; CHECK-T2-NEXT:    strh r1, [r0, #3]!1044; CHECK-T2-NEXT:    bx lr1045;1046; CHECK-ARM-LABEL: i16_3:1047; CHECK-ARM:       @ %bb.0:1048; CHECK-ARM-NEXT:    strh r1, [r0, #3]!1049; CHECK-ARM-NEXT:    bx lr1050  %o = getelementptr inbounds i8, ptr %p, i32 31051  store i16 %v, ptr %o, align 21052  ret ptr %o1053}1054 1055define ptr @i16_4(ptr %p, i16 %v) {1056; CHECK-T1-LABEL: i16_4:1057; CHECK-T1:       @ %bb.0:1058; CHECK-T1-NEXT:    strh r1, [r0, #4]1059; CHECK-T1-NEXT:    adds r0, r0, #41060; CHECK-T1-NEXT:    bx lr1061;1062; CHECK-T2-LABEL: i16_4:1063; CHECK-T2:       @ %bb.0:1064; CHECK-T2-NEXT:    strh r1, [r0, #4]!1065; CHECK-T2-NEXT:    bx lr1066;1067; CHECK-ARM-LABEL: i16_4:1068; CHECK-ARM:       @ %bb.0:1069; CHECK-ARM-NEXT:    strh r1, [r0, #4]!1070; CHECK-ARM-NEXT:    bx lr1071  %o = getelementptr inbounds i8, ptr %p, i32 41072  store i16 %v, ptr %o, align 21073  ret ptr %o1074}1075 1076define ptr @i16_8(ptr %p, i16 %v) {1077; CHECK-T1-LABEL: i16_8:1078; CHECK-T1:       @ %bb.0:1079; CHECK-T1-NEXT:    strh r1, [r0, #8]1080; CHECK-T1-NEXT:    adds r0, #81081; CHECK-T1-NEXT:    bx lr1082;1083; CHECK-T2-LABEL: i16_8:1084; CHECK-T2:       @ %bb.0:1085; CHECK-T2-NEXT:    strh r1, [r0, #8]!1086; CHECK-T2-NEXT:    bx lr1087;1088; CHECK-ARM-LABEL: i16_8:1089; CHECK-ARM:       @ %bb.0:1090; CHECK-ARM-NEXT:    strh r1, [r0, #8]!1091; CHECK-ARM-NEXT:    bx lr1092  %o = getelementptr inbounds i8, ptr %p, i32 81093  store i16 %v, ptr %o, align 21094  ret ptr %o1095}1096 1097define ptr @i16_m1(ptr %p, i16 %v) {1098; CHECK-T1-LABEL: i16_m1:1099; CHECK-T1:       @ %bb.0:1100; CHECK-T1-NEXT:    subs r0, r0, #11101; CHECK-T1-NEXT:    strh r1, [r0]1102; CHECK-T1-NEXT:    bx lr1103;1104; CHECK-T2-LABEL: i16_m1:1105; CHECK-T2:       @ %bb.0:1106; CHECK-T2-NEXT:    strh r1, [r0, #-1]!1107; CHECK-T2-NEXT:    bx lr1108;1109; CHECK-ARM-LABEL: i16_m1:1110; CHECK-ARM:       @ %bb.0:1111; CHECK-ARM-NEXT:    strh r1, [r0, #-1]!1112; CHECK-ARM-NEXT:    bx lr1113  %o = getelementptr inbounds i8, ptr %p, i32 -11114  store i16 %v, ptr %o, align 21115  ret ptr %o1116}1117 1118define ptr @i16_m4(ptr %p, i16 %v) {1119; CHECK-T1-LABEL: i16_m4:1120; CHECK-T1:       @ %bb.0:1121; CHECK-T1-NEXT:    subs r0, r0, #41122; CHECK-T1-NEXT:    strh r1, [r0]1123; CHECK-T1-NEXT:    bx lr1124;1125; CHECK-T2-LABEL: i16_m4:1126; CHECK-T2:       @ %bb.0:1127; CHECK-T2-NEXT:    strh r1, [r0, #-4]!1128; CHECK-T2-NEXT:    bx lr1129;1130; CHECK-ARM-LABEL: i16_m4:1131; CHECK-ARM:       @ %bb.0:1132; CHECK-ARM-NEXT:    strh r1, [r0, #-4]!1133; CHECK-ARM-NEXT:    bx lr1134  %o = getelementptr inbounds i8, ptr %p, i32 -41135  store i16 %v, ptr %o, align 21136  ret ptr %o1137}1138 1139define ptr @i16_252(ptr %p, i16 %v) {1140; CHECK-T1-LABEL: i16_252:1141; CHECK-T1:       @ %bb.0:1142; CHECK-T1-NEXT:    movs r2, #2521143; CHECK-T1-NEXT:    strh r1, [r0, r2]1144; CHECK-T1-NEXT:    adds r0, #2521145; CHECK-T1-NEXT:    bx lr1146;1147; CHECK-T2-LABEL: i16_252:1148; CHECK-T2:       @ %bb.0:1149; CHECK-T2-NEXT:    strh r1, [r0, #252]!1150; CHECK-T2-NEXT:    bx lr1151;1152; CHECK-ARM-LABEL: i16_252:1153; CHECK-ARM:       @ %bb.0:1154; CHECK-ARM-NEXT:    strh r1, [r0, #252]!1155; CHECK-ARM-NEXT:    bx lr1156  %o = getelementptr inbounds i8, ptr %p, i32 2521157  store i16 %v, ptr %o, align 21158  ret ptr %o1159}1160 1161define ptr @i16_255(ptr %p, i16 %v) {1162; CHECK-T1-LABEL: i16_255:1163; CHECK-T1:       @ %bb.0:1164; CHECK-T1-NEXT:    movs r2, #2551165; CHECK-T1-NEXT:    strh r1, [r0, r2]1166; CHECK-T1-NEXT:    adds r0, #2551167; CHECK-T1-NEXT:    bx lr1168;1169; CHECK-T2-LABEL: i16_255:1170; CHECK-T2:       @ %bb.0:1171; CHECK-T2-NEXT:    strh r1, [r0, #255]!1172; CHECK-T2-NEXT:    bx lr1173;1174; CHECK-ARM-LABEL: i16_255:1175; CHECK-ARM:       @ %bb.0:1176; CHECK-ARM-NEXT:    strh r1, [r0, #255]!1177; CHECK-ARM-NEXT:    bx lr1178  %o = getelementptr inbounds i8, ptr %p, i32 2551179  store i16 %v, ptr %o, align 21180  ret ptr %o1181}1182 1183define ptr @i16_256(ptr %p, i16 %v) {1184; CHECK-T1-LABEL: i16_256:1185; CHECK-T1:       @ %bb.0:1186; CHECK-T1-NEXT:    movs r2, #11187; CHECK-T1-NEXT:    lsls r2, r2, #81188; CHECK-T1-NEXT:    strh r1, [r0, r2]1189; CHECK-T1-NEXT:    adds r0, r0, r21190; CHECK-T1-NEXT:    bx lr1191;1192; CHECK-T2-LABEL: i16_256:1193; CHECK-T2:       @ %bb.0:1194; CHECK-T2-NEXT:    strh.w r1, [r0, #256]1195; CHECK-T2-NEXT:    add.w r0, r0, #2561196; CHECK-T2-NEXT:    bx lr1197;1198; CHECK-ARM-LABEL: i16_256:1199; CHECK-ARM:       @ %bb.0:1200; CHECK-ARM-NEXT:    mov r2, #2561201; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1202; CHECK-ARM-NEXT:    bx lr1203  %o = getelementptr inbounds i8, ptr %p, i32 2561204  store i16 %v, ptr %o, align 21205  ret ptr %o1206}1207 1208define ptr @i16_m252(ptr %p, i16 %v) {1209; CHECK-T1-LABEL: i16_m252:1210; CHECK-T1:       @ %bb.0:1211; CHECK-T1-NEXT:    subs r0, #2521212; CHECK-T1-NEXT:    strh r1, [r0]1213; CHECK-T1-NEXT:    bx lr1214;1215; CHECK-T2-LABEL: i16_m252:1216; CHECK-T2:       @ %bb.0:1217; CHECK-T2-NEXT:    strh r1, [r0, #-252]!1218; CHECK-T2-NEXT:    bx lr1219;1220; CHECK-ARM-LABEL: i16_m252:1221; CHECK-ARM:       @ %bb.0:1222; CHECK-ARM-NEXT:    strh r1, [r0, #-252]!1223; CHECK-ARM-NEXT:    bx lr1224  %o = getelementptr inbounds i8, ptr %p, i32 -2521225  store i16 %v, ptr %o, align 21226  ret ptr %o1227}1228 1229define ptr @i16_m255(ptr %p, i16 %v) {1230; CHECK-T1-LABEL: i16_m255:1231; CHECK-T1:       @ %bb.0:1232; CHECK-T1-NEXT:    subs r0, #2551233; CHECK-T1-NEXT:    strh r1, [r0]1234; CHECK-T1-NEXT:    bx lr1235;1236; CHECK-T2-LABEL: i16_m255:1237; CHECK-T2:       @ %bb.0:1238; CHECK-T2-NEXT:    strh r1, [r0, #-255]!1239; CHECK-T2-NEXT:    bx lr1240;1241; CHECK-ARM-LABEL: i16_m255:1242; CHECK-ARM:       @ %bb.0:1243; CHECK-ARM-NEXT:    strh r1, [r0, #-255]!1244; CHECK-ARM-NEXT:    bx lr1245  %o = getelementptr inbounds i8, ptr %p, i32 -2551246  store i16 %v, ptr %o, align 21247  ret ptr %o1248}1249 1250define ptr @i16_m256(ptr %p, i16 %v) {1251; CHECK-T1-LABEL: i16_m256:1252; CHECK-T1:       @ %bb.0:1253; CHECK-T1-NEXT:    movs r2, #2551254; CHECK-T1-NEXT:    mvns r2, r21255; CHECK-T1-NEXT:    strh r1, [r0, r2]1256; CHECK-T1-NEXT:    adds r0, r0, r21257; CHECK-T1-NEXT:    bx lr1258;1259; CHECK-T2-LABEL: i16_m256:1260; CHECK-T2:       @ %bb.0:1261; CHECK-T2-NEXT:    mvn r2, #2551262; CHECK-T2-NEXT:    strh r1, [r0, r2]1263; CHECK-T2-NEXT:    sub.w r0, r0, #2561264; CHECK-T2-NEXT:    bx lr1265;1266; CHECK-ARM-LABEL: i16_m256:1267; CHECK-ARM:       @ %bb.0:1268; CHECK-ARM-NEXT:    mvn r2, #2551269; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1270; CHECK-ARM-NEXT:    bx lr1271  %o = getelementptr inbounds i8, ptr %p, i32 -2561272  store i16 %v, ptr %o, align 21273  ret ptr %o1274}1275 1276define ptr @i16_4095(ptr %p, i16 %v) {1277; CHECK-T1-LABEL: i16_4095:1278; CHECK-T1:       @ %bb.0:1279; CHECK-T1-NEXT:    ldr r2, .LCPI51_01280; CHECK-T1-NEXT:    strh r1, [r0, r2]1281; CHECK-T1-NEXT:    adds r0, r0, r21282; CHECK-T1-NEXT:    bx lr1283; CHECK-T1-NEXT:    .p2align 21284; CHECK-T1-NEXT:  @ %bb.1:1285; CHECK-T1-NEXT:  .LCPI51_0:1286; CHECK-T1-NEXT:    .long 4095 @ 0xfff1287;1288; CHECK-T2-LABEL: i16_4095:1289; CHECK-T2:       @ %bb.0:1290; CHECK-T2-NEXT:    strh.w r1, [r0, #4095]1291; CHECK-T2-NEXT:    addw r0, r0, #40951292; CHECK-T2-NEXT:    bx lr1293;1294; CHECK-ARM-LABEL: i16_4095:1295; CHECK-ARM:       @ %bb.0:1296; CHECK-ARM-NEXT:    movw r2, #40951297; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1298; CHECK-ARM-NEXT:    bx lr1299  %o = getelementptr inbounds i8, ptr %p, i32 40951300  store i16 %v, ptr %o, align 21301  ret ptr %o1302}1303 1304define ptr @i16_4096(ptr %p, i16 %v) {1305; CHECK-T1-LABEL: i16_4096:1306; CHECK-T1:       @ %bb.0:1307; CHECK-T1-NEXT:    movs r2, #11308; CHECK-T1-NEXT:    lsls r2, r2, #121309; CHECK-T1-NEXT:    strh r1, [r0, r2]1310; CHECK-T1-NEXT:    adds r0, r0, r21311; CHECK-T1-NEXT:    bx lr1312;1313; CHECK-T2-LABEL: i16_4096:1314; CHECK-T2:       @ %bb.0:1315; CHECK-T2-NEXT:    mov.w r2, #40961316; CHECK-T2-NEXT:    strh r1, [r0, r2]1317; CHECK-T2-NEXT:    add.w r0, r0, #40961318; CHECK-T2-NEXT:    bx lr1319;1320; CHECK-ARM-LABEL: i16_4096:1321; CHECK-ARM:       @ %bb.0:1322; CHECK-ARM-NEXT:    mov r2, #40961323; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1324; CHECK-ARM-NEXT:    bx lr1325  %o = getelementptr inbounds i8, ptr %p, i32 40961326  store i16 %v, ptr %o, align 21327  ret ptr %o1328}1329 1330define ptr @i16_m4095(ptr %p, i16 %v) {1331; CHECK-T1-LABEL: i16_m4095:1332; CHECK-T1:       @ %bb.0:1333; CHECK-T1-NEXT:    ldr r2, .LCPI53_01334; CHECK-T1-NEXT:    strh r1, [r0, r2]1335; CHECK-T1-NEXT:    adds r0, r0, r21336; CHECK-T1-NEXT:    bx lr1337; CHECK-T1-NEXT:    .p2align 21338; CHECK-T1-NEXT:  @ %bb.1:1339; CHECK-T1-NEXT:  .LCPI53_0:1340; CHECK-T1-NEXT:    .long 4294963201 @ 0xfffff0011341;1342; CHECK-T2-LABEL: i16_m4095:1343; CHECK-T2:       @ %bb.0:1344; CHECK-T2-NEXT:    movw r2, #614411345; CHECK-T2-NEXT:    movt r2, #655351346; CHECK-T2-NEXT:    strh r1, [r0, r2]1347; CHECK-T2-NEXT:    subw r0, r0, #40951348; CHECK-T2-NEXT:    bx lr1349;1350; CHECK-ARM-LABEL: i16_m4095:1351; CHECK-ARM:       @ %bb.0:1352; CHECK-ARM-NEXT:    movw r2, #614411353; CHECK-ARM-NEXT:    movt r2, #655351354; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1355; CHECK-ARM-NEXT:    bx lr1356  %o = getelementptr inbounds i8, ptr %p, i32 -40951357  store i16 %v, ptr %o, align 21358  ret ptr %o1359}1360 1361define ptr @i16_m4096(ptr %p, i16 %v) {1362; CHECK-T1-LABEL: i16_m4096:1363; CHECK-T1:       @ %bb.0:1364; CHECK-T1-NEXT:    ldr r2, .LCPI54_01365; CHECK-T1-NEXT:    strh r1, [r0, r2]1366; CHECK-T1-NEXT:    adds r0, r0, r21367; CHECK-T1-NEXT:    bx lr1368; CHECK-T1-NEXT:    .p2align 21369; CHECK-T1-NEXT:  @ %bb.1:1370; CHECK-T1-NEXT:  .LCPI54_0:1371; CHECK-T1-NEXT:    .long 4294963200 @ 0xfffff0001372;1373; CHECK-T2-LABEL: i16_m4096:1374; CHECK-T2:       @ %bb.0:1375; CHECK-T2-NEXT:    movw r2, #614401376; CHECK-T2-NEXT:    movt r2, #655351377; CHECK-T2-NEXT:    strh r1, [r0, r2]1378; CHECK-T2-NEXT:    sub.w r0, r0, #40961379; CHECK-T2-NEXT:    bx lr1380;1381; CHECK-ARM-LABEL: i16_m4096:1382; CHECK-ARM:       @ %bb.0:1383; CHECK-ARM-NEXT:    movw r2, #614401384; CHECK-ARM-NEXT:    movt r2, #655351385; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1386; CHECK-ARM-NEXT:    bx lr1387  %o = getelementptr inbounds i8, ptr %p, i32 -40961388  store i16 %v, ptr %o, align 21389  ret ptr %o1390}1391 1392define ptr @i8_0(ptr %p, i8 %v) {1393; CHECK-LABEL: i8_0:1394; CHECK:       @ %bb.0:1395; CHECK-NEXT:    strb r1, [r0]1396; CHECK-NEXT:    bx lr1397  store i8 %v, ptr %p, align 11398  ret ptr %p1399}1400 1401define ptr @i8_3(ptr %p, i8 %v) {1402; CHECK-T1-LABEL: i8_3:1403; CHECK-T1:       @ %bb.0:1404; CHECK-T1-NEXT:    strb r1, [r0, #3]1405; CHECK-T1-NEXT:    adds r0, r0, #31406; CHECK-T1-NEXT:    bx lr1407;1408; CHECK-T2-LABEL: i8_3:1409; CHECK-T2:       @ %bb.0:1410; CHECK-T2-NEXT:    strb r1, [r0, #3]!1411; CHECK-T2-NEXT:    bx lr1412;1413; CHECK-ARM-LABEL: i8_3:1414; CHECK-ARM:       @ %bb.0:1415; CHECK-ARM-NEXT:    strb r1, [r0, #3]!1416; CHECK-ARM-NEXT:    bx lr1417  %o = getelementptr inbounds i8, ptr %p, i32 31418  store i8 %v, ptr %o, align 11419  ret ptr %o1420}1421 1422define ptr @i8_4(ptr %p, i8 %v) {1423; CHECK-T1-LABEL: i8_4:1424; CHECK-T1:       @ %bb.0:1425; CHECK-T1-NEXT:    strb r1, [r0, #4]1426; CHECK-T1-NEXT:    adds r0, r0, #41427; CHECK-T1-NEXT:    bx lr1428;1429; CHECK-T2-LABEL: i8_4:1430; CHECK-T2:       @ %bb.0:1431; CHECK-T2-NEXT:    strb r1, [r0, #4]!1432; CHECK-T2-NEXT:    bx lr1433;1434; CHECK-ARM-LABEL: i8_4:1435; CHECK-ARM:       @ %bb.0:1436; CHECK-ARM-NEXT:    strb r1, [r0, #4]!1437; CHECK-ARM-NEXT:    bx lr1438  %o = getelementptr inbounds i8, ptr %p, i32 41439  store i8 %v, ptr %o, align 11440  ret ptr %o1441}1442 1443define ptr @i8_8(ptr %p, i8 %v) {1444; CHECK-T1-LABEL: i8_8:1445; CHECK-T1:       @ %bb.0:1446; CHECK-T1-NEXT:    strb r1, [r0, #8]1447; CHECK-T1-NEXT:    adds r0, #81448; CHECK-T1-NEXT:    bx lr1449;1450; CHECK-T2-LABEL: i8_8:1451; CHECK-T2:       @ %bb.0:1452; CHECK-T2-NEXT:    strb r1, [r0, #8]!1453; CHECK-T2-NEXT:    bx lr1454;1455; CHECK-ARM-LABEL: i8_8:1456; CHECK-ARM:       @ %bb.0:1457; CHECK-ARM-NEXT:    strb r1, [r0, #8]!1458; CHECK-ARM-NEXT:    bx lr1459  %o = getelementptr inbounds i8, ptr %p, i32 81460  store i8 %v, ptr %o, align 11461  ret ptr %o1462}1463 1464define ptr @i8_m1(ptr %p, i8 %v) {1465; CHECK-T1-LABEL: i8_m1:1466; CHECK-T1:       @ %bb.0:1467; CHECK-T1-NEXT:    subs r0, r0, #11468; CHECK-T1-NEXT:    strb r1, [r0]1469; CHECK-T1-NEXT:    bx lr1470;1471; CHECK-T2-LABEL: i8_m1:1472; CHECK-T2:       @ %bb.0:1473; CHECK-T2-NEXT:    strb r1, [r0, #-1]!1474; CHECK-T2-NEXT:    bx lr1475;1476; CHECK-ARM-LABEL: i8_m1:1477; CHECK-ARM:       @ %bb.0:1478; CHECK-ARM-NEXT:    strb r1, [r0, #-1]!1479; CHECK-ARM-NEXT:    bx lr1480  %o = getelementptr inbounds i8, ptr %p, i32 -11481  store i8 %v, ptr %o, align 11482  ret ptr %o1483}1484 1485define ptr @i8_m4(ptr %p, i8 %v) {1486; CHECK-T1-LABEL: i8_m4:1487; CHECK-T1:       @ %bb.0:1488; CHECK-T1-NEXT:    subs r0, r0, #41489; CHECK-T1-NEXT:    strb r1, [r0]1490; CHECK-T1-NEXT:    bx lr1491;1492; CHECK-T2-LABEL: i8_m4:1493; CHECK-T2:       @ %bb.0:1494; CHECK-T2-NEXT:    strb r1, [r0, #-4]!1495; CHECK-T2-NEXT:    bx lr1496;1497; CHECK-ARM-LABEL: i8_m4:1498; CHECK-ARM:       @ %bb.0:1499; CHECK-ARM-NEXT:    strb r1, [r0, #-4]!1500; CHECK-ARM-NEXT:    bx lr1501  %o = getelementptr inbounds i8, ptr %p, i32 -41502  store i8 %v, ptr %o, align 11503  ret ptr %o1504}1505 1506define ptr @i8_252(ptr %p, i8 %v) {1507; CHECK-T1-LABEL: i8_252:1508; CHECK-T1:       @ %bb.0:1509; CHECK-T1-NEXT:    movs r2, #2521510; CHECK-T1-NEXT:    strb r1, [r0, r2]1511; CHECK-T1-NEXT:    adds r0, #2521512; CHECK-T1-NEXT:    bx lr1513;1514; CHECK-T2-LABEL: i8_252:1515; CHECK-T2:       @ %bb.0:1516; CHECK-T2-NEXT:    strb r1, [r0, #252]!1517; CHECK-T2-NEXT:    bx lr1518;1519; CHECK-ARM-LABEL: i8_252:1520; CHECK-ARM:       @ %bb.0:1521; CHECK-ARM-NEXT:    strb r1, [r0, #252]!1522; CHECK-ARM-NEXT:    bx lr1523  %o = getelementptr inbounds i8, ptr %p, i32 2521524  store i8 %v, ptr %o, align 11525  ret ptr %o1526}1527 1528define ptr @i8_255(ptr %p, i8 %v) {1529; CHECK-T1-LABEL: i8_255:1530; CHECK-T1:       @ %bb.0:1531; CHECK-T1-NEXT:    movs r2, #2551532; CHECK-T1-NEXT:    strb r1, [r0, r2]1533; CHECK-T1-NEXT:    adds r0, #2551534; CHECK-T1-NEXT:    bx lr1535;1536; CHECK-T2-LABEL: i8_255:1537; CHECK-T2:       @ %bb.0:1538; CHECK-T2-NEXT:    strb r1, [r0, #255]!1539; CHECK-T2-NEXT:    bx lr1540;1541; CHECK-ARM-LABEL: i8_255:1542; CHECK-ARM:       @ %bb.0:1543; CHECK-ARM-NEXT:    strb r1, [r0, #255]!1544; CHECK-ARM-NEXT:    bx lr1545  %o = getelementptr inbounds i8, ptr %p, i32 2551546  store i8 %v, ptr %o, align 11547  ret ptr %o1548}1549 1550define ptr @i8_256(ptr %p, i8 %v) {1551; CHECK-T1-LABEL: i8_256:1552; CHECK-T1:       @ %bb.0:1553; CHECK-T1-NEXT:    movs r2, #11554; CHECK-T1-NEXT:    lsls r2, r2, #81555; CHECK-T1-NEXT:    strb r1, [r0, r2]1556; CHECK-T1-NEXT:    adds r0, r0, r21557; CHECK-T1-NEXT:    bx lr1558;1559; CHECK-T2-LABEL: i8_256:1560; CHECK-T2:       @ %bb.0:1561; CHECK-T2-NEXT:    strb.w r1, [r0, #256]1562; CHECK-T2-NEXT:    add.w r0, r0, #2561563; CHECK-T2-NEXT:    bx lr1564;1565; CHECK-ARM-LABEL: i8_256:1566; CHECK-ARM:       @ %bb.0:1567; CHECK-ARM-NEXT:    strb r1, [r0, #256]!1568; CHECK-ARM-NEXT:    bx lr1569  %o = getelementptr inbounds i8, ptr %p, i32 2561570  store i8 %v, ptr %o, align 11571  ret ptr %o1572}1573 1574define ptr @i8_m252(ptr %p, i8 %v) {1575; CHECK-T1-LABEL: i8_m252:1576; CHECK-T1:       @ %bb.0:1577; CHECK-T1-NEXT:    subs r0, #2521578; CHECK-T1-NEXT:    strb r1, [r0]1579; CHECK-T1-NEXT:    bx lr1580;1581; CHECK-T2-LABEL: i8_m252:1582; CHECK-T2:       @ %bb.0:1583; CHECK-T2-NEXT:    strb r1, [r0, #-252]!1584; CHECK-T2-NEXT:    bx lr1585;1586; CHECK-ARM-LABEL: i8_m252:1587; CHECK-ARM:       @ %bb.0:1588; CHECK-ARM-NEXT:    strb r1, [r0, #-252]!1589; CHECK-ARM-NEXT:    bx lr1590  %o = getelementptr inbounds i8, ptr %p, i32 -2521591  store i8 %v, ptr %o, align 11592  ret ptr %o1593}1594 1595define ptr @i8_m255(ptr %p, i8 %v) {1596; CHECK-T1-LABEL: i8_m255:1597; CHECK-T1:       @ %bb.0:1598; CHECK-T1-NEXT:    subs r0, #2551599; CHECK-T1-NEXT:    strb r1, [r0]1600; CHECK-T1-NEXT:    bx lr1601;1602; CHECK-T2-LABEL: i8_m255:1603; CHECK-T2:       @ %bb.0:1604; CHECK-T2-NEXT:    strb r1, [r0, #-255]!1605; CHECK-T2-NEXT:    bx lr1606;1607; CHECK-ARM-LABEL: i8_m255:1608; CHECK-ARM:       @ %bb.0:1609; CHECK-ARM-NEXT:    strb r1, [r0, #-255]!1610; CHECK-ARM-NEXT:    bx lr1611  %o = getelementptr inbounds i8, ptr %p, i32 -2551612  store i8 %v, ptr %o, align 11613  ret ptr %o1614}1615 1616define ptr @i8_m256(ptr %p, i8 %v) {1617; CHECK-T1-LABEL: i8_m256:1618; CHECK-T1:       @ %bb.0:1619; CHECK-T1-NEXT:    movs r2, #2551620; CHECK-T1-NEXT:    mvns r2, r21621; CHECK-T1-NEXT:    strb r1, [r0, r2]1622; CHECK-T1-NEXT:    adds r0, r0, r21623; CHECK-T1-NEXT:    bx lr1624;1625; CHECK-T2-LABEL: i8_m256:1626; CHECK-T2:       @ %bb.0:1627; CHECK-T2-NEXT:    mvn r2, #2551628; CHECK-T2-NEXT:    strb r1, [r0, r2]1629; CHECK-T2-NEXT:    sub.w r0, r0, #2561630; CHECK-T2-NEXT:    bx lr1631;1632; CHECK-ARM-LABEL: i8_m256:1633; CHECK-ARM:       @ %bb.0:1634; CHECK-ARM-NEXT:    strb r1, [r0, #-256]!1635; CHECK-ARM-NEXT:    bx lr1636  %o = getelementptr inbounds i8, ptr %p, i32 -2561637  store i8 %v, ptr %o, align 11638  ret ptr %o1639}1640 1641define ptr @i8_4095(ptr %p, i8 %v) {1642; CHECK-T1-LABEL: i8_4095:1643; CHECK-T1:       @ %bb.0:1644; CHECK-T1-NEXT:    ldr r2, .LCPI67_01645; CHECK-T1-NEXT:    strb r1, [r0, r2]1646; CHECK-T1-NEXT:    adds r0, r0, r21647; CHECK-T1-NEXT:    bx lr1648; CHECK-T1-NEXT:    .p2align 21649; CHECK-T1-NEXT:  @ %bb.1:1650; CHECK-T1-NEXT:  .LCPI67_0:1651; CHECK-T1-NEXT:    .long 4095 @ 0xfff1652;1653; CHECK-T2-LABEL: i8_4095:1654; CHECK-T2:       @ %bb.0:1655; CHECK-T2-NEXT:    strb.w r1, [r0, #4095]1656; CHECK-T2-NEXT:    addw r0, r0, #40951657; CHECK-T2-NEXT:    bx lr1658;1659; CHECK-ARM-LABEL: i8_4095:1660; CHECK-ARM:       @ %bb.0:1661; CHECK-ARM-NEXT:    strb r1, [r0, #4095]!1662; CHECK-ARM-NEXT:    bx lr1663  %o = getelementptr inbounds i8, ptr %p, i32 40951664  store i8 %v, ptr %o, align 11665  ret ptr %o1666}1667 1668define ptr @i8_4096(ptr %p, i8 %v) {1669; CHECK-T1-LABEL: i8_4096:1670; CHECK-T1:       @ %bb.0:1671; CHECK-T1-NEXT:    movs r2, #11672; CHECK-T1-NEXT:    lsls r2, r2, #121673; CHECK-T1-NEXT:    strb r1, [r0, r2]1674; CHECK-T1-NEXT:    adds r0, r0, r21675; CHECK-T1-NEXT:    bx lr1676;1677; CHECK-T2-LABEL: i8_4096:1678; CHECK-T2:       @ %bb.0:1679; CHECK-T2-NEXT:    mov.w r2, #40961680; CHECK-T2-NEXT:    strb r1, [r0, r2]1681; CHECK-T2-NEXT:    add.w r0, r0, #40961682; CHECK-T2-NEXT:    bx lr1683;1684; CHECK-ARM-LABEL: i8_4096:1685; CHECK-ARM:       @ %bb.0:1686; CHECK-ARM-NEXT:    mov r2, #40961687; CHECK-ARM-NEXT:    strb r1, [r0, r2]!1688; CHECK-ARM-NEXT:    bx lr1689  %o = getelementptr inbounds i8, ptr %p, i32 40961690  store i8 %v, ptr %o, align 11691  ret ptr %o1692}1693 1694define ptr @i8_m4095(ptr %p, i8 %v) {1695; CHECK-T1-LABEL: i8_m4095:1696; CHECK-T1:       @ %bb.0:1697; CHECK-T1-NEXT:    ldr r2, .LCPI69_01698; CHECK-T1-NEXT:    strb r1, [r0, r2]1699; CHECK-T1-NEXT:    adds r0, r0, r21700; CHECK-T1-NEXT:    bx lr1701; CHECK-T1-NEXT:    .p2align 21702; CHECK-T1-NEXT:  @ %bb.1:1703; CHECK-T1-NEXT:  .LCPI69_0:1704; CHECK-T1-NEXT:    .long 4294963201 @ 0xfffff0011705;1706; CHECK-T2-LABEL: i8_m4095:1707; CHECK-T2:       @ %bb.0:1708; CHECK-T2-NEXT:    movw r2, #614411709; CHECK-T2-NEXT:    movt r2, #655351710; CHECK-T2-NEXT:    strb r1, [r0, r2]1711; CHECK-T2-NEXT:    subw r0, r0, #40951712; CHECK-T2-NEXT:    bx lr1713;1714; CHECK-ARM-LABEL: i8_m4095:1715; CHECK-ARM:       @ %bb.0:1716; CHECK-ARM-NEXT:    strb r1, [r0, #-4095]!1717; CHECK-ARM-NEXT:    bx lr1718  %o = getelementptr inbounds i8, ptr %p, i32 -40951719  store i8 %v, ptr %o, align 11720  ret ptr %o1721}1722 1723define ptr @i8_m4096(ptr %p, i8 %v) {1724; CHECK-T1-LABEL: i8_m4096:1725; CHECK-T1:       @ %bb.0:1726; CHECK-T1-NEXT:    ldr r2, .LCPI70_01727; CHECK-T1-NEXT:    strb r1, [r0, r2]1728; CHECK-T1-NEXT:    adds r0, r0, r21729; CHECK-T1-NEXT:    bx lr1730; CHECK-T1-NEXT:    .p2align 21731; CHECK-T1-NEXT:  @ %bb.1:1732; CHECK-T1-NEXT:  .LCPI70_0:1733; CHECK-T1-NEXT:    .long 4294963200 @ 0xfffff0001734;1735; CHECK-T2-LABEL: i8_m4096:1736; CHECK-T2:       @ %bb.0:1737; CHECK-T2-NEXT:    movw r2, #614401738; CHECK-T2-NEXT:    movt r2, #655351739; CHECK-T2-NEXT:    strb r1, [r0, r2]1740; CHECK-T2-NEXT:    sub.w r0, r0, #40961741; CHECK-T2-NEXT:    bx lr1742;1743; CHECK-ARM-LABEL: i8_m4096:1744; CHECK-ARM:       @ %bb.0:1745; CHECK-ARM-NEXT:    movw r2, #614401746; CHECK-ARM-NEXT:    movt r2, #655351747; CHECK-ARM-NEXT:    strb r1, [r0, r2]!1748; CHECK-ARM-NEXT:    bx lr1749  %o = getelementptr inbounds i8, ptr %p, i32 -40961750  store i8 %v, ptr %o, align 11751  ret ptr %o1752}1753