File: asm_data_directives.d

package info (click to toggle)
ldc 1%3A1.30.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 59,248 kB
  • sloc: cpp: 61,598; ansic: 14,545; sh: 1,014; makefile: 972; asm: 510; objc: 135; exp: 48; python: 12
file content (59 lines) | stat: -rw-r--r-- 1,438 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// 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;
    }
}