Sander de Smalen 61510b51c3 Revert "[AArch64] Enable subreg liveness tracking by default."
This reverts commit 9c319d5bb40785c969d2af76535ca62448dfafa7.

Some issues were discovered with the bootstrap builds, which
seem like they were caused by this commit. I'm reverting to investigate.
2024-12-12 17:22:15 +00:00

122 lines
3.4 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=aarch64_be-- < %s | FileCheck %s --check-prefix=BE
; RUN: llc -mtriple=aarch64-- < %s | FileCheck %s --check-prefix=LE
define i32 @trunc_i64_to_i32_le(i64 %x) {
; BE-LABEL: trunc_i64_to_i32_le:
; BE: // %bb.0:
; BE-NEXT: lsr x0, x0, #32
; BE-NEXT: // kill: def $w0 killed $w0 killed $x0
; BE-NEXT: ret
;
; LE-LABEL: trunc_i64_to_i32_le:
; LE: // %bb.0:
; LE-NEXT: // kill: def $w0 killed $w0 killed $x0
; LE-NEXT: ret
%ins = insertelement <2 x i64> undef, i64 %x, i32 0
%bc = bitcast <2 x i64> %ins to <4 x i32>
%ext = extractelement <4 x i32> %bc, i32 0
ret i32 %ext
}
define i32 @trunc_i64_to_i32_be(i64 %x) {
; BE-LABEL: trunc_i64_to_i32_be:
; BE: // %bb.0:
; BE-NEXT: // kill: def $w0 killed $w0 killed $x0
; BE-NEXT: ret
;
; LE-LABEL: trunc_i64_to_i32_be:
; LE: // %bb.0:
; LE-NEXT: lsr x0, x0, #32
; LE-NEXT: // kill: def $w0 killed $w0 killed $x0
; LE-NEXT: ret
%ins = insertelement <2 x i64> undef, i64 %x, i32 0
%bc = bitcast <2 x i64> %ins to <4 x i32>
%ext = extractelement <4 x i32> %bc, i32 1
ret i32 %ext
}
define i16 @trunc_i64_to_i16_le(i64 %x) {
; BE-LABEL: trunc_i64_to_i16_le:
; BE: // %bb.0:
; BE-NEXT: lsr x0, x0, #48
; BE-NEXT: // kill: def $w0 killed $w0 killed $x0
; BE-NEXT: ret
;
; LE-LABEL: trunc_i64_to_i16_le:
; LE: // %bb.0:
; LE-NEXT: // kill: def $w0 killed $w0 killed $x0
; LE-NEXT: ret
%ins = insertelement <2 x i64> undef, i64 %x, i32 0
%bc = bitcast <2 x i64> %ins to <8 x i16>
%ext = extractelement <8 x i16> %bc, i32 0
ret i16 %ext
}
define i16 @trunc_i64_to_i16_be(i64 %x) {
; BE-LABEL: trunc_i64_to_i16_be:
; BE: // %bb.0:
; BE-NEXT: // kill: def $w0 killed $w0 killed $x0
; BE-NEXT: ret
;
; LE-LABEL: trunc_i64_to_i16_be:
; LE: // %bb.0:
; LE-NEXT: lsr x0, x0, #48
; LE-NEXT: // kill: def $w0 killed $w0 killed $x0
; LE-NEXT: ret
%ins = insertelement <2 x i64> undef, i64 %x, i32 0
%bc = bitcast <2 x i64> %ins to <8 x i16>
%ext = extractelement <8 x i16> %bc, i32 3
ret i16 %ext
}
define i8 @trunc_i32_to_i8_le(i32 %x) {
; BE-LABEL: trunc_i32_to_i8_le:
; BE: // %bb.0:
; BE-NEXT: lsr w0, w0, #24
; BE-NEXT: ret
;
; LE-LABEL: trunc_i32_to_i8_le:
; LE: // %bb.0:
; LE-NEXT: ret
%ins = insertelement <4 x i32> undef, i32 %x, i32 0
%bc = bitcast <4 x i32> %ins to <16 x i8>
%ext = extractelement <16 x i8> %bc, i32 0
ret i8 %ext
}
define i8 @trunc_i32_to_i8_be(i32 %x) {
; BE-LABEL: trunc_i32_to_i8_be:
; BE: // %bb.0:
; BE-NEXT: ret
;
; LE-LABEL: trunc_i32_to_i8_be:
; LE: // %bb.0:
; LE-NEXT: lsr w0, w0, #24
; LE-NEXT: ret
%ins = insertelement <4 x i32> undef, i32 %x, i32 0
%bc = bitcast <4 x i32> %ins to <16 x i8>
%ext = extractelement <16 x i8> %bc, i32 3
ret i8 %ext
}
; Weird type (non-power-of-2 vector) is ok.
define i8 @trunc_i64_to_i8_be(i64 %x) {
; BE-LABEL: trunc_i64_to_i8_be:
; BE: // %bb.0:
; BE-NEXT: // kill: def $w0 killed $w0 killed $x0
; BE-NEXT: ret
;
; LE-LABEL: trunc_i64_to_i8_be:
; LE: // %bb.0:
; LE-NEXT: lsr x0, x0, #56
; LE-NEXT: // kill: def $w0 killed $w0 killed $x0
; LE-NEXT: ret
%ins = insertelement <3 x i64> undef, i64 %x, i32 0
%bc = bitcast <3 x i64> %ins to <24 x i8>
%ext = extractelement <24 x i8> %bc, i32 7
ret i8 %ext
}