mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 22:04:55 +00:00
R600/SI: Fix bitcast between v2i32 and f64
This is the same problem fixed in r210664 for more types. The test passes without this fix. For some reason I'm only hitting this when creating selects lowered to v2i32 selects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210692 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7acd886ecf
commit
7fa80b45eb
@ -1973,6 +1973,8 @@ def : BitConvert <v2i32, i64, VReg_64>;
|
||||
def : BitConvert <i64, v2i32, VReg_64>;
|
||||
def : BitConvert <v2f32, i64, VReg_64>;
|
||||
def : BitConvert <i64, v2f32, VReg_64>;
|
||||
def : BitConvert <v2i32, f64, VReg_64>;
|
||||
def : BitConvert <f64, v2i32, VReg_64>;
|
||||
def : BitConvert <v4f32, v4i32, VReg_128>;
|
||||
def : BitConvert <v4i32, v4f32, VReg_128>;
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
|
||||
|
||||
; This test just checks that the compiler doesn't crash.
|
||||
|
||||
declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
|
||||
|
||||
; FUNC-LABEL: @v32i8_to_v8i32
|
||||
; SI: S_ENDPGM
|
||||
|
||||
define void @v32i8_to_v8i32(<32 x i8> addrspace(2)* inreg) #0 {
|
||||
entry:
|
||||
%1 = load <32 x i8> addrspace(2)* %0
|
||||
@ -15,10 +17,6 @@ entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
|
||||
|
||||
attributes #0 = { "ShaderType"="0" }
|
||||
|
||||
; FUNC-LABEL: @i8ptr_v16i8ptr
|
||||
; SI: S_ENDPGM
|
||||
define void @i8ptr_v16i8ptr(<16 x i8> addrspace(1)* %out, i8 addrspace(1)* %in) {
|
||||
@ -56,3 +54,25 @@ define void @i32_to_v4i8(<4 x i8> addrspace(1)* %out, i32 addrspace(1)* %in) nou
|
||||
store <4 x i8> %bc, <4 x i8> addrspace(1)* %out, align 4
|
||||
ret void
|
||||
}
|
||||
|
||||
; FUNC-LABEL: @bitcast_v2i32_to_f64
|
||||
; SI: S_ENDPGM
|
||||
define void @bitcast_v2i32_to_f64(double addrspace(1)* %out, <2 x i32> addrspace(1)* %in) {
|
||||
%val = load <2 x i32> addrspace(1)* %in, align 8
|
||||
%add = add <2 x i32> %val, <i32 4, i32 9>
|
||||
%bc = bitcast <2 x i32> %add to double
|
||||
store double %bc, double addrspace(1)* %out, align 8
|
||||
ret void
|
||||
}
|
||||
|
||||
; FUNC-LABEL: @bitcast_f64_to_v2i32
|
||||
; SI: S_ENDPGM
|
||||
define void @bitcast_f64_to_v2i32(<2 x i32> addrspace(1)* %out, double addrspace(1)* %in) {
|
||||
%val = load double addrspace(1)* %in, align 8
|
||||
%add = fadd double %val, 4.0
|
||||
%bc = bitcast double %add to <2 x i32>
|
||||
store <2 x i32> %bc, <2 x i32> addrspace(1)* %out, align 8
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #0 = { "ShaderType"="0" }
|
||||
|
Loading…
Reference in New Issue
Block a user