mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
b0dba10fa6
Currently the shift-immediate versions are not supported by tblgen and hopefully this can be later removed, once the required support has been added to tblgen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214345 91177308-0d34-0410-b5e6-96231b3b80d8
90 lines
1.9 KiB
LLVM
90 lines
1.9 KiB
LLVM
; RUN: llc -fast-isel -fast-isel-abort -mtriple=arm64-apple-darwin < %s | FileCheck %s
|
|
|
|
; CHECK-LABEL: lsl_i8
|
|
; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #4
|
|
define zeroext i8 @lsl_i8(i8 %a) {
|
|
%1 = shl i8 %a, 4
|
|
ret i8 %1
|
|
}
|
|
|
|
; CHECK-LABEL: lsl_i16
|
|
; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #8
|
|
define zeroext i16 @lsl_i16(i16 %a) {
|
|
%1 = shl i16 %a, 8
|
|
ret i16 %1
|
|
}
|
|
|
|
; CHECK-LABEL: lsl_i32
|
|
; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #16
|
|
define zeroext i32 @lsl_i32(i32 %a) {
|
|
%1 = shl i32 %a, 16
|
|
ret i32 %1
|
|
}
|
|
|
|
; FIXME: This shouldn't use the variable shift version.
|
|
; CHECK-LABEL: lsl_i64
|
|
; CHECK: lsl {{x[0-9]*}}, {{x[0-9]*}}, {{x[0-9]*}}
|
|
define i64 @lsl_i64(i64 %a) {
|
|
%1 = shl i64 %a, 32
|
|
ret i64 %1
|
|
}
|
|
|
|
; CHECK-LABEL: lsr_i8
|
|
; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #4
|
|
define zeroext i8 @lsr_i8(i8 %a) {
|
|
%1 = lshr i8 %a, 4
|
|
ret i8 %1
|
|
}
|
|
|
|
; CHECK-LABEL: lsr_i16
|
|
; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #8
|
|
define zeroext i16 @lsr_i16(i16 %a) {
|
|
%1 = lshr i16 %a, 8
|
|
ret i16 %1
|
|
}
|
|
|
|
; CHECK-LABEL: lsr_i32
|
|
; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #16
|
|
define zeroext i32 @lsr_i32(i32 %a) {
|
|
%1 = lshr i32 %a, 16
|
|
ret i32 %1
|
|
}
|
|
|
|
; FIXME: This shouldn't use the variable shift version.
|
|
; CHECK-LABEL: lsr_i64
|
|
; CHECK: lsr {{x[0-9]*}}, {{x[0-9]*}}, {{x[0-9]*}}
|
|
define i64 @lsr_i64(i64 %a) {
|
|
%1 = lshr i64 %a, 32
|
|
ret i64 %1
|
|
}
|
|
|
|
; CHECK-LABEL: asr_i8
|
|
; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #4
|
|
define zeroext i8 @asr_i8(i8 %a) {
|
|
%1 = ashr i8 %a, 4
|
|
ret i8 %1
|
|
}
|
|
|
|
; CHECK-LABEL: asr_i16
|
|
; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #8
|
|
define zeroext i16 @asr_i16(i16 %a) {
|
|
%1 = ashr i16 %a, 8
|
|
ret i16 %1
|
|
}
|
|
|
|
; CHECK-LABEL: asr_i32
|
|
; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #16
|
|
define zeroext i32 @asr_i32(i32 %a) {
|
|
%1 = ashr i32 %a, 16
|
|
ret i32 %1
|
|
}
|
|
|
|
; FIXME: This shouldn't use the variable shift version.
|
|
; CHECK-LABEL: asr_i64
|
|
; CHECK: asr {{x[0-9]*}}, {{x[0-9]*}}, {{x[0-9]*}}
|
|
define i64 @asr_i64(i64 %a) {
|
|
%1 = ashr i64 %a, 32
|
|
ret i64 %1
|
|
}
|
|
|