1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/test/CodeGen/AMDGPU/bug-vopc-commute.ll
Matt Arsenault 81a9bfe915 Enable FeatureFlatForGlobal on Volcanic Islands
This switches to the workaround that HSA defaults to
for the mesa path.

This should be applied to the 4.0 branch.

Patch by Vedran Miletić <vedran@miletic.net>

llvm-svn: 292982
2017-01-24 22:02:15 +00:00

48 lines
1.6 KiB
LLVM

; RUN: llc -march=amdgcn -mcpu=verde -verify-machineinstrs < %s | FileCheck %s
; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck %s
; CHECK-LABEL: {{^}}main:
;
; Test for compilation only. This generated an invalid machine instruction
; by trying to commute the operands of a V_CMP_EQ_i32_e32 instruction, both
; of which were in SGPRs.
define amdgpu_vs float @main(i32 %v) {
main_body:
%d1 = call float @llvm.SI.load.const(<16 x i8> undef, i32 960)
%d2 = call float @llvm.SI.load.const(<16 x i8> undef, i32 976)
br i1 undef, label %ENDIF56, label %IF57
IF57: ; preds = %ENDIF
%v.1 = mul i32 %v, 2
br label %ENDIF56
ENDIF56: ; preds = %IF57, %ENDIF
%v.2 = phi i32 [ %v, %main_body ], [ %v.1, %IF57 ]
%d1.i = bitcast float %d1 to i32
%cc1 = icmp eq i32 %d1.i, 0
br i1 %cc1, label %ENDIF59, label %IF60
IF60: ; preds = %ENDIF56
%v.3 = mul i32 %v.2, 2
br label %ENDIF59
ENDIF59: ; preds = %IF60, %ENDIF56
%v.4 = phi i32 [ %v.2, %ENDIF56 ], [ %v.3, %IF60 ]
%d2.i = bitcast float %d2 to i32
%cc2 = icmp eq i32 %d2.i, 0
br i1 %cc2, label %ENDIF62, label %IF63
IF63: ; preds = %ENDIF59
unreachable
ENDIF62: ; preds = %ENDIF59
%r = bitcast i32 %v.4 to float
ret float %r
}
; Function Attrs: nounwind readnone
declare float @llvm.SI.load.const(<16 x i8>, i32) #0
attributes #0 = { nounwind readnone }
attributes #1 = { readnone }