~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/CodeGen/X86/asm-mismatched-types.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc -o - %s -no-integrated-as | FileCheck %s
 
2
target triple = "x86_64--"
 
3
 
 
4
; Allow to specify any of the 8/16/32/64 register names interchangeably in
 
5
; constraints
 
6
 
 
7
; Produced by C-programs like this:
 
8
; void foo(int p) { register int reg __asm__("r8") = p;
 
9
; __asm__ __volatile__("# REG: %0" : : "r" (reg)); }
 
10
 
 
11
; CHECK-LABEL: reg64_as_32:
 
12
; CHECK: # REG: %r8d
 
13
define void @reg64_as_32(i32 %p) {
 
14
  call void asm sideeffect "# REG: $0", "{r8}"(i32 %p)
 
15
  ret void
 
16
}
 
17
 
 
18
; CHECK-LABEL: reg64_as_32_float:
 
19
; CHECK: # REG: %r8d
 
20
define void @reg64_as_32_float(float %p) {
 
21
  call void asm sideeffect "# REG: $0", "{r8}"(float %p)
 
22
  ret void
 
23
}
 
24
 
 
25
; CHECK-LABEL: reg64_as_16:
 
26
; CHECK: # REG: %r9w
 
27
define void @reg64_as_16(i16 %p) {
 
28
  call void asm sideeffect "# REG: $0", "{r9}"(i16 %p)
 
29
  ret void
 
30
}
 
31
 
 
32
; CHECK-LABEL: reg64_as_8:
 
33
; CHECK: # REG: %bpl
 
34
define void @reg64_as_8(i8 %p) {
 
35
  call void asm sideeffect "# REG: $0", "{rbp}"(i8 %p)
 
36
  ret void
 
37
}
 
38
 
 
39
; CHECK-LABEL: reg32_as_16:
 
40
; CHECK: # REG: %r15w
 
41
define void @reg32_as_16(i16 %p) {
 
42
  call void asm sideeffect "# REG: $0", "{r15d}"(i16 %p)
 
43
  ret void
 
44
}
 
45
 
 
46
; CHECK-LABEL: reg32_as_8:
 
47
; CHECK: # REG: %r12b
 
48
define void @reg32_as_8(i8 %p) {
 
49
  call void asm sideeffect "# REG: $0", "{r12d}"(i8 %p)
 
50
  ret void
 
51
}
 
52
 
 
53
; CHECK-LABEL: reg16_as_8:
 
54
; CHECK: # REG: %cl
 
55
define void @reg16_as_8(i8 %p) {
 
56
  call void asm sideeffect "# REG: $0", "{cx}"(i8 %p)
 
57
  ret void
 
58
}
 
59
 
 
60
; CHECK-LABEL: reg32_as_64:
 
61
; CHECK: # REG: %rbp
 
62
define void @reg32_as_64(i64 %p) {
 
63
  call void asm sideeffect "# REG: $0", "{ebp}"(i64 %p)
 
64
  ret void
 
65
}
 
66
 
 
67
; CHECK-LABEL: reg32_as_64_float:
 
68
; CHECK: # REG: %rbp
 
69
define void @reg32_as_64_float(double %p) {
 
70
  call void asm sideeffect "# REG: $0", "{ebp}"(double %p)
 
71
  ret void
 
72
}
 
73
 
 
74
; CHECK-LABEL: reg16_as_64:
 
75
; CHECK: # REG: %r13
 
76
define void @reg16_as_64(i64 %p) {
 
77
  call void asm sideeffect "# REG: $0", "{r13w}"(i64 %p)
 
78
  ret void
 
79
}
 
80
 
 
81
; CHECK-LABEL: reg16_as_64_float:
 
82
; CHECK: # REG: %r13
 
83
define void @reg16_as_64_float(double %p) {
 
84
  call void asm sideeffect "# REG: $0", "{r13w}"(double %p)
 
85
  ret void
 
86
}
 
87
 
 
88
; CHECK-LABEL: reg8_as_64:
 
89
; CHECK: # REG: %rax
 
90
define void @reg8_as_64(i64 %p) {
 
91
  call void asm sideeffect "# REG: $0", "{al}"(i64 %p)
 
92
  ret void
 
93
}
 
94
 
 
95
; CHECK-LABEL: reg8_as_64_float:
 
96
; CHECK: # REG: %rax
 
97
define void @reg8_as_64_float(double %p) {
 
98
  call void asm sideeffect "# REG: $0", "{al}"(double %p)
 
99
  ret void
 
100
}
 
101
 
 
102
; CHECK-LABEL: reg16_as_32:
 
103
; CHECK: # REG: %r11d
 
104
define void @reg16_as_32(i32 %p) {
 
105
  call void asm sideeffect "# REG: $0", "{r11w}"(i32 %p)
 
106
  ret void
 
107
}
 
108
 
 
109
; CHECK-LABEL: reg16_as_32_float:
 
110
; CHECK: # REG: %r11d
 
111
define void @reg16_as_32_float(float %p) {
 
112
  call void asm sideeffect "# REG: $0", "{r11w}"(float %p)
 
113
  ret void
 
114
}
 
115
 
 
116
; CHECK-LABEL: reg8_as_32:
 
117
; CHECK: # REG: %r9d
 
118
define void @reg8_as_32(i32 %p) {
 
119
  call void asm sideeffect "# REG: $0", "{r9b}"(i32 %p)
 
120
  ret void
 
121
}
 
122
 
 
123
; CHECK-LABEL: reg8_as_32_float:
 
124
; CHECK: # REG: %r9d
 
125
define void @reg8_as_32_float(float %p) {
 
126
  call void asm sideeffect "# REG: $0", "{r9b}"(float %p)
 
127
  ret void
 
128
}
 
129
 
 
130
; CHECK-LABEL: reg8_as_16:
 
131
; CHECK: # REG: %di
 
132
define void @reg8_as_16(i16 %p) {
 
133
  call void asm sideeffect "# REG: $0", "{dil}"(i16 %p)
 
134
  ret void
 
135
}