16b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
26b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian// rdar://9894548
36b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
46b167f4fc40477847687c004b73166f53eeda8daFariborz Jahaniantypedef unsigned long word_t;
56b167f4fc40477847687c004b73166f53eeda8daFariborz Jahaniantypedef unsigned long u64_t;
66b167f4fc40477847687c004b73166f53eeda8daFariborz Jahaniantypedef unsigned int u32_t;
76b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
86b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanianclass ioapic_redir_t {
96b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanianpublic:
106b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian union {
116b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian  struct {
126b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t vector : 8;
136b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
146b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t delivery_mode : 3;
156b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t dest_mode : 1;
166b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
176b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t delivery_status : 1;
186b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t polarity : 1;
196b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t irr : 1;
206b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t trigger_mode : 1;
216b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
226b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t mask : 1;
236b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t _pad0 : 15;
246b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
256b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian   word_t dest : 8;
266b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian  };
276b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian  volatile u32_t raw[2];
286b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian  volatile u64_t raw64;
296b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian };
306b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian};
316b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
326b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanianstruct ioapic_shadow_struct
336b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian{
346b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian ioapic_redir_t redirs[24];
356b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian} ioapic_shadow[16];
366b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
376b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanianvoid init_ioapic(unsigned long ioapic_id)
386b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian{
396b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian     ioapic_redir_t entry;
406b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian     ioapic_shadow[ioapic_id].redirs[3] = entry;
416b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian}
426b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian
436b167f4fc40477847687c004b73166f53eeda8daFariborz Jahanian// CHECK: call void @llvm.memcpy
44