llvm-6502/test/CodeGen/MBlaze/shift.ll
Wesley Peck 13a949071c Major update of the MicroBlaze backend. The new features are:
1. A delay slot filler that searches for valid instructions
       to fill the delay slot with. Previously NOPs would always
       be inserted into delay slots.
    2. Support for MC based instruction printer added.
    3. Support for MC based machine code generation and ELF
       file generation. ELF file generation does not yet
       completely work as much of the ELF support infrastructure
       is still x86/x86-64 specific.
    4. General clean up of the MBlaze backend code. Much of the
       tablegen code has been cleanup and simplified.

Bug Fixes:
    1. Removed duplicate periods from subtarget feature descriptions.
    2. Many of the instructions had bad machine code information
       in the tablegen files. Much of this has been fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116986 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21 03:09:55 +00:00

118 lines
2.5 KiB
LLVM

; Ensure that shifts are lowered to loops when the barrel shifter unit is
; not available in the hardware and that loops are not used when the
; barrel shifter unit is available in the hardware.
;
; RUN: llc < %s -march=mblaze | FileCheck -check-prefix=FUN %s
; RUN: llc < %s -march=mblaze -mattr=+barrel | FileCheck -check-prefix=SHT %s
define i8 @test_i8(i8 %a, i8 %b) {
; FUN: test_i8:
; SHT: test_i8:
%tmp.1 = shl i8 %a, %b
; FUN: andi
; FUN: add
; FUN: bnei
; SHT-NOT: andi
; SHT-NOT: bnei
ret i8 %tmp.1
; FUN: rtsd
; SHT: rtsd
; FUN-NOT: bsll
; SHT-NEXT: bsll
}
define i8 @testc_i8(i8 %a, i8 %b) {
; FUN: testc_i8:
; SHT: testc_i8:
%tmp.1 = shl i8 %a, 5
; FUN: andi
; FUN: add
; FUN: bnei
; SHT-NOT: andi
; SHT-NOT: add
; SHT-NOT: bnei
ret i8 %tmp.1
; FUN: rtsd
; SHT: rtsd
; FUN-NOT: bsll
; SHT-NEXT: bslli
}
define i16 @test_i16(i16 %a, i16 %b) {
; FUN: test_i16:
; SHT: test_i16:
%tmp.1 = shl i16 %a, %b
; FUN: andi
; FUN: add
; FUN: bnei
; SHT-NOT: andi
; SHT-NOT: bnei
ret i16 %tmp.1
; FUN: rtsd
; SHT: rtsd
; FUN-NOT: bsll
; SHT-NEXT: bsll
}
define i16 @testc_i16(i16 %a, i16 %b) {
; FUN: testc_i16:
; SHT: testc_i16:
%tmp.1 = shl i16 %a, 5
; FUN: andi
; FUN: add
; FUN: bnei
; SHT-NOT: andi
; SHT-NOT: add
; SHT-NOT: bnei
ret i16 %tmp.1
; FUN: rtsd
; SHT: rtsd
; FUN-NOT: bsll
; SHT-NEXT: bslli
}
define i32 @test_i32(i32 %a, i32 %b) {
; FUN: test_i32:
; SHT: test_i32:
%tmp.1 = shl i32 %a, %b
; FUN: andi
; FUN: add
; FUN: bnei
; SHT-NOT: andi
; SHT-NOT: bnei
ret i32 %tmp.1
; FUN: rtsd
; SHT: rtsd
; FUN-NOT: bsll
; SHT-NEXT: bsll
}
define i32 @testc_i32(i32 %a, i32 %b) {
; FUN: testc_i32:
; SHT: testc_i32:
%tmp.1 = shl i32 %a, 5
; FUN: andi
; FUN: add
; FUN: bnei
; SHT-NOT: andi
; SHT-NOT: add
; SHT-NOT: bnei
ret i32 %tmp.1
; FUN: rtsd
; SHT: rtsd
; FUN-NOT: bsll
; SHT-NEXT: bslli
}