393 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3define signext i16 @func1() {4; CHECK-LABEL: func1:5; CHECK: .LBB{{[0-9]+}}_2:6; CHECK-NEXT: ld1b.sx %s0, 15(, %s11)7; CHECK-NEXT: adds.l %s11, 16, %s118; CHECK-NEXT: b.l.t (, %s10)9 %a = alloca i8, align 110 %a.val = load i8, ptr %a, align 111 %a.conv = sext i8 %a.val to i1612 ret i16 %a.conv13}14 15define i32 @func2() {16; CHECK-LABEL: func2:17; CHECK: .LBB{{[0-9]+}}_2:18; CHECK-NEXT: ld1b.sx %s0, 15(, %s11)19; CHECK-NEXT: adds.l %s11, 16, %s1120; CHECK-NEXT: b.l.t (, %s10)21 %a = alloca i8, align 122 %a.val = load i8, ptr %a, align 123 %a.conv = sext i8 %a.val to i3224 ret i32 %a.conv25}26 27define i64 @func3() {28; CHECK-LABEL: func3:29; CHECK: .LBB{{[0-9]+}}_2:30; CHECK-NEXT: ld1b.sx %s0, 15(, %s11)31; CHECK-NEXT: adds.l %s11, 16, %s1132; CHECK-NEXT: b.l.t (, %s10)33 %a = alloca i8, align 134 %a.val = load i8, ptr %a, align 135 %a.conv = sext i8 %a.val to i6436 ret i64 %a.conv37}38 39define zeroext i16 @func5() {40; CHECK-LABEL: func5:41; CHECK: .LBB{{[0-9]+}}_2:42; CHECK-NEXT: ld1b.sx %s0, 15(, %s11)43; CHECK-NEXT: and %s0, %s0, (48)044; CHECK-NEXT: adds.l %s11, 16, %s1145; CHECK-NEXT: b.l.t (, %s10)46 %a = alloca i8, align 147 %a.val = load i8, ptr %a, align 148 %a.conv = sext i8 %a.val to i1649 ret i16 %a.conv50}51 52define i32 @func6() {53; CHECK-LABEL: func6:54; CHECK: .LBB{{[0-9]+}}_2:55; CHECK-NEXT: ld1b.sx %s0, 15(, %s11)56; CHECK-NEXT: adds.l %s11, 16, %s1157; CHECK-NEXT: b.l.t (, %s10)58 %a = alloca i8, align 159 %a.val = load i8, ptr %a, align 160 %a.conv = sext i8 %a.val to i3261 ret i32 %a.conv62}63 64define i64 @func7() {65; CHECK-LABEL: func7:66; CHECK: .LBB{{[0-9]+}}_2:67; CHECK-NEXT: ld1b.sx %s0, 15(, %s11)68; CHECK-NEXT: adds.l %s11, 16, %s1169; CHECK-NEXT: b.l.t (, %s10)70 %a = alloca i8, align 171 %a.val = load i8, ptr %a, align 172 %a.conv = sext i8 %a.val to i6473 ret i64 %a.conv74}75 76define signext i16 @func9() {77; CHECK-LABEL: func9:78; CHECK: .LBB{{[0-9]+}}_2:79; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)80; CHECK-NEXT: adds.l %s11, 16, %s1181; CHECK-NEXT: b.l.t (, %s10)82 %a = alloca i8, align 183 %a.val = load i8, ptr %a, align 184 %a.conv = zext i8 %a.val to i1685 ret i16 %a.conv86}87 88define i32 @func10() {89; CHECK-LABEL: func10:90; CHECK: .LBB{{[0-9]+}}_2:91; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)92; CHECK-NEXT: adds.l %s11, 16, %s1193; CHECK-NEXT: b.l.t (, %s10)94 %a = alloca i8, align 195 %a.val = load i8, ptr %a, align 196 %a.conv = zext i8 %a.val to i3297 ret i32 %a.conv98}99 100define i64 @func11() {101; CHECK-LABEL: func11:102; CHECK: .LBB{{[0-9]+}}_2:103; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)104; CHECK-NEXT: adds.l %s11, 16, %s11105; CHECK-NEXT: b.l.t (, %s10)106 %a = alloca i8, align 1107 %a.val = load i8, ptr %a, align 1108 %a.conv = zext i8 %a.val to i64109 ret i64 %a.conv110}111 112define zeroext i16 @func13() {113; CHECK-LABEL: func13:114; CHECK: .LBB{{[0-9]+}}_2:115; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)116; CHECK-NEXT: adds.l %s11, 16, %s11117; CHECK-NEXT: b.l.t (, %s10)118 %a = alloca i8, align 1119 %a.val = load i8, ptr %a, align 1120 %a.conv = zext i8 %a.val to i16121 ret i16 %a.conv122}123 124define zeroext i16 @func14() {125; CHECK-LABEL: func14:126; CHECK: .LBB{{[0-9]+}}_2:127; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)128; CHECK-NEXT: adds.l %s11, 16, %s11129; CHECK-NEXT: b.l.t (, %s10)130 %a = alloca i8, align 1131 %a.val = load i8, ptr %a, align 1132 %a.conv = zext i8 %a.val to i16133 ret i16 %a.conv134}135 136define i64 @func15() {137; CHECK-LABEL: func15:138; CHECK: .LBB{{[0-9]+}}_2:139; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)140; CHECK-NEXT: adds.l %s11, 16, %s11141; CHECK-NEXT: b.l.t (, %s10)142 %a = alloca i8, align 1143 %a.val = load i8, ptr %a, align 1144 %a.conv = zext i8 %a.val to i64145 ret i64 %a.conv146}147 148define i32 @func17() {149; CHECK-LABEL: func17:150; CHECK: .LBB{{[0-9]+}}_2:151; CHECK-NEXT: ld2b.sx %s0, 14(, %s11)152; CHECK-NEXT: adds.l %s11, 16, %s11153; CHECK-NEXT: b.l.t (, %s10)154 %a = alloca i16, align 2155 %a.val = load i16, ptr %a, align 2156 %a.conv = sext i16 %a.val to i32157 ret i32 %a.conv158}159 160define i64 @func18() {161; CHECK-LABEL: func18:162; CHECK: .LBB{{[0-9]+}}_2:163; CHECK-NEXT: ld2b.sx %s0, 14(, %s11)164; CHECK-NEXT: adds.l %s11, 16, %s11165; CHECK-NEXT: b.l.t (, %s10)166 %a = alloca i16, align 2167 %a.val = load i16, ptr %a, align 2168 %a.conv = sext i16 %a.val to i64169 ret i64 %a.conv170}171 172define zeroext i16 @func20() {173; CHECK-LABEL: func20:174; CHECK: .LBB{{[0-9]+}}_2:175; CHECK-NEXT: ld2b.zx %s0, 14(, %s11)176; CHECK-NEXT: adds.l %s11, 16, %s11177; CHECK-NEXT: b.l.t (, %s10)178 %a = alloca i16, align 2179 %a.conv = load i16, ptr %a, align 2180 ret i16 %a.conv181}182 183define i64 @func21() {184; CHECK-LABEL: func21:185; CHECK: .LBB{{[0-9]+}}_2:186; CHECK-NEXT: ld2b.sx %s0, 14(, %s11)187; CHECK-NEXT: adds.l %s11, 16, %s11188; CHECK-NEXT: b.l.t (, %s10)189 %a = alloca i16, align 2190 %a.val = load i16, ptr %a, align 2191 %a.conv = sext i16 %a.val to i64192 ret i64 %a.conv193}194 195define i32 @func23() {196; CHECK-LABEL: func23:197; CHECK: .LBB{{[0-9]+}}_2:198; CHECK-NEXT: ld2b.zx %s0, 14(, %s11)199; CHECK-NEXT: adds.l %s11, 16, %s11200; CHECK-NEXT: b.l.t (, %s10)201 %a = alloca i16, align 2202 %a.val = load i16, ptr %a, align 2203 %a.conv = zext i16 %a.val to i32204 ret i32 %a.conv205}206 207define i64 @func24() {208; CHECK-LABEL: func24:209; CHECK: .LBB{{[0-9]+}}_2:210; CHECK-NEXT: ld2b.zx %s0, 14(, %s11)211; CHECK-NEXT: adds.l %s11, 16, %s11212; CHECK-NEXT: b.l.t (, %s10)213 %a = alloca i16, align 2214 %a.val = load i16, ptr %a, align 2215 %a.conv = zext i16 %a.val to i64216 ret i64 %a.conv217}218 219define zeroext i16 @func26() {220; CHECK-LABEL: func26:221; CHECK: .LBB{{[0-9]+}}_2:222; CHECK-NEXT: ld2b.zx %s0, 14(, %s11)223; CHECK-NEXT: adds.l %s11, 16, %s11224; CHECK-NEXT: b.l.t (, %s10)225 %a = alloca i16, align 2226 %a.conv = load i16, ptr %a, align 2227 ret i16 %a.conv228}229 230define i64 @func27() {231; CHECK-LABEL: func27:232; CHECK: .LBB{{[0-9]+}}_2:233; CHECK-NEXT: ld2b.zx %s0, 14(, %s11)234; CHECK-NEXT: adds.l %s11, 16, %s11235; CHECK-NEXT: b.l.t (, %s10)236 %a = alloca i16, align 2237 %a.val = load i16, ptr %a, align 2238 %a.conv = zext i16 %a.val to i64239 ret i64 %a.conv240}241 242define i64 @func29() {243; CHECK-LABEL: func29:244; CHECK: .LBB{{[0-9]+}}_2:245; CHECK-NEXT: ldl.sx %s0, 12(, %s11)246; CHECK-NEXT: adds.l %s11, 16, %s11247; CHECK-NEXT: b.l.t (, %s10)248 %a = alloca i32, align 4249 %a.val = load i32, ptr %a, align 4250 %a.conv = sext i32 %a.val to i64251 ret i64 %a.conv252}253 254define i64 @func31() {255; CHECK-LABEL: func31:256; CHECK: .LBB{{[0-9]+}}_2:257; CHECK-NEXT: ldl.sx %s0, 12(, %s11)258; CHECK-NEXT: adds.l %s11, 16, %s11259; CHECK-NEXT: b.l.t (, %s10)260 %a = alloca i32, align 4261 %a.val = load i32, ptr %a, align 4262 %a.conv = sext i32 %a.val to i64263 ret i64 %a.conv264}265 266define i64 @func33() {267; CHECK-LABEL: func33:268; CHECK: .LBB{{[0-9]+}}_2:269; CHECK-NEXT: ldl.zx %s0, 12(, %s11)270; CHECK-NEXT: adds.l %s11, 16, %s11271; CHECK-NEXT: b.l.t (, %s10)272 %a = alloca i32, align 4273 %a.val = load i32, ptr %a, align 4274 %a.conv = zext i32 %a.val to i64275 ret i64 %a.conv276}277 278define i64 @func35() {279; CHECK-LABEL: func35:280; CHECK: .LBB{{[0-9]+}}_2:281; CHECK-NEXT: ldl.zx %s0, 12(, %s11)282; CHECK-NEXT: adds.l %s11, 16, %s11283; CHECK-NEXT: b.l.t (, %s10)284 %a = alloca i32, align 4285 %a.val = load i32, ptr %a, align 4286 %a.conv = zext i32 %a.val to i64287 ret i64 %a.conv288}289 290define signext i8 @func37() {291; CHECK-LABEL: func37:292; CHECK: .LBB{{[0-9]+}}_2:293; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)294; CHECK-NEXT: sll %s0, %s0, 63295; CHECK-NEXT: sra.l %s0, %s0, 63296; CHECK-NEXT: adds.l %s11, 16, %s11297; CHECK-NEXT: b.l.t (, %s10)298 %a = alloca i1, align 1299 %a.val = load i1, ptr %a, align 1300 %a.conv = sext i1 %a.val to i8301 ret i8 %a.conv302}303 304define signext i16 @func38() {305; CHECK-LABEL: func38:306; CHECK: .LBB{{[0-9]+}}_2:307; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)308; CHECK-NEXT: sll %s0, %s0, 63309; CHECK-NEXT: sra.l %s0, %s0, 63310; CHECK-NEXT: adds.l %s11, 16, %s11311; CHECK-NEXT: b.l.t (, %s10)312 %a = alloca i1, align 1313 %a.val = load i1, ptr %a, align 1314 %a.conv = sext i1 %a.val to i16315 ret i16 %a.conv316}317 318define signext i32 @func39() {319; CHECK-LABEL: func39:320; CHECK: .LBB{{[0-9]+}}_2:321; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)322; CHECK-NEXT: sll %s0, %s0, 63323; CHECK-NEXT: sra.l %s0, %s0, 63324; CHECK-NEXT: adds.l %s11, 16, %s11325; CHECK-NEXT: b.l.t (, %s10)326 %a = alloca i1, align 1327 %a.val = load i1, ptr %a, align 1328 %a.conv = sext i1 %a.val to i32329 ret i32 %a.conv330}331 332define signext i64 @func40() {333; CHECK-LABEL: func40:334; CHECK: .LBB{{[0-9]+}}_2:335; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)336; CHECK-NEXT: sll %s0, %s0, 63337; CHECK-NEXT: sra.l %s0, %s0, 63338; CHECK-NEXT: adds.l %s11, 16, %s11339; CHECK-NEXT: b.l.t (, %s10)340 %a = alloca i1, align 1341 %a.val = load i1, ptr %a, align 1342 %a.conv = sext i1 %a.val to i64343 ret i64 %a.conv344}345 346define signext i8 @func42() {347; CHECK-LABEL: func42:348; CHECK: .LBB{{[0-9]+}}_2:349; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)350; CHECK-NEXT: adds.l %s11, 16, %s11351; CHECK-NEXT: b.l.t (, %s10)352 %a = alloca i1, align 1353 %a.val = load i1, ptr %a, align 1354 %a.conv = zext i1 %a.val to i8355 ret i8 %a.conv356}357 358define signext i16 @func43() {359; CHECK-LABEL: func43:360; CHECK: .LBB{{[0-9]+}}_2:361; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)362; CHECK-NEXT: adds.l %s11, 16, %s11363; CHECK-NEXT: b.l.t (, %s10)364 %a = alloca i1, align 1365 %a.val = load i1, ptr %a, align 1366 %a.conv = zext i1 %a.val to i16367 ret i16 %a.conv368}369 370define signext i32 @func44() {371; CHECK-LABEL: func44:372; CHECK: .LBB{{[0-9]+}}_2:373; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)374; CHECK-NEXT: adds.l %s11, 16, %s11375; CHECK-NEXT: b.l.t (, %s10)376 %a = alloca i1, align 1377 %a.val = load i1, ptr %a, align 1378 %a.conv = zext i1 %a.val to i32379 ret i32 %a.conv380}381 382define signext i64 @func45() {383; CHECK-LABEL: func45:384; CHECK: .LBB{{[0-9]+}}_2:385; CHECK-NEXT: ld1b.zx %s0, 15(, %s11)386; CHECK-NEXT: adds.l %s11, 16, %s11387; CHECK-NEXT: b.l.t (, %s10)388 %a = alloca i1, align 1389 %a.val = load i1, ptr %a, align 1390 %a.conv = zext i1 %a.val to i64391 ret i64 %a.conv392}393