ldc/tests/codegen/asm_data_directives.d

59 lines
1.4 KiB
D

// REQUIRES: target_X86
// RUN: %ldc -mtriple=x86_64-linux-gnu -output-s -of=%t.s %s
// RUN: FileCheck %s < %t.s
// CHECK: _D19asm_data_directives14_rdrand32_stepFPkZi:
int _rdrand32_step(uint* r)
{
int ret;
asm
{
// CHECK: movl -12(%rbp), %eax
mov EAX, ret;
// CHECK-NEXT: .byte 15
// CHECK-NEXT: .byte 199
// CHECK-NEXT: .byte 240
db 0x0F, 0xC7, 0xF0; // rdrand EAX
// CHECK-NEXT: movl %eax, -12(%rbp)
mov ret, EAX;
}
if (ret != 0)
{
*r = ret;
return 1;
}
return 0;
}
// CHECK: _D19asm_data_directives3fooFZv:
void foo()
{
asm
{
// CHECK: .byte 1
// CHECK-NEXT: .byte 128
db 1, 0x80;
// CHECK-NEXT: .short 2
// CHECK-NEXT: .short 256
ds 2, 0x100;
// CHECK-NEXT: .long 3
// CHECK-NEXT: .long 65536
di 3, 0x10000;
// CHECK-NEXT: .quad 4
// CHECK-NEXT: .quad 4294967296
dl 4, 0x100000000;
// CHECK-NEXT: .long 1065353216
// CHECK-NEXT: .long 1069547520
df 1.0f, 1.5f;
// CHECK-NEXT: .quad 4607182418800017408
// CHECK-NEXT: .quad 4609434218613702656
dd 1.0, 1.5;
// CHECK-NEXT: .quad -9223372036854775808
// CHECK-NEXT: .short 16383
// CHECK-NEXT: .quad -4611686018427387904
// CHECK-NEXT: .short 16383
de 1.0L, 1.5L;
}
}