Files
clang-p2996/llvm/test/CodeGen/NVPTX/bug26185.ll
Pavel Kopyl 01afb3fb99 [NVPTX] Use by default 'sm_60' architecture when expanding %ptxas-verify macro.
Also get rid of explicitly specified '-march' values for old architectures.
This simplifies %ptxas-verify statements.
After the change, we can potentially miss cases where a new functionality
is added to the architecture without appropriate checks in the
backend. On the other hand, this is mostly true for old architectures
that have been thoroughly tested.

Differential Revision: https://reviews.llvm.org/D141736
2023-02-17 20:49:04 +01:00

59 lines
1.6 KiB
LLVM

; RUN: llc < %s -march=nvptx -mcpu=sm_35 -verify-machineinstrs | FileCheck %s
; RUN: %if ptxas %{ llc < %s -march=nvptx -mcpu=sm_35 | %ptxas-verify %}
; Verify that we correctly emit code for i8 ldg/ldu. We do not expose 8-bit
; registers in the backend, so these loads need special handling.
target datalayout = "e-i64:64-v16:16-v32:32-n16:32:64"
target triple = "nvptx64-unknown-unknown"
; CHECK-LABEL: ex_zext
define void @ex_zext(ptr noalias readonly %data, ptr %res) {
entry:
; CHECK: ld.global.nc.u8
%val = load i8, ptr %data
; CHECK: cvt.u32.u8
%valext = zext i8 %val to i32
store i32 %valext, ptr %res
ret void
}
; CHECK-LABEL: ex_sext
define void @ex_sext(ptr noalias readonly %data, ptr %res) {
entry:
; CHECK: ld.global.nc.u8
%val = load i8, ptr %data
; CHECK: cvt.s32.s8
%valext = sext i8 %val to i32
store i32 %valext, ptr %res
ret void
}
; CHECK-LABEL: ex_zext_v2
define void @ex_zext_v2(ptr noalias readonly %data, ptr %res) {
entry:
; CHECK: ld.global.nc.v2.u8
%val = load <2 x i8>, ptr %data
; CHECK: cvt.u32.u16
%valext = zext <2 x i8> %val to <2 x i32>
store <2 x i32> %valext, ptr %res
ret void
}
; CHECK-LABEL: ex_sext_v2
define void @ex_sext_v2(ptr noalias readonly %data, ptr %res) {
entry:
; CHECK: ld.global.nc.v2.u8
%val = load <2 x i8>, ptr %data
; CHECK: cvt.s32.s8
%valext = sext <2 x i8> %val to <2 x i32>
store <2 x i32> %valext, ptr %res
ret void
}
!nvvm.annotations = !{!0,!1,!2,!3}
!0 = !{ptr @ex_zext, !"kernel", i32 1}
!1 = !{ptr @ex_sext, !"kernel", i32 1}
!2 = !{ptr @ex_zext_v2, !"kernel", i32 1}
!3 = !{ptr @ex_sext_v2, !"kernel", i32 1}