blob: ac181693bcac7e03a05181682e25b130f05c23e5 [file] [edit]
; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s
; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
; fp128 globals are lowered to byte arrays. An fp128 nested in an aggregate is
; buffered one element at a time, and that per-element path must emit the same
; 16 little-endian bytes as a scalar fp128.
; CHECK-DAG: .visible .global .align 16 .b8 array_nonzero[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 63};
@array_nonzero = global [1 x fp128] [fp128 0xL00000000000000003FFF000000000000]
; CHECK-DAG: .visible .global .align 16 .b8 array_multi[32] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64};
@array_multi = global [2 x fp128] [fp128 0xL00000000000000003FFF000000000000, fp128 0xL00000000000000004000000000000000]
; Trailing zeros of the struct's tail padding are trimmed by the printer.
; CHECK-DAG: .visible .global .align 16 .b8 struct_nonzero[32] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 64, 7};
%struct.WithFloat128 = type { fp128, i32 }
@struct_nonzero = global %struct.WithFloat128 { fp128 0xL00000000000000004000800000000000, i32 7 }
; CHECK-DAG: .visible .global .align 16 .b8 scalar_nonzero[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 63};
@scalar_nonzero = global fp128 0xL00000000000000003FFF000000000000
; CHECK-DAG: .visible .global .align 16 .b8 array_zero[16];
@array_zero = global [1 x fp128] zeroinitializer