llvm-project/llvm/test/CodeGen/NVPTX/zeroext-32bit.ll
Fangrui Song b279f6b098 [NVPTX,test] Change llc -march= to -mtriple=
Similar to 806761a7629df268c8aed49657aeccffa6bca449

-mtriple= specifies the full target triple while -march= merely sets the
architecture part of the default target triple (e.g. Windows, macOS),
leaving a target triple which may not make sense.

Therefore, -march= is error-prone and not recommended for tests without
a target triple. The issue has been benign as we recognize
nvptx{,64}-apple-darwin as ELF instead of rejecting it outrightly.
2024-12-15 10:45:11 -08:00

28 lines
897 B
LLVM

; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_30 -verify-machineinstrs | FileCheck %s
; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_30 -verify-machineinstrs | %ptxas-verify %}
; The zeroext attribute below should be silently ignored because
; we can pass a 32-bit integer across a function call without
; needing to extend it.
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"
target triple = "nvptx64-unknown-cuda"
; CHECK-LABEL: .visible .func zeroext_test
; CHECK-NOT: cvt.u32.u16
define void @zeroext_test() {
tail call void @call1(i32 zeroext 0)
ret void
}
declare void @call1(i32 zeroext)
; CHECK-LABEL: .visible .func signext_test
; CHECK-NOT: cvt.s32.s16
define void @signext_test() {
tail call void @call2(i32 zeroext 0)
ret void
}
declare void @call2(i32 zeroext)