129 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=arm-eabi -mattr=+v6 %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-V63; RUN: llc -mtriple=arm-eabi -mattr=+v7 %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-V74 5define i32 @test0(i8 %A) {6; CHECK-LABEL: test0:7; CHECK: @ %bb.0:8; CHECK-NEXT: sxtb r0, r09; CHECK-NEXT: bx lr10 %B = sext i8 %A to i3211 ret i32 %B12}13 14define signext i8 @test1(i32 %A) {15; CHECK-V6-LABEL: test1:16; CHECK-V6: @ %bb.0:17; CHECK-V6-NEXT: lsr r0, r0, #818; CHECK-V6-NEXT: sxtb r0, r019; CHECK-V6-NEXT: bx lr20;21; CHECK-V7-LABEL: test1:22; CHECK-V7: @ %bb.0:23; CHECK-V7-NEXT: sbfx r0, r0, #8, #824; CHECK-V7-NEXT: bx lr25 %B = lshr i32 %A, 826 %C = shl i32 %A, 2427 %D = or i32 %B, %C28 %E = trunc i32 %D to i829 ret i8 %E30}31 32define signext i32 @test2(i32 %A, i32 %X) {33; CHECK-LABEL: test2:34; CHECK: @ %bb.0:35; CHECK-NEXT: sxtab r0, r1, r0, ror #836; CHECK-NEXT: bx lr37 %B = lshr i32 %A, 838 %C = shl i32 %A, 2439 %D = or i32 %B, %C40 %E = trunc i32 %D to i841 %F = sext i8 %E to i3242 %G = add i32 %F, %X43 ret i32 %G44}45 46define signext i32 @test3(i32 %A, i32 %X) {47; CHECK-LABEL: test3:48; CHECK: @ %bb.0:49; CHECK-NEXT: sxtab r0, r1, r0, ror #1650; CHECK-NEXT: bx lr51 %B = lshr i32 %A, 1652 %C = shl i32 %A, 1653 %D = or i32 %B, %C54 %E = trunc i32 %D to i855 %F = sext i8 %E to i3256 %G = add i32 %F, %X57 ret i32 %G58}59 60define signext i32 @test4(i32 %A, i32 %X) {61; CHECK-LABEL: test4:62; CHECK: @ %bb.0:63; CHECK-NEXT: sxtah r0, r1, r0, ror #864; CHECK-NEXT: bx lr65 %B = lshr i32 %A, 866 %C = shl i32 %A, 2467 %D = or i32 %B, %C68 %E = trunc i32 %D to i1669 %F = sext i16 %E to i3270 %G = add i32 %F, %X71 ret i32 %G72}73 74define signext i32 @test5(i32 %A, i32 %X) {75; CHECK-LABEL: test5:76; CHECK: @ %bb.0:77; CHECK-NEXT: sxtah r0, r1, r0, ror #2478; CHECK-NEXT: bx lr79 %B = lshr i32 %A, 2480 %C = shl i32 %A, 881 %D = or i32 %B, %C82 %E = trunc i32 %D to i1683 %F = sext i16 %E to i3284 %G = add i32 %F, %X85 ret i32 %G86}87 88define i32 @test6(i8 %A, i32 %X) {89; CHECK-LABEL: test6:90; CHECK: @ %bb.0:91; CHECK-NEXT: sxtab r0, r1, r092; CHECK-NEXT: bx lr93 %sext = sext i8 %A to i3294 %add = add i32 %X, %sext95 ret i32 %add96}97 98define i32 @test7(i32 %A, i32 %X) {99; CHECK-LABEL: test7:100; CHECK: @ %bb.0:101; CHECK-NEXT: sxtab r0, r1, r0102; CHECK-NEXT: bx lr103 %shl = shl i32 %A, 24104 %shr = ashr i32 %shl, 24105 %add = add i32 %X, %shr106 ret i32 %add107}108 109define i32 @test8(i16 %A, i32 %X) {110; CHECK-LABEL: test8:111; CHECK: @ %bb.0:112; CHECK-NEXT: sxtah r0, r1, r0113; CHECK-NEXT: bx lr114 %sext = sext i16 %A to i32115 %add = add i32 %X, %sext116 ret i32 %add117}118 119define i32 @test9(i32 %A, i32 %X) {120; CHECK-LABEL: test9:121; CHECK: @ %bb.0:122; CHECK-NEXT: sxtah r0, r1, r0123; CHECK-NEXT: bx lr124 %shl = shl i32 %A, 16125 %shr = ashr i32 %shl, 16126 %add = add i32 %X, %shr127 ret i32 %add128}129