brintos

brintos / llvm-project-archived public Read only

0
0
Text · 46.7 KiB · d3bf001 Raw
1757 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 1024; i161025 1026define ptr @i16_0(ptr %p, i16 %v) {1027; CHECK-LABEL: i16_0:1028; CHECK:       @ %bb.0:1029; CHECK-NEXT:    strh r1, [r0]1030; CHECK-NEXT:    bx lr1031  store i16 %v, ptr %p, align 21032  ret ptr %p1033}1034 1035define ptr @i16_3(ptr %p, i16 %v) {1036; CHECK-T1-LABEL: i16_3:1037; CHECK-T1:       @ %bb.0:1038; CHECK-T1-NEXT:    movs r2, #31039; CHECK-T1-NEXT:    strh r1, [r0, r2]1040; CHECK-T1-NEXT:    adds r0, r0, #31041; CHECK-T1-NEXT:    bx lr1042;1043; CHECK-T2-LABEL: i16_3:1044; CHECK-T2:       @ %bb.0:1045; CHECK-T2-NEXT:    strh r1, [r0, #3]!1046; CHECK-T2-NEXT:    bx lr1047;1048; CHECK-ARM-LABEL: i16_3:1049; CHECK-ARM:       @ %bb.0:1050; CHECK-ARM-NEXT:    strh r1, [r0, #3]!1051; CHECK-ARM-NEXT:    bx lr1052  %o = getelementptr inbounds i8, ptr %p, i32 31053  store i16 %v, ptr %o, align 21054  ret ptr %o1055}1056 1057define ptr @i16_4(ptr %p, i16 %v) {1058; CHECK-T1-LABEL: i16_4:1059; CHECK-T1:       @ %bb.0:1060; CHECK-T1-NEXT:    strh r1, [r0, #4]1061; CHECK-T1-NEXT:    adds r0, r0, #41062; CHECK-T1-NEXT:    bx lr1063;1064; CHECK-T2-LABEL: i16_4:1065; CHECK-T2:       @ %bb.0:1066; CHECK-T2-NEXT:    strh r1, [r0, #4]!1067; CHECK-T2-NEXT:    bx lr1068;1069; CHECK-ARM-LABEL: i16_4:1070; CHECK-ARM:       @ %bb.0:1071; CHECK-ARM-NEXT:    strh r1, [r0, #4]!1072; CHECK-ARM-NEXT:    bx lr1073  %o = getelementptr inbounds i8, ptr %p, i32 41074  store i16 %v, ptr %o, align 21075  ret ptr %o1076}1077 1078define ptr @i16_8(ptr %p, i16 %v) {1079; CHECK-T1-LABEL: i16_8:1080; CHECK-T1:       @ %bb.0:1081; CHECK-T1-NEXT:    strh r1, [r0, #8]1082; CHECK-T1-NEXT:    adds r0, #81083; CHECK-T1-NEXT:    bx lr1084;1085; CHECK-T2-LABEL: i16_8:1086; CHECK-T2:       @ %bb.0:1087; CHECK-T2-NEXT:    strh r1, [r0, #8]!1088; CHECK-T2-NEXT:    bx lr1089;1090; CHECK-ARM-LABEL: i16_8:1091; CHECK-ARM:       @ %bb.0:1092; CHECK-ARM-NEXT:    strh r1, [r0, #8]!1093; CHECK-ARM-NEXT:    bx lr1094  %o = getelementptr inbounds i8, ptr %p, i32 81095  store i16 %v, ptr %o, align 21096  ret ptr %o1097}1098 1099define ptr @i16_m1(ptr %p, i16 %v) {1100; CHECK-T1-LABEL: i16_m1:1101; CHECK-T1:       @ %bb.0:1102; CHECK-T1-NEXT:    subs r0, r0, #11103; CHECK-T1-NEXT:    strh r1, [r0]1104; CHECK-T1-NEXT:    bx lr1105;1106; CHECK-T2-LABEL: i16_m1:1107; CHECK-T2:       @ %bb.0:1108; CHECK-T2-NEXT:    strh r1, [r0, #-1]!1109; CHECK-T2-NEXT:    bx lr1110;1111; CHECK-ARM-LABEL: i16_m1:1112; CHECK-ARM:       @ %bb.0:1113; CHECK-ARM-NEXT:    strh r1, [r0, #-1]!1114; CHECK-ARM-NEXT:    bx lr1115  %o = getelementptr inbounds i8, ptr %p, i32 -11116  store i16 %v, ptr %o, align 21117  ret ptr %o1118}1119 1120define ptr @i16_m4(ptr %p, i16 %v) {1121; CHECK-T1-LABEL: i16_m4:1122; CHECK-T1:       @ %bb.0:1123; CHECK-T1-NEXT:    subs r0, r0, #41124; CHECK-T1-NEXT:    strh r1, [r0]1125; CHECK-T1-NEXT:    bx lr1126;1127; CHECK-T2-LABEL: i16_m4:1128; CHECK-T2:       @ %bb.0:1129; CHECK-T2-NEXT:    strh r1, [r0, #-4]!1130; CHECK-T2-NEXT:    bx lr1131;1132; CHECK-ARM-LABEL: i16_m4:1133; CHECK-ARM:       @ %bb.0:1134; CHECK-ARM-NEXT:    strh r1, [r0, #-4]!1135; CHECK-ARM-NEXT:    bx lr1136  %o = getelementptr inbounds i8, ptr %p, i32 -41137  store i16 %v, ptr %o, align 21138  ret ptr %o1139}1140 1141define ptr @i16_252(ptr %p, i16 %v) {1142; CHECK-T1-LABEL: i16_252:1143; CHECK-T1:       @ %bb.0:1144; CHECK-T1-NEXT:    movs r2, #2521145; CHECK-T1-NEXT:    strh r1, [r0, r2]1146; CHECK-T1-NEXT:    adds r0, #2521147; CHECK-T1-NEXT:    bx lr1148;1149; CHECK-T2-LABEL: i16_252:1150; CHECK-T2:       @ %bb.0:1151; CHECK-T2-NEXT:    strh r1, [r0, #252]!1152; CHECK-T2-NEXT:    bx lr1153;1154; CHECK-ARM-LABEL: i16_252:1155; CHECK-ARM:       @ %bb.0:1156; CHECK-ARM-NEXT:    strh r1, [r0, #252]!1157; CHECK-ARM-NEXT:    bx lr1158  %o = getelementptr inbounds i8, ptr %p, i32 2521159  store i16 %v, ptr %o, align 21160  ret ptr %o1161}1162 1163define ptr @i16_255(ptr %p, i16 %v) {1164; CHECK-T1-LABEL: i16_255:1165; CHECK-T1:       @ %bb.0:1166; CHECK-T1-NEXT:    movs r2, #2551167; CHECK-T1-NEXT:    strh r1, [r0, r2]1168; CHECK-T1-NEXT:    adds r0, #2551169; CHECK-T1-NEXT:    bx lr1170;1171; CHECK-T2-LABEL: i16_255:1172; CHECK-T2:       @ %bb.0:1173; CHECK-T2-NEXT:    strh r1, [r0, #255]!1174; CHECK-T2-NEXT:    bx lr1175;1176; CHECK-ARM-LABEL: i16_255:1177; CHECK-ARM:       @ %bb.0:1178; CHECK-ARM-NEXT:    strh r1, [r0, #255]!1179; CHECK-ARM-NEXT:    bx lr1180  %o = getelementptr inbounds i8, ptr %p, i32 2551181  store i16 %v, ptr %o, align 21182  ret ptr %o1183}1184 1185define ptr @i16_256(ptr %p, i16 %v) {1186; CHECK-T1-LABEL: i16_256:1187; CHECK-T1:       @ %bb.0:1188; CHECK-T1-NEXT:    movs r2, #11189; CHECK-T1-NEXT:    lsls r2, r2, #81190; CHECK-T1-NEXT:    strh r1, [r0, r2]1191; CHECK-T1-NEXT:    adds r0, r0, r21192; CHECK-T1-NEXT:    bx lr1193;1194; CHECK-T2-LABEL: i16_256:1195; CHECK-T2:       @ %bb.0:1196; CHECK-T2-NEXT:    strh.w r1, [r0, #256]1197; CHECK-T2-NEXT:    add.w r0, r0, #2561198; CHECK-T2-NEXT:    bx lr1199;1200; CHECK-ARM-LABEL: i16_256:1201; CHECK-ARM:       @ %bb.0:1202; CHECK-ARM-NEXT:    mov r2, #2561203; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1204; CHECK-ARM-NEXT:    bx lr1205  %o = getelementptr inbounds i8, ptr %p, i32 2561206  store i16 %v, ptr %o, align 21207  ret ptr %o1208}1209 1210define ptr @i16_m252(ptr %p, i16 %v) {1211; CHECK-T1-LABEL: i16_m252:1212; CHECK-T1:       @ %bb.0:1213; CHECK-T1-NEXT:    subs r0, #2521214; CHECK-T1-NEXT:    strh r1, [r0]1215; CHECK-T1-NEXT:    bx lr1216;1217; CHECK-T2-LABEL: i16_m252:1218; CHECK-T2:       @ %bb.0:1219; CHECK-T2-NEXT:    strh r1, [r0, #-252]!1220; CHECK-T2-NEXT:    bx lr1221;1222; CHECK-ARM-LABEL: i16_m252:1223; CHECK-ARM:       @ %bb.0:1224; CHECK-ARM-NEXT:    strh r1, [r0, #-252]!1225; CHECK-ARM-NEXT:    bx lr1226  %o = getelementptr inbounds i8, ptr %p, i32 -2521227  store i16 %v, ptr %o, align 21228  ret ptr %o1229}1230 1231define ptr @i16_m255(ptr %p, i16 %v) {1232; CHECK-T1-LABEL: i16_m255:1233; CHECK-T1:       @ %bb.0:1234; CHECK-T1-NEXT:    subs r0, #2551235; CHECK-T1-NEXT:    strh r1, [r0]1236; CHECK-T1-NEXT:    bx lr1237;1238; CHECK-T2-LABEL: i16_m255:1239; CHECK-T2:       @ %bb.0:1240; CHECK-T2-NEXT:    strh r1, [r0, #-255]!1241; CHECK-T2-NEXT:    bx lr1242;1243; CHECK-ARM-LABEL: i16_m255:1244; CHECK-ARM:       @ %bb.0:1245; CHECK-ARM-NEXT:    strh r1, [r0, #-255]!1246; CHECK-ARM-NEXT:    bx lr1247  %o = getelementptr inbounds i8, ptr %p, i32 -2551248  store i16 %v, ptr %o, align 21249  ret ptr %o1250}1251 1252define ptr @i16_m256(ptr %p, i16 %v) {1253; CHECK-T1-LABEL: i16_m256:1254; CHECK-T1:       @ %bb.0:1255; CHECK-T1-NEXT:    movs r2, #2551256; CHECK-T1-NEXT:    mvns r2, r21257; CHECK-T1-NEXT:    strh r1, [r0, r2]1258; CHECK-T1-NEXT:    adds r0, r0, r21259; CHECK-T1-NEXT:    bx lr1260;1261; CHECK-T2-LABEL: i16_m256:1262; CHECK-T2:       @ %bb.0:1263; CHECK-T2-NEXT:    mvn r2, #2551264; CHECK-T2-NEXT:    strh r1, [r0, r2]1265; CHECK-T2-NEXT:    sub.w r0, r0, #2561266; CHECK-T2-NEXT:    bx lr1267;1268; CHECK-ARM-LABEL: i16_m256:1269; CHECK-ARM:       @ %bb.0:1270; CHECK-ARM-NEXT:    mvn r2, #2551271; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1272; CHECK-ARM-NEXT:    bx lr1273  %o = getelementptr inbounds i8, ptr %p, i32 -2561274  store i16 %v, ptr %o, align 21275  ret ptr %o1276}1277 1278define ptr @i16_4095(ptr %p, i16 %v) {1279; CHECK-T1-LABEL: i16_4095:1280; CHECK-T1:       @ %bb.0:1281; CHECK-T1-NEXT:    ldr r2, .LCPI51_01282; CHECK-T1-NEXT:    strh r1, [r0, r2]1283; CHECK-T1-NEXT:    adds r0, r0, r21284; CHECK-T1-NEXT:    bx lr1285; CHECK-T1-NEXT:    .p2align 21286; CHECK-T1-NEXT:  @ %bb.1:1287; CHECK-T1-NEXT:  .LCPI51_0:1288; CHECK-T1-NEXT:    .long 4095 @ 0xfff1289;1290; CHECK-T2-LABEL: i16_4095:1291; CHECK-T2:       @ %bb.0:1292; CHECK-T2-NEXT:    strh.w r1, [r0, #4095]1293; CHECK-T2-NEXT:    addw r0, r0, #40951294; CHECK-T2-NEXT:    bx lr1295;1296; CHECK-ARM-LABEL: i16_4095:1297; CHECK-ARM:       @ %bb.0:1298; CHECK-ARM-NEXT:    movw r2, #40951299; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1300; CHECK-ARM-NEXT:    bx lr1301  %o = getelementptr inbounds i8, ptr %p, i32 40951302  store i16 %v, ptr %o, align 21303  ret ptr %o1304}1305 1306define ptr @i16_4096(ptr %p, i16 %v) {1307; CHECK-T1-LABEL: i16_4096:1308; CHECK-T1:       @ %bb.0:1309; CHECK-T1-NEXT:    movs r2, #11310; CHECK-T1-NEXT:    lsls r2, r2, #121311; CHECK-T1-NEXT:    strh r1, [r0, r2]1312; CHECK-T1-NEXT:    adds r0, r0, r21313; CHECK-T1-NEXT:    bx lr1314;1315; CHECK-T2-LABEL: i16_4096:1316; CHECK-T2:       @ %bb.0:1317; CHECK-T2-NEXT:    mov.w r2, #40961318; CHECK-T2-NEXT:    strh r1, [r0, r2]1319; CHECK-T2-NEXT:    add.w r0, r0, #40961320; CHECK-T2-NEXT:    bx lr1321;1322; CHECK-ARM-LABEL: i16_4096:1323; CHECK-ARM:       @ %bb.0:1324; CHECK-ARM-NEXT:    mov r2, #40961325; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1326; CHECK-ARM-NEXT:    bx lr1327  %o = getelementptr inbounds i8, ptr %p, i32 40961328  store i16 %v, ptr %o, align 21329  ret ptr %o1330}1331 1332define ptr @i16_m4095(ptr %p, i16 %v) {1333; CHECK-T1-LABEL: i16_m4095:1334; CHECK-T1:       @ %bb.0:1335; CHECK-T1-NEXT:    ldr r2, .LCPI53_01336; CHECK-T1-NEXT:    strh r1, [r0, r2]1337; CHECK-T1-NEXT:    adds r0, r0, r21338; CHECK-T1-NEXT:    bx lr1339; CHECK-T1-NEXT:    .p2align 21340; CHECK-T1-NEXT:  @ %bb.1:1341; CHECK-T1-NEXT:  .LCPI53_0:1342; CHECK-T1-NEXT:    .long 4294963201 @ 0xfffff0011343;1344; CHECK-T2-LABEL: i16_m4095:1345; CHECK-T2:       @ %bb.0:1346; CHECK-T2-NEXT:    movw r2, #614411347; CHECK-T2-NEXT:    movt r2, #655351348; CHECK-T2-NEXT:    strh r1, [r0, r2]1349; CHECK-T2-NEXT:    subw r0, r0, #40951350; CHECK-T2-NEXT:    bx lr1351;1352; CHECK-ARM-LABEL: i16_m4095:1353; CHECK-ARM:       @ %bb.0:1354; CHECK-ARM-NEXT:    movw r2, #614411355; CHECK-ARM-NEXT:    movt r2, #655351356; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1357; CHECK-ARM-NEXT:    bx lr1358  %o = getelementptr inbounds i8, ptr %p, i32 -40951359  store i16 %v, ptr %o, align 21360  ret ptr %o1361}1362 1363define ptr @i16_m4096(ptr %p, i16 %v) {1364; CHECK-T1-LABEL: i16_m4096:1365; CHECK-T1:       @ %bb.0:1366; CHECK-T1-NEXT:    ldr r2, .LCPI54_01367; CHECK-T1-NEXT:    strh r1, [r0, r2]1368; CHECK-T1-NEXT:    adds r0, r0, r21369; CHECK-T1-NEXT:    bx lr1370; CHECK-T1-NEXT:    .p2align 21371; CHECK-T1-NEXT:  @ %bb.1:1372; CHECK-T1-NEXT:  .LCPI54_0:1373; CHECK-T1-NEXT:    .long 4294963200 @ 0xfffff0001374;1375; CHECK-T2-LABEL: i16_m4096:1376; CHECK-T2:       @ %bb.0:1377; CHECK-T2-NEXT:    movw r2, #614401378; CHECK-T2-NEXT:    movt r2, #655351379; CHECK-T2-NEXT:    strh r1, [r0, r2]1380; CHECK-T2-NEXT:    sub.w r0, r0, #40961381; CHECK-T2-NEXT:    bx lr1382;1383; CHECK-ARM-LABEL: i16_m4096:1384; CHECK-ARM:       @ %bb.0:1385; CHECK-ARM-NEXT:    movw r2, #614401386; CHECK-ARM-NEXT:    movt r2, #655351387; CHECK-ARM-NEXT:    strh r1, [r0, r2]!1388; CHECK-ARM-NEXT:    bx lr1389  %o = getelementptr inbounds i8, ptr %p, i32 -40961390  store i16 %v, ptr %o, align 21391  ret ptr %o1392}1393 1394; i81395 1396define ptr @i8_0(ptr %p, i8 %v) {1397; CHECK-LABEL: i8_0:1398; CHECK:       @ %bb.0:1399; CHECK-NEXT:    strb r1, [r0]1400; CHECK-NEXT:    bx lr1401  store i8 %v, ptr %p, align 11402  ret ptr %p1403}1404 1405define ptr @i8_3(ptr %p, i8 %v) {1406; CHECK-T1-LABEL: i8_3:1407; CHECK-T1:       @ %bb.0:1408; CHECK-T1-NEXT:    strb r1, [r0, #3]1409; CHECK-T1-NEXT:    adds r0, r0, #31410; CHECK-T1-NEXT:    bx lr1411;1412; CHECK-T2-LABEL: i8_3:1413; CHECK-T2:       @ %bb.0:1414; CHECK-T2-NEXT:    strb r1, [r0, #3]!1415; CHECK-T2-NEXT:    bx lr1416;1417; CHECK-ARM-LABEL: i8_3:1418; CHECK-ARM:       @ %bb.0:1419; CHECK-ARM-NEXT:    strb r1, [r0, #3]!1420; CHECK-ARM-NEXT:    bx lr1421  %o = getelementptr inbounds i8, ptr %p, i32 31422  store i8 %v, ptr %o, align 11423  ret ptr %o1424}1425 1426define ptr @i8_4(ptr %p, i8 %v) {1427; CHECK-T1-LABEL: i8_4:1428; CHECK-T1:       @ %bb.0:1429; CHECK-T1-NEXT:    strb r1, [r0, #4]1430; CHECK-T1-NEXT:    adds r0, r0, #41431; CHECK-T1-NEXT:    bx lr1432;1433; CHECK-T2-LABEL: i8_4:1434; CHECK-T2:       @ %bb.0:1435; CHECK-T2-NEXT:    strb r1, [r0, #4]!1436; CHECK-T2-NEXT:    bx lr1437;1438; CHECK-ARM-LABEL: i8_4:1439; CHECK-ARM:       @ %bb.0:1440; CHECK-ARM-NEXT:    strb r1, [r0, #4]!1441; CHECK-ARM-NEXT:    bx lr1442  %o = getelementptr inbounds i8, ptr %p, i32 41443  store i8 %v, ptr %o, align 11444  ret ptr %o1445}1446 1447define ptr @i8_8(ptr %p, i8 %v) {1448; CHECK-T1-LABEL: i8_8:1449; CHECK-T1:       @ %bb.0:1450; CHECK-T1-NEXT:    strb r1, [r0, #8]1451; CHECK-T1-NEXT:    adds r0, #81452; CHECK-T1-NEXT:    bx lr1453;1454; CHECK-T2-LABEL: i8_8:1455; CHECK-T2:       @ %bb.0:1456; CHECK-T2-NEXT:    strb r1, [r0, #8]!1457; CHECK-T2-NEXT:    bx lr1458;1459; CHECK-ARM-LABEL: i8_8:1460; CHECK-ARM:       @ %bb.0:1461; CHECK-ARM-NEXT:    strb r1, [r0, #8]!1462; CHECK-ARM-NEXT:    bx lr1463  %o = getelementptr inbounds i8, ptr %p, i32 81464  store i8 %v, ptr %o, align 11465  ret ptr %o1466}1467 1468define ptr @i8_m1(ptr %p, i8 %v) {1469; CHECK-T1-LABEL: i8_m1:1470; CHECK-T1:       @ %bb.0:1471; CHECK-T1-NEXT:    subs r0, r0, #11472; CHECK-T1-NEXT:    strb r1, [r0]1473; CHECK-T1-NEXT:    bx lr1474;1475; CHECK-T2-LABEL: i8_m1:1476; CHECK-T2:       @ %bb.0:1477; CHECK-T2-NEXT:    strb r1, [r0, #-1]!1478; CHECK-T2-NEXT:    bx lr1479;1480; CHECK-ARM-LABEL: i8_m1:1481; CHECK-ARM:       @ %bb.0:1482; CHECK-ARM-NEXT:    strb r1, [r0, #-1]!1483; CHECK-ARM-NEXT:    bx lr1484  %o = getelementptr inbounds i8, ptr %p, i32 -11485  store i8 %v, ptr %o, align 11486  ret ptr %o1487}1488 1489define ptr @i8_m4(ptr %p, i8 %v) {1490; CHECK-T1-LABEL: i8_m4:1491; CHECK-T1:       @ %bb.0:1492; CHECK-T1-NEXT:    subs r0, r0, #41493; CHECK-T1-NEXT:    strb r1, [r0]1494; CHECK-T1-NEXT:    bx lr1495;1496; CHECK-T2-LABEL: i8_m4:1497; CHECK-T2:       @ %bb.0:1498; CHECK-T2-NEXT:    strb r1, [r0, #-4]!1499; CHECK-T2-NEXT:    bx lr1500;1501; CHECK-ARM-LABEL: i8_m4:1502; CHECK-ARM:       @ %bb.0:1503; CHECK-ARM-NEXT:    strb r1, [r0, #-4]!1504; CHECK-ARM-NEXT:    bx lr1505  %o = getelementptr inbounds i8, ptr %p, i32 -41506  store i8 %v, ptr %o, align 11507  ret ptr %o1508}1509 1510define ptr @i8_252(ptr %p, i8 %v) {1511; CHECK-T1-LABEL: i8_252:1512; CHECK-T1:       @ %bb.0:1513; CHECK-T1-NEXT:    movs r2, #2521514; CHECK-T1-NEXT:    strb r1, [r0, r2]1515; CHECK-T1-NEXT:    adds r0, #2521516; CHECK-T1-NEXT:    bx lr1517;1518; CHECK-T2-LABEL: i8_252:1519; CHECK-T2:       @ %bb.0:1520; CHECK-T2-NEXT:    strb r1, [r0, #252]!1521; CHECK-T2-NEXT:    bx lr1522;1523; CHECK-ARM-LABEL: i8_252:1524; CHECK-ARM:       @ %bb.0:1525; CHECK-ARM-NEXT:    strb r1, [r0, #252]!1526; CHECK-ARM-NEXT:    bx lr1527  %o = getelementptr inbounds i8, ptr %p, i32 2521528  store i8 %v, ptr %o, align 11529  ret ptr %o1530}1531 1532define ptr @i8_255(ptr %p, i8 %v) {1533; CHECK-T1-LABEL: i8_255:1534; CHECK-T1:       @ %bb.0:1535; CHECK-T1-NEXT:    movs r2, #2551536; CHECK-T1-NEXT:    strb r1, [r0, r2]1537; CHECK-T1-NEXT:    adds r0, #2551538; CHECK-T1-NEXT:    bx lr1539;1540; CHECK-T2-LABEL: i8_255:1541; CHECK-T2:       @ %bb.0:1542; CHECK-T2-NEXT:    strb r1, [r0, #255]!1543; CHECK-T2-NEXT:    bx lr1544;1545; CHECK-ARM-LABEL: i8_255:1546; CHECK-ARM:       @ %bb.0:1547; CHECK-ARM-NEXT:    strb r1, [r0, #255]!1548; CHECK-ARM-NEXT:    bx lr1549  %o = getelementptr inbounds i8, ptr %p, i32 2551550  store i8 %v, ptr %o, align 11551  ret ptr %o1552}1553 1554define ptr @i8_256(ptr %p, i8 %v) {1555; CHECK-T1-LABEL: i8_256:1556; CHECK-T1:       @ %bb.0:1557; CHECK-T1-NEXT:    movs r2, #11558; CHECK-T1-NEXT:    lsls r2, r2, #81559; CHECK-T1-NEXT:    strb r1, [r0, r2]1560; CHECK-T1-NEXT:    adds r0, r0, r21561; CHECK-T1-NEXT:    bx lr1562;1563; CHECK-T2-LABEL: i8_256:1564; CHECK-T2:       @ %bb.0:1565; CHECK-T2-NEXT:    strb.w r1, [r0, #256]1566; CHECK-T2-NEXT:    add.w r0, r0, #2561567; CHECK-T2-NEXT:    bx lr1568;1569; CHECK-ARM-LABEL: i8_256:1570; CHECK-ARM:       @ %bb.0:1571; CHECK-ARM-NEXT:    strb r1, [r0, #256]!1572; CHECK-ARM-NEXT:    bx lr1573  %o = getelementptr inbounds i8, ptr %p, i32 2561574  store i8 %v, ptr %o, align 11575  ret ptr %o1576}1577 1578define ptr @i8_m252(ptr %p, i8 %v) {1579; CHECK-T1-LABEL: i8_m252:1580; CHECK-T1:       @ %bb.0:1581; CHECK-T1-NEXT:    subs r0, #2521582; CHECK-T1-NEXT:    strb r1, [r0]1583; CHECK-T1-NEXT:    bx lr1584;1585; CHECK-T2-LABEL: i8_m252:1586; CHECK-T2:       @ %bb.0:1587; CHECK-T2-NEXT:    strb r1, [r0, #-252]!1588; CHECK-T2-NEXT:    bx lr1589;1590; CHECK-ARM-LABEL: i8_m252:1591; CHECK-ARM:       @ %bb.0:1592; CHECK-ARM-NEXT:    strb r1, [r0, #-252]!1593; CHECK-ARM-NEXT:    bx lr1594  %o = getelementptr inbounds i8, ptr %p, i32 -2521595  store i8 %v, ptr %o, align 11596  ret ptr %o1597}1598 1599define ptr @i8_m255(ptr %p, i8 %v) {1600; CHECK-T1-LABEL: i8_m255:1601; CHECK-T1:       @ %bb.0:1602; CHECK-T1-NEXT:    subs r0, #2551603; CHECK-T1-NEXT:    strb r1, [r0]1604; CHECK-T1-NEXT:    bx lr1605;1606; CHECK-T2-LABEL: i8_m255:1607; CHECK-T2:       @ %bb.0:1608; CHECK-T2-NEXT:    strb r1, [r0, #-255]!1609; CHECK-T2-NEXT:    bx lr1610;1611; CHECK-ARM-LABEL: i8_m255:1612; CHECK-ARM:       @ %bb.0:1613; CHECK-ARM-NEXT:    strb r1, [r0, #-255]!1614; CHECK-ARM-NEXT:    bx lr1615  %o = getelementptr inbounds i8, ptr %p, i32 -2551616  store i8 %v, ptr %o, align 11617  ret ptr %o1618}1619 1620define ptr @i8_m256(ptr %p, i8 %v) {1621; CHECK-T1-LABEL: i8_m256:1622; CHECK-T1:       @ %bb.0:1623; CHECK-T1-NEXT:    movs r2, #2551624; CHECK-T1-NEXT:    mvns r2, r21625; CHECK-T1-NEXT:    strb r1, [r0, r2]1626; CHECK-T1-NEXT:    adds r0, r0, r21627; CHECK-T1-NEXT:    bx lr1628;1629; CHECK-T2-LABEL: i8_m256:1630; CHECK-T2:       @ %bb.0:1631; CHECK-T2-NEXT:    mvn r2, #2551632; CHECK-T2-NEXT:    strb r1, [r0, r2]1633; CHECK-T2-NEXT:    sub.w r0, r0, #2561634; CHECK-T2-NEXT:    bx lr1635;1636; CHECK-ARM-LABEL: i8_m256:1637; CHECK-ARM:       @ %bb.0:1638; CHECK-ARM-NEXT:    strb r1, [r0, #-256]!1639; CHECK-ARM-NEXT:    bx lr1640  %o = getelementptr inbounds i8, ptr %p, i32 -2561641  store i8 %v, ptr %o, align 11642  ret ptr %o1643}1644 1645define ptr @i8_4095(ptr %p, i8 %v) {1646; CHECK-T1-LABEL: i8_4095:1647; CHECK-T1:       @ %bb.0:1648; CHECK-T1-NEXT:    ldr r2, .LCPI67_01649; CHECK-T1-NEXT:    strb r1, [r0, r2]1650; CHECK-T1-NEXT:    adds r0, r0, r21651; CHECK-T1-NEXT:    bx lr1652; CHECK-T1-NEXT:    .p2align 21653; CHECK-T1-NEXT:  @ %bb.1:1654; CHECK-T1-NEXT:  .LCPI67_0:1655; CHECK-T1-NEXT:    .long 4095 @ 0xfff1656;1657; CHECK-T2-LABEL: i8_4095:1658; CHECK-T2:       @ %bb.0:1659; CHECK-T2-NEXT:    strb.w r1, [r0, #4095]1660; CHECK-T2-NEXT:    addw r0, r0, #40951661; CHECK-T2-NEXT:    bx lr1662;1663; CHECK-ARM-LABEL: i8_4095:1664; CHECK-ARM:       @ %bb.0:1665; CHECK-ARM-NEXT:    strb r1, [r0, #4095]!1666; CHECK-ARM-NEXT:    bx lr1667  %o = getelementptr inbounds i8, ptr %p, i32 40951668  store i8 %v, ptr %o, align 11669  ret ptr %o1670}1671 1672define ptr @i8_4096(ptr %p, i8 %v) {1673; CHECK-T1-LABEL: i8_4096:1674; CHECK-T1:       @ %bb.0:1675; CHECK-T1-NEXT:    movs r2, #11676; CHECK-T1-NEXT:    lsls r2, r2, #121677; CHECK-T1-NEXT:    strb r1, [r0, r2]1678; CHECK-T1-NEXT:    adds r0, r0, r21679; CHECK-T1-NEXT:    bx lr1680;1681; CHECK-T2-LABEL: i8_4096:1682; CHECK-T2:       @ %bb.0:1683; CHECK-T2-NEXT:    mov.w r2, #40961684; CHECK-T2-NEXT:    strb r1, [r0, r2]1685; CHECK-T2-NEXT:    add.w r0, r0, #40961686; CHECK-T2-NEXT:    bx lr1687;1688; CHECK-ARM-LABEL: i8_4096:1689; CHECK-ARM:       @ %bb.0:1690; CHECK-ARM-NEXT:    mov r2, #40961691; CHECK-ARM-NEXT:    strb r1, [r0, r2]!1692; CHECK-ARM-NEXT:    bx lr1693  %o = getelementptr inbounds i8, ptr %p, i32 40961694  store i8 %v, ptr %o, align 11695  ret ptr %o1696}1697 1698define ptr @i8_m4095(ptr %p, i8 %v) {1699; CHECK-T1-LABEL: i8_m4095:1700; CHECK-T1:       @ %bb.0:1701; CHECK-T1-NEXT:    ldr r2, .LCPI69_01702; CHECK-T1-NEXT:    strb r1, [r0, r2]1703; CHECK-T1-NEXT:    adds r0, r0, r21704; CHECK-T1-NEXT:    bx lr1705; CHECK-T1-NEXT:    .p2align 21706; CHECK-T1-NEXT:  @ %bb.1:1707; CHECK-T1-NEXT:  .LCPI69_0:1708; CHECK-T1-NEXT:    .long 4294963201 @ 0xfffff0011709;1710; CHECK-T2-LABEL: i8_m4095:1711; CHECK-T2:       @ %bb.0:1712; CHECK-T2-NEXT:    movw r2, #614411713; CHECK-T2-NEXT:    movt r2, #655351714; CHECK-T2-NEXT:    strb r1, [r0, r2]1715; CHECK-T2-NEXT:    subw r0, r0, #40951716; CHECK-T2-NEXT:    bx lr1717;1718; CHECK-ARM-LABEL: i8_m4095:1719; CHECK-ARM:       @ %bb.0:1720; CHECK-ARM-NEXT:    strb r1, [r0, #-4095]!1721; CHECK-ARM-NEXT:    bx lr1722  %o = getelementptr inbounds i8, ptr %p, i32 -40951723  store i8 %v, ptr %o, align 11724  ret ptr %o1725}1726 1727define ptr @i8_m4096(ptr %p, i8 %v) {1728; CHECK-T1-LABEL: i8_m4096:1729; CHECK-T1:       @ %bb.0:1730; CHECK-T1-NEXT:    ldr r2, .LCPI70_01731; CHECK-T1-NEXT:    strb r1, [r0, r2]1732; CHECK-T1-NEXT:    adds r0, r0, r21733; CHECK-T1-NEXT:    bx lr1734; CHECK-T1-NEXT:    .p2align 21735; CHECK-T1-NEXT:  @ %bb.1:1736; CHECK-T1-NEXT:  .LCPI70_0:1737; CHECK-T1-NEXT:    .long 4294963200 @ 0xfffff0001738;1739; CHECK-T2-LABEL: i8_m4096:1740; CHECK-T2:       @ %bb.0:1741; CHECK-T2-NEXT:    movw r2, #614401742; CHECK-T2-NEXT:    movt r2, #655351743; CHECK-T2-NEXT:    strb r1, [r0, r2]1744; CHECK-T2-NEXT:    sub.w r0, r0, #40961745; CHECK-T2-NEXT:    bx lr1746;1747; CHECK-ARM-LABEL: i8_m4096:1748; CHECK-ARM:       @ %bb.0:1749; CHECK-ARM-NEXT:    movw r2, #614401750; CHECK-ARM-NEXT:    movt r2, #655351751; CHECK-ARM-NEXT:    strb r1, [r0, r2]!1752; CHECK-ARM-NEXT:    bx lr1753  %o = getelementptr inbounds i8, ptr %p, i32 -40961754  store i8 %v, ptr %o, align 11755  ret ptr %o1756}1757