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