Line | |
---|

1 | ; RUN: llc -mtriple=arm-eabi -mattr=+v6t2 %s -o - | FileCheck %s |
---|

2 | |
---|

3 | define i32 @f1(i32 %a) { |
---|

4 | entry: |
---|

5 | ; CHECK-LABEL: f1: |
---|

6 | ; CHECK: sbfx r0, r0, #0, #20 |
---|

7 | %tmp = shl i32 %a, 12 |
---|

8 | %tmp2 = ashr i32 %tmp, 12 |
---|

9 | ret i32 %tmp2 |
---|

10 | } |
---|

11 | |
---|

12 | define i32 @f2(i32 %a) { |
---|

13 | entry: |
---|

14 | ; CHECK-LABEL: f2: |
---|

15 | ; CHECK: bfc r0, #20, #12 |
---|

16 | %tmp = shl i32 %a, 12 |
---|

17 | %tmp2 = lshr i32 %tmp, 12 |
---|

18 | ret i32 %tmp2 |
---|

19 | } |
---|

20 | |
---|

21 | define i32 @f3(i32 %a) { |
---|

22 | entry: |
---|

23 | ; CHECK-LABEL: f3: |
---|

24 | ; CHECK: sbfx r0, r0, #5, #3 |
---|

25 | %tmp = shl i32 %a, 24 |
---|

26 | %tmp2 = ashr i32 %tmp, 29 |
---|

27 | ret i32 %tmp2 |
---|

28 | } |
---|

29 | |
---|

30 | define i32 @f4(i32 %a) { |
---|

31 | entry: |
---|

32 | ; CHECK-LABEL: f4: |
---|

33 | ; CHECK: ubfx r0, r0, #5, #3 |
---|

34 | %tmp = shl i32 %a, 24 |
---|

35 | %tmp2 = lshr i32 %tmp, 29 |
---|

36 | ret i32 %tmp2 |
---|

37 | } |
---|

38 | |
---|

39 | define i32 @f5(i32 %a) { |
---|

40 | entry: |
---|

41 | ; CHECK-LABEL: f5: |
---|

42 | ; CHECK-NOT: sbfx |
---|

43 | ; CHECK: bx |
---|

44 | %tmp = shl i32 %a, 3 |
---|

45 | %tmp2 = ashr i32 %tmp, 1 |
---|

46 | ret i32 %tmp2 |
---|

47 | } |
---|

48 | |
---|

49 | define signext i8 @f6(i32 %a) { |
---|

50 | ; CHECK-LABEL: f6: |
---|

51 | ; CHECK: sbfx r0, r0, #23, #8 |
---|

52 | |
---|

53 | %tmp = lshr i32 %a, 23 |
---|

54 | %res = trunc i32 %tmp to i8 |
---|

55 | ret i8 %res |
---|

56 | } |
---|

57 | |
---|

58 | define signext i8 @f7(i32 %a) { |
---|

59 | ; CHECK-LABEL: f7: |
---|

60 | ; CHECK-NOT: sbfx |
---|

61 | |
---|

62 | %tmp = lshr i32 %a, 25 |
---|

63 | %res = trunc i32 %tmp to i8 |
---|

64 | ret i8 %res |
---|

65 | } |
---|

**Note:** See

TracBrowser
for help on using the repository browser.